From 611898d4de4f977a9b6820523a5c99532d6499cd Mon Sep 17 00:00:00 2001 From: Ricardo Casallas Date: Fri, 2 Sep 2022 18:19:11 +0000 Subject: [PATCH] Pull request #52: Added example of credentials injection. Merge in WMN_TOOLS/matter from credentials_example to silabs Squashed commit of the following: commit c90ed96cefc627f8e85584b587d06cf9f0e3210c Author: Rehan Rasool Date: Fri Sep 2 14:07:04 2022 -0400 Fix numbers sequence commit de19989a9006d55fb102154dfc51ba6ac8ea24e5 Author: Sergei Lissianoi Date: Fri Sep 2 13:53:22 2022 -0400 Fix formatting commit 574f7a95c4d2c2c03a4a944f86b79a69763aa396 Author: Sergei Lissianoi Date: Fri Sep 2 13:51:09 2022 -0400 Address review comments commit b91a03a3da9a870736f96be9cc8af11ddb58eeef Author: Sergei Lissianoi Date: Fri Sep 2 13:15:49 2022 -0400 Fix typo and update README commit 8cfe380f59ce4c0dff769ae4e7ff614bcf64113a Author: Ezra Hale Date: Wed Aug 31 10:09:56 2022 -0400 added rest of information from confluence page to flush out credentials example README.md commit df1d5c8129d3999a83ba64edf4341757a9ef09dc Author: Ricardo Casallas Date: Fri Aug 26 13:42:32 2022 -0400 Added example of credentials' injection. --- silabs_examples/credentials/README.md | 239 + silabs_examples/credentials/common/creds.c | 11 + silabs_examples/credentials/common/creds.h | 44 + .../crypto/mbedtls/include/mbedtls/oid.h | 647 + .../crypto/mbedtls/library/x509_create.c | 378 + silabs_examples/credentials/creds.py | 209 + silabs_examples/credentials/csa_openssl.cnf | 362 + .../device/brd4161a/autogen/RTE_Components.h | 22 + .../brd4161a/autogen/linkerfile_base.icf | 85 + .../brd4161a/autogen/linkerfile_base.ld | 225 + .../brd4161a/autogen/mbedtls_config_autogen.h | 97 + .../autogen/psa_crypto_config_autogen.h | 126 + .../brd4161a/autogen/sl_application_type.h | 41 + .../brd4161a/autogen/sl_board_default_init.c | 36 + .../brd4161a/autogen/sl_component_catalog.h | 54 + .../brd4161a/autogen/sl_device_init_clocks.c | 49 + .../brd4161a/autogen/sl_event_handler.c | 102 + .../brd4161a/autogen/sl_event_handler.h | 15 + .../brd4161a/autogen/sl_iostream_handles.c | 31 + .../brd4161a/autogen/sl_iostream_handles.h | 22 + .../autogen/sl_iostream_init_instances.h | 16 + .../sl_iostream_init_usart_instances.c | 203 + .../sl_iostream_init_usart_instances.h | 34 + .../sl_legacy_bootloader_device_info.h | 41 + .../sl_mbedtls_config_transform_autogen.h | 44 + .../autogen/sl_power_manager_handler.c | 126 + .../sl_rail_util_ieee802154_phy_select.c | 261 + .../sl_rail_util_ieee802154_stack_event.c | 44 + .../autogen/sl_simple_led_instances.c | 44 + .../autogen/sl_simple_led_instances.h | 32 + .../autogen/zigbee_af_token_headers.h | 25 + .../zigbee_common_callback_dispatcher.c | 38 + .../zigbee_common_callback_dispatcher.h | 34 + .../autogen/zigbee_ncp_callback_dispatcher.c | 93 + .../autogen/zigbee_ncp_callback_dispatcher.h | 88 + .../zigbee_stack_callback_dispatcher.c | 993 ++ .../zigbee_stack_callback_dispatcher.h | 876 ++ .../device/brd4161a/config/SEGGER_RTT_Conf.h | 417 + .../brd4161a/config/app_properties_config.h | 65 + .../brd4161a/config/btl_interface_cfg.h | 44 + .../brd4161a/config/emlib_core_debug_config.h | 46 + .../config/legacy_common_ash_config.h | 43 + .../brd4161a/config/legacy_hal_config.h | 47 + .../device/brd4161a/config/mbedtls_config.h | 72 + .../brd4161a/config/nvm3_default_config.h | 45 + .../brd4161a/config/psa_crypto_config.h | 47 + .../brd4161a/config/sl_board_control_config.h | 76 + .../sl_custom_manufacturing_token_header.h | 84 + .../brd4161a/config/sl_custom_token_header.h | 86 + .../brd4161a/config/sl_debug_swo_config.h | 100 + .../config/sl_device_init_dcdc_config.h | 58 + .../config/sl_device_init_emu_config.h | 68 + .../config/sl_device_init_hfxo_config.h | 68 + .../config/sl_device_init_lfxo_config.h | 67 + .../config/sl_iostream_usart_vcom_config.h | 113 + .../config/sl_iostream_vuart_config.h | 42 + .../config/sl_legacy_hal_wdog_config.h | 53 + .../device/brd4161a/config/sl_memory_config.h | 28 + .../sl_mx25_flash_shutdown_usart_config.h | 54 + .../brd4161a/config/sl_power_manager_config.h | 71 + .../brd4161a/config/sl_rail_util_pa_config.h | 80 + .../brd4161a/config/sl_rail_util_pti_config.h | 75 + .../config/sl_simple_led_led0_config.h | 44 + .../brd4161a/config/sl_sleeptimer_config.h | 72 + .../brd4161a/config/sl_token_manager_config.h | 54 + .../config/sl_zigbee_binding_table_config.h | 28 + .../config/sl_zigbee_debug_print_config.h | 74 + .../config/sl_zigbee_green_power_config.h | 63 + .../config/sl_zigbee_pro_stack_config.h | 89 + .../sl_zigbee_security_link_keys_config.h | 33 + .../config/sl_zigbee_source_route_config.h | 33 + .../brd4161a/config/zigbee_sleep_config.h | 42 + .../device/brd4161a/device-creds.Makefile | 190 + .../device/brd4161a/device-creds.emProject | 1107 ++ .../device/brd4161a/device-creds.ewd | 1476 ++ .../device/brd4161a/device-creds.ewp | 1241 ++ .../device/brd4161a/device-creds.eww | 8 + .../device/brd4161a/device-creds.ipcf | 1073 ++ .../device/brd4161a/device-creds.project.mak | 1624 ++ .../device/brd4164a/autogen/RTE_Components.h | 22 + .../brd4164a/autogen/linkerfile_base.icf | 85 + .../brd4164a/autogen/linkerfile_base.ld | 225 + .../brd4164a/autogen/mbedtls_config_autogen.h | 97 + .../autogen/psa_crypto_config_autogen.h | 126 + .../brd4164a/autogen/sl_application_type.h | 41 + .../brd4164a/autogen/sl_board_default_init.c | 36 + .../brd4164a/autogen/sl_component_catalog.h | 54 + .../brd4164a/autogen/sl_device_init_clocks.c | 49 + .../brd4164a/autogen/sl_event_handler.c | 102 + .../brd4164a/autogen/sl_event_handler.h | 15 + .../brd4164a/autogen/sl_iostream_handles.c | 31 + .../brd4164a/autogen/sl_iostream_handles.h | 22 + .../autogen/sl_iostream_init_instances.h | 16 + .../sl_iostream_init_usart_instances.c | 203 + .../sl_iostream_init_usart_instances.h | 34 + .../sl_legacy_bootloader_device_info.h | 41 + .../sl_mbedtls_config_transform_autogen.h | 44 + .../autogen/sl_power_manager_handler.c | 126 + .../sl_rail_util_ieee802154_phy_select.c | 261 + .../sl_rail_util_ieee802154_stack_event.c | 44 + .../autogen/sl_simple_led_instances.c | 44 + .../autogen/sl_simple_led_instances.h | 32 + .../autogen/zigbee_af_token_headers.h | 25 + .../zigbee_common_callback_dispatcher.c | 38 + .../zigbee_common_callback_dispatcher.h | 34 + .../autogen/zigbee_ncp_callback_dispatcher.c | 93 + .../autogen/zigbee_ncp_callback_dispatcher.h | 88 + .../zigbee_stack_callback_dispatcher.c | 993 ++ .../zigbee_stack_callback_dispatcher.h | 876 ++ .../device/brd4164a/config/SEGGER_RTT_Conf.h | 417 + .../brd4164a/config/app_properties_config.h | 65 + .../brd4164a/config/btl_interface_cfg.h | 44 + .../brd4164a/config/emlib_core_debug_config.h | 46 + .../config/legacy_common_ash_config.h | 43 + .../brd4164a/config/legacy_hal_config.h | 47 + .../device/brd4164a/config/mbedtls_config.h | 72 + .../brd4164a/config/nvm3_default_config.h | 45 + .../brd4164a/config/psa_crypto_config.h | 47 + .../brd4164a/config/sl_board_control_config.h | 76 + .../sl_custom_manufacturing_token_header.h | 84 + .../brd4164a/config/sl_custom_token_header.h | 86 + .../brd4164a/config/sl_debug_swo_config.h | 100 + .../config/sl_device_init_dcdc_config.h | 58 + .../config/sl_device_init_emu_config.h | 68 + .../config/sl_device_init_hfxo_config.h | 68 + .../config/sl_device_init_lfxo_config.h | 67 + .../config/sl_iostream_usart_vcom_config.h | 113 + .../config/sl_iostream_vuart_config.h | 42 + .../config/sl_legacy_hal_wdog_config.h | 53 + .../device/brd4164a/config/sl_memory_config.h | 28 + .../sl_mx25_flash_shutdown_usart_config.h | 54 + .../brd4164a/config/sl_power_manager_config.h | 71 + .../brd4164a/config/sl_rail_util_pa_config.h | 80 + .../brd4164a/config/sl_rail_util_pti_config.h | 75 + .../config/sl_simple_led_led0_config.h | 44 + .../brd4164a/config/sl_sleeptimer_config.h | 72 + .../brd4164a/config/sl_token_manager_config.h | 54 + .../config/sl_zigbee_binding_table_config.h | 28 + .../config/sl_zigbee_debug_print_config.h | 74 + .../config/sl_zigbee_green_power_config.h | 63 + .../config/sl_zigbee_pro_stack_config.h | 89 + .../sl_zigbee_security_link_keys_config.h | 33 + .../config/sl_zigbee_source_route_config.h | 33 + .../brd4164a/config/zigbee_sleep_config.h | 42 + .../device/brd4164a/device-creds.Makefile | 190 + .../device/brd4164a/device-creds.emProject | 1107 ++ .../device/brd4164a/device-creds.ewd | 1476 ++ .../device/brd4164a/device-creds.ewp | 1241 ++ .../device/brd4164a/device-creds.eww | 8 + .../device/brd4164a/device-creds.ipcf | 1073 ++ .../device/brd4164a/device-creds.project.mak | 1624 ++ .../device/brd4186a/autogen/RTE_Components.h | 22 + .../brd4186a/autogen/linkerfile_base.icf | 85 + .../brd4186a/autogen/linkerfile_base.ld | 225 + .../brd4186a/autogen/mbedtls_config_autogen.h | 97 + .../autogen/psa_crypto_config_autogen.h | 135 + .../brd4186a/autogen/sl_application_type.h | 41 + .../brd4186a/autogen/sl_board_default_init.c | 36 + .../brd4186a/autogen/sl_component_catalog.h | 55 + .../brd4186a/autogen/sl_device_init_clocks.c | 57 + .../brd4186a/autogen/sl_event_handler.c | 105 + .../brd4186a/autogen/sl_event_handler.h | 15 + .../brd4186a/autogen/sl_iostream_handles.c | 31 + .../brd4186a/autogen/sl_iostream_handles.h | 22 + .../autogen/sl_iostream_init_instances.h | 16 + .../sl_iostream_init_usart_instances.c | 203 + .../sl_iostream_init_usart_instances.h | 34 + .../sl_legacy_bootloader_device_info.h | 41 + .../sl_mbedtls_config_transform_autogen.h | 44 + .../autogen/sl_power_manager_handler.c | 126 + .../sl_rail_util_ieee802154_phy_select.c | 261 + .../sl_rail_util_ieee802154_stack_event.c | 44 + .../autogen/sl_simple_led_instances.c | 44 + .../autogen/sl_simple_led_instances.h | 32 + .../autogen/zigbee_af_token_headers.h | 25 + .../zigbee_common_callback_dispatcher.c | 38 + .../zigbee_common_callback_dispatcher.h | 34 + .../autogen/zigbee_ncp_callback_dispatcher.c | 93 + .../autogen/zigbee_ncp_callback_dispatcher.h | 88 + .../zigbee_stack_callback_dispatcher.c | 993 ++ .../zigbee_stack_callback_dispatcher.h | 876 ++ .../device/brd4186a/config/SEGGER_RTT_Conf.h | 417 + .../brd4186a/config/app_properties_config.h | 65 + .../brd4186a/config/btl_interface_cfg.h | 44 + .../brd4186a/config/btl_interface_cfg_s2c4.h | 321 + .../brd4186a/config/emlib_core_debug_config.h | 46 + .../config/legacy_common_ash_config.h | 43 + .../brd4186a/config/legacy_hal_config.h | 47 + .../device/brd4186a/config/mbedtls_config.h | 72 + .../brd4186a/config/nvm3_default_config.h | 45 + .../brd4186a/config/psa_crypto_config.h | 47 + .../brd4186a/config/sl_board_control_config.h | 76 + .../sl_custom_manufacturing_token_header.h | 84 + .../brd4186a/config/sl_custom_token_header.h | 86 + .../brd4186a/config/sl_debug_swo_config.h | 99 + .../config/sl_device_init_dcdc_config.h | 58 + .../config/sl_device_init_emu_config.h | 53 + .../config/sl_device_init_hfxo_config.h | 53 + .../config/sl_device_init_lfxo_config.h | 66 + .../brd4186a/config/sl_hfxo_manager_config.h | 56 + .../config/sl_iostream_usart_vcom_config.h | 109 + .../config/sl_iostream_vuart_config.h | 42 + .../config/sl_legacy_hal_wdog_config.h | 53 + .../device/brd4186a/config/sl_memory_config.h | 28 + .../sl_mx25_flash_shutdown_eusart_config.h | 51 + .../brd4186a/config/sl_power_manager_config.h | 71 + .../brd4186a/config/sl_rail_util_pa_config.h | 81 + .../brd4186a/config/sl_rail_util_pti_config.h | 73 + .../config/sl_simple_led_led0_config.h | 44 + .../brd4186a/config/sl_sleeptimer_config.h | 72 + .../brd4186a/config/sl_token_manager_config.h | 54 + .../config/sl_zigbee_binding_table_config.h | 28 + .../config/sl_zigbee_debug_print_config.h | 74 + .../config/sl_zigbee_green_power_config.h | 63 + .../config/sl_zigbee_pro_stack_config.h | 89 + .../sl_zigbee_security_link_keys_config.h | 33 + .../config/sl_zigbee_source_route_config.h | 33 + .../brd4186a/config/zigbee_sleep_config.h | 42 + .../device/brd4186a/device-creds.Makefile | 190 + .../device/brd4186a/device-creds.emProject | 1181 ++ .../device/brd4186a/device-creds.ewd | 1476 ++ .../device/brd4186a/device-creds.ewp | 1249 ++ .../device/brd4186a/device-creds.eww | 8 + .../device/brd4186a/device-creds.ipcf | 1147 ++ .../device/brd4186a/device-creds.project.mak | 1798 +++ .../device/brd4186c/autogen/RTE_Components.h | 22 + .../brd4186c/autogen/linkerfile_base.icf | 85 + .../brd4186c/autogen/linkerfile_base.ld | 225 + .../brd4186c/autogen/mbedtls_config_autogen.h | 97 + .../autogen/psa_crypto_config_autogen.h | 142 + .../brd4186c/autogen/sl_application_type.h | 41 + .../brd4186c/autogen/sl_board_default_init.c | 36 + .../brd4186c/autogen/sl_component_catalog.h | 55 + .../brd4186c/autogen/sl_device_init_clocks.c | 57 + .../brd4186c/autogen/sl_event_handler.c | 105 + .../brd4186c/autogen/sl_event_handler.h | 15 + .../brd4186c/autogen/sl_iostream_handles.c | 31 + .../brd4186c/autogen/sl_iostream_handles.h | 22 + .../autogen/sl_iostream_init_instances.h | 16 + .../sl_iostream_init_usart_instances.c | 203 + .../sl_iostream_init_usart_instances.h | 34 + .../sl_legacy_bootloader_device_info.h | 41 + .../sl_mbedtls_config_transform_autogen.h | 44 + .../autogen/sl_power_manager_handler.c | 126 + .../sl_rail_util_ieee802154_phy_select.c | 261 + .../sl_rail_util_ieee802154_stack_event.c | 44 + .../autogen/sl_simple_led_instances.c | 44 + .../autogen/sl_simple_led_instances.h | 32 + .../autogen/zigbee_af_token_headers.h | 25 + .../zigbee_common_callback_dispatcher.c | 38 + .../zigbee_common_callback_dispatcher.h | 34 + .../autogen/zigbee_ncp_callback_dispatcher.c | 93 + .../autogen/zigbee_ncp_callback_dispatcher.h | 88 + .../zigbee_stack_callback_dispatcher.c | 993 ++ .../zigbee_stack_callback_dispatcher.h | 876 ++ .../device/brd4186c/config/SEGGER_RTT_Conf.h | 417 + .../brd4186c/config/app_properties_config.h | 65 + .../brd4186c/config/btl_interface_cfg.h | 44 + .../brd4186c/config/btl_interface_cfg_s2c4.h | 321 + .../brd4186c/config/emlib_core_debug_config.h | 46 + .../config/legacy_common_ash_config.h | 43 + .../brd4186c/config/legacy_hal_config.h | 47 + .../device/brd4186c/config/mbedtls_config.h | 72 + .../brd4186c/config/nvm3_default_config.h | 45 + .../brd4186c/config/psa_crypto_config.h | 47 + .../brd4186c/config/sl_board_control_config.h | 76 + .../sl_custom_manufacturing_token_header.h | 84 + .../brd4186c/config/sl_custom_token_header.h | 86 + .../brd4186c/config/sl_debug_swo_config.h | 99 + .../config/sl_device_init_dcdc_config.h | 58 + .../config/sl_device_init_emu_config.h | 53 + .../config/sl_device_init_hfxo_config.h | 53 + .../config/sl_device_init_lfxo_config.h | 66 + .../brd4186c/config/sl_hfxo_manager_config.h | 56 + .../config/sl_iostream_usart_vcom_config.h | 109 + .../config/sl_iostream_vuart_config.h | 42 + .../config/sl_legacy_hal_wdog_config.h | 53 + .../device/brd4186c/config/sl_memory_config.h | 28 + .../sl_mx25_flash_shutdown_eusart_config.h | 51 + .../brd4186c/config/sl_power_manager_config.h | 71 + .../brd4186c/config/sl_rail_util_pa_config.h | 81 + .../brd4186c/config/sl_rail_util_pti_config.h | 73 + .../config/sl_simple_led_led0_config.h | 44 + .../brd4186c/config/sl_sleeptimer_config.h | 72 + .../brd4186c/config/sl_token_manager_config.h | 54 + .../config/sl_zigbee_binding_table_config.h | 28 + .../config/sl_zigbee_debug_print_config.h | 74 + .../config/sl_zigbee_green_power_config.h | 63 + .../config/sl_zigbee_pro_stack_config.h | 89 + .../sl_zigbee_security_link_keys_config.h | 33 + .../config/sl_zigbee_source_route_config.h | 33 + .../brd4186c/config/zigbee_sleep_config.h | 42 + .../device/brd4186c/device-creds.Makefile | 190 + .../device/brd4186c/device-creds.emProject | 1181 ++ .../device/brd4186c/device-creds.ewd | 1476 ++ .../device/brd4186c/device-creds.ewp | 1249 ++ .../device/brd4186c/device-creds.eww | 8 + .../device/brd4186c/device-creds.ipcf | 1147 ++ .../device/brd4186c/device-creds.project.mak | 1798 +++ .../device/brd4187c/autogen/RTE_Components.h | 22 + .../brd4187c/autogen/linkerfile_base.icf | 85 + .../brd4187c/autogen/linkerfile_base.ld | 225 + .../brd4187c/autogen/mbedtls_config_autogen.h | 97 + .../autogen/psa_crypto_config_autogen.h | 142 + .../brd4187c/autogen/sl_application_type.h | 41 + .../brd4187c/autogen/sl_board_default_init.c | 36 + .../brd4187c/autogen/sl_component_catalog.h | 55 + .../brd4187c/autogen/sl_device_init_clocks.c | 57 + .../brd4187c/autogen/sl_event_handler.c | 105 + .../brd4187c/autogen/sl_event_handler.h | 15 + .../brd4187c/autogen/sl_iostream_handles.c | 31 + .../brd4187c/autogen/sl_iostream_handles.h | 22 + .../autogen/sl_iostream_init_instances.h | 16 + .../sl_iostream_init_usart_instances.c | 203 + .../sl_iostream_init_usart_instances.h | 34 + .../sl_legacy_bootloader_device_info.h | 41 + .../sl_mbedtls_config_transform_autogen.h | 44 + .../autogen/sl_power_manager_handler.c | 126 + .../sl_rail_util_ieee802154_phy_select.c | 261 + .../sl_rail_util_ieee802154_stack_event.c | 44 + .../autogen/sl_simple_led_instances.c | 44 + .../autogen/sl_simple_led_instances.h | 32 + .../autogen/zigbee_af_token_headers.h | 25 + .../zigbee_common_callback_dispatcher.c | 38 + .../zigbee_common_callback_dispatcher.h | 34 + .../autogen/zigbee_ncp_callback_dispatcher.c | 93 + .../autogen/zigbee_ncp_callback_dispatcher.h | 88 + .../zigbee_stack_callback_dispatcher.c | 993 ++ .../zigbee_stack_callback_dispatcher.h | 876 ++ .../device/brd4187c/config/SEGGER_RTT_Conf.h | 417 + .../brd4187c/config/app_properties_config.h | 65 + .../brd4187c/config/btl_interface_cfg.h | 44 + .../brd4187c/config/btl_interface_cfg_s2c4.h | 321 + .../brd4187c/config/emlib_core_debug_config.h | 46 + .../config/legacy_common_ash_config.h | 43 + .../brd4187c/config/legacy_hal_config.h | 47 + .../device/brd4187c/config/mbedtls_config.h | 72 + .../brd4187c/config/nvm3_default_config.h | 45 + .../brd4187c/config/psa_crypto_config.h | 47 + .../brd4187c/config/sl_board_control_config.h | 76 + .../sl_custom_manufacturing_token_header.h | 84 + .../brd4187c/config/sl_custom_token_header.h | 86 + .../brd4187c/config/sl_debug_swo_config.h | 99 + .../config/sl_device_init_dcdc_config.h | 58 + .../config/sl_device_init_emu_config.h | 53 + .../config/sl_device_init_hfxo_config.h | 53 + .../config/sl_device_init_lfxo_config.h | 66 + .../brd4187c/config/sl_hfxo_manager_config.h | 56 + .../config/sl_iostream_usart_vcom_config.h | 109 + .../config/sl_iostream_vuart_config.h | 42 + .../config/sl_legacy_hal_wdog_config.h | 53 + .../device/brd4187c/config/sl_memory_config.h | 28 + .../sl_mx25_flash_shutdown_eusart_config.h | 51 + .../brd4187c/config/sl_power_manager_config.h | 71 + .../brd4187c/config/sl_rail_util_pa_config.h | 81 + .../brd4187c/config/sl_rail_util_pti_config.h | 73 + .../config/sl_simple_led_led0_config.h | 44 + .../brd4187c/config/sl_sleeptimer_config.h | 72 + .../brd4187c/config/sl_token_manager_config.h | 54 + .../config/sl_zigbee_binding_table_config.h | 28 + .../config/sl_zigbee_debug_print_config.h | 74 + .../config/sl_zigbee_green_power_config.h | 63 + .../config/sl_zigbee_pro_stack_config.h | 89 + .../sl_zigbee_security_link_keys_config.h | 33 + .../config/sl_zigbee_source_route_config.h | 33 + .../brd4187c/config/zigbee_sleep_config.h | 42 + .../device/brd4187c/device-creds.Makefile | 190 + .../device/brd4187c/device-creds.emProject | 1181 ++ .../device/brd4187c/device-creds.ewd | 1476 ++ .../device/brd4187c/device-creds.ewp | 1249 ++ .../device/brd4187c/device-creds.eww | 8 + .../device/brd4187c/device-creds.ipcf | 1147 ++ .../device/brd4187c/device-creds.project.mak | 1798 +++ .../credentials/device/device_cert.c | 131 + .../credentials/device/device_creds.c | 153 + .../credentials/device/device_creds.h | 14 + .../credentials/device/device_creds.slcp | 123 + silabs_examples/credentials/device/main.c | 65 + silabs_examples/credentials/efr32_creds.tmpl | 14 + .../host/app/autogen/RTE_Components.h | 22 + .../host/app/autogen/sl_cli_command_table.c | 1045 ++ .../app/autogen/sl_cli_command_table.html | 2854 ++++ .../host/app/autogen/sl_cli_handles.h | 29 + .../host/app/autogen/sl_cli_instances.c | 114 + .../host/app/autogen/sl_cli_instances.h | 23 + .../host/app/autogen/sl_cluster_service_gen.c | 26 + .../host/app/autogen/sl_cluster_service_gen.h | 30 + .../host/app/autogen/sl_component_catalog.h | 27 + .../host/app/autogen/sl_event_handler.c | 55 + .../host/app/autogen/sl_event_handler.h | 15 + .../host/app/autogen/sl_iostream_handles.c | 27 + .../host/app/autogen/sl_iostream_handles.h | 20 + .../app/autogen/sl_iostream_init_instances.h | 16 + .../host/app/autogen/sli_cli_hooks.c | 22 + .../app/autogen/zigbee_af_cluster_functions.h | 41 + .../app/autogen/zigbee_af_token_headers.h | 23 + .../zigbee_common_callback_dispatcher.c | 47 + .../zigbee_common_callback_dispatcher.h | 43 + .../autogen/zigbee_host_callback_dispatcher.c | 24 + .../autogen/zigbee_host_callback_dispatcher.h | 24 + .../zigbee_stack_callback_dispatcher.c | 963 ++ .../zigbee_stack_callback_dispatcher.h | 644 + .../autogen/zigbee_zcl_callback_dispatcher.c | 83 + .../autogen/zigbee_zcl_callback_dispatcher.h | 49 + .../host/app/config/emlib_core_debug_config.h | 46 + .../host/app/config/gateway-config.h | 38 + .../app/config/legacy_common_ash_config.h | 43 + .../host/app/config/sl_cli_config.h | 117 + .../host/app/config/sl_cli_config_example.h | 129 + .../app/config/sl_zigbee_debug_print_config.h | 74 + .../host/app/config/unix-library-config.h | 28 + .../app/config/zcl-framework-core-config.h | 28 + .../host/app/config/zigbee_core_cli_config.h | 28 + .../host/app/config/zigbee_device_config.h | 118 + .../credentials/host/app/host-creds.Makefile | 170 + .../host/app/host-creds.project.mak | 858 ++ silabs_examples/credentials/host/host_creds.c | 73 + silabs_examples/credentials/host/host_creds.h | 18 + .../credentials/host/host_creds.slcp | 58 + silabs_examples/credentials/host/host_ui.c | 626 + silabs_examples/credentials/host/main.c | 53 + .../credentials/host/zap/zap-cli.c | 2084 +++ .../host/zap/zap-cluster-command-parser.c | 6554 ++++++++ .../host/zap/zap-cluster-command-parser.h | 1593 ++ .../host/zap/zap-command-structs.h | 8461 ++++++++++ .../credentials/host/zap/zap-command.h | 12730 ++++++++++++++++ .../credentials/host/zap/zap-config.h | 197 + .../host/zap/zap-enabled-incoming-commands.h | 37 + .../credentials/host/zap/zap-event.h | 35 + silabs_examples/credentials/host/zap/zap-id.h | 5723 +++++++ .../credentials/host/zap/zap-print.h | 37 + .../credentials/host/zap/zap-tokens.h | 27 + .../credentials/host/zap/zap-type.h | 4341 ++++++ 433 files changed, 120543 insertions(+) create mode 100644 silabs_examples/credentials/README.md create mode 100644 silabs_examples/credentials/common/creds.c create mode 100644 silabs_examples/credentials/common/creds.h create mode 100644 silabs_examples/credentials/common/gsdk/util/third_party/crypto/mbedtls/include/mbedtls/oid.h create mode 100644 silabs_examples/credentials/common/gsdk/util/third_party/crypto/mbedtls/library/x509_create.c create mode 100755 silabs_examples/credentials/creds.py create mode 100644 silabs_examples/credentials/csa_openssl.cnf create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/RTE_Components.h create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/linkerfile_base.icf create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/linkerfile_base.ld create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/mbedtls_config_autogen.h create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/psa_crypto_config_autogen.h create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/sl_application_type.h create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/sl_board_default_init.c create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/sl_component_catalog.h create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/sl_device_init_clocks.c create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/sl_event_handler.c create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/sl_event_handler.h create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/sl_iostream_handles.c create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/sl_iostream_handles.h create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/sl_iostream_init_instances.h create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/sl_iostream_init_usart_instances.c create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/sl_iostream_init_usart_instances.h create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/sl_legacy_bootloader_device_info.h create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/sl_mbedtls_config_transform_autogen.h create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/sl_power_manager_handler.c create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/sl_rail_util_ieee802154_phy_select.c create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/sl_rail_util_ieee802154_stack_event.c create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/sl_simple_led_instances.c create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/sl_simple_led_instances.h create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/zigbee_af_token_headers.h create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/zigbee_common_callback_dispatcher.c create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/zigbee_common_callback_dispatcher.h create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/zigbee_ncp_callback_dispatcher.c create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/zigbee_ncp_callback_dispatcher.h create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/zigbee_stack_callback_dispatcher.c create mode 100644 silabs_examples/credentials/device/brd4161a/autogen/zigbee_stack_callback_dispatcher.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/SEGGER_RTT_Conf.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/app_properties_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/btl_interface_cfg.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/emlib_core_debug_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/legacy_common_ash_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/legacy_hal_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/mbedtls_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/nvm3_default_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/psa_crypto_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_board_control_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_custom_manufacturing_token_header.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_custom_token_header.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_debug_swo_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_device_init_dcdc_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_device_init_emu_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_device_init_hfxo_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_device_init_lfxo_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_iostream_usart_vcom_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_iostream_vuart_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_legacy_hal_wdog_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_memory_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_mx25_flash_shutdown_usart_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_power_manager_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_rail_util_pa_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_rail_util_pti_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_simple_led_led0_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_sleeptimer_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_token_manager_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_zigbee_binding_table_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_zigbee_debug_print_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_zigbee_green_power_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_zigbee_pro_stack_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_zigbee_security_link_keys_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/sl_zigbee_source_route_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/config/zigbee_sleep_config.h create mode 100644 silabs_examples/credentials/device/brd4161a/device-creds.Makefile create mode 100644 silabs_examples/credentials/device/brd4161a/device-creds.emProject create mode 100644 silabs_examples/credentials/device/brd4161a/device-creds.ewd create mode 100644 silabs_examples/credentials/device/brd4161a/device-creds.ewp create mode 100644 silabs_examples/credentials/device/brd4161a/device-creds.eww create mode 100644 silabs_examples/credentials/device/brd4161a/device-creds.ipcf create mode 100644 silabs_examples/credentials/device/brd4161a/device-creds.project.mak create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/RTE_Components.h create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/linkerfile_base.icf create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/linkerfile_base.ld create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/mbedtls_config_autogen.h create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/psa_crypto_config_autogen.h create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/sl_application_type.h create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/sl_board_default_init.c create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/sl_component_catalog.h create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/sl_device_init_clocks.c create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/sl_event_handler.c create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/sl_event_handler.h create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/sl_iostream_handles.c create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/sl_iostream_handles.h create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/sl_iostream_init_instances.h create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/sl_iostream_init_usart_instances.c create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/sl_iostream_init_usart_instances.h create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/sl_legacy_bootloader_device_info.h create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/sl_mbedtls_config_transform_autogen.h create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/sl_power_manager_handler.c create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/sl_rail_util_ieee802154_phy_select.c create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/sl_rail_util_ieee802154_stack_event.c create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/sl_simple_led_instances.c create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/sl_simple_led_instances.h create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/zigbee_af_token_headers.h create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/zigbee_common_callback_dispatcher.c create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/zigbee_common_callback_dispatcher.h create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/zigbee_ncp_callback_dispatcher.c create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/zigbee_ncp_callback_dispatcher.h create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/zigbee_stack_callback_dispatcher.c create mode 100644 silabs_examples/credentials/device/brd4164a/autogen/zigbee_stack_callback_dispatcher.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/SEGGER_RTT_Conf.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/app_properties_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/btl_interface_cfg.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/emlib_core_debug_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/legacy_common_ash_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/legacy_hal_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/mbedtls_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/nvm3_default_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/psa_crypto_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_board_control_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_custom_manufacturing_token_header.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_custom_token_header.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_debug_swo_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_device_init_dcdc_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_device_init_emu_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_device_init_hfxo_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_device_init_lfxo_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_iostream_usart_vcom_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_iostream_vuart_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_legacy_hal_wdog_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_memory_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_mx25_flash_shutdown_usart_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_power_manager_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_rail_util_pa_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_rail_util_pti_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_simple_led_led0_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_sleeptimer_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_token_manager_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_zigbee_binding_table_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_zigbee_debug_print_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_zigbee_green_power_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_zigbee_pro_stack_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_zigbee_security_link_keys_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/sl_zigbee_source_route_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/config/zigbee_sleep_config.h create mode 100644 silabs_examples/credentials/device/brd4164a/device-creds.Makefile create mode 100644 silabs_examples/credentials/device/brd4164a/device-creds.emProject create mode 100644 silabs_examples/credentials/device/brd4164a/device-creds.ewd create mode 100644 silabs_examples/credentials/device/brd4164a/device-creds.ewp create mode 100644 silabs_examples/credentials/device/brd4164a/device-creds.eww create mode 100644 silabs_examples/credentials/device/brd4164a/device-creds.ipcf create mode 100644 silabs_examples/credentials/device/brd4164a/device-creds.project.mak create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/RTE_Components.h create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/linkerfile_base.icf create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/linkerfile_base.ld create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/mbedtls_config_autogen.h create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/psa_crypto_config_autogen.h create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/sl_application_type.h create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/sl_board_default_init.c create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/sl_component_catalog.h create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/sl_device_init_clocks.c create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/sl_event_handler.c create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/sl_event_handler.h create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/sl_iostream_handles.c create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/sl_iostream_handles.h create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/sl_iostream_init_instances.h create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/sl_iostream_init_usart_instances.c create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/sl_iostream_init_usart_instances.h create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/sl_legacy_bootloader_device_info.h create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/sl_mbedtls_config_transform_autogen.h create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/sl_power_manager_handler.c create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/sl_rail_util_ieee802154_phy_select.c create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/sl_rail_util_ieee802154_stack_event.c create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/sl_simple_led_instances.c create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/sl_simple_led_instances.h create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/zigbee_af_token_headers.h create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/zigbee_common_callback_dispatcher.c create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/zigbee_common_callback_dispatcher.h create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/zigbee_ncp_callback_dispatcher.c create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/zigbee_ncp_callback_dispatcher.h create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/zigbee_stack_callback_dispatcher.c create mode 100644 silabs_examples/credentials/device/brd4186a/autogen/zigbee_stack_callback_dispatcher.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/SEGGER_RTT_Conf.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/app_properties_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/btl_interface_cfg.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/btl_interface_cfg_s2c4.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/emlib_core_debug_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/legacy_common_ash_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/legacy_hal_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/mbedtls_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/nvm3_default_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/psa_crypto_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_board_control_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_custom_manufacturing_token_header.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_custom_token_header.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_debug_swo_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_device_init_dcdc_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_device_init_emu_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_device_init_hfxo_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_device_init_lfxo_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_hfxo_manager_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_iostream_usart_vcom_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_iostream_vuart_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_legacy_hal_wdog_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_memory_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_mx25_flash_shutdown_eusart_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_power_manager_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_rail_util_pa_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_rail_util_pti_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_simple_led_led0_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_sleeptimer_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_token_manager_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_zigbee_binding_table_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_zigbee_debug_print_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_zigbee_green_power_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_zigbee_pro_stack_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_zigbee_security_link_keys_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/sl_zigbee_source_route_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/config/zigbee_sleep_config.h create mode 100644 silabs_examples/credentials/device/brd4186a/device-creds.Makefile create mode 100644 silabs_examples/credentials/device/brd4186a/device-creds.emProject create mode 100644 silabs_examples/credentials/device/brd4186a/device-creds.ewd create mode 100644 silabs_examples/credentials/device/brd4186a/device-creds.ewp create mode 100644 silabs_examples/credentials/device/brd4186a/device-creds.eww create mode 100644 silabs_examples/credentials/device/brd4186a/device-creds.ipcf create mode 100644 silabs_examples/credentials/device/brd4186a/device-creds.project.mak create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/RTE_Components.h create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/linkerfile_base.icf create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/linkerfile_base.ld create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/mbedtls_config_autogen.h create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/psa_crypto_config_autogen.h create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/sl_application_type.h create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/sl_board_default_init.c create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/sl_component_catalog.h create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/sl_device_init_clocks.c create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/sl_event_handler.c create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/sl_event_handler.h create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/sl_iostream_handles.c create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/sl_iostream_handles.h create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/sl_iostream_init_instances.h create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/sl_iostream_init_usart_instances.c create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/sl_iostream_init_usart_instances.h create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/sl_legacy_bootloader_device_info.h create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/sl_mbedtls_config_transform_autogen.h create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/sl_power_manager_handler.c create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/sl_rail_util_ieee802154_phy_select.c create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/sl_rail_util_ieee802154_stack_event.c create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/sl_simple_led_instances.c create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/sl_simple_led_instances.h create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/zigbee_af_token_headers.h create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/zigbee_common_callback_dispatcher.c create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/zigbee_common_callback_dispatcher.h create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/zigbee_ncp_callback_dispatcher.c create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/zigbee_ncp_callback_dispatcher.h create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/zigbee_stack_callback_dispatcher.c create mode 100644 silabs_examples/credentials/device/brd4186c/autogen/zigbee_stack_callback_dispatcher.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/SEGGER_RTT_Conf.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/app_properties_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/btl_interface_cfg.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/btl_interface_cfg_s2c4.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/emlib_core_debug_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/legacy_common_ash_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/legacy_hal_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/mbedtls_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/nvm3_default_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/psa_crypto_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_board_control_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_custom_manufacturing_token_header.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_custom_token_header.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_debug_swo_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_device_init_dcdc_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_device_init_emu_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_device_init_hfxo_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_device_init_lfxo_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_hfxo_manager_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_iostream_usart_vcom_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_iostream_vuart_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_legacy_hal_wdog_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_memory_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_mx25_flash_shutdown_eusart_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_power_manager_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_rail_util_pa_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_rail_util_pti_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_simple_led_led0_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_sleeptimer_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_token_manager_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_zigbee_binding_table_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_zigbee_debug_print_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_zigbee_green_power_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_zigbee_pro_stack_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_zigbee_security_link_keys_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/sl_zigbee_source_route_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/config/zigbee_sleep_config.h create mode 100644 silabs_examples/credentials/device/brd4186c/device-creds.Makefile create mode 100644 silabs_examples/credentials/device/brd4186c/device-creds.emProject create mode 100644 silabs_examples/credentials/device/brd4186c/device-creds.ewd create mode 100644 silabs_examples/credentials/device/brd4186c/device-creds.ewp create mode 100644 silabs_examples/credentials/device/brd4186c/device-creds.eww create mode 100644 silabs_examples/credentials/device/brd4186c/device-creds.ipcf create mode 100644 silabs_examples/credentials/device/brd4186c/device-creds.project.mak create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/RTE_Components.h create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/linkerfile_base.icf create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/linkerfile_base.ld create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/mbedtls_config_autogen.h create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/psa_crypto_config_autogen.h create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/sl_application_type.h create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/sl_board_default_init.c create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/sl_component_catalog.h create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/sl_device_init_clocks.c create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/sl_event_handler.c create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/sl_event_handler.h create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/sl_iostream_handles.c create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/sl_iostream_handles.h create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/sl_iostream_init_instances.h create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/sl_iostream_init_usart_instances.c create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/sl_iostream_init_usart_instances.h create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/sl_legacy_bootloader_device_info.h create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/sl_mbedtls_config_transform_autogen.h create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/sl_power_manager_handler.c create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/sl_rail_util_ieee802154_phy_select.c create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/sl_rail_util_ieee802154_stack_event.c create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/sl_simple_led_instances.c create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/sl_simple_led_instances.h create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/zigbee_af_token_headers.h create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/zigbee_common_callback_dispatcher.c create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/zigbee_common_callback_dispatcher.h create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/zigbee_ncp_callback_dispatcher.c create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/zigbee_ncp_callback_dispatcher.h create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/zigbee_stack_callback_dispatcher.c create mode 100644 silabs_examples/credentials/device/brd4187c/autogen/zigbee_stack_callback_dispatcher.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/SEGGER_RTT_Conf.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/app_properties_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/btl_interface_cfg.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/btl_interface_cfg_s2c4.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/emlib_core_debug_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/legacy_common_ash_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/legacy_hal_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/mbedtls_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/nvm3_default_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/psa_crypto_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_board_control_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_custom_manufacturing_token_header.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_custom_token_header.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_debug_swo_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_device_init_dcdc_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_device_init_emu_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_device_init_hfxo_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_device_init_lfxo_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_hfxo_manager_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_iostream_usart_vcom_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_iostream_vuart_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_legacy_hal_wdog_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_memory_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_mx25_flash_shutdown_eusart_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_power_manager_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_rail_util_pa_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_rail_util_pti_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_simple_led_led0_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_sleeptimer_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_token_manager_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_zigbee_binding_table_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_zigbee_debug_print_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_zigbee_green_power_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_zigbee_pro_stack_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_zigbee_security_link_keys_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/sl_zigbee_source_route_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/config/zigbee_sleep_config.h create mode 100644 silabs_examples/credentials/device/brd4187c/device-creds.Makefile create mode 100644 silabs_examples/credentials/device/brd4187c/device-creds.emProject create mode 100644 silabs_examples/credentials/device/brd4187c/device-creds.ewd create mode 100644 silabs_examples/credentials/device/brd4187c/device-creds.ewp create mode 100644 silabs_examples/credentials/device/brd4187c/device-creds.eww create mode 100644 silabs_examples/credentials/device/brd4187c/device-creds.ipcf create mode 100644 silabs_examples/credentials/device/brd4187c/device-creds.project.mak create mode 100644 silabs_examples/credentials/device/device_cert.c create mode 100644 silabs_examples/credentials/device/device_creds.c create mode 100644 silabs_examples/credentials/device/device_creds.h create mode 100644 silabs_examples/credentials/device/device_creds.slcp create mode 100644 silabs_examples/credentials/device/main.c create mode 100644 silabs_examples/credentials/efr32_creds.tmpl create mode 100644 silabs_examples/credentials/host/app/autogen/RTE_Components.h create mode 100644 silabs_examples/credentials/host/app/autogen/sl_cli_command_table.c create mode 100644 silabs_examples/credentials/host/app/autogen/sl_cli_command_table.html create mode 100644 silabs_examples/credentials/host/app/autogen/sl_cli_handles.h create mode 100644 silabs_examples/credentials/host/app/autogen/sl_cli_instances.c create mode 100644 silabs_examples/credentials/host/app/autogen/sl_cli_instances.h create mode 100644 silabs_examples/credentials/host/app/autogen/sl_cluster_service_gen.c create mode 100644 silabs_examples/credentials/host/app/autogen/sl_cluster_service_gen.h create mode 100644 silabs_examples/credentials/host/app/autogen/sl_component_catalog.h create mode 100644 silabs_examples/credentials/host/app/autogen/sl_event_handler.c create mode 100644 silabs_examples/credentials/host/app/autogen/sl_event_handler.h create mode 100644 silabs_examples/credentials/host/app/autogen/sl_iostream_handles.c create mode 100644 silabs_examples/credentials/host/app/autogen/sl_iostream_handles.h create mode 100644 silabs_examples/credentials/host/app/autogen/sl_iostream_init_instances.h create mode 100644 silabs_examples/credentials/host/app/autogen/sli_cli_hooks.c create mode 100644 silabs_examples/credentials/host/app/autogen/zigbee_af_cluster_functions.h create mode 100644 silabs_examples/credentials/host/app/autogen/zigbee_af_token_headers.h create mode 100644 silabs_examples/credentials/host/app/autogen/zigbee_common_callback_dispatcher.c create mode 100644 silabs_examples/credentials/host/app/autogen/zigbee_common_callback_dispatcher.h create mode 100644 silabs_examples/credentials/host/app/autogen/zigbee_host_callback_dispatcher.c create mode 100644 silabs_examples/credentials/host/app/autogen/zigbee_host_callback_dispatcher.h create mode 100644 silabs_examples/credentials/host/app/autogen/zigbee_stack_callback_dispatcher.c create mode 100644 silabs_examples/credentials/host/app/autogen/zigbee_stack_callback_dispatcher.h create mode 100644 silabs_examples/credentials/host/app/autogen/zigbee_zcl_callback_dispatcher.c create mode 100644 silabs_examples/credentials/host/app/autogen/zigbee_zcl_callback_dispatcher.h create mode 100644 silabs_examples/credentials/host/app/config/emlib_core_debug_config.h create mode 100644 silabs_examples/credentials/host/app/config/gateway-config.h create mode 100644 silabs_examples/credentials/host/app/config/legacy_common_ash_config.h create mode 100644 silabs_examples/credentials/host/app/config/sl_cli_config.h create mode 100644 silabs_examples/credentials/host/app/config/sl_cli_config_example.h create mode 100644 silabs_examples/credentials/host/app/config/sl_zigbee_debug_print_config.h create mode 100644 silabs_examples/credentials/host/app/config/unix-library-config.h create mode 100644 silabs_examples/credentials/host/app/config/zcl-framework-core-config.h create mode 100644 silabs_examples/credentials/host/app/config/zigbee_core_cli_config.h create mode 100644 silabs_examples/credentials/host/app/config/zigbee_device_config.h create mode 100644 silabs_examples/credentials/host/app/host-creds.Makefile create mode 100644 silabs_examples/credentials/host/app/host-creds.project.mak create mode 100644 silabs_examples/credentials/host/host_creds.c create mode 100644 silabs_examples/credentials/host/host_creds.h create mode 100644 silabs_examples/credentials/host/host_creds.slcp create mode 100644 silabs_examples/credentials/host/host_ui.c create mode 100644 silabs_examples/credentials/host/main.c create mode 100644 silabs_examples/credentials/host/zap/zap-cli.c create mode 100644 silabs_examples/credentials/host/zap/zap-cluster-command-parser.c create mode 100644 silabs_examples/credentials/host/zap/zap-cluster-command-parser.h create mode 100644 silabs_examples/credentials/host/zap/zap-command-structs.h create mode 100644 silabs_examples/credentials/host/zap/zap-command.h create mode 100644 silabs_examples/credentials/host/zap/zap-config.h create mode 100644 silabs_examples/credentials/host/zap/zap-enabled-incoming-commands.h create mode 100644 silabs_examples/credentials/host/zap/zap-event.h create mode 100644 silabs_examples/credentials/host/zap/zap-id.h create mode 100644 silabs_examples/credentials/host/zap/zap-print.h create mode 100644 silabs_examples/credentials/host/zap/zap-tokens.h create mode 100644 silabs_examples/credentials/host/zap/zap-type.h diff --git a/silabs_examples/credentials/README.md b/silabs_examples/credentials/README.md new file mode 100644 index 00000000000000..b580512c315d98 --- /dev/null +++ b/silabs_examples/credentials/README.md @@ -0,0 +1,239 @@ +# Matter Attestation Credentials for EFR32 + +Attestation credentials are composed of: + +- Firmware information +- Product Attestation Intermediate (PAI) Certificate +- Device Attestation Certificate (DAC) +- Certification Declaration (CD) + +The firmware information, the Intermediate Authority Certificate, known in +Matter as Product Attestation Intermediate (PAI), and the Device Attestation +Certificate(DAC) are immutable. These shall be installed in factory, and shall +never be modified. The Certification Declaration (CD) is provided by the CSA to +assert protocol compliance of the firmware, and may apply to multiple devices. A +new CD may be installed for each firmware version. + +DAC, PAI, and CD are public, and may be stored as plain-text in non-volatile +memory, protected only against modification, however the private-key associated +with the DAC shall remain secret, and its value should never be exposed. In +order to generate the DAC without exposing its private-key, the following +procedure may be used: + +1. In factory, the private key may be generate on-device, directly in the + secured zone, and used to generate a Certificate Signing Request (CSR) +1. The CSR is sent to the Certificate Authority (CA), which generates and + returns the Device Attestation Certificate (DAC). +1. The CA's certificate (PAI), and the DAC are stored in non-volatile memory. +1. The private-key used to generate (and sign) the CSR now may be used to sign + outgoing messages. + +## EFR32 Example + +In Matter, device attestation credentials are obtained through the +[DeviceAttestationCredsProvider](https://github.com/project-chip/connectedhomeip/blob/master/src/credentials/DeviceAttestationCredsProvider.h) +interface. The +[EFR32DeviceAttestationCreds](https://github.com/project-chip/connectedhomeip/blob/master/examples/platform/efr32/EFR32DeviceAttestationCreds.h) +is an example implementation for the EFR32 platform. In this implementation, +PAI, DAC, and CD are all stored in the last page of main flash, which has been +reserved for this purpose. The exact offsets, and file sizes are defined in the +[efr32_creds.h](https://github.com/project-chip/connectedhomeip/blob/master/examples/platform/efr32/efr32_creds.h) +header. + +> WARNING: Applications are expected to overwrite the sizes and offsets defined +> by efr32_creds.h. These definitions must match exactly the actual size and +> offsets of the PAI, DAC, and CD files, which may be different from the default +> values found in efr32_creds.h + +## Certificate Injection + +The following examples illustrate the process of creating the CSR, generating +the DAC, and storing the files in flash, so they may be used by the example +[EFR32DeviceAttestationCreds](https://github.com/project-chip/connectedhomeip/blob/master/examples/platform/efr32/EFR32DeviceAttestationCreds.h) +provider. The source code for these examples can be found in this repository +under `./silabs_examples/credentials`. + +The directory structure is as follows: + +- credentials + - common + - device + - brd4164a + - brd4166a + - brd4186a + - host + - app + - creds.py + +The app folder (under host), contains the source code used to read the CSR from +the device, while the folders named brdXXXXy contains the source code of the +device application that generates the CSR, and returned to the host. The +creds.py script completes the process, generating the DAC, and storing the +credential files (PAI, DAC, and CD) into flash. The actual certificate +generation is done using OpenSSL, and the flash writing is performed using +Simplicity Commander. + +## Device Setup + +1. Enter the creds.py directory: + +> `cd silabs_examples/credentials` + +2. Set the environment: + +> `export BASE_SDK_PATH=`
+> `export ARM_GCC_DIR=`
+ +Example: +> `export BASE_SDK_PATH=/home/myUserName/matter/third_party/silabs/gecko_sdk/`
+> `export ARM_GCC_DIR=/usr`
+ +3. Execute the setup script + +> `python3 ./creds.py -p /dev/tty.usbmodem0004402663301 -S 440266330 -B brd4186c -C pai_cert.pem -K pai_priv.pem -D cd.bin` + +This script: + +- Compiles both host, and device setup applications +- Flash the device setup app into the target device +- Format the input PEM files into DER format +- Get the CSR file from the target device +- Generates the DAC using OpenSSL +- Calculate offsets for DAC, PAI, and DC files +- Writes DAC, PAI, and DC into the target device's flash using Simplicity + Commander +- Generates a efr32_creds.h  header file with the correct offsets and sizes + +The parameters are as follows: + +> -p, --port Serial port used to connect to the target device
-S, --serial +> Serial number of the connected device
-B, --board Target board, currently +> brd4164a, brd4166a, brd4186a, or brd4186c
-C, --pai_cert PAI certificate +> file in PEM format
-K, --pai_key PAI private key file in PEM format
+> -D, --cd CD file (binary)
+ +4. Copy the generated header into the Matter code: + +> `cp ./temp/efr32_creds.h ${MATTER_HOME}/examples/platform/efr32/` + +5. Rebuild the example app with the new credentials enabled, for instance: + +> `./scripts/examples/gn_efr32_example.sh ./examples/lighting-app/efr32/ ./out/lighting-app BRD4186C chip_build_platform_attestation_credentials_provider=true` + +## Validation + +If the certificate injection is successful, the commissioning process should +complete normally. In order to verify that the new certificates are actually +being used, first check the last page of the flash using Commander. The content +of the flash must then be compared with the credentials received by the +commissioner, which may be done using a debugger. + +### Flash Dump + +On MG12, the last page starts at address 0x000FF800, in MG24, the last page is +located at 0x0817E000. These addresses can be found in the memory map of the +board's datasheet. For instance, for a MG24 board: + +> `commander readmem --range 0x0817E000:+2048 --serialno 440266330` + +The output should look something like: + + Reading 2048 bytes from 0x0817e000... + {address: 0 1 2 3 4 5 6 7 8 9 A B C D E F} + 0817e000: 30 82 01 CB 30 82 01 71 A0 03 02 01 02 02 08 56 + 0817e010: AD 82 22 AD 94 5B 64 30 0A 06 08 2A 86 48 CE 3D + 0817e020: 04 03 02 30 30 31 18 30 16 06 03 55 04 03 0C 0F + ... + 0817e1a0: 9C 6C B8 8F AC E5 29 36 8D 12 05 4C 0C 02 20 65 + 0817e1b0: 5D C9 2B 86 BD 90 98 82 A6 C6 21 77 B8 25 D7 D0 + 0817e1c0: 5E DB E7 C2 2F 9F EA 71 22 0E 7E A7 03 F8 91 FF + 0817e1d0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + 0817e1e0: 30 82 01 E4 30 82 01 8A A0 03 02 01 02 02 04 1A + 0817e1f0: 3D EE 5A 30 0A 06 08 2A 86 48 CE 3D 04 03 02 30 + 0817e200: 3D 31 25 30 23 06 03 55 04 03 0C 1C 4D 61 74 74 + ... + 0817e3a0: 17 32 7A 56 CB 20 02 20 59 7B 5C 8D DB 89 5D FC + 0817e3b0: B6 4B 6A 12 29 27 84 3D 2C 17 69 33 3E 6F BA 14 + 0817e3c0: FA 3E 07 CF 0C 25 92 D1 FF FF FF FF FF FF FF FF + 0817e3d0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + 0817e3e0: 30 82 02 19 06 09 2A 86 48 86 F7 0D 01 07 02 A0 + 0817e3f0: 82 02 0A 30 82 02 06 02 01 03 31 0D 30 0B 06 09 + 0817e400: 60 86 48 01 65 03 04 02 01 30 82 01 71 06 09 2A + ... + 0817e5d0: DE 31 92 E6 78 C7 45 E7 F6 0C 02 21 00 F8 AA 2F + 0817e5e0: A7 11 FC B7 9B 97 E3 97 CE DA 66 7B AE 46 4E 2B + 0817e5f0: D3 FF DF C3 CC ED 7A A8 CA 5F 4C 1A 7C FF FF FF + 0817e600: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF` + +Compare this output with the generated efr32_creds.h header: + + #define EFR32_CREDENTIALS_PAI_OFFSET 0x0 + #define EFR32_CREDENTIALS_PAI_SIZE 463 + + #define EFR32_CREDENTIALS_DAC_OFFSET 0x1e0 + #define EFR32_CREDENTIALS_DAC_SIZE 488 + + #define EFR32_CREDENTIALS_CD_OFFSET 0x3e0 + #define EFR32_CREDENTIALS_CD_SIZE 541 + +The PAI certificate is located at offset 0 (address 0x0817e000), and has a size +of 463 octets: + + 0817e000: 30 82 01 CB 30 82 01 71 A0 03 02 01 02 02 08 56 + 0817e010: AD 82 22 AD 94 5B 64 30 0A 06 08 2A 86 48 CE 3D + ... + 0817e1b0: 5D C9 2B 86 BD 90 98 82 A6 C6 21 77 B8 25 D7 D0 + 0817e1c0: 5E DB E7 C2 2F 9F EA 71 22 0E 7E A7 03 F8 91 + +This should match the contents of the DER-formatted PAI certificate, which is +stored by the setup script as ./temp/pai_cert.der : + +> `$ xxd ./temp/pai_cert.der` + + 00000000: 3082 01cb 3082 0171 a003 0201 0202 0856 0...0..q.......V + 00000010: ad82 22ad 945b 6430 0a06 082a 8648 ce3d .."..[d0...*.H.= + ... + 000001b0: 5dc9 2b86 bd90 9882 a6c6 2177 b825 d7d0 ].+.......!w.%.. + 000001c0: 5edb e7c2 2f9f ea71 220e 7ea7 03f8 91 ^.../..q".~.... + +On this example, the DAC is located at offset 0x1e0 (address 0817e1e0), and has +a size of 488 octets: + + 0817e1e0: 30 82 01 E4 30 82 01 8A A0 03 02 01 02 02 04 1A + 0817e1f0: 3D EE 5A 30 0A 06 08 2A 86 48 CE 3D 04 03 02 30 + ... + 0817e3b0: B6 4B 6A 12 29 27 84 3D 2C 17 69 33 3E 6F BA 14 + 0817e3c0: FA 3E 07 CF 0C 25 92 D1 + +This should match the contents of the DER-formatted DAC certificate, which is +stored by the setup script as ./temp/dac_cert.der : + +> `$ xxd ./temp/dac_cert.der` + + 00000000: 3082 01e4 3082 018a a003 0201 0202 041a 0...0........... + 00000010: 3dee 5a30 0a06 082a 8648 ce3d 0403 0230 =.Z0...*.H.=...0 + ... + 000001d0: b64b 6a12 2927 843d 2c17 6933 3e6f ba14 .Kj.)'.=,.i3>o.. + 000001e0: fa3e 07cf 0c25 92d1 .>...%.. + +Finally, on this example the CD is located at offset 0x3e0 (address 0x0817e3e0), +with a size of 541 octets. + + 0817e3e0: 30 82 02 19 06 09 2A 86 48 86 F7 0D 01 07 02 A0 + 0817e3f0: 82 02 0A 30 82 02 06 02 01 03 31 0D 30 0B 06 09 + ... + 0817e5f0: D3 FF DF C3 CC ED 7A A8 CA 5F 4C 1A 7C FF FF FF + 0817e600: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF + +The CD is a binary file, and is neither modified, nor validated by the setup +script, it is simply stored in flash after the DAC: + +> `$ xxd cd.bin` + + 00000000: 3082 0219 0609 2a86 4886 f70d 0107 02a0 0.....*.H....... + 00000010: 8202 0a30 8202 0602 0103 310d 300b 0609 ...0......1.0... + ... + 00000210: d3ff dfc3 cced 7aa8 ca5f 4c1a 7c ......z.._L.| + +The 0xff octets between the files, and at the end of the flash are unmodified +sections of the flash storage. diff --git a/silabs_examples/credentials/common/creds.c b/silabs_examples/credentials/common/creds.c new file mode 100644 index 00000000000000..2a7d77c0355789 --- /dev/null +++ b/silabs_examples/credentials/common/creds.c @@ -0,0 +1,11 @@ +#include "creds.h" +#include +#include + +int creds_file_init(creds_file_t *file, uint8_t *buffer, size_t buffer_max) +{ + memset(file, 0x00, sizeof(creds_file_t)); + file->data = buffer; + file->max = buffer_max; + return 0; +} diff --git a/silabs_examples/credentials/common/creds.h b/silabs_examples/credentials/common/creds.h new file mode 100644 index 00000000000000..2c4884052e9993 --- /dev/null +++ b/silabs_examples/credentials/common/creds.h @@ -0,0 +1,44 @@ +#ifndef MATTER_CREDS_H +#define MATTER_CREDS_H + +#include +#include +#include + +#define ASSERT(cond, action, message, ...) \ + do \ + { \ + if (!(cond)) \ + { \ + fprintf(stderr, "%s:%d:%s ", __FILE__, __LINE__, __func__); \ + fprintf(stderr, message, ##__VA_ARGS__); \ + printf("\n"); \ + action; \ + } \ + } while (0) + +#define CREDS_PROTOCOL_FRAME_SIZE_MAX 64 + +typedef enum creds_command_ +{ + CREDS_COMMAND_CSR_GENERATE = 0x00, + CREDS_COMMAND_CSR_READ = 0x01, + +} creds_command_t; + + +typedef struct creds_file_ +{ + size_t max; + size_t size; + size_t offset; + uint8_t *data; + +} creds_file_t; + +#define CREDS_FRAME_LENGTH_MAX 64 +#define CREDS_CSR_LENGTH_MAX 512 + +int creds_file_init(creds_file_t *file, uint8_t *buffer, size_t buffer_max); + +#endif // MATTER_CREDS_H diff --git a/silabs_examples/credentials/common/gsdk/util/third_party/crypto/mbedtls/include/mbedtls/oid.h b/silabs_examples/credentials/common/gsdk/util/third_party/crypto/mbedtls/include/mbedtls/oid.h new file mode 100644 index 00000000000000..44fa6d135abf03 --- /dev/null +++ b/silabs_examples/credentials/common/gsdk/util/third_party/crypto/mbedtls/include/mbedtls/oid.h @@ -0,0 +1,647 @@ +/** + * \file oid.h + * + * \brief Object Identifier (OID) database + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBEDTLS_OID_H +#define MBEDTLS_OID_H +#include "mbedtls/private_access.h" + +#include "mbedtls/build_info.h" + +#include "mbedtls/asn1.h" +#include "mbedtls/pk.h" + +#include + +#if defined(MBEDTLS_CIPHER_C) +#include "mbedtls/cipher.h" +#endif + +#if defined(MBEDTLS_MD_C) +#include "mbedtls/md.h" +#endif + +/** OID is not found. */ +#define MBEDTLS_ERR_OID_NOT_FOUND -0x002E +/** output buffer is too small */ +#define MBEDTLS_ERR_OID_BUF_TOO_SMALL -0x000B + +/* This is for the benefit of X.509, but defined here in order to avoid + * having a "backwards" include of x.509.h here */ +/* + * X.509 extension types (internal, arbitrary values for bitsets) + */ +#define MBEDTLS_OID_X509_EXT_AUTHORITY_KEY_IDENTIFIER (1 << 0) +#define MBEDTLS_OID_X509_EXT_SUBJECT_KEY_IDENTIFIER (1 << 1) +#define MBEDTLS_OID_X509_EXT_KEY_USAGE (1 << 2) +#define MBEDTLS_OID_X509_EXT_CERTIFICATE_POLICIES (1 << 3) +#define MBEDTLS_OID_X509_EXT_POLICY_MAPPINGS (1 << 4) +#define MBEDTLS_OID_X509_EXT_SUBJECT_ALT_NAME (1 << 5) +#define MBEDTLS_OID_X509_EXT_ISSUER_ALT_NAME (1 << 6) +#define MBEDTLS_OID_X509_EXT_SUBJECT_DIRECTORY_ATTRS (1 << 7) +#define MBEDTLS_OID_X509_EXT_BASIC_CONSTRAINTS (1 << 8) +#define MBEDTLS_OID_X509_EXT_NAME_CONSTRAINTS (1 << 9) +#define MBEDTLS_OID_X509_EXT_POLICY_CONSTRAINTS (1 << 10) +#define MBEDTLS_OID_X509_EXT_EXTENDED_KEY_USAGE (1 << 11) +#define MBEDTLS_OID_X509_EXT_CRL_DISTRIBUTION_POINTS (1 << 12) +#define MBEDTLS_OID_X509_EXT_INIHIBIT_ANYPOLICY (1 << 13) +#define MBEDTLS_OID_X509_EXT_FRESHEST_CRL (1 << 14) +#define MBEDTLS_OID_X509_EXT_NS_CERT_TYPE (1 << 16) + +/* + * Top level OID tuples + */ +#define MBEDTLS_OID_ISO_MEMBER_BODIES "\x2a" /* {iso(1) member-body(2)} */ +#define MBEDTLS_OID_ISO_IDENTIFIED_ORG "\x2b" /* {iso(1) identified-organization(3)} */ +#define MBEDTLS_OID_ISO_CCITT_DS "\x55" /* {joint-iso-ccitt(2) ds(5)} */ +#define MBEDTLS_OID_ISO_ITU_COUNTRY "\x60" /* {joint-iso-itu-t(2) country(16)} */ + +/* + * ISO Member bodies OID parts + */ +#define MBEDTLS_OID_COUNTRY_US "\x86\x48" /* {us(840)} */ +#define MBEDTLS_OID_ORG_RSA_DATA_SECURITY "\x86\xf7\x0d" /* {rsadsi(113549)} */ +#define MBEDTLS_OID_RSA_COMPANY MBEDTLS_OID_ISO_MEMBER_BODIES MBEDTLS_OID_COUNTRY_US \ + MBEDTLS_OID_ORG_RSA_DATA_SECURITY /* {iso(1) member-body(2) us(840) rsadsi(113549)} */ +#define MBEDTLS_OID_ORG_ANSI_X9_62 "\xce\x3d" /* ansi-X9-62(10045) */ +#define MBEDTLS_OID_ANSI_X9_62 MBEDTLS_OID_ISO_MEMBER_BODIES MBEDTLS_OID_COUNTRY_US \ + MBEDTLS_OID_ORG_ANSI_X9_62 + +/* + * ISO Identified organization OID parts + */ +#define MBEDTLS_OID_ORG_DOD "\x06" /* {dod(6)} */ +#define MBEDTLS_OID_ORG_OIW "\x0e" +#define MBEDTLS_OID_OIW_SECSIG MBEDTLS_OID_ORG_OIW "\x03" +#define MBEDTLS_OID_OIW_SECSIG_ALG MBEDTLS_OID_OIW_SECSIG "\x02" +#define MBEDTLS_OID_OIW_SECSIG_SHA1 MBEDTLS_OID_OIW_SECSIG_ALG "\x1a" +#define MBEDTLS_OID_ORG_CERTICOM "\x81\x04" /* certicom(132) */ +#define MBEDTLS_OID_CERTICOM MBEDTLS_OID_ISO_IDENTIFIED_ORG MBEDTLS_OID_ORG_CERTICOM +#define MBEDTLS_OID_ORG_TELETRUST "\x24" /* teletrust(36) */ +#define MBEDTLS_OID_TELETRUST MBEDTLS_OID_ISO_IDENTIFIED_ORG MBEDTLS_OID_ORG_TELETRUST + +/* + * ISO ITU OID parts + */ +#define MBEDTLS_OID_ORGANIZATION "\x01" /* {organization(1)} */ +#define MBEDTLS_OID_ISO_ITU_US_ORG MBEDTLS_OID_ISO_ITU_COUNTRY MBEDTLS_OID_COUNTRY_US MBEDTLS_OID_ORGANIZATION /* {joint-iso-itu-t(2) country(16) us(840) organization(1)} */ + +#define MBEDTLS_OID_ORG_GOV "\x65" /* {gov(101)} */ +#define MBEDTLS_OID_GOV MBEDTLS_OID_ISO_ITU_US_ORG MBEDTLS_OID_ORG_GOV /* {joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101)} */ + +#define MBEDTLS_OID_ORG_NETSCAPE "\x86\xF8\x42" /* {netscape(113730)} */ +#define MBEDTLS_OID_NETSCAPE MBEDTLS_OID_ISO_ITU_US_ORG MBEDTLS_OID_ORG_NETSCAPE /* Netscape OID {joint-iso-itu-t(2) country(16) us(840) organization(1) netscape(113730)} */ + +/* ISO arc for standard certificate and CRL extensions */ +#define MBEDTLS_OID_ID_CE MBEDTLS_OID_ISO_CCITT_DS "\x1D" /**< id-ce OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 29} */ + +#define MBEDTLS_OID_NIST_ALG MBEDTLS_OID_GOV "\x03\x04" /** { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistAlgorithm(4) */ + +/** + * Private Internet Extensions + * { iso(1) identified-organization(3) dod(6) internet(1) + * security(5) mechanisms(5) pkix(7) } + */ +#define MBEDTLS_OID_INTERNET MBEDTLS_OID_ISO_IDENTIFIED_ORG MBEDTLS_OID_ORG_DOD "\x01" +#define MBEDTLS_OID_PKIX MBEDTLS_OID_INTERNET "\x05\x05\x07" + +/* + * Arc for standard naming attributes + */ +#define MBEDTLS_OID_AT MBEDTLS_OID_ISO_CCITT_DS "\x04" /**< id-at OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 4} */ +#define MBEDTLS_OID_AT_CN MBEDTLS_OID_AT "\x03" /**< id-at-commonName AttributeType:= {id-at 3} */ +#define MBEDTLS_OID_AT_SUR_NAME MBEDTLS_OID_AT "\x04" /**< id-at-surName AttributeType:= {id-at 4} */ +#define MBEDTLS_OID_AT_SERIAL_NUMBER MBEDTLS_OID_AT "\x05" /**< id-at-serialNumber AttributeType:= {id-at 5} */ +#define MBEDTLS_OID_AT_COUNTRY MBEDTLS_OID_AT "\x06" /**< id-at-countryName AttributeType:= {id-at 6} */ +#define MBEDTLS_OID_AT_LOCALITY MBEDTLS_OID_AT "\x07" /**< id-at-locality AttributeType:= {id-at 7} */ +#define MBEDTLS_OID_AT_STATE MBEDTLS_OID_AT "\x08" /**< id-at-state AttributeType:= {id-at 8} */ +#define MBEDTLS_OID_AT_ORGANIZATION MBEDTLS_OID_AT "\x0A" /**< id-at-organizationName AttributeType:= {id-at 10} */ +#define MBEDTLS_OID_AT_ORG_UNIT MBEDTLS_OID_AT "\x0B" /**< id-at-organizationalUnitName AttributeType:= {id-at 11} */ +#define MBEDTLS_OID_AT_TITLE MBEDTLS_OID_AT "\x0C" /**< id-at-title AttributeType:= {id-at 12} */ +#define MBEDTLS_OID_AT_POSTAL_ADDRESS MBEDTLS_OID_AT "\x10" /**< id-at-postalAddress AttributeType:= {id-at 16} */ +#define MBEDTLS_OID_AT_POSTAL_CODE MBEDTLS_OID_AT "\x11" /**< id-at-postalCode AttributeType:= {id-at 17} */ +#define MBEDTLS_OID_AT_GIVEN_NAME MBEDTLS_OID_AT "\x2A" /**< id-at-givenName AttributeType:= {id-at 42} */ +#define MBEDTLS_OID_AT_INITIALS MBEDTLS_OID_AT "\x2B" /**< id-at-initials AttributeType:= {id-at 43} */ +#define MBEDTLS_OID_AT_GENERATION_QUALIFIER MBEDTLS_OID_AT "\x2C" /**< id-at-generationQualifier AttributeType:= {id-at 44} */ +#define MBEDTLS_OID_AT_UNIQUE_IDENTIFIER MBEDTLS_OID_AT "\x2D" /**< id-at-uniqueIdentifier AttributType:= {id-at 45} */ +#define MBEDTLS_OID_AT_DN_QUALIFIER MBEDTLS_OID_AT "\x2E" /**< id-at-dnQualifier AttributeType:= {id-at 46} */ +#define MBEDTLS_OID_AT_PSEUDONYM MBEDTLS_OID_AT "\x41" /**< id-at-pseudonym AttributeType:= {id-at 65} */ + +#define MBEDTLS_OID_MATTER_VID "\x2B\x06\x01\x04\x01\x82\xA2\x7C\x02\x01" /** id-domainComponent AttributeType:= {itu-t(0) data(9) pss(2342) ucl(19200300) pilot(100) pilotAttributeType(1) uid(1)} */ +#define MBEDTLS_OID_MATTER_PID "\x2B\x06\x01\x04\x01\x82\xA2\x7C\x02\x02" /** id-domainComponent AttributeType:= {itu-t(0) data(9) pss(2342) ucl(19200300) pilot(100) pilotAttributeType(1) uid(1)} */ + + +#define MBEDTLS_OID_UID "\x09\x92\x26\x89\x93\xF2\x2C\x64\x01\x01" /** id-domainComponent AttributeType:= {itu-t(0) data(9) pss(2342) ucl(19200300) pilot(100) pilotAttributeType(1) uid(1)} */ +#define MBEDTLS_OID_DOMAIN_COMPONENT "\x09\x92\x26\x89\x93\xF2\x2C\x64\x01\x19" /** id-domainComponent AttributeType:= {itu-t(0) data(9) pss(2342) ucl(19200300) pilot(100) pilotAttributeType(1) domainComponent(25)} */ + +/* + * OIDs for standard certificate extensions + */ +#define MBEDTLS_OID_AUTHORITY_KEY_IDENTIFIER MBEDTLS_OID_ID_CE "\x23" /**< id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 35 } */ +#define MBEDTLS_OID_SUBJECT_KEY_IDENTIFIER MBEDTLS_OID_ID_CE "\x0E" /**< id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 14 } */ +#define MBEDTLS_OID_KEY_USAGE MBEDTLS_OID_ID_CE "\x0F" /**< id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 } */ +#define MBEDTLS_OID_CERTIFICATE_POLICIES MBEDTLS_OID_ID_CE "\x20" /**< id-ce-certificatePolicies OBJECT IDENTIFIER ::= { id-ce 32 } */ +#define MBEDTLS_OID_POLICY_MAPPINGS MBEDTLS_OID_ID_CE "\x21" /**< id-ce-policyMappings OBJECT IDENTIFIER ::= { id-ce 33 } */ +#define MBEDTLS_OID_SUBJECT_ALT_NAME MBEDTLS_OID_ID_CE "\x11" /**< id-ce-subjectAltName OBJECT IDENTIFIER ::= { id-ce 17 } */ +#define MBEDTLS_OID_ISSUER_ALT_NAME MBEDTLS_OID_ID_CE "\x12" /**< id-ce-issuerAltName OBJECT IDENTIFIER ::= { id-ce 18 } */ +#define MBEDTLS_OID_SUBJECT_DIRECTORY_ATTRS MBEDTLS_OID_ID_CE "\x09" /**< id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::= { id-ce 9 } */ +#define MBEDTLS_OID_BASIC_CONSTRAINTS MBEDTLS_OID_ID_CE "\x13" /**< id-ce-basicConstraints OBJECT IDENTIFIER ::= { id-ce 19 } */ +#define MBEDTLS_OID_NAME_CONSTRAINTS MBEDTLS_OID_ID_CE "\x1E" /**< id-ce-nameConstraints OBJECT IDENTIFIER ::= { id-ce 30 } */ +#define MBEDTLS_OID_POLICY_CONSTRAINTS MBEDTLS_OID_ID_CE "\x24" /**< id-ce-policyConstraints OBJECT IDENTIFIER ::= { id-ce 36 } */ +#define MBEDTLS_OID_EXTENDED_KEY_USAGE MBEDTLS_OID_ID_CE "\x25" /**< id-ce-extKeyUsage OBJECT IDENTIFIER ::= { id-ce 37 } */ +#define MBEDTLS_OID_CRL_DISTRIBUTION_POINTS MBEDTLS_OID_ID_CE "\x1F" /**< id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::= { id-ce 31 } */ +#define MBEDTLS_OID_INIHIBIT_ANYPOLICY MBEDTLS_OID_ID_CE "\x36" /**< id-ce-inhibitAnyPolicy OBJECT IDENTIFIER ::= { id-ce 54 } */ +#define MBEDTLS_OID_FRESHEST_CRL MBEDTLS_OID_ID_CE "\x2E" /**< id-ce-freshestCRL OBJECT IDENTIFIER ::= { id-ce 46 } */ + +/* + * Certificate policies + */ +#define MBEDTLS_OID_ANY_POLICY MBEDTLS_OID_CERTIFICATE_POLICIES "\x00" /**< anyPolicy OBJECT IDENTIFIER ::= { id-ce-certificatePolicies 0 } */ + +/* + * Netscape certificate extensions + */ +#define MBEDTLS_OID_NS_CERT MBEDTLS_OID_NETSCAPE "\x01" +#define MBEDTLS_OID_NS_CERT_TYPE MBEDTLS_OID_NS_CERT "\x01" +#define MBEDTLS_OID_NS_BASE_URL MBEDTLS_OID_NS_CERT "\x02" +#define MBEDTLS_OID_NS_REVOCATION_URL MBEDTLS_OID_NS_CERT "\x03" +#define MBEDTLS_OID_NS_CA_REVOCATION_URL MBEDTLS_OID_NS_CERT "\x04" +#define MBEDTLS_OID_NS_RENEWAL_URL MBEDTLS_OID_NS_CERT "\x07" +#define MBEDTLS_OID_NS_CA_POLICY_URL MBEDTLS_OID_NS_CERT "\x08" +#define MBEDTLS_OID_NS_SSL_SERVER_NAME MBEDTLS_OID_NS_CERT "\x0C" +#define MBEDTLS_OID_NS_COMMENT MBEDTLS_OID_NS_CERT "\x0D" +#define MBEDTLS_OID_NS_DATA_TYPE MBEDTLS_OID_NETSCAPE "\x02" +#define MBEDTLS_OID_NS_CERT_SEQUENCE MBEDTLS_OID_NS_DATA_TYPE "\x05" + +/* + * OIDs for CRL extensions + */ +#define MBEDTLS_OID_PRIVATE_KEY_USAGE_PERIOD MBEDTLS_OID_ID_CE "\x10" +#define MBEDTLS_OID_CRL_NUMBER MBEDTLS_OID_ID_CE "\x14" /**< id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 } */ + +/* + * X.509 v3 Extended key usage OIDs + */ +#define MBEDTLS_OID_ANY_EXTENDED_KEY_USAGE MBEDTLS_OID_EXTENDED_KEY_USAGE "\x00" /**< anyExtendedKeyUsage OBJECT IDENTIFIER ::= { id-ce-extKeyUsage 0 } */ + +#define MBEDTLS_OID_KP MBEDTLS_OID_PKIX "\x03" /**< id-kp OBJECT IDENTIFIER ::= { id-pkix 3 } */ +#define MBEDTLS_OID_SERVER_AUTH MBEDTLS_OID_KP "\x01" /**< id-kp-serverAuth OBJECT IDENTIFIER ::= { id-kp 1 } */ +#define MBEDTLS_OID_CLIENT_AUTH MBEDTLS_OID_KP "\x02" /**< id-kp-clientAuth OBJECT IDENTIFIER ::= { id-kp 2 } */ +#define MBEDTLS_OID_CODE_SIGNING MBEDTLS_OID_KP "\x03" /**< id-kp-codeSigning OBJECT IDENTIFIER ::= { id-kp 3 } */ +#define MBEDTLS_OID_EMAIL_PROTECTION MBEDTLS_OID_KP "\x04" /**< id-kp-emailProtection OBJECT IDENTIFIER ::= { id-kp 4 } */ +#define MBEDTLS_OID_TIME_STAMPING MBEDTLS_OID_KP "\x08" /**< id-kp-timeStamping OBJECT IDENTIFIER ::= { id-kp 8 } */ +#define MBEDTLS_OID_OCSP_SIGNING MBEDTLS_OID_KP "\x09" /**< id-kp-OCSPSigning OBJECT IDENTIFIER ::= { id-kp 9 } */ + +/** + * Wi-SUN Alliance Field Area Network + * { iso(1) identified-organization(3) dod(6) internet(1) + * private(4) enterprise(1) WiSUN(45605) FieldAreaNetwork(1) } + */ +#define MBEDTLS_OID_WISUN_FAN MBEDTLS_OID_INTERNET "\x04\x01\x82\xe4\x25\x01" + +#define MBEDTLS_OID_ON MBEDTLS_OID_PKIX "\x08" /**< id-on OBJECT IDENTIFIER ::= { id-pkix 8 } */ +#define MBEDTLS_OID_ON_HW_MODULE_NAME MBEDTLS_OID_ON "\x04" /**< id-on-hardwareModuleName OBJECT IDENTIFIER ::= { id-on 4 } */ + +/* + * PKCS definition OIDs + */ + +#define MBEDTLS_OID_PKCS MBEDTLS_OID_RSA_COMPANY "\x01" /**< pkcs OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) 1 } */ +#define MBEDTLS_OID_PKCS1 MBEDTLS_OID_PKCS "\x01" /**< pkcs-1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 1 } */ +#define MBEDTLS_OID_PKCS5 MBEDTLS_OID_PKCS "\x05" /**< pkcs-5 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 5 } */ +#define MBEDTLS_OID_PKCS9 MBEDTLS_OID_PKCS "\x09" /**< pkcs-9 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 9 } */ +#define MBEDTLS_OID_PKCS12 MBEDTLS_OID_PKCS "\x0c" /**< pkcs-12 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 12 } */ + +/* + * PKCS#1 OIDs + */ +#define MBEDTLS_OID_PKCS1_RSA MBEDTLS_OID_PKCS1 "\x01" /**< rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } */ +#define MBEDTLS_OID_PKCS1_MD5 MBEDTLS_OID_PKCS1 "\x04" /**< md5WithRSAEncryption ::= { pkcs-1 4 } */ +#define MBEDTLS_OID_PKCS1_SHA1 MBEDTLS_OID_PKCS1 "\x05" /**< sha1WithRSAEncryption ::= { pkcs-1 5 } */ +#define MBEDTLS_OID_PKCS1_SHA224 MBEDTLS_OID_PKCS1 "\x0e" /**< sha224WithRSAEncryption ::= { pkcs-1 14 } */ +#define MBEDTLS_OID_PKCS1_SHA256 MBEDTLS_OID_PKCS1 "\x0b" /**< sha256WithRSAEncryption ::= { pkcs-1 11 } */ +#define MBEDTLS_OID_PKCS1_SHA384 MBEDTLS_OID_PKCS1 "\x0c" /**< sha384WithRSAEncryption ::= { pkcs-1 12 } */ +#define MBEDTLS_OID_PKCS1_SHA512 MBEDTLS_OID_PKCS1 "\x0d" /**< sha512WithRSAEncryption ::= { pkcs-1 13 } */ + +#define MBEDTLS_OID_RSA_SHA_OBS "\x2B\x0E\x03\x02\x1D" + +#define MBEDTLS_OID_PKCS9_EMAIL MBEDTLS_OID_PKCS9 "\x01" /**< emailAddress AttributeType ::= { pkcs-9 1 } */ + +/* RFC 4055 */ +#define MBEDTLS_OID_RSASSA_PSS MBEDTLS_OID_PKCS1 "\x0a" /**< id-RSASSA-PSS ::= { pkcs-1 10 } */ +#define MBEDTLS_OID_MGF1 MBEDTLS_OID_PKCS1 "\x08" /**< id-mgf1 ::= { pkcs-1 8 } */ + +/* + * Digest algorithms + */ +#define MBEDTLS_OID_DIGEST_ALG_MD5 MBEDTLS_OID_RSA_COMPANY "\x02\x05" /**< id-mbedtls_md5 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 5 } */ +#define MBEDTLS_OID_DIGEST_ALG_SHA1 MBEDTLS_OID_ISO_IDENTIFIED_ORG MBEDTLS_OID_OIW_SECSIG_SHA1 /**< id-mbedtls_sha1 OBJECT IDENTIFIER ::= { iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) 26 } */ +#define MBEDTLS_OID_DIGEST_ALG_SHA224 MBEDTLS_OID_NIST_ALG "\x02\x04" /**< id-sha224 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 4 } */ +#define MBEDTLS_OID_DIGEST_ALG_SHA256 MBEDTLS_OID_NIST_ALG "\x02\x01" /**< id-mbedtls_sha256 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 1 } */ + +#define MBEDTLS_OID_DIGEST_ALG_SHA384 MBEDTLS_OID_NIST_ALG "\x02\x02" /**< id-sha384 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 2 } */ + +#define MBEDTLS_OID_DIGEST_ALG_SHA512 MBEDTLS_OID_NIST_ALG "\x02\x03" /**< id-mbedtls_sha512 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 3 } */ + +#define MBEDTLS_OID_DIGEST_ALG_RIPEMD160 MBEDTLS_OID_TELETRUST "\x03\x02\x01" /**< id-ripemd160 OBJECT IDENTIFIER :: { iso(1) identified-organization(3) teletrust(36) algorithm(3) hashAlgorithm(2) ripemd160(1) } */ + +#define MBEDTLS_OID_HMAC_SHA1 MBEDTLS_OID_RSA_COMPANY "\x02\x07" /**< id-hmacWithSHA1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 7 } */ + +#define MBEDTLS_OID_HMAC_SHA224 MBEDTLS_OID_RSA_COMPANY "\x02\x08" /**< id-hmacWithSHA224 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 8 } */ + +#define MBEDTLS_OID_HMAC_SHA256 MBEDTLS_OID_RSA_COMPANY "\x02\x09" /**< id-hmacWithSHA256 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 9 } */ + +#define MBEDTLS_OID_HMAC_SHA384 MBEDTLS_OID_RSA_COMPANY "\x02\x0A" /**< id-hmacWithSHA384 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 10 } */ + +#define MBEDTLS_OID_HMAC_SHA512 MBEDTLS_OID_RSA_COMPANY "\x02\x0B" /**< id-hmacWithSHA512 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 11 } */ + +/* + * Encryption algorithms + */ +#define MBEDTLS_OID_DES_CBC MBEDTLS_OID_ISO_IDENTIFIED_ORG MBEDTLS_OID_OIW_SECSIG_ALG "\x07" /**< desCBC OBJECT IDENTIFIER ::= { iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) 7 } */ +#define MBEDTLS_OID_DES_EDE3_CBC MBEDTLS_OID_RSA_COMPANY "\x03\x07" /**< des-ede3-cbc OBJECT IDENTIFIER ::= { iso(1) member-body(2) -- us(840) rsadsi(113549) encryptionAlgorithm(3) 7 } */ +#define MBEDTLS_OID_AES MBEDTLS_OID_NIST_ALG "\x01" /** aes OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistAlgorithm(4) 1 } */ + +/* + * Key Wrapping algorithms + */ +/* + * RFC 5649 + */ +#define MBEDTLS_OID_AES128_KW MBEDTLS_OID_AES "\x05" /** id-aes128-wrap OBJECT IDENTIFIER ::= { aes 5 } */ +#define MBEDTLS_OID_AES128_KWP MBEDTLS_OID_AES "\x08" /** id-aes128-wrap-pad OBJECT IDENTIFIER ::= { aes 8 } */ +#define MBEDTLS_OID_AES192_KW MBEDTLS_OID_AES "\x19" /** id-aes192-wrap OBJECT IDENTIFIER ::= { aes 25 } */ +#define MBEDTLS_OID_AES192_KWP MBEDTLS_OID_AES "\x1c" /** id-aes192-wrap-pad OBJECT IDENTIFIER ::= { aes 28 } */ +#define MBEDTLS_OID_AES256_KW MBEDTLS_OID_AES "\x2d" /** id-aes256-wrap OBJECT IDENTIFIER ::= { aes 45 } */ +#define MBEDTLS_OID_AES256_KWP MBEDTLS_OID_AES "\x30" /** id-aes256-wrap-pad OBJECT IDENTIFIER ::= { aes 48 } */ +/* + * PKCS#5 OIDs + */ +#define MBEDTLS_OID_PKCS5_PBKDF2 MBEDTLS_OID_PKCS5 "\x0c" /**< id-PBKDF2 OBJECT IDENTIFIER ::= {pkcs-5 12} */ +#define MBEDTLS_OID_PKCS5_PBES2 MBEDTLS_OID_PKCS5 "\x0d" /**< id-PBES2 OBJECT IDENTIFIER ::= {pkcs-5 13} */ +#define MBEDTLS_OID_PKCS5_PBMAC1 MBEDTLS_OID_PKCS5 "\x0e" /**< id-PBMAC1 OBJECT IDENTIFIER ::= {pkcs-5 14} */ + +/* + * PKCS#5 PBES1 algorithms + */ +#define MBEDTLS_OID_PKCS5_PBE_MD5_DES_CBC MBEDTLS_OID_PKCS5 "\x03" /**< pbeWithMD5AndDES-CBC OBJECT IDENTIFIER ::= {pkcs-5 3} */ +#define MBEDTLS_OID_PKCS5_PBE_MD5_RC2_CBC MBEDTLS_OID_PKCS5 "\x06" /**< pbeWithMD5AndRC2-CBC OBJECT IDENTIFIER ::= {pkcs-5 6} */ +#define MBEDTLS_OID_PKCS5_PBE_SHA1_DES_CBC MBEDTLS_OID_PKCS5 "\x0a" /**< pbeWithSHA1AndDES-CBC OBJECT IDENTIFIER ::= {pkcs-5 10} */ +#define MBEDTLS_OID_PKCS5_PBE_SHA1_RC2_CBC MBEDTLS_OID_PKCS5 "\x0b" /**< pbeWithSHA1AndRC2-CBC OBJECT IDENTIFIER ::= {pkcs-5 11} */ + +/* + * PKCS#8 OIDs + */ +#define MBEDTLS_OID_PKCS9_CSR_EXT_REQ MBEDTLS_OID_PKCS9 "\x0e" /**< extensionRequest OBJECT IDENTIFIER ::= {pkcs-9 14} */ + +/* + * PKCS#12 PBE OIDs + */ +#define MBEDTLS_OID_PKCS12_PBE MBEDTLS_OID_PKCS12 "\x01" /**< pkcs-12PbeIds OBJECT IDENTIFIER ::= {pkcs-12 1} */ + +#define MBEDTLS_OID_PKCS12_PBE_SHA1_DES3_EDE_CBC MBEDTLS_OID_PKCS12_PBE "\x03" /**< pbeWithSHAAnd3-KeyTripleDES-CBC OBJECT IDENTIFIER ::= {pkcs-12PbeIds 3} */ +#define MBEDTLS_OID_PKCS12_PBE_SHA1_DES2_EDE_CBC MBEDTLS_OID_PKCS12_PBE "\x04" /**< pbeWithSHAAnd2-KeyTripleDES-CBC OBJECT IDENTIFIER ::= {pkcs-12PbeIds 4} */ +#define MBEDTLS_OID_PKCS12_PBE_SHA1_RC2_128_CBC MBEDTLS_OID_PKCS12_PBE "\x05" /**< pbeWithSHAAnd128BitRC2-CBC OBJECT IDENTIFIER ::= {pkcs-12PbeIds 5} */ +#define MBEDTLS_OID_PKCS12_PBE_SHA1_RC2_40_CBC MBEDTLS_OID_PKCS12_PBE "\x06" /**< pbeWithSHAAnd40BitRC2-CBC OBJECT IDENTIFIER ::= {pkcs-12PbeIds 6} */ + +/* + * EC key algorithms from RFC 5480 + */ + +/* id-ecPublicKey OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) keyType(2) 1 } */ +#define MBEDTLS_OID_EC_ALG_UNRESTRICTED MBEDTLS_OID_ANSI_X9_62 "\x02\01" + +/* id-ecDH OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) + * schemes(1) ecdh(12) } */ +#define MBEDTLS_OID_EC_ALG_ECDH MBEDTLS_OID_CERTICOM "\x01\x0c" + +/* + * ECParameters namedCurve identifiers, from RFC 5480, RFC 5639, and SEC2 + */ + +/* secp192r1 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3) prime(1) 1 } */ +#define MBEDTLS_OID_EC_GRP_SECP192R1 MBEDTLS_OID_ANSI_X9_62 "\x03\x01\x01" + +/* secp224r1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 33 } */ +#define MBEDTLS_OID_EC_GRP_SECP224R1 MBEDTLS_OID_CERTICOM "\x00\x21" + +/* secp256r1 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3) prime(1) 7 } */ +#define MBEDTLS_OID_EC_GRP_SECP256R1 MBEDTLS_OID_ANSI_X9_62 "\x03\x01\x07" + +/* secp384r1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 34 } */ +#define MBEDTLS_OID_EC_GRP_SECP384R1 MBEDTLS_OID_CERTICOM "\x00\x22" + +/* secp521r1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 35 } */ +#define MBEDTLS_OID_EC_GRP_SECP521R1 MBEDTLS_OID_CERTICOM "\x00\x23" + +/* secp192k1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 31 } */ +#define MBEDTLS_OID_EC_GRP_SECP192K1 MBEDTLS_OID_CERTICOM "\x00\x1f" + +/* secp224k1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 32 } */ +#define MBEDTLS_OID_EC_GRP_SECP224K1 MBEDTLS_OID_CERTICOM "\x00\x20" + +/* secp256k1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 10 } */ +#define MBEDTLS_OID_EC_GRP_SECP256K1 MBEDTLS_OID_CERTICOM "\x00\x0a" + +/* RFC 5639 4.1 + * ecStdCurvesAndGeneration OBJECT IDENTIFIER::= {iso(1) + * identified-organization(3) teletrust(36) algorithm(3) signature- + * algorithm(3) ecSign(2) 8} + * ellipticCurve OBJECT IDENTIFIER ::= {ecStdCurvesAndGeneration 1} + * versionOne OBJECT IDENTIFIER ::= {ellipticCurve 1} */ +#define MBEDTLS_OID_EC_BRAINPOOL_V1 MBEDTLS_OID_TELETRUST "\x03\x03\x02\x08\x01\x01" + +/* brainpoolP256r1 OBJECT IDENTIFIER ::= {versionOne 7} */ +#define MBEDTLS_OID_EC_GRP_BP256R1 MBEDTLS_OID_EC_BRAINPOOL_V1 "\x07" + +/* brainpoolP384r1 OBJECT IDENTIFIER ::= {versionOne 11} */ +#define MBEDTLS_OID_EC_GRP_BP384R1 MBEDTLS_OID_EC_BRAINPOOL_V1 "\x0B" + +/* brainpoolP512r1 OBJECT IDENTIFIER ::= {versionOne 13} */ +#define MBEDTLS_OID_EC_GRP_BP512R1 MBEDTLS_OID_EC_BRAINPOOL_V1 "\x0D" + +/* + * SEC1 C.1 + * + * prime-field OBJECT IDENTIFIER ::= { id-fieldType 1 } + * id-fieldType OBJECT IDENTIFIER ::= { ansi-X9-62 fieldType(1)} + */ +#define MBEDTLS_OID_ANSI_X9_62_FIELD_TYPE MBEDTLS_OID_ANSI_X9_62 "\x01" +#define MBEDTLS_OID_ANSI_X9_62_PRIME_FIELD MBEDTLS_OID_ANSI_X9_62_FIELD_TYPE "\x01" + +/* + * ECDSA signature identifiers, from RFC 5480 + */ +#define MBEDTLS_OID_ANSI_X9_62_SIG MBEDTLS_OID_ANSI_X9_62 "\x04" /* signatures(4) */ +#define MBEDTLS_OID_ANSI_X9_62_SIG_SHA2 MBEDTLS_OID_ANSI_X9_62_SIG "\x03" /* ecdsa-with-SHA2(3) */ + +/* ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) 1 } */ +#define MBEDTLS_OID_ECDSA_SHA1 MBEDTLS_OID_ANSI_X9_62_SIG "\x01" + +/* ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + * ecdsa-with-SHA2(3) 1 } */ +#define MBEDTLS_OID_ECDSA_SHA224 MBEDTLS_OID_ANSI_X9_62_SIG_SHA2 "\x01" + +/* ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + * ecdsa-with-SHA2(3) 2 } */ +#define MBEDTLS_OID_ECDSA_SHA256 MBEDTLS_OID_ANSI_X9_62_SIG_SHA2 "\x02" + +/* ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + * ecdsa-with-SHA2(3) 3 } */ +#define MBEDTLS_OID_ECDSA_SHA384 MBEDTLS_OID_ANSI_X9_62_SIG_SHA2 "\x03" + +/* ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + * ecdsa-with-SHA2(3) 4 } */ +#define MBEDTLS_OID_ECDSA_SHA512 MBEDTLS_OID_ANSI_X9_62_SIG_SHA2 "\x04" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Base OID descriptor structure + */ +typedef struct mbedtls_oid_descriptor_t +{ + const char *MBEDTLS_PRIVATE(asn1); /*!< OID ASN.1 representation */ + size_t MBEDTLS_PRIVATE(asn1_len); /*!< length of asn1 */ +#if !defined(MBEDTLS_X509_REMOVE_INFO) + const char *MBEDTLS_PRIVATE(name); /*!< official name (e.g. from RFC) */ + const char *MBEDTLS_PRIVATE(description); /*!< human friendly description */ +#endif +} mbedtls_oid_descriptor_t; + +/** + * \brief Translate an ASN.1 OID into its numeric representation + * (e.g. "\x2A\x86\x48\x86\xF7\x0D" into "1.2.840.113549") + * + * \param buf buffer to put representation in + * \param size size of the buffer + * \param oid OID to translate + * + * \return Length of the string written (excluding final NULL) or + * MBEDTLS_ERR_OID_BUF_TOO_SMALL in case of error + */ +int mbedtls_oid_get_numeric_string( char *buf, size_t size, const mbedtls_asn1_buf *oid ); + +/** + * \brief Translate an X.509 extension OID into local values + * + * \param oid OID to use + * \param ext_type place to store the extension type + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_x509_ext_type( const mbedtls_asn1_buf *oid, int *ext_type ); + +/** + * \brief Translate an X.509 attribute type OID into the short name + * (e.g. the OID for an X520 Common Name into "CN") + * + * \param oid OID to use + * \param short_name place to store the string pointer + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_attr_short_name( const mbedtls_asn1_buf *oid, const char **short_name ); + +/** + * \brief Translate PublicKeyAlgorithm OID into pk_type + * + * \param oid OID to use + * \param pk_alg place to store public key algorithm + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_pk_alg( const mbedtls_asn1_buf *oid, mbedtls_pk_type_t *pk_alg ); + +/** + * \brief Translate pk_type into PublicKeyAlgorithm OID + * + * \param pk_alg Public key type to look for + * \param oid place to store ASN.1 OID string pointer + * \param olen length of the OID + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_oid_by_pk_alg( mbedtls_pk_type_t pk_alg, + const char **oid, size_t *olen ); + +#if defined(MBEDTLS_ECP_C) +/** + * \brief Translate NamedCurve OID into an EC group identifier + * + * \param oid OID to use + * \param grp_id place to store group id + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_ec_grp( const mbedtls_asn1_buf *oid, mbedtls_ecp_group_id *grp_id ); + +/** + * \brief Translate EC group identifier into NamedCurve OID + * + * \param grp_id EC group identifier + * \param oid place to store ASN.1 OID string pointer + * \param olen length of the OID + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_oid_by_ec_grp( mbedtls_ecp_group_id grp_id, + const char **oid, size_t *olen ); +#endif /* MBEDTLS_ECP_C */ + +#if defined(MBEDTLS_MD_C) +/** + * \brief Translate SignatureAlgorithm OID into md_type and pk_type + * + * \param oid OID to use + * \param md_alg place to store message digest algorithm + * \param pk_alg place to store public key algorithm + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_sig_alg( const mbedtls_asn1_buf *oid, + mbedtls_md_type_t *md_alg, mbedtls_pk_type_t *pk_alg ); + +/** + * \brief Translate SignatureAlgorithm OID into description + * + * \param oid OID to use + * \param desc place to store string pointer + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_sig_alg_desc( const mbedtls_asn1_buf *oid, const char **desc ); + +/** + * \brief Translate md_type and pk_type into SignatureAlgorithm OID + * + * \param md_alg message digest algorithm + * \param pk_alg public key algorithm + * \param oid place to store ASN.1 OID string pointer + * \param olen length of the OID + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_oid_by_sig_alg( mbedtls_pk_type_t pk_alg, mbedtls_md_type_t md_alg, + const char **oid, size_t *olen ); + +/** + * \brief Translate hash algorithm OID into md_type + * + * \param oid OID to use + * \param md_alg place to store message digest algorithm + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_md_alg( const mbedtls_asn1_buf *oid, mbedtls_md_type_t *md_alg ); + +/** + * \brief Translate hmac algorithm OID into md_type + * + * \param oid OID to use + * \param md_hmac place to store message hmac algorithm + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_md_hmac( const mbedtls_asn1_buf *oid, mbedtls_md_type_t *md_hmac ); +#endif /* MBEDTLS_MD_C */ + +#if !defined(MBEDTLS_X509_REMOVE_INFO) +/** + * \brief Translate Extended Key Usage OID into description + * + * \param oid OID to use + * \param desc place to store string pointer + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_extended_key_usage( const mbedtls_asn1_buf *oid, const char **desc ); +#endif + +/** + * \brief Translate certificate policies OID into description + * + * \param oid OID to use + * \param desc place to store string pointer + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_certificate_policies( const mbedtls_asn1_buf *oid, const char **desc ); + +/** + * \brief Translate md_type into hash algorithm OID + * + * \param md_alg message digest algorithm + * \param oid place to store ASN.1 OID string pointer + * \param olen length of the OID + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_oid_by_md( mbedtls_md_type_t md_alg, const char **oid, size_t *olen ); + +#if defined(MBEDTLS_CIPHER_C) +/** + * \brief Translate encryption algorithm OID into cipher_type + * + * \param oid OID to use + * \param cipher_alg place to store cipher algorithm + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_cipher_alg( const mbedtls_asn1_buf *oid, mbedtls_cipher_type_t *cipher_alg ); +#endif /* MBEDTLS_CIPHER_C */ + +#if defined(MBEDTLS_PKCS12_C) +/** + * \brief Translate PKCS#12 PBE algorithm OID into md_type and + * cipher_type + * + * \param oid OID to use + * \param md_alg place to store message digest algorithm + * \param cipher_alg place to store cipher algorithm + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_pkcs12_pbe_alg( const mbedtls_asn1_buf *oid, mbedtls_md_type_t *md_alg, + mbedtls_cipher_type_t *cipher_alg ); +#endif /* MBEDTLS_PKCS12_C */ + +#ifdef __cplusplus +} +#endif + +#endif /* oid.h */ diff --git a/silabs_examples/credentials/common/gsdk/util/third_party/crypto/mbedtls/library/x509_create.c b/silabs_examples/credentials/common/gsdk/util/third_party/crypto/mbedtls/library/x509_create.c new file mode 100644 index 00000000000000..cbe88da882b08b --- /dev/null +++ b/silabs_examples/credentials/common/gsdk/util/third_party/crypto/mbedtls/library/x509_create.c @@ -0,0 +1,378 @@ +/* + * X.509 base functions for creating certificates / CSRs + * + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "common.h" + +#if defined(MBEDTLS_X509_CREATE_C) + +#include "mbedtls/x509.h" +#include "mbedtls/asn1write.h" +#include "mbedtls/error.h" +#include "mbedtls/oid.h" + +#include + +/* Structure linking OIDs for X.509 DN AttributeTypes to their + * string representations and default string encodings used by Mbed TLS. */ +typedef struct { + const char *name; /* String representation of AttributeType, e.g. + * "CN" or "emailAddress". */ + size_t name_len; /* Length of 'name', without trailing 0 byte. */ + const char *oid; /* String representation of OID of AttributeType, + * as per RFC 5280, Appendix A.1. */ + int default_tag; /* The default character encoding used for the + * given attribute type, e.g. + * MBEDTLS_ASN1_UTF8_STRING for UTF-8. */ +} x509_attr_descriptor_t; + +#define ADD_STRLEN( s ) s, sizeof( s ) - 1 + +/* X.509 DN attributes from RFC 5280, Appendix A.1. */ +static const x509_attr_descriptor_t x509_attrs[] = +{ + { ADD_STRLEN( "CN" ), + MBEDTLS_OID_AT_CN, MBEDTLS_ASN1_UTF8_STRING }, + { ADD_STRLEN( "commonName" ), + MBEDTLS_OID_AT_CN, MBEDTLS_ASN1_UTF8_STRING }, + { ADD_STRLEN( "C" ), + MBEDTLS_OID_AT_COUNTRY, MBEDTLS_ASN1_PRINTABLE_STRING }, + { ADD_STRLEN( "countryName" ), + MBEDTLS_OID_AT_COUNTRY, MBEDTLS_ASN1_PRINTABLE_STRING }, + { ADD_STRLEN( "O" ), + MBEDTLS_OID_AT_ORGANIZATION, MBEDTLS_ASN1_UTF8_STRING }, + { ADD_STRLEN( "organizationName" ), + MBEDTLS_OID_AT_ORGANIZATION, MBEDTLS_ASN1_UTF8_STRING }, + { ADD_STRLEN( "L" ), + MBEDTLS_OID_AT_LOCALITY, MBEDTLS_ASN1_UTF8_STRING }, + { ADD_STRLEN( "locality" ), + MBEDTLS_OID_AT_LOCALITY, MBEDTLS_ASN1_UTF8_STRING }, + { ADD_STRLEN( "R" ), + MBEDTLS_OID_PKCS9_EMAIL, MBEDTLS_ASN1_IA5_STRING }, + { ADD_STRLEN( "OU" ), + MBEDTLS_OID_AT_ORG_UNIT, MBEDTLS_ASN1_UTF8_STRING }, + { ADD_STRLEN( "organizationalUnitName" ), + MBEDTLS_OID_AT_ORG_UNIT, MBEDTLS_ASN1_UTF8_STRING }, + { ADD_STRLEN( "ST" ), + MBEDTLS_OID_AT_STATE, MBEDTLS_ASN1_UTF8_STRING }, + { ADD_STRLEN( "stateOrProvinceName" ), + MBEDTLS_OID_AT_STATE, MBEDTLS_ASN1_UTF8_STRING }, + { ADD_STRLEN( "emailAddress" ), + MBEDTLS_OID_PKCS9_EMAIL, MBEDTLS_ASN1_IA5_STRING }, + { ADD_STRLEN( "serialNumber" ), + MBEDTLS_OID_AT_SERIAL_NUMBER, MBEDTLS_ASN1_PRINTABLE_STRING }, + { ADD_STRLEN( "postalAddress" ), + MBEDTLS_OID_AT_POSTAL_ADDRESS, MBEDTLS_ASN1_PRINTABLE_STRING }, + { ADD_STRLEN( "postalCode" ), + MBEDTLS_OID_AT_POSTAL_CODE, MBEDTLS_ASN1_PRINTABLE_STRING }, + { ADD_STRLEN( "dnQualifier" ), + MBEDTLS_OID_AT_DN_QUALIFIER, MBEDTLS_ASN1_PRINTABLE_STRING }, + { ADD_STRLEN( "title" ), + MBEDTLS_OID_AT_TITLE, MBEDTLS_ASN1_UTF8_STRING }, + { ADD_STRLEN( "surName" ), + MBEDTLS_OID_AT_SUR_NAME, MBEDTLS_ASN1_UTF8_STRING }, + { ADD_STRLEN( "SN" ), + MBEDTLS_OID_AT_SUR_NAME, MBEDTLS_ASN1_UTF8_STRING }, + { ADD_STRLEN( "givenName" ), + MBEDTLS_OID_AT_GIVEN_NAME, MBEDTLS_ASN1_UTF8_STRING }, + { ADD_STRLEN( "GN" ), + MBEDTLS_OID_AT_GIVEN_NAME, MBEDTLS_ASN1_UTF8_STRING }, + { ADD_STRLEN( "initials" ), + MBEDTLS_OID_AT_INITIALS, MBEDTLS_ASN1_UTF8_STRING }, + { ADD_STRLEN( "pseudonym" ), + MBEDTLS_OID_AT_PSEUDONYM, MBEDTLS_ASN1_UTF8_STRING }, + { ADD_STRLEN( "generationQualifier" ), + MBEDTLS_OID_AT_GENERATION_QUALIFIER, MBEDTLS_ASN1_UTF8_STRING }, + { ADD_STRLEN( "domainComponent" ), + MBEDTLS_OID_DOMAIN_COMPONENT, MBEDTLS_ASN1_IA5_STRING }, + { ADD_STRLEN( "DC" ), + MBEDTLS_OID_DOMAIN_COMPONENT, MBEDTLS_ASN1_IA5_STRING }, + { ADD_STRLEN( "VID" ), + MBEDTLS_OID_MATTER_VID, MBEDTLS_ASN1_UTF8_STRING }, + { ADD_STRLEN( "PID" ), + MBEDTLS_OID_MATTER_PID, MBEDTLS_ASN1_UTF8_STRING }, + { NULL, 0, NULL, MBEDTLS_ASN1_NULL } +}; + +static const x509_attr_descriptor_t *x509_attr_descr_from_name( const char *name, size_t name_len ) +{ + const x509_attr_descriptor_t *cur; + + for( cur = x509_attrs; cur->name != NULL; cur++ ) + if( cur->name_len == name_len && + strncmp( cur->name, name, name_len ) == 0 ) + break; + + if ( cur->name == NULL ) + return( NULL ); + + return( cur ); +} + +int mbedtls_x509_string_to_names( mbedtls_asn1_named_data **head, const char *name ) +{ + int ret = 0; + const char *s = name, *c = s; + const char *end = s + strlen( s ); + const char *oid = NULL; + const x509_attr_descriptor_t* attr_descr = NULL; + int in_tag = 1; + char data[MBEDTLS_X509_MAX_DN_NAME_SIZE]; + char *d = data; + + /* Clear existing chain if present */ + mbedtls_asn1_free_named_data_list( head ); + + while( c <= end ) + { + if( in_tag && *c == '=' ) + { + if( ( attr_descr = x509_attr_descr_from_name( s, c - s ) ) == NULL ) + { + ret = MBEDTLS_ERR_X509_UNKNOWN_OID; + goto exit; + } + + oid = attr_descr->oid; + s = c + 1; + in_tag = 0; + d = data; + } + + if( !in_tag && *c == '\\' && c != end ) + { + c++; + + /* Check for valid escaped characters */ + if( c == end || *c != ',' ) + { + ret = MBEDTLS_ERR_X509_INVALID_NAME; + goto exit; + } + } + else if( !in_tag && ( *c == ',' || c == end ) ) + { + mbedtls_asn1_named_data* cur = + mbedtls_asn1_store_named_data( head, oid, strlen( oid ), + (unsigned char *) data, + d - data ); + + if(cur == NULL ) + { + return( MBEDTLS_ERR_X509_ALLOC_FAILED ); + } + + // set tagType + cur->val.tag = attr_descr->default_tag; + + while( c < end && *(c + 1) == ' ' ) + c++; + + s = c + 1; + in_tag = 1; + } + + if( !in_tag && s != c + 1 ) + { + *(d++) = *c; + + if( d - data == MBEDTLS_X509_MAX_DN_NAME_SIZE ) + { + ret = MBEDTLS_ERR_X509_INVALID_NAME; + goto exit; + } + } + + c++; + } + +exit: + + return( ret ); +} + +/* The first byte of the value in the mbedtls_asn1_named_data structure is reserved + * to store the critical boolean for us + */ +int mbedtls_x509_set_extension( mbedtls_asn1_named_data **head, const char *oid, size_t oid_len, + int critical, const unsigned char *val, size_t val_len ) +{ + mbedtls_asn1_named_data *cur; + + if( ( cur = mbedtls_asn1_store_named_data( head, oid, oid_len, + NULL, val_len + 1 ) ) == NULL ) + { + return( MBEDTLS_ERR_X509_ALLOC_FAILED ); + } + + cur->val.p[0] = critical; + memcpy( cur->val.p + 1, val, val_len ); + + return( 0 ); +} + +/* + * RelativeDistinguishedName ::= + * SET OF AttributeTypeAndValue + * + * AttributeTypeAndValue ::= SEQUENCE { + * type AttributeType, + * value AttributeValue } + * + * AttributeType ::= OBJECT IDENTIFIER + * + * AttributeValue ::= ANY DEFINED BY AttributeType + */ +static int x509_write_name( unsigned char **p, unsigned char *start, mbedtls_asn1_named_data* cur_name) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t len = 0; + const char *oid = (const char*)cur_name->oid.p; + size_t oid_len = cur_name->oid.len; + const unsigned char *name = cur_name->val.p; + size_t name_len = cur_name->val.len; + + // Write correct string tag and value + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tagged_string( p, start, + cur_name->val.tag, + (const char *) name, + name_len ) ); + // Write OID + // + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_oid( p, start, oid, + oid_len ) ); + + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( p, start, len ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( p, start, + MBEDTLS_ASN1_CONSTRUCTED | + MBEDTLS_ASN1_SEQUENCE ) ); + + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( p, start, len ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( p, start, + MBEDTLS_ASN1_CONSTRUCTED | + MBEDTLS_ASN1_SET ) ); + + return( (int) len ); +} + +int mbedtls_x509_write_names( unsigned char **p, unsigned char *start, + mbedtls_asn1_named_data *first ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t len = 0; + mbedtls_asn1_named_data *cur = first; + + while( cur != NULL ) + { + MBEDTLS_ASN1_CHK_ADD( len, x509_write_name( p, start, cur ) ); + cur = cur->next; + } + + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( p, start, len ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( p, start, MBEDTLS_ASN1_CONSTRUCTED | + MBEDTLS_ASN1_SEQUENCE ) ); + + return( (int) len ); +} + +int mbedtls_x509_write_sig( unsigned char **p, unsigned char *start, + const char *oid, size_t oid_len, + unsigned char *sig, size_t size ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t len = 0; + + if( *p < start || (size_t)( *p - start ) < size ) + return( MBEDTLS_ERR_ASN1_BUF_TOO_SMALL ); + + len = size; + (*p) -= len; + memcpy( *p, sig, len ); + + if( *p - start < 1 ) + return( MBEDTLS_ERR_ASN1_BUF_TOO_SMALL ); + + *--(*p) = 0; + len += 1; + + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( p, start, len ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( p, start, MBEDTLS_ASN1_BIT_STRING ) ); + + // Write OID + // + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_algorithm_identifier( p, start, oid, + oid_len, 0 ) ); + + return( (int) len ); +} + +static int x509_write_extension( unsigned char **p, unsigned char *start, + mbedtls_asn1_named_data *ext ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t len = 0; + + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_raw_buffer( p, start, ext->val.p + 1, + ext->val.len - 1 ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( p, start, ext->val.len - 1 ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( p, start, MBEDTLS_ASN1_OCTET_STRING ) ); + + if( ext->val.p[0] != 0 ) + { + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_bool( p, start, 1 ) ); + } + + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_raw_buffer( p, start, ext->oid.p, + ext->oid.len ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( p, start, ext->oid.len ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( p, start, MBEDTLS_ASN1_OID ) ); + + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_len( p, start, len ) ); + MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_tag( p, start, MBEDTLS_ASN1_CONSTRUCTED | + MBEDTLS_ASN1_SEQUENCE ) ); + + return( (int) len ); +} + +/* + * Extension ::= SEQUENCE { + * extnID OBJECT IDENTIFIER, + * critical BOOLEAN DEFAULT FALSE, + * extnValue OCTET STRING + * -- contains the DER encoding of an ASN.1 value + * -- corresponding to the extension type identified + * -- by extnID + * } + */ +int mbedtls_x509_write_extensions( unsigned char **p, unsigned char *start, + mbedtls_asn1_named_data *first ) +{ + int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED; + size_t len = 0; + mbedtls_asn1_named_data *cur_ext = first; + + while( cur_ext != NULL ) + { + MBEDTLS_ASN1_CHK_ADD( len, x509_write_extension( p, start, cur_ext ) ); + cur_ext = cur_ext->next; + } + + return( (int) len ); +} + +#endif /* MBEDTLS_X509_CREATE_C */ diff --git a/silabs_examples/credentials/creds.py b/silabs_examples/credentials/creds.py new file mode 100755 index 00000000000000..fc68330a37d99e --- /dev/null +++ b/silabs_examples/credentials/creds.py @@ -0,0 +1,209 @@ +import sys, getopt +import subprocess +import time +import os + +_temp_dir = './temp/' +_csr_pem = _temp_dir + 'csr.pem' +_dac_der = _temp_dir + 'dac_cert.der' +_dac_pem = _temp_dir + 'dac_cert.pem' +_pai_der = _temp_dir + 'pai_cert.der' +_header_filename = _temp_dir + 'efr32_creds.h' +_header_template = 'efr32_creds.tmpl' + + +def printUsage(): + print('\nUSAGE:\n\tcert.py -p -S -T -D -C -K [-R ]') + + +def roundNearest(n, multiple): + if n % multiple: + n = n + (multiple - n % multiple) + return n + + +def baseAddress(board): + if 'brd4164a' == board or'brd4166a' == board: + return 0x000FF800 + if 'brd4186a' == board or 'brd4186c' == board: + return 0x0817E000 + return None + +def execute(desc, args): + print("\n{}\n {}\n".format(desc, ' '.join(args))) + complete = subprocess.run(args) + if 0 != complete.returncode: + print("ERROR: {}".format(complete.returncode)) + exit(complete.returncode) + + +def prepareApps(board, serial_num): + + device_dir = "device/{}".format(board) + if not os.path.exists(device_dir): + print("ERROR: Board not supported: '{}'".format(board)) + + # Build device app + execute("Building device app", ["make", "-C", device_dir, "-f", "device-creds.Makefile" ]) + + # Flash device app + device_bin = device_dir + '/build/debug/device-creds.s37' + execute('Flashing device app', [ "commander", "flash", device_bin, "--serialno", serial_num ]) + time.sleep(2) + + # Build host app + execute('Building host app', ["make", "-C", "host/app/", "-f", "host-creds.Makefile" ]) + + +def generateFiles(port, serial_num, pai_pem, pai_key): + + # Create temporary dir + execute('Creating temp dir', ["mkdir", "-p", _temp_dir ]) + + # Generate CSR + execute('Requesting CSR', ["./host/app/build/debug/host-creds", "-p", port, "-R", _csr_pem ]) + subprocess.run([ "cat", _csr_pem]) + + # Generate DAC + execute('Generating DAC (from device CSR)', + ["openssl", "x509", "-sha256", "-req", "-days", "18250", + "-extensions", "v3_ica", "-extfile", "./csa_openssl.cnf", + "-set_serial", serial_num, + "-CA", pai_pem, "-CAkey", pai_key, + "-in", _csr_pem, "-outform", "der", "-out", _dac_der]) + + # Format DAC to PEM (for debugging) + subprocess.run(["openssl", "x509", "-inform", "der", "-in", _dac_der, "-out", _dac_pem]) + + # Format PAI to DER + execute('Parsing PAI', ["openssl", "x509", "-outform", "der", "-in", pai_pem, "-out", _pai_der]) + + +def writeCredentials(serial_num, base_addr, cd_file): + + # Calculate offsets + + pai_stats = os.stat(_pai_der) + dac_stats = os.stat(_dac_der) + cd_stats = os.stat(cd_file) + + pai_offset = 0 + dac_offset = roundNearest(pai_offset + pai_stats.st_size, 32) + cd_offset = roundNearest(dac_offset + dac_stats.st_size, 32) + end_offset = roundNearest(cd_offset + cd_stats.st_size, 1024) + + # Generate header + + with open(_header_template, 'r') as tf: + header = tf.read() + header = header.replace('{{pai_offset}}', hex(pai_offset)) + header = header.replace('{{pai_size}}', str(pai_stats.st_size)) + header = header.replace('{{dac_offset}}', hex(dac_offset)) + header = header.replace('{{dac_size}}', str(dac_stats.st_size)) + header = header.replace('{{cd_offset}}', hex(cd_offset)) + header = header.replace('{{cd_size}}', str(cd_stats.st_size)) + # Write header + with open(_header_filename, 'w') as hf: + hf.write(header) + + # Flash + + cd_address = base_addr + cd_offset + pai_address = base_addr + pai_offset + dac_address = base_addr + dac_offset + print("PAI:\t{} + {}\t\t= {} ({})".format(hex(base_addr), hex(pai_offset), hex(pai_address), pai_stats.st_size)) + print("DAC:\t{} + {}\t= {} ({})".format(hex(base_addr), hex(dac_offset), hex(dac_address), dac_stats.st_size)) + print("DC:\t{} + {}\t= {} ({})".format(hex(base_addr), hex(cd_offset), hex(cd_address), cd_stats.st_size)) + + execute('Flashing PAI', ["commander", "flash", _pai_der, "--binary", "--address", hex(base_addr + pai_offset), "--serialno", serial_num]) + execute('Flashing DAC', ["commander", "flash", _dac_der, "--binary", "--address", hex(base_addr + dac_offset), "--serialno", serial_num]) + execute('Flashing CD', ["commander", "flash", cd_file, "--binary", "--address", hex(base_addr + cd_offset), "--serialno", serial_num]) + + # Print + subprocess.run(["commander", "readmem", "--range", "{}:+{}".format(hex(base_addr), end_offset), "--serialno", serial_num]) + + +def main(argv): + port = None + serial_num = None + board = None + cert_file = None + key_file = None + cd_file = None + + # Parse arguments + + try: + opts, args = getopt.getopt(argv,"p:S:B:C:K:D:", ["port=", "serial_num=", "board=", "pai_cert=", "pai_key=", "dc="]) + except getopt.GetoptError: + printUsage(); + sys.exit(2) + + for opt, arg in opts: + if opt == '-h': + printUsage(); + sys.exit() + + elif opt in ("-p", "--port"): + port = arg + + elif opt in ("-S", "--serial"): + serial_num = arg + + elif opt in ("-B", "--board"): + board = arg + + elif opt in ("-C", "--pai_cert"): + cert_file = arg + + elif opt in ("-K", "--pai_key"): + key_file = arg + + elif opt in ("-D", "--cd"): + cd_file = arg + + # Validate arguments + + if (board is None) or (port is None) or (serial_num is None) or (cert_file is None) or (key_file is None) or (cd_file is None): + printUsage(); + sys.exit(2) + + # Check environment + + if os.getenv('ARM_GCC_DIR') is None: + print("ERROR: ARM_GCC_DIR not set") + exit(1) + + if os.getenv('BASE_SDK_PATH') is None: + print("ERROR: BASE_SDK_PATH not set") + exit(1) + + # Get flash base address + + base_addr = baseAddress(board) + if base_addr is None: + print("ERROR: Board not supported: '{}'".format(board)) + exit(1) + + # Check input files + + if not os.path.exists(cd_file): + print("File not found: '{}'".format(cd_file)) + + if not os.path.exists(cert_file): + print("File not found: '{}'".format(cert_file)) + + if not os.path.exists(key_file): + print("File not found: '{}'".format(key_file)) + + # Prepare apps + prepareApps(board, serial_num) + + # Generate files + generateFiles(port, serial_num, cert_file, key_file) + + # Write files + writeCredentials(serial_num, base_addr, cd_file) + + +main(sys.argv[1:]) diff --git a/silabs_examples/credentials/csa_openssl.cnf b/silabs_examples/credentials/csa_openssl.cnf new file mode 100644 index 00000000000000..77d97f164d71af --- /dev/null +++ b/silabs_examples/credentials/csa_openssl.cnf @@ -0,0 +1,362 @@ +# +# OpenSSL example configuration file. +# This is mostly being used for generation of certificate requests. +# + +# Note that you can include other files from the main configuration +# file using the .include directive. +#.include filename + +# This definition stops the following lines choking if HOME isn't +# defined. +HOME = . + +# Extra OBJECT IDENTIFIER info: +#oid_file = $ENV::HOME/.oid +oid_section = new_oids + +# To use this configuration file with the "-extfile" option of the +# "openssl x509" utility, name here the section containing the +# X.509v3 extensions to use: +# extensions = +# (Alternatively, use a configuration file that has only +# X.509v3 extensions in its main [= default] section.) + +[ new_oids ] + +# We can add new OIDs in here for use by 'ca', 'req' and 'ts'. +# Add a simple OID like this: +# testoid1=1.2.3.4 +# Or use config file substitution like this: +# testoid2=${testoid1}.5.6 + +# Policies used by the TSA examples. +tsa_policy1 = 1.2.3.4.1 +tsa_policy2 = 1.2.3.4.5.6 +tsa_policy3 = 1.2.3.4.5.7 + +VID = 1.3.6.1.4.1.37244.2.1 + +#################################################################### +[ ca ] +default_ca = CA_default # The default ca section + +#################################################################### +[ CA_default ] + +dir = ./demoCA # Where everything is kept +certs = $dir/certs # Where the issued certs are kept +crl_dir = $dir/crl # Where the issued crl are kept +database = $dir/index.txt # database index file. +#unique_subject = no # Set to 'no' to allow creation of + # several certs with same subject. +new_certs_dir = $dir/newcerts # default place for new certs. + +certificate = $dir/cacert.pem # The CA certificate +serial = $dir/serial # The current serial number +crlnumber = $dir/crlnumber # the current crl number + # must be commented out to leave a V1 CRL +crl = $dir/crl.pem # The current CRL +private_key = $dir/private/cakey.pem# The private key + +x509_extensions = usr_cert # The extensions to add to the cert + +# Comment out the following two lines for the "traditional" +# (and highly broken) format. +name_opt = ca_default # Subject Name options +cert_opt = ca_default # Certificate field options + +# Extension copying option: use with caution. +# copy_extensions = copy + +# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs +# so this is commented out by default to leave a V1 CRL. +# crlnumber must also be commented out to leave a V1 CRL. +# crl_extensions = crl_ext + +default_days = 365 # how long to certify for +default_crl_days= 30 # how long before next CRL +default_md = default # use public key default MD +preserve = no # keep passed DN ordering + +# A few difference way of specifying how similar the request should look +# For type CA, the listed attributes must be the same, and the optional +# and supplied fields are just that :-) +policy = policy_match + +# For the CA policy +[ policy_match ] +countryName = match +stateOrProvinceName = match +organizationName = match +organizationalUnitName = optional +commonName = supplied +emailAddress = optional + +# For the 'anything' policy +# At this point in time, you must list all acceptable 'object' +# types. +[ policy_anything ] +countryName = optional +stateOrProvinceName = optional +localityName = optional +organizationName = optional +organizationalUnitName = optional +commonName = supplied +emailAddress = optional + +#################################################################### +[ req ] +default_bits = 2048 +default_keyfile = privkey.pem +distinguished_name = req_distinguished_name +attributes = req_attributes +x509_extensions = v3_ca # The extensions to add to the self signed cert + +# Passwords for private keys if not present they will be prompted for +# input_password = secret +# output_password = secret + +# This sets a mask for permitted string types. There are several options. +# default: PrintableString, T61String, BMPString. +# pkix : PrintableString, BMPString (PKIX recommendation before 2004) +# utf8only: only UTF8Strings (PKIX recommendation after 2004). +# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings). +# MASK:XXXX a literal mask value. +# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings. +string_mask = utf8only + +# req_extensions = v3_req # The extensions to add to a certificate request + +[ req_distinguished_name ] +countryName = Country Name (2 letter code) +countryName_default = AU +countryName_min = 2 +countryName_max = 2 + +stateOrProvinceName = State or Province Name (full name) +stateOrProvinceName_default = Some-State + +localityName = Locality Name (eg, city) + +0.organizationName = Organization Name (eg, company) +0.organizationName_default = Internet Widgits Pty Ltd + +# we can do this but it is not needed normally :-) +#1.organizationName = Second Organization Name (eg, company) +#1.organizationName_default = World Wide Web Pty Ltd + +organizationalUnitName = Organizational Unit Name (eg, section) +#organizationalUnitName_default = + +commonName = Common Name (e.g. server FQDN or YOUR name) +commonName_max = 64 + +emailAddress = Email Address +emailAddress_max = 64 + +# SET-ex3 = SET extension number 3 + +[ req_attributes ] +challengePassword = A challenge password +challengePassword_min = 4 +challengePassword_max = 20 + +unstructuredName = An optional company name + +[ usr_cert ] + +# These extensions are added when 'ca' signs a request. + +# This goes against PKIX guidelines but some CAs do it and some software +# requires this to avoid interpreting an end user certificate as a CA. + +basicConstraints=CA:FALSE + +# Here are some examples of the usage of nsCertType. If it is omitted +# the certificate can be used for anything *except* object signing. + +# This is OK for an SSL server. +# nsCertType = server + +# For an object signing certificate this would be used. +# nsCertType = objsign + +# For normal client use this is typical +# nsCertType = client, email + +# and for everything including object signing: +# nsCertType = client, email, objsign + +# This is typical in keyUsage for a client certificate. +# keyUsage = nonRepudiation, digitalSignature, keyEncipherment + +# This will be displayed in Netscape's comment listbox. +nsComment = "OpenSSL Generated Certificate" + +# PKIX recommendations harmless if included in all certificates. +subjectKeyIdentifier=hash +authorityKeyIdentifier=keyid,issuer + +# This stuff is for subjectAltName and issuerAltname. +# Import the email address. +# subjectAltName=email:copy +# An alternative to produce certificates that aren't +# deprecated according to PKIX. +# subjectAltName=email:move + +# Copy subject details +# issuerAltName=issuer:copy + +#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem +#nsBaseUrl +#nsRevocationUrl +#nsRenewalUrl +#nsCaPolicyUrl +#nsSslServerName + +# This is required for TSA certificates. +# extendedKeyUsage = critical,timeStamping + +[ v3_req ] + +# Extensions to add to a certificate request + +basicConstraints = CA:FALSE +keyUsage = nonRepudiation, digitalSignature, keyEncipherment + +[ v3_ca ] + +basicConstraints = critical,CA:true,pathlen:1 +keyUsage = critical, cRLSign, keyCertSign +subjectKeyIdentifier=hash +authorityKeyIdentifier=keyid:always,issuer + +# Extensions for a typical CA + + +# PKIX recommendation. + +#subjectKeyIdentifier=hash + +#authorityKeyIdentifier=keyid:always,issuer + +#basicConstraints = critical,CA:true + +# Key usage: this is typical for a CA certificate. However since it will +# prevent it being used as an test self-signed certificate it is best +# left out by default. +# keyUsage = cRLSign, keyCertSign + +# Some might want this also +# nsCertType = sslCA, emailCA + +# Include email address in subject alt name: another PKIX recommendation +# subjectAltName=email:copy +# Copy issuer details +# issuerAltName=issuer:copy + +# DER hex encoding of an extension: beware experts only! +# obj=DER:02:03 +# Where 'obj' is a standard or added object +# You can even override a supported extension: +# basicConstraints= critical, DER:30:03:01:01:FF + +[ crl_ext ] + +# CRL extensions. +# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL. + +# issuerAltName=issuer:copy +authorityKeyIdentifier=keyid:always + +[ proxy_cert_ext ] +# These extensions should be added when creating a proxy certificate + +# This goes against PKIX guidelines but some CAs do it and some software +# requires this to avoid interpreting an end user certificate as a CA. + +basicConstraints=CA:FALSE + +# Here are some examples of the usage of nsCertType. If it is omitted +# the certificate can be used for anything *except* object signing. + +# This is OK for an SSL server. +# nsCertType = server + +# For an object signing certificate this would be used. +# nsCertType = objsign + +# For normal client use this is typical +# nsCertType = client, email + +# and for everything including object signing: +# nsCertType = client, email, objsign + +# This is typical in keyUsage for a client certificate. +# keyUsage = nonRepudiation, digitalSignature, keyEncipherment + +# This will be displayed in Netscape's comment listbox. +nsComment = "OpenSSL Generated Certificate" + +# PKIX recommendations harmless if included in all certificates. +subjectKeyIdentifier=hash +authorityKeyIdentifier=keyid,issuer + +# This stuff is for subjectAltName and issuerAltname. +# Import the email address. +# subjectAltName=email:copy +# An alternative to produce certificates that aren't +# deprecated according to PKIX. +# subjectAltName=email:move + +# Copy subject details +# issuerAltName=issuer:copy + +#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem +#nsBaseUrl +#nsRevocationUrl +#nsRenewalUrl +#nsCaPolicyUrl +#nsSslServerName + +# This really needs to be in place for it to be a proxy certificate. +proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo + +#################################################################### +[ tsa ] + +default_tsa = tsa_config1 # the default TSA section + +[ tsa_config1 ] + +# These are used by the TSA reply generation only. +dir = ./demoCA # TSA root directory +serial = $dir/tsaserial # The current serial number (mandatory) +crypto_device = builtin # OpenSSL engine to use for signing +signer_cert = $dir/tsacert.pem # The TSA signing certificate + # (optional) +certs = $dir/cacert.pem # Certificate chain to include in reply + # (optional) +signer_key = $dir/private/tsakey.pem # The TSA private key (optional) +signer_digest = sha256 # Signing digest to use. (Optional) +default_policy = tsa_policy1 # Policy if request did not specify it + # (optional) +other_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional) +digests = sha1, sha256, sha384, sha512 # Acceptable message digests (mandatory) +accuracy = secs:1, millisecs:500, microsecs:100 # (optional) +clock_precision_digits = 0 # number of digits after dot. (optional) +ordering = yes # Is ordering defined for timestamps? + # (optional, default: no) +tsa_name = yes # Must the TSA name be included in the reply? + # (optional, default: no) +ess_cert_id_chain = no # Must the ESS cert id chain be included? + # (optional, default: no) +ess_cert_id_alg = sha1 # algorithm to compute certificate + # identifier (optional, default: sha1) + +[ v3_ica ] +basicConstraints = critical,CA:FALSE +keyUsage = critical,digitalSignature +subjectKeyIdentifier=hash +authorityKeyIdentifier=keyid:always,issuer diff --git a/silabs_examples/credentials/device/brd4161a/autogen/RTE_Components.h b/silabs_examples/credentials/device/brd4161a/autogen/RTE_Components.h new file mode 100644 index 00000000000000..3b6ea30c43423f --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/RTE_Components.h @@ -0,0 +1,22 @@ +// This file is autogenerated by Silicon Labs SLC. +// The contents of this file will be replaced in their entirety upon regeneration. +// +// Source template file: RTE_Components.h.jinja + + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + +/* standard device header from emlib */ +#define CMSIS_device_header "em_device.h" + +/* components are auto-generated here */ + + +#endif /* RTE_COMPONENTS_H */ + +/* This file is autogenerated by Silicon Labs SLC. */ +/* The contents of this file will be replaced in their entirety upon regeneration. */ +/* */ +/* Source template file: RTE_Components.h.jinja */ + diff --git a/silabs_examples/credentials/device/brd4161a/autogen/linkerfile_base.icf b/silabs_examples/credentials/device/brd4161a/autogen/linkerfile_base.icf new file mode 100644 index 00000000000000..83026bfad15b1a --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/linkerfile_base.icf @@ -0,0 +1,85 @@ + + +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ +/* Version 4.1.1 */ + +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_ROM_start__ = 0x0; +define symbol __ICFEDIT_region_ROM_end__ = (0x0+0x100000-1); +define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; +define symbol __ICFEDIT_region_RAM_end__ = (0x20000000+0x40000-1); + +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; +define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; + +define block CSTACK with alignment = 8 +{ + section .stack +}; + +define block HEAP with alignment = 8 +{ + section .heap +}; + +define block header with alignment = 8 +{ + section AAT +}; + +define block nvm with alignment = 2048 +{ + section SIMEE, +}; +keep { block nvm }; + +define block storage with alignment = 2048 +{ + section INTERNAL_STORAGE, +}; +keep { block storage }; + +define block application with fixed order +{ + block header, + readonly section .intvec, + readonly +}; + +define block application_ram with fixed order +{ + block CSTACK, + readwrite, + block HEAP +}; + +initialize by copy { readwrite }; + +do not initialize +{ + section .noinit, + section .stack, + section .heap +}; + +keep { + section .intvec, + section AAT, + block header +}; +"application": +place at start of ROM_region { block application }; + +"storage_regions": +place at end of ROM_region { + block nvm, + block storage +}; + +"application_ram": +place at start of RAM_region { block application_ram }; diff --git a/silabs_examples/credentials/device/brd4161a/autogen/linkerfile_base.ld b/silabs_examples/credentials/device/brd4161a/autogen/linkerfile_base.ld new file mode 100644 index 00000000000000..91a638d21ca83c --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/linkerfile_base.ld @@ -0,0 +1,225 @@ +/***************************************************************************//** + * GCC Linker script for Silicon Labs devices + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + + + +MEMORY +{ + FLASH (rx) : ORIGIN = 0x0, LENGTH = 0x100000 + RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x40000 +} + +ENTRY(Reset_Handler) + +SECTIONS +{ + .aat : + { + KEEP(*(.aat*)); + . = ALIGN(512); + } > FLASH + + .text : + { + linker_vectors_begin = .; + KEEP(*(.vectors)) + linker_vectors_end = .; + + __Vectors_End = .; + __Vectors_Size = __Vectors_End - __Vectors; + + linker_code_begin = .; + *(.text*) + linker_code_end = .; + + KEEP(*(.init)) + KEEP(*(.fini)) + + /* .ctors */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + + /* .dtors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + + *(.rodata*) + *(.eh_frame*) + } > FLASH + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > FLASH + + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > FLASH + __exidx_end = .; + + .copy.table : + { + . = ALIGN(4); + __copy_table_start__ = .; + + LONG (__etext) + LONG (__data_start__) + LONG ((__data_end__ - __data_start__) / 4) + + /* Add each additional data section here */ +/* + LONG (__etext2) + LONG (__data2_start__) + LONG ((__data2_end__ - __data2_start__) / 4) +*/ + __copy_table_end__ = .; + } > FLASH + + .zero.table : + { + . = ALIGN(4); + __zero_table_start__ = .; + /* Add each additional bss section here */ +/* + LONG (__bss2_start__) + LONG ((__bss2_end__ - __bss2_start__) / 4) +*/ + __zero_table_end__ = .; + } > FLASH + + __etext = .; + + /* Start placing output sections which are loaded into RAM */ + . = ORIGIN(RAM); + + .stack ALIGN(8) (NOLOAD): + { + __StackLimit = .; + KEEP(*(.stack*)) + . = ALIGN(4); + __StackTop = .; + PROVIDE(__stack = __StackTop); + } > RAM + + .noinit . (NOLOAD): + { + PROVIDE(__NO_INIT__begin = .); + *(.noinit*); + PROVIDE(__NO_INIT__end = .); + } > RAM + PROVIDE(__NO_INIT_NEW__size = SIZEOF(.noinit)); + + .data . : AT (__etext) + { + . = ALIGN(4); + __data_start__ = .; + *(vtable) + *(.data*) + . = ALIGN (4); + + PROVIDE(__ram_func_section_start = .); + *(.ram) + PROVIDE(__ram_func_section_end = .); + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + + . = ALIGN(4); + /* init data */ + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + + . = ALIGN(4); + /* finit data */ + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + + . = ALIGN(4); + /* All data end */ + __data_end__ = .; + + } > RAM + + .bss . : + { + . = ALIGN(4); + __bss_start__ = .; + *(SEGGER_RTT) + *(.bss*) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + } > RAM + + .heap (COPY): + { + __HeapBase = .; + __end__ = .; + end = __end__; + _end = __end__; + KEEP(*(.heap*)) + . = ORIGIN(RAM) + LENGTH(RAM); + __HeapLimit = .; + } > RAM + + __heap_size = __HeapLimit - __HeapBase; + + /* This is where we handle flash storage blocks. We use dummy sections for finding the configured + * block sizes and then "place" them at the end of flash when the size is known. */ + .internal_storage (DSECT) : { + KEEP(*(.internal_storage*)) + } > FLASH + + .nvm (DSECT) : { + KEEP(*(.simee*)) + } > FLASH + + linker_storage_end = ORIGIN(FLASH) + LENGTH(FLASH); + linker_storage_begin = linker_storage_end - SIZEOF(.internal_storage); + linker_storage_size = SIZEOF(.internal_storage); + linker_nvm_end = linker_storage_begin; + linker_nvm_begin = linker_nvm_end - SIZEOF(.nvm); + linker_nvm_size = SIZEOF(.nvm); + __nvm3Base = linker_nvm_begin; +} diff --git a/silabs_examples/credentials/device/brd4161a/autogen/mbedtls_config_autogen.h b/silabs_examples/credentials/device/brd4161a/autogen/mbedtls_config_autogen.h new file mode 100644 index 00000000000000..1e6fc322a5a674 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/mbedtls_config_autogen.h @@ -0,0 +1,97 @@ +// This is an autogenerated config file, any changes to this file will be overwritten + +#ifndef MBEDTLS_CONFIG_AUTOGEN_H +#define MBEDTLS_CONFIG_AUTOGEN_H + + +#define MBEDTLS_MPI_MAX_SIZE 66 + + +#define MBEDTLS_AES_C +#define MBEDTLS_ASN1_PARSE_C +#define MBEDTLS_ASN1_WRITE_C +#define MBEDTLS_BASE64_C +#define MBEDTLS_CIPHER_C +#define MBEDTLS_ECP_C +#define MBEDTLS_ECP_DP_SECP192R1_ENABLED +#define MBEDTLS_ECP_DP_SECP256R1_ENABLED +#define MBEDTLS_ECP_DP_SECP384R1_ENABLED +#define MBEDTLS_ECP_DP_SECP521R1_ENABLED +#define MBEDTLS_ECDSA_C +#define MBEDTLS_ENTROPY_HARDWARE_ALT +#define MBEDTLS_ENTROPY_RAIL_PRESENT +#define MBEDTLS_MD_C +#define MBEDTLS_BIGNUM_C +#define MBEDTLS_PEM_PARSE_C +#define MBEDTLS_PEM_WRITE_C +#define MBEDTLS_PK_C +#define MBEDTLS_PK_PARSE_C +#define MBEDTLS_PK_WRITE_C +#define MBEDTLS_ENTROPY_C +#define MBEDTLS_ENTROPY_FORCE_SHA256 +#define MBEDTLS_ENTROPY_MAX_SOURCES 2 +#define MBEDTLS_NO_PLATFORM_ENTROPY +#define MBEDTLS_CTR_DRBG_C +#define MBEDTLS_SHA1_C +#define MBEDTLS_SHA256_C +#define MBEDTLS_SHA224_C +#define MBEDTLS_SHA384_C +#define MBEDTLS_SHA512_C +#define MBEDTLS_X509_USE_C +#define MBEDTLS_X509_CREATE_C +#define MBEDTLS_X509_CRT_PARSE_C +#define MBEDTLS_X509_CRT_WRITE_C +#define MBEDTLS_X509_CRL_PARSE_C +#define MBEDTLS_X509_CSR_PARSE_C +#define MBEDTLS_X509_CSR_WRITE_C +#define MBEDTLS_OID_C +#define MBEDTLS_PSA_CRYPTO_C +#define MBEDTLS_USE_PSA_CRYPTO +#define MBEDTLS_PSA_CRYPTO_CONFIG +#define MBEDTLS_PSA_CRYPTO_DRIVERS +#define MBEDTLS_PSA_CRYPTO_STORAGE_C + + +#include "config-device-acceleration.h" + +#if defined(SL_SE_ASSUME_FW_AT_LEAST_1_2_10) || defined(SL_SE_ASSUME_FW_AT_LEAST_2_1_7) + #undef MBEDTLS_ECP_DP_CURVE25519_ENABLED + #if !(defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)) + #undef MBEDTLS_ECDH_C + #undef MBEDTLS_ECP_C + #undef MBEDTLS_BIGNUM_C + #endif /* !MBEDTLS_ECP_DP_SECPxR1_ENABLED */ +#endif /* SL_SE_ASSUME_FW_AT_LEAST_x */ + +#if !defined(TEST_SUITE_MEMORY_BUFFER_ALLOC) +#if !defined(MBEDTLS_PLATFORM_FREE_MACRO) && !defined(MBEDTLS_PLATFORM_CALLOC_MACRO) +#if defined(CONFIG_MBEDTLS_USE_FREERTOS_PVCALLOC) + /* In FreeRTOS, use pvCalloc (and vPortFree) for dynamic memory allocation. + E.g. Amazon FreeRTOS implements pvCalloc for dynamic memory allocation. */ + #include + + extern void * pvCalloc( size_t xNumElements, + size_t xSize ) ; + extern void vPortFree( void *pv ); + #define MBEDTLS_PLATFORM_CALLOC_MACRO pvCalloc + #define MBEDTLS_PLATFORM_FREE_MACRO vPortFree +#else + /* No memory allocator override, supply the default for SL platforms */ + #include "sl_malloc.h" + + #define MBEDTLS_PLATFORM_FREE_MACRO sl_free + #define MBEDTLS_PLATFORM_CALLOC_MACRO sl_calloc +#endif +#endif /* No specific memory allocator override */ +#endif /* Not under test */ + +#define MBEDTLS_PLATFORM_MEMORY +#define MBEDTLS_PLATFORM_C + + + +#endif diff --git a/silabs_examples/credentials/device/brd4161a/autogen/psa_crypto_config_autogen.h b/silabs_examples/credentials/device/brd4161a/autogen/psa_crypto_config_autogen.h new file mode 100644 index 00000000000000..b11e42f5193bf2 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/psa_crypto_config_autogen.h @@ -0,0 +1,126 @@ +// This is an autogenerated config file, any changes to this file will be overwritten + +#ifndef PSA_CRYPTO_CONFIG_AUTOGEN_H +#define PSA_CRYPTO_CONFIG_AUTOGEN_H + +#define PSA_WANT_KEY_TYPE_AES +#define PSA_WANT_ALG_CCM +#define PSA_WANT_ALG_ECB_NO_PADDING +#define MBEDTLS_PSA_BUILTIN_ALG_ECB_NO_PADDING 1 +#define PSA_WANT_ALG_SHA_1 +#define PSA_WANT_ALG_SHA_224 +#define PSA_WANT_ALG_SHA_256 +#define PSA_WANT_ALG_SHA_384 +#define PSA_WANT_ALG_SHA_512 +#define PSA_WANT_ALG_ECDSA +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR +#define PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY +#define PSA_WANT_ECC_SECP_R1_192 +#define PSA_WANT_ECC_SECP_R1_256 +#define PSA_WANT_ECC_SECP_R1_384 +#define PSA_WANT_ECC_SECP_R1_521 +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY 1 +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR 1 +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_192 1 +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_256 1 +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_384 1 +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_521 1 +#define MBEDTLS_PSA_BUILTIN_ALG_ECDSA 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_1 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_224 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_256 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_384 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_512 1 +#define MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG +#define MBEDTLS_PSA_ACCEL_ALG_SHA_1 +#define MBEDTLS_PSA_ACCEL_ALG_SHA_224 +#define MBEDTLS_PSA_ACCEL_ALG_SHA_256 +#define MBEDTLS_PSA_ACCEL_KEY_TYPE_AES +#define MBEDTLS_PSA_ACCEL_ALG_ECB_NO_PADDING +#define MBEDTLS_PSA_ACCEL_ALG_CBC_NO_PADDING +#define MBEDTLS_PSA_ACCEL_ALG_CBC_PKCS7 +#define MBEDTLS_PSA_ACCEL_ALG_CTR +#define MBEDTLS_PSA_ACCEL_ALG_CFB +#define MBEDTLS_PSA_ACCEL_ALG_OFB +#define MBEDTLS_PSA_ACCEL_ALG_GCM +#define MBEDTLS_PSA_ACCEL_ALG_CCM +#define MBEDTLS_PSA_ACCEL_ALG_CMAC + +#define MBEDTLS_PSA_KEY_SLOT_COUNT (1 + SL_PSA_KEY_USER_SLOT_COUNT) +#define SL_PSA_ITS_MAX_FILES (1 + SL_PSA_ITS_USER_MAX_FILES) + +#include "config-device-acceleration.h" +#if defined(SL_SE_ASSUME_FW_AT_LEAST_1_2_10) || defined(SL_SE_ASSUME_FW_AT_LEAST_2_1_7) + #define MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_255 + #undef MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_255 + #if !(defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)) + #undef MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR + #undef MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY + #undef MBEDTLS_PSA_BUILTIN_ALG_ECDH + #endif /* !MBEDTLS_ECP_DP_SECPxR1_ENABLED */ +#endif /* SL_SE_ASSUME_FW_AT_LEAST_x */ + +#if defined(TFM_CONFIG_SL_SECURE_LIBRARY) +// Asymmetric Crypt module (RSA is not supported) +#define TFM_CRYPTO_ASYM_ENCRYPT_MODULE_DISABLED + +// HASH module +#if !defined(PSA_WANT_ALG_SHA_1) \ + && !defined(PSA_WANT_ALG_SHA_224) \ + && !defined(PSA_WANT_ALG_SHA_256) \ + && !defined(PSA_WANT_ALG_SHA_384) \ + && !defined(PSA_WANT_ALG_SHA_512) \ + && !defined(PSA_WANT_ALG_MD5) +#define TFM_CRYPTO_HASH_MODULE_DISABLED +#endif + +// AEAD module +#if !defined(PSA_WANT_ALG_CCM) \ + && !defined(PSA_WANT_ALG_GCM) \ + && !defined(PSA_WANT_ALG_CHACHA20_POLY1305) +#define TFM_CRYPTO_AEAD_MODULE_DISABLED +#endif + +// Asymmetric Sign module +#if !defined(PSA_WANT_ALG_ECDSA) \ + && !defined(PSA_WANT_ALG_EDDSA) \ + && !defined(PSA_WANT_ALG_DETERMINISTIC_ECDSA) +#define TFM_CRYPTO_ASYM_SIGN_MODULE_DISABLED +#endif + +// Cipher module +#if !defined(PSA_WANT_ALG_CFB) \ + && !defined(PSA_WANT_ALG_CTR) \ + && !defined(PSA_WANT_ALG_CBC_NO_PADDING) \ + && !defined(PSA_WANT_ALG_CBC_PKCS7) \ + && !defined(PSA_WANT_ALG_ECB_NO_PADDING) \ + && !defined(PSA_WANT_ALG_XTS) \ + && !defined(PSA_WANT_ALG_OFB) \ + && !defined(PSA_WANT_ALG_STREAM_CIPHER) +#define TFM_CRYPTO_CIPHER_MODULE_DISABLED +#endif + +// MAC module +#if !defined(PSA_WANT_ALG_HMAC) \ + && !defined(PSA_WANT_ALG_CMAC) \ + && !defined(PSA_WANT_ALG_CBC_MAC) +#define TFM_CRYPTO_MAC_MODULE_DISABLED +#endif + +// Key derivation module +#if !defined(PSA_WANT_ALG_PBKDF2_HMAC) \ + && !defined(PSA_WANT_ALG_HKDF) \ + && !defined(PSA_WANT_ALG_PBKDF2_AES_CMAC_PRF_128) \ + && !defined(PSA_WANT_ALG_TLS12_PRF) \ + && !defined(PSA_WANT_ALG_TLS12_PSK_TO_MS) \ + && !defined(PSA_WANT_ALG_ECDH) +#define TFM_CRYPTO_KEY_DERIVATION_MODULE_DISABLED +#endif + +#endif // TFM_CONFIG_SL_SECURE_LIBRARY + +#endif diff --git a/silabs_examples/credentials/device/brd4161a/autogen/sl_application_type.h b/silabs_examples/credentials/device/brd4161a/autogen/sl_application_type.h new file mode 100644 index 00000000000000..8bc7f50103c1e2 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/sl_application_type.h @@ -0,0 +1,41 @@ +/***************************************************************************//** + * @file + * @brief Autogenerated configuration file for application properties + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_APPLICATION_TYPE_H +#define SL_APPLICATION_TYPE_H + +#include "api/application_properties.h" + +// Bitfield representing type of application +#define APPLICATION_TYPE APPLICATION_TYPE_ZIGBEE + + +#endif // SL_APPLICATION_TYPE_H + diff --git a/silabs_examples/credentials/device/brd4161a/autogen/sl_board_default_init.c b/silabs_examples/credentials/device/brd4161a/autogen/sl_board_default_init.c new file mode 100644 index 00000000000000..bd43db368b3c3a --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/sl_board_default_init.c @@ -0,0 +1,36 @@ +/***************************************************************************//** + * @file + * @brief Board Default Init + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ +#include "sl_board_control.h" + +void sl_board_default_init(void) +{ + sl_board_disable_vcom(); + +} diff --git a/silabs_examples/credentials/device/brd4161a/autogen/sl_component_catalog.h b/silabs_examples/credentials/device/brd4161a/autogen/sl_component_catalog.h new file mode 100644 index 00000000000000..77ad9c6f78b307 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/sl_component_catalog.h @@ -0,0 +1,54 @@ +#ifndef SL_COMPONENT_CATALOG_H +#define SL_COMPONENT_CATALOG_H + +// APIs present in project +#define SL_CATALOG_GECKO_BOOTLOADER_INTERFACE_PRESENT +#define SL_CATALOG_DEVICE_INIT_NVIC_PRESENT +#define SL_CATALOG_EMLIB_CORE_DEBUG_CONFIG_PRESENT +#define SL_CATALOG_RETARGET_STDIO_PRESENT +#define SL_CATALOG_IOSTREAM_UART_COMMON_PRESENT +#define SL_CATALOG_IOSTREAM_USART_PRESENT +#define SL_CATALOG_LEGACY_BOOTLOADER_INTERFACE_PRESENT +#define SL_CATALOG_LEGACY_COMMON_ASH_PRESENT +#define SL_CATALOG_LEGACY_HAL_PRESENT +#define SL_CATALOG_LEGACY_HAL_WDOG_PRESENT +#define SL_CATALOG_LEGACY_NCP_ASH_PRESENT +#define SL_CATALOG_LEGACY_PRINTF_PRESENT +#define SL_CATALOG_MX25_FLASH_SHUTDOWN_USART_PRESENT +#define SL_CATALOG_NVM3_PRESENT +#define SL_CATALOG_POWER_MANAGER_PRESENT +#define SL_CATALOG_PRINTF_PRESENT +#define SL_CATALOG_PSA_CRYPTO_PRESENT +#define SL_CATALOG_RAIL_LIB_PRESENT +#define SL_CATALOG_RAIL_UTIL_IEEE802154_PHY_SELECT_PRESENT +#define SL_CATALOG_RAIL_UTIL_IEEE802154_STACK_EVENT_PRESENT +#define SL_CATALOG_RAIL_UTIL_PTI_PRESENT +#define SL_CATALOG_LED0_PRESENT +#define SL_CATALOG_SIMPLE_LED_PRESENT +#define SL_CATALOG_SIMPLE_LED_LED0_PRESENT +#define SL_CATALOG_SLEEPTIMER_PRESENT +#define SL_CATALOG_TOKEN_MANAGER_PRESENT +#define SL_CATALOG_TOKEN_MANAGER_NVM3_PRESENT +#define SL_CATALOG_ZIGBEE_AES_PSA_PRESENT +#define SL_CATALOG_ZIGBEE_APP_FRAMEWORK_COMMON_PRESENT +#define SL_CATALOG_ZIGBEE_BINDING_TABLE_PRESENT +#define SL_CATALOG_ZIGBEE_CCM_PSA_PRESENT +#define SL_CATALOG_ZIGBEE_DEBUG_BASIC_PRESENT +#define SL_CATALOG_ZIGBEE_DEBUG_EXTENDED_PRESENT +#define SL_CATALOG_ZIGBEE_DEBUG_PRINT_PRESENT +#define SL_CATALOG_ZIGBEE_END_DEVICE_BIND_PRESENT +#define SL_CATALOG_ZIGBEE_GREEN_POWER_PRESENT +#define SL_CATALOG_ZIGBEE_NCP_FRAMEWORK_PRESENT +#define SL_CATALOG_ZIGBEE_NCP_PRESENT +#define SL_CATALOG_ZIGBEE_NCP_UART_HARDWARE_PRESENT +#define SL_CATALOG_ZIGBEE_PACKET_VALIDATE_PRESENT +#define SL_CATALOG_ZIGBEE_PHY_2_4_PRESENT +#define SL_CATALOG_ZIGBEE_PRO_STACK_PRESENT +#define SL_CATALOG_ZIGBEE_R22_SUPPORT_PRESENT +#define SL_CATALOG_ZIGBEE_SECURITY_LINK_KEYS_PRESENT +#define SL_CATALOG_ZIGBEE_SOURCE_ROUTE_PRESENT +#define SL_CATALOG_ZIGBEE_STACK_COMMON_PRESENT +#define SL_CATALOG_ZIGBEE_STRONG_RANDOM_API_RADIO_PRESENT +#define SL_CATALOG_ZIGBEE_XNCP_PRESENT + +#endif // SL_COMPONENT_CATALOG_H diff --git a/silabs_examples/credentials/device/brd4161a/autogen/sl_device_init_clocks.c b/silabs_examples/credentials/device/brd4161a/autogen/sl_device_init_clocks.c new file mode 100644 index 00000000000000..9349ba24c2b605 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/sl_device_init_clocks.c @@ -0,0 +1,49 @@ +/***************************************************************************//** + * @file + * @brief Device initialization for clocks. + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ +#include "sl_device_init_clocks.h" + +#include "em_cmu.h" + +sl_status_t sl_device_init_clocks(void) +{ + CMU_ClockSelectSet(cmuClock_HF, cmuSelect_HFXO); + + CMU_ClockEnable(cmuClock_HFLE, true); + CMU_ClockSelectSet(cmuClock_LFA, cmuSelect_LFXO); + CMU_ClockSelectSet(cmuClock_LFB, cmuSelect_LFXO); +#if defined(_CMU_LFCCLKSEL_MASK) + CMU_ClockSelectSet(cmuClock_LFC, cmuSelect_LFXO); +#endif +#if defined(_CMU_LFECLKSEL_MASK) + CMU_ClockSelectSet(cmuClock_LFE, cmuSelect_LFXO); +#endif + + return SL_STATUS_OK; +} diff --git a/silabs_examples/credentials/device/brd4161a/autogen/sl_event_handler.c b/silabs_examples/credentials/device/brd4161a/autogen/sl_event_handler.c new file mode 100644 index 00000000000000..3a2df0b05f6627 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/sl_event_handler.c @@ -0,0 +1,102 @@ +#include "sl_event_handler.h" + +#include "em_chip.h" +#include "sl_device_init_nvic.h" +#include "sl_board_init.h" +#include "sl_device_init_dcdc.h" +#include "sl_device_init_hfxo.h" +#include "sl_device_init_lfxo.h" +#include "sl_device_init_clocks.h" +#include "sl_device_init_emu.h" +#include "pa_conversions_efr32.h" +#include "sl_rail_util_pti.h" +#include "zigbee-debug-extended.h" +#include "zigbee_app_framework_common.h" +#include "btl_interface.h" +#include "sl_board_control.h" +#include "sl_sleeptimer.h" +#include "sl_debug_swo.h" +#include "sl_iostream_debug.h" +#include "sl_iostream_init_usart_instances.h" +#include "sl_iostream_vuart.h" +#include "hal.h" +#include "sl_mbedtls.h" +#include "nvm3_default.h" +#include "sl_simple_led_instances.h" +#include "sl_iostream_init_instances.h" +#include "sl_power_manager.h" +#include "sl_cos.h" + +void sl_platform_init(void) +{ + CHIP_Init(); + sl_device_init_nvic(); + sl_board_preinit(); + sl_device_init_dcdc(); + sl_device_init_hfxo(); + sl_device_init_lfxo(); + sl_device_init_clocks(); + sl_device_init_emu(); + sl_board_init(); + bootloader_init(); + halInit(); + nvm3_initDefault(); + sl_power_manager_init(); +} + +void sl_driver_init(void) +{ + sl_debug_swo_init(); + sl_simple_led_init_instances(); + sl_cos_send_config(); +} + +void sl_service_init(void) +{ + sl_board_configure_vcom(); + sl_sleeptimer_init(); + sl_mbedtls_init(); + sl_iostream_init_instances(); +} + +void sl_stack_init(void) +{ + sl_rail_util_pa_init(); + sl_rail_util_pti_init(); + sli_zigbee_debug_extended_init(); + sli_zigbee_stack_init_callback(); + sli_zigbee_app_framework_init_callback(); + sli_zigbee_app_framework_sleep_init(); + sli_zigbee_ncp_init_callback(); +} + +void sl_internal_app_init(void) +{ +} + +void sl_platform_process_action(void) +{ +} + +void sl_service_process_action(void) +{ +} + +void sl_stack_process_action(void) +{ + sli_zigbee_stack_tick_callback(); + sli_zigbee_app_framework_tick_callback(); + sli_zigbee_ncp_tick_callback(); +} + +void sl_internal_app_process_action(void) +{ +} + +void sl_iostream_init_instances(void) +{ + sl_iostream_debug_init(); + sl_iostream_usart_init_instances(); + sl_iostream_vuart_init(); +} + diff --git a/silabs_examples/credentials/device/brd4161a/autogen/sl_event_handler.h b/silabs_examples/credentials/device/brd4161a/autogen/sl_event_handler.h new file mode 100644 index 00000000000000..9ac6fcdb22b424 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/sl_event_handler.h @@ -0,0 +1,15 @@ +#ifndef SL_EVENT_HANDLER_H +#define SL_EVENT_HANDLER_H + +void sl_platform_init(void); +void sl_driver_init(void); +void sl_service_init(void); +void sl_stack_init(void); +void sl_internal_app_init(void); +void sl_platform_process_action(void); +void sl_service_process_action(void); +void sl_stack_process_action(void); +void sl_internal_app_process_action(void); +void sl_iostream_init_instances(void); + +#endif // SL_EVENT_HANDLER_H diff --git a/silabs_examples/credentials/device/brd4161a/autogen/sl_iostream_handles.c b/silabs_examples/credentials/device/brd4161a/autogen/sl_iostream_handles.c new file mode 100644 index 00000000000000..f59e9ca1e44fff --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/sl_iostream_handles.c @@ -0,0 +1,31 @@ +#include "sl_iostream.h" +#include "sl_iostream_handles.h" +#include "string.h" + +const sl_iostream_instance_info_t *sl_iostream_instances_info[] = { + + &sl_iostream_instance_debug_info, + + &sl_iostream_instance_vcom_info, + + &sl_iostream_instance_vuart_info, + +}; + +const uint32_t sl_iostream_instances_count = sizeof(sl_iostream_instances_info) / sizeof(sl_iostream_instances_info[0]); + +/***************************************************************************//** + * Get iostream instance handle for a given name + * + * @return Instance handle if it exist, NULL otherwise. + ******************************************************************************/ +sl_iostream_t *sl_iostream_get_handle(char *name) +{ + for (uint32_t i = 0; i < sl_iostream_instances_count; i++) { + if (strcmp(sl_iostream_instances_info[i]->name, name) == 0) { + return sl_iostream_instances_info[i]->handle; + } + } + + return NULL; +} \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4161a/autogen/sl_iostream_handles.h b/silabs_examples/credentials/device/brd4161a/autogen/sl_iostream_handles.h new file mode 100644 index 00000000000000..a26f04340f8671 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/sl_iostream_handles.h @@ -0,0 +1,22 @@ +#ifndef SL_IOSTREAM_HANDLES_H +#define SL_IOSTREAM_HANDLES_H +#include "sl_iostream.h" +#include "sl_iostream_debug.h" +#include "sl_iostream_init_usart_instances.h" +#include "sl_iostream_vuart.h" + + +#ifdef __cplusplus +extern "C" { +#endif + +extern const sl_iostream_instance_info_t *sl_iostream_instances_info[]; +extern const uint32_t sl_iostream_instances_count; + +sl_iostream_t *sl_iostream_get_handle(char *name); + +#ifdef __cplusplus +} +#endif + +#endif // SL_IOSTREAM_HANDLES_H diff --git a/silabs_examples/credentials/device/brd4161a/autogen/sl_iostream_init_instances.h b/silabs_examples/credentials/device/brd4161a/autogen/sl_iostream_init_instances.h new file mode 100644 index 00000000000000..c092c37eec59a0 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/sl_iostream_init_instances.h @@ -0,0 +1,16 @@ +#ifndef SL_IOSTREAM_INIT_INSTANCES_H +#define SL_IOSTREAM_INIT_INSTANCES_H + +#include "sl_iostream.h" +#ifdef __cplusplus +extern "C" { +#endif + +// Initialize iostream component(s) / instance(s) +void sl_iostream_init_instances(void); + +#ifdef __cplusplus +} +#endif + +#endif // SL_IOSTREAM_INIT_INSTANCES_H \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4161a/autogen/sl_iostream_init_usart_instances.c b/silabs_examples/credentials/device/brd4161a/autogen/sl_iostream_init_usart_instances.c new file mode 100644 index 00000000000000..ec04146afbe6dd --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/sl_iostream_init_usart_instances.c @@ -0,0 +1,203 @@ +#if defined(SL_COMPONENT_CATALOG_PRESENT) +#include "sl_component_catalog.h" +#endif +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) +#include "sl_power_manager.h" +#endif +#include "em_device.h" +#include "sl_iostream.h" +#include "sl_iostream_uart.h" +#include "sl_iostream_usart.h" +// Include instance config + #include "sl_iostream_usart_vcom_config.h" + +// MACROs for generating name and IRQ handler function +#define SL_IOSTREAM_USART_CONCAT_PASTER(first, second, third) first ## second ## third + + + + +#define SL_IOSTREAM_USART_TX_IRQ_NUMBER(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(USART, periph_nbr, _TX_IRQn) +#define SL_IOSTREAM_USART_RX_IRQ_NUMBER(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(USART, periph_nbr, _RX_IRQn) +#define SL_IOSTREAM_USART_TX_IRQ_HANDLER(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(USART, periph_nbr, _TX_IRQHandler) +#define SL_IOSTREAM_USART_RX_IRQ_HANDLER(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(USART, periph_nbr, _RX_IRQHandler) + +#define SL_IOSTREAM_USART_CLOCK_REF(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(cmuClock_, USART, periph_nbr) + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && defined(_SILICON_LABS_32B_SERIES_2) +// EM Events +#define SLEEP_EM_EVENT_MASK ( SL_POWER_MANAGER_EVENT_TRANSITION_ENTERING_EM2 \ + | SL_POWER_MANAGER_EVENT_TRANSITION_LEAVING_EM2 \ + | SL_POWER_MANAGER_EVENT_TRANSITION_ENTERING_EM3 \ + | SL_POWER_MANAGER_EVENT_TRANSITION_LEAVING_EM3) +#endif + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && defined(_SILICON_LABS_32B_SERIES_2) +static void events_handler(sl_power_manager_em_t from, + sl_power_manager_em_t to); +static sl_power_manager_em_transition_event_info_t events_info = +{ + .event_mask = SLEEP_EM_EVENT_MASK, + .on_event = events_handler, +}; +static sl_power_manager_em_transition_event_handle_t events_handle; +#endif + + +sl_status_t sl_iostream_usart_init_vcom(void); + + +// Instance(s) handle and context variable +static sl_iostream_uart_t sl_iostream_vcom; +sl_iostream_t *sl_iostream_vcom_handle = &sl_iostream_vcom.stream; +sl_iostream_uart_t *sl_iostream_uart_vcom_handle = &sl_iostream_vcom; +static sl_iostream_usart_context_t context_vcom; +static uint8_t rx_buffer_vcom[SL_IOSTREAM_USART_VCOM_RX_BUFFER_SIZE]; +sl_iostream_instance_info_t sl_iostream_instance_vcom_info = { + .handle = &sl_iostream_vcom.stream, + .name = "vcom", + .type = SL_IOSTREAM_TYPE_UART, + .periph_id = SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO, + .init = sl_iostream_usart_init_vcom, +}; + + + +sl_status_t sl_iostream_usart_init_vcom(void) +{ + sl_status_t status; + USART_InitAsync_TypeDef init_vcom = USART_INITASYNC_DEFAULT; + init_vcom.baudrate = SL_IOSTREAM_USART_VCOM_BAUDRATE; + init_vcom.parity = SL_IOSTREAM_USART_VCOM_PARITY; + init_vcom.stopbits = SL_IOSTREAM_USART_VCOM_STOP_BITS; +#if (_SILICON_LABS_32B_SERIES > 0) +#if (SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE != uartFlowControlSoftware) + init_vcom.hwFlowControl = SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE; +#else + init_vcom.hwFlowControl = usartHwFlowControlNone; +#endif +#endif + sl_iostream_usart_config_t config_vcom = { + .usart = SL_IOSTREAM_USART_VCOM_PERIPHERAL, + .clock = SL_IOSTREAM_USART_CLOCK_REF(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO), + .tx_port = SL_IOSTREAM_USART_VCOM_TX_PORT, + .tx_pin = SL_IOSTREAM_USART_VCOM_TX_PIN, + .rx_port = SL_IOSTREAM_USART_VCOM_RX_PORT, + .rx_pin = SL_IOSTREAM_USART_VCOM_RX_PIN, +#if (_SILICON_LABS_32B_SERIES > 0) +#if defined(SL_IOSTREAM_USART_VCOM_CTS_PORT) + .cts_port = SL_IOSTREAM_USART_VCOM_CTS_PORT, + .cts_pin = SL_IOSTREAM_USART_VCOM_CTS_PIN, +#endif +#if defined(SL_IOSTREAM_USART_VCOM_RTS_PORT) + .rts_port = SL_IOSTREAM_USART_VCOM_RTS_PORT, + .rts_pin = SL_IOSTREAM_USART_VCOM_RTS_PIN, +#endif +#endif +#if defined(GPIO_USART_ROUTEEN_TXPEN) + .usart_index = SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO, +#elif defined(USART_ROUTEPEN_RXPEN) + .usart_tx_location = SL_IOSTREAM_USART_VCOM_TX_LOC, + .usart_rx_location = SL_IOSTREAM_USART_VCOM_RX_LOC, +#if defined(SL_IOSTREAM_USART_VCOM_CTS_PORT) + .usart_cts_location = SL_IOSTREAM_USART_VCOM_CTS_LOC, +#endif +#if defined(SL_IOSTREAM_USART_VCOM_RTS_PORT) + .usart_rts_location = SL_IOSTREAM_USART_VCOM_RTS_LOC, +#endif +#else + .usart_location = SL_IOSTREAM_USART_VCOM_ROUTE_LOC, +#endif + }; + sl_iostream_uart_config_t uart_config_vcom = { + .tx_irq_number = SL_IOSTREAM_USART_TX_IRQ_NUMBER(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO), + .rx_irq_number = SL_IOSTREAM_USART_RX_IRQ_NUMBER(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO), + .rx_buffer = rx_buffer_vcom, + .rx_buffer_length = SL_IOSTREAM_USART_VCOM_RX_BUFFER_SIZE, + .lf_to_crlf = SL_IOSTREAM_USART_VCOM_CONVERT_BY_DEFAULT_LF_TO_CRLF, + .rx_when_sleeping = SL_IOSTREAM_USART_VCOM_RESTRICT_ENERGY_MODE_TO_ALLOW_RECEPTION, +#if defined(SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE) +#if (SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE == uartFlowControlSoftware) + .sw_flow_control = true, +#else + .sw_flow_control = false, +#endif +#else + .sw_flow_control = false, +#endif + }; + // Instantiate usart instance + status = sl_iostream_usart_init(&sl_iostream_vcom, + &uart_config_vcom, + &init_vcom, + &config_vcom, + &context_vcom); + EFM_ASSERT(status == SL_STATUS_OK); + + return status; +} + + + +void sl_iostream_usart_init_instances(void) +{ +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && defined(_SILICON_LABS_32B_SERIES_2) + // Enable power manager notifications + sl_power_manager_subscribe_em_transition_event(&events_handle, &events_info); +#endif + + // Instantiate usart instance(s) + + sl_iostream_usart_init_vcom(); + +} + + +// VCOM IRQ Handler +void SL_IOSTREAM_USART_TX_IRQ_HANDLER(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO)(void) +{ + sl_iostream_usart_irq_handler(sl_iostream_vcom.stream.context); +} + +void SL_IOSTREAM_USART_RX_IRQ_HANDLER(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO)(void) +{ + sl_iostream_usart_irq_handler(sl_iostream_vcom.stream.context); +} + + + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && !defined(SL_CATALOG_KERNEL_PRESENT) + +sl_power_manager_on_isr_exit_t sl_iostream_usart_vcom_sleep_on_isr_exit(void) +{ + return sl_iostream_uart_sleep_on_isr_exit(&sl_iostream_vcom); +} + +#endif + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && defined(_SILICON_LABS_32B_SERIES_2) +static void events_handler(sl_power_manager_em_t from, + sl_power_manager_em_t to) +{ + uint32_t out; + if (((from == SL_POWER_MANAGER_EM2) + || (from == SL_POWER_MANAGER_EM3)) + && ((to == SL_POWER_MANAGER_EM1) + || (to == SL_POWER_MANAGER_EM0))) { + + // Wake the USART Tx pin back up + out = GPIO_PinOutGet(SL_IOSTREAM_USART_VCOM_TX_PORT, SL_IOSTREAM_USART_VCOM_TX_PIN); + GPIO_PinModeSet(SL_IOSTREAM_USART_VCOM_TX_PORT, SL_IOSTREAM_USART_VCOM_TX_PIN, gpioModePushPull, out); + + } else if (((to == SL_POWER_MANAGER_EM2) + || (to == SL_POWER_MANAGER_EM3)) + && ((from == SL_POWER_MANAGER_EM1) + || (from == SL_POWER_MANAGER_EM0))) { + + // Sleep the USART Tx pin on series 2 devices to save energy + out = GPIO_PinOutGet(SL_IOSTREAM_USART_VCOM_TX_PORT, SL_IOSTREAM_USART_VCOM_TX_PIN); + GPIO_PinModeSet(SL_IOSTREAM_USART_VCOM_TX_PORT, SL_IOSTREAM_USART_VCOM_TX_PIN, gpioModeDisabled, out); + + } +} +#endif \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4161a/autogen/sl_iostream_init_usart_instances.h b/silabs_examples/credentials/device/brd4161a/autogen/sl_iostream_init_usart_instances.h new file mode 100644 index 00000000000000..2301dbe600fab7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/sl_iostream_init_usart_instances.h @@ -0,0 +1,34 @@ +#ifndef SL_IOSTREAM_INIT_USART_INSTANCES_H +#define SL_IOSTREAM_INIT_USART_INSTANCES_H +#if defined(SL_COMPONENT_CATALOG_PRESENT) +#include "sl_component_catalog.h" +#endif +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) +#include "sl_power_manager.h" +#endif +#include "sl_iostream.h" +#include "sl_iostream_uart.h" +#ifdef __cplusplus +extern "C" { +#endif + + +extern sl_iostream_t *sl_iostream_vcom_handle; +extern sl_iostream_uart_t *sl_iostream_uart_vcom_handle; +extern sl_iostream_instance_info_t sl_iostream_instance_vcom_info; + + +// Initialize only iostream usart instance(s) +void sl_iostream_usart_init_instances(void); + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) + +sl_power_manager_on_isr_exit_t sl_iostream_usart_vcom_sleep_on_isr_exit(void); + +#endif + +#ifdef __cplusplus +} +#endif + +#endif // SL_IOSTREAM_INIT_USART_INSTANCES_H \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4161a/autogen/sl_legacy_bootloader_device_info.h b/silabs_examples/credentials/device/brd4161a/autogen/sl_legacy_bootloader_device_info.h new file mode 100644 index 00000000000000..a1e81e735d428f --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/sl_legacy_bootloader_device_info.h @@ -0,0 +1,41 @@ +/***************************************************************************//** + * @file + * @brief Legacy Bootloader Interface Device Info + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +enum { + SL_FAMILY_UNKNOWN = 0, + SL_FAMILY_MGM1 = 1, + SL_FAMILY_BGM1 = 1, + SL_FAMILY_EFR32MG1P = 16, + SL_FAMILY_EFR32MG1B = 17, + SL_FAMILY_EFR32MG1V = 18, + SL_FAMILY_EFR32BG1P = 19, + SL_FAMILY_EFR32BG1B = 20, + SL_FAMILY_EFR32BG1V = 21, + SL_FAMILY_EFR32FG1P = 25, + SL_FAMILY_EFR32FG1V = 27, +}; + +// CORTEXM3 +#define SL_PLAT 4U + +// CORTEXM3_EFR32 +#define SL_MICRO 24U + +#define SL_FAMILY SL_FAMILY_EFR32MG12P + +// PHY_RAIL +#define SL_PHY 15U diff --git a/silabs_examples/credentials/device/brd4161a/autogen/sl_mbedtls_config_transform_autogen.h b/silabs_examples/credentials/device/brd4161a/autogen/sl_mbedtls_config_transform_autogen.h new file mode 100644 index 00000000000000..2e0dcae5c15f29 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/sl_mbedtls_config_transform_autogen.h @@ -0,0 +1,44 @@ +// This is an autogenerated config file, any changes to this file will be overwritten + +#ifndef SL_MBEDTLS_CONFIG_TRANSFORM_AUTOGEN_H +#define SL_MBEDTLS_CONFIG_TRANSFORM_AUTOGEN_H + +// Convert CMSIS Markup config defines to mbedTLS specific config defines + +// Allow undefining the specified cipher suites +#if defined(SLI_MBEDTLS_AUTODETECT_CIPHERSUITES) +#undef MBEDTLS_SSL_CIPHERSUITES +#endif + +#if SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH + #define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH +#endif +#if SL_MBEDTLS_SSL_EXPORT_KEYS + #define MBEDTLS_SSL_EXPORT_KEYS +#endif +#if SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED + #define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED +#endif +#if SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED + #define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED +#endif +#if SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED + #define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED +#endif +#if SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED + #define MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED +#endif + +#if !defined(MBEDTLS_SSL_IN_CONTENT_LEN) + #define MBEDTLS_SSL_IN_CONTENT_LEN SL_MBEDTLS_SSL_IN_CONTENT_LEN +#endif + +#if !defined(MBEDTLS_SSL_OUT_CONTENT_LEN) + #define MBEDTLS_SSL_OUT_CONTENT_LEN SL_MBEDTLS_SSL_OUT_CONTENT_LEN +#endif + + + + + +#endif // SL_MBEDTLS_CONFIG_TRANSFORM_AUTOGEN_H diff --git a/silabs_examples/credentials/device/brd4161a/autogen/sl_power_manager_handler.c b/silabs_examples/credentials/device/brd4161a/autogen/sl_power_manager_handler.c new file mode 100644 index 00000000000000..6f5254fbcf984e --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/sl_power_manager_handler.c @@ -0,0 +1,126 @@ +#include +#include "em_core.h" +#include "sl_power_manager.h" +#include "sl_sleeptimer.h" +#include "sl_iostream_init_usart_instances.h" +#include "sl_legacy_hal_integration_hooks.h" +#include "zigbee_app_framework_common.h" +#include "serial-interface.h" + +/***************************************************************************//** + * Check if the MCU can sleep at that time. This function is called when the system + * is about to go sleeping, with the interrupts disabled. It allows the software to + * cancel going to sleep in case of a last-minute event occurred (window between the + * function call and interrupt disable). + * + * @return True, if the system can go to sleep. + * False, otherwise. + * + * @note This function is called with the interrupt disabled and it MUST NOT be + * re-enabled. + ******************************************************************************/ +__WEAK bool app_is_ok_to_sleep(void) +{ + return true; +} + +/***************************************************************************//** + * Check if the MCU can sleep after an interrupt. This function is called after an + * interrupt occured and was processed. It allows the power manger to know if it must + * go back to sleep or wakeup. + * + * @return SL_POWER_MANAGER_IGNORE, if the module did not trigger an ISR and it + * won't to contribute to the decision. + * + * SL_POWER_MANAGER_SLEEP, The module was the one that caused the system + * wakeup and the system SHOULD go back to sleep. + * + * SL_POWER_MANAGER_WAKEUP, The module was the one that caused the system + * wakeup and the system MUST NOT go back to sleep. + * + * @note This function must not have any side effects. It is not guaranteed to be + * called for every ISR. If a prior hook function requires to wakeup, such + * as a wireless stack, the application hook function won't be called. + ******************************************************************************/ +__WEAK sl_power_manager_on_isr_exit_t app_sleep_on_isr_exit(void) +{ + return SL_POWER_MANAGER_IGNORE; +} + +/***************************************************************************//** + * Mandatory callback that allows to cancel sleeping action. This function is called + * when the system is about to go sleeping, with the interrupts disabled. It allows + * the software to cancel going to sleep in case of a last-minute event occurred + * (window between the function call and interrupt disable). + ******************************************************************************/ +bool sl_power_manager_is_ok_to_sleep(void) +{ + bool ok_to_sleep = true; + if (sl_legacy_hal_is_ok_to_sleep() == false) { + ok_to_sleep = false; + } + if (sli_zigbee_app_framework_is_ok_to_sleep() == false) { + ok_to_sleep = false; + } + if (serialOkToSleep() == false) { + ok_to_sleep = false; + } + // Application hook + if (app_is_ok_to_sleep() == false) { + ok_to_sleep = false; + } + + return ok_to_sleep; +} + +/***************************************************************************//** + * Mandatory callback that must validate if the MCU can sleep after having + * processed an interrupt when the system was sleeping. + ******************************************************************************/ +bool sl_power_manager_sleep_on_isr_exit(void) +{ + sl_power_manager_on_isr_exit_t answer; + bool sleep = false; + bool force_wakeup = false; + + // This function allow the power manager to return into sleep, if the latest timer + // to expire was power manager's internal one used to restore HFXO on time or + // the HFXO interrupt. + // Most of the time we want to get back to sleep until the next event occurs. + sleep = sl_power_manager_is_latest_wakeup_internal(); + + answer = sl_iostream_usart_vcom_sleep_on_isr_exit(); + if (answer == SL_POWER_MANAGER_WAKEUP) { + force_wakeup = true; + } else if (answer == SL_POWER_MANAGER_SLEEP) { + sleep = true; + } + + answer = sl_legacy_hal_sleep_on_isr_exit(); + if (answer == SL_POWER_MANAGER_WAKEUP) { + force_wakeup = true; + } else if (answer == SL_POWER_MANAGER_SLEEP) { + sleep = true; + } + + answer = sli_zigbee_sleep_on_isr_exit(); + if (answer == SL_POWER_MANAGER_WAKEUP) { + force_wakeup = true; + } else if (answer == SL_POWER_MANAGER_SLEEP) { + sleep = true; + } + + // Application hook + answer = app_sleep_on_isr_exit(); + if (answer == SL_POWER_MANAGER_WAKEUP) { + force_wakeup = true; + } else if (answer == SL_POWER_MANAGER_SLEEP) { + sleep = true; + } + + if (force_wakeup) { + sleep = false; + } + + return sleep; +} \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4161a/autogen/sl_rail_util_ieee802154_phy_select.c b/silabs_examples/credentials/device/brd4161a/autogen/sl_rail_util_ieee802154_phy_select.c new file mode 100644 index 00000000000000..a7632d665dbdfa --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/sl_rail_util_ieee802154_phy_select.c @@ -0,0 +1,261 @@ +/***************************************************************************//** + * @file + * @brief + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#if defined(SL_COMPONENT_CATALOG_PRESENT) + #include "sl_component_catalog.h" +#endif + +#ifdef SL_CATALOG_RAIL_MULTIPLEXER_PRESENT +#include "sl_rail_mux_rename.h" +#endif + +#include "rail.h" +#include "rail_ieee802154.h" +#include "sl_rail_util_ieee802154_phy_select.h" +#include "sl_status.h" +#include "em_assert.h" +extern void sl_mac_lower_mac_update_active_radio_config(void); + +extern RAIL_Handle_t emPhyRailHandle; + +#define RUNTIME_PHY_SELECT (0) + +#define RUNTIME_PHY_SELECT_STACK_SUPPORT (0 || SL_ZIGBEE_PHY_SELECT_STACK_SUPPORT) + +static sl_rail_util_ieee802154_radio_config_t active_radio_config = SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT; + + +static sl_rail_util_ieee802154_radio_config_t sl_rail_util_get_desired_radio_config(void) +{ + return (SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT + ); +} + +#if RUNTIME_PHY_SELECT +#if !RUNTIME_PHY_SELECT_STACK_SUPPORT +#error "Run time PHY select is currently unsupported on the selected stack." +#endif + +static bool stackInitialized = false; + +static uint8_t blockPhySwitch = 0U; +#define BLOCK_SWITCH_RX 0x01u +#define BLOCK_SWITCH_TX 0x02u +#define setBlockPhySwitch(dir, boolval) \ + do { \ + if (boolval) { \ + blockPhySwitch |= (dir); \ + } else { \ + blockPhySwitch &= (uint8_t) ~(dir); \ + } \ + } while (false) + +static bool checkPhySwitch(void) +{ + sl_rail_util_ieee802154_radio_config_t desired_radio_config = sl_rail_util_get_desired_radio_config(); + if ((active_radio_config != desired_radio_config) + && (blockPhySwitch == 0U) + && stackInitialized + && (emPhyRailHandle != NULL)) { + //@TODO: Ascertain radio is OFF, RXWARM, or RXSEARCH only. + active_radio_config = desired_radio_config; + sl_mac_lower_mac_update_active_radio_config(); + return true; + } + return false; +} + +#else//!RUNTIME_PHY_SELECT + +#define setBlockPhySwitch(dir, boolval) /*no-op*/ +#define checkPhySwitch() (false) + +#endif//RUNTIME_PHY_SELECT + +sl_rail_util_ieee802154_radio_config_t sl_rail_util_ieee802154_get_active_radio_config(void) +{ + return active_radio_config; +} + +#define ANT_DIV_PHY_DEFAULT_ENABLED (SL_RAIL_UTIL_ANTENNA_RX_DEFAULT_MODE != SL_RAIL_UTIL_ANTENNA_MODE_DISABLED) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || !ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || !SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || !SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || !SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || !SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || !ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || !SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || !SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) + +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_FEM_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || !ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || !SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_FEM_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || !SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_FEM_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || !ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_FEM_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) + +RAIL_Status_t sl_rail_util_ieee802154_config_radio(RAIL_Handle_t railHandle) +{ + // Establish the proper radio config + RAIL_Status_t status = RAIL_STATUS_INVALID_STATE; + sl_rail_util_ieee802154_radio_config_t desired_radio_config = sl_rail_util_get_desired_radio_config(); + switch (desired_radio_config) { +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT: + status = RAIL_IEEE802154_Config2p4GHzRadio(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV: + status = RAIL_IEEE802154_Config2p4GHzRadioAntDiv(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX: + status = RAIL_IEEE802154_Config2p4GHzRadioCoex(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX: + status = RAIL_IEEE802154_Config2p4GHzRadioAntDivCoex(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_FEM_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_FEM: + status = RAIL_IEEE802154_Config2p4GHzRadioFem(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_FEM_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_FEM_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_FEM: + status = RAIL_IEEE802154_Config2p4GHzRadioAntDivFem(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_FEM_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_FEM_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_FEM: + status = RAIL_IEEE802154_Config2p4GHzRadioCoexFem(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_FEM_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_FEM_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_FEM: + status = RAIL_IEEE802154_Config2p4GHzRadioAntDivCoexFem(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_FEM_SUPPORTED + default: + break; + } + EFM_ASSERT(status == RAIL_STATUS_NO_ERROR); + active_radio_config = desired_radio_config; + + return status; +} + +#if RUNTIME_PHY_SELECT +sl_rail_util_ieee802154_stack_status_t sl_rail_util_ieee802154_phy_select_on_event( + sl_rail_util_ieee802154_stack_event_t stack_event, + uint32_t supplement) +{ + bool isReceivingFrame = false; + + switch (stack_event) { + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TICK: + stackInitialized = true; + (void) checkPhySwitch(); + break; + + // RX events: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_STARTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACCEPTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACKING: + setBlockPhySwitch(BLOCK_SWITCH_RX, true); + break; + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_CORRUPTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACK_BLOCKED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACK_ABORTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_FILTERED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ENDED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACK_SENT: + isReceivingFrame = (bool) supplement; + // FALLTHROUGH + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_IDLED: + setBlockPhySwitch(BLOCK_SWITCH_RX, isReceivingFrame); + break; + + // TX events: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_PENDED_MAC: + break; + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_PENDED_PHY: + setBlockPhySwitch(BLOCK_SWITCH_TX, true); + break; + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_CCA_SOON: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_CCA_BUSY: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_STARTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ACK_WAITING: + break; + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ACK_RECEIVED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ACK_TIMEDOUT: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_BLOCKED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ABORTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ENDED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_IDLED: + setBlockPhySwitch(BLOCK_SWITCH_TX, false); + break; + default: + break; + } + return SL_RAIL_UTIL_IEEE802154_STACK_STATUS_SUCCESS; +} +#else +sl_rail_util_ieee802154_stack_status_t sl_rail_util_ieee802154_phy_select_on_event( + sl_rail_util_ieee802154_stack_event_t stack_event, + uint32_t supplement) +{ + (void)stack_event; + (void)supplement; + return SL_RAIL_UTIL_IEEE802154_STACK_STATUS_UNSUPPORTED; +} +#endif //RUNTIME_PHY_SELECT diff --git a/silabs_examples/credentials/device/brd4161a/autogen/sl_rail_util_ieee802154_stack_event.c b/silabs_examples/credentials/device/brd4161a/autogen/sl_rail_util_ieee802154_stack_event.c new file mode 100644 index 00000000000000..4d98c10bee1fc5 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/sl_rail_util_ieee802154_stack_event.c @@ -0,0 +1,44 @@ +/***************************************************************************//** + * @file + * @brief + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#include "rail.h" +#include "rail_ieee802154.h" +#include "sl_status.h" +#include "sl_rail_util_ieee802154_stack_event.h" +#include "em_assert.h" +#include "sl_rail_util_ieee802154_phy_select.h" + +sl_rail_util_ieee802154_stack_status_t sl_rail_util_ieee802154_on_event( + sl_rail_util_ieee802154_stack_event_t stack_event, + uint32_t supplement) +{ + sl_rail_util_ieee802154_phy_select_on_event(stack_event, supplement); + return SL_RAIL_UTIL_IEEE802154_STACK_STATUS_SUCCESS; +} diff --git a/silabs_examples/credentials/device/brd4161a/autogen/sl_simple_led_instances.c b/silabs_examples/credentials/device/brd4161a/autogen/sl_simple_led_instances.c new file mode 100644 index 00000000000000..a194fc048f3e4f --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/sl_simple_led_instances.c @@ -0,0 +1,44 @@ +/***************************************************************************//** + * @file + * @brief LED Driver Instances + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include "sl_simple_led.h" +#include "em_gpio.h" +#include "sl_simple_led_led0_config.h" + +sl_simple_led_context_t simple_led0_context = { + .port = SL_SIMPLE_LED_LED0_PORT, + .pin = SL_SIMPLE_LED_LED0_PIN, + .polarity = SL_SIMPLE_LED_LED0_POLARITY, +}; + +const sl_led_t sl_led_led0 = { + .context = &simple_led0_context, + .init = sl_simple_led_init, + .turn_on = sl_simple_led_turn_on, + .turn_off = sl_simple_led_turn_off, + .toggle = sl_simple_led_toggle, + .get_state = sl_simple_led_get_state, +}; + +const sl_led_t *sl_simple_led_array[] = { + &sl_led_led0 +}; + +void sl_simple_led_init_instances(void) +{ + sl_led_init(&sl_led_led0); +} diff --git a/silabs_examples/credentials/device/brd4161a/autogen/sl_simple_led_instances.h b/silabs_examples/credentials/device/brd4161a/autogen/sl_simple_led_instances.h new file mode 100644 index 00000000000000..61f19773c9b2ed --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/sl_simple_led_instances.h @@ -0,0 +1,32 @@ +/***************************************************************************//** + * @file + * @brief LED Driver Instances + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_SIMPLE_LED_INSTANCES_H +#define SL_SIMPLE_LED_INSTANCES_H + +#include "sl_simple_led.h" + +extern const sl_led_t sl_led_led0; + +extern const sl_led_t *sl_simple_led_array[]; + +#define SL_SIMPLE_LED_COUNT 1 +#define SL_SIMPLE_LED_INSTANCE(n) (sl_simple_led_array[n]) + +void sl_simple_led_init_instances(void); + +#endif // SL_SIMPLE_LED_INIT_H diff --git a/silabs_examples/credentials/device/brd4161a/autogen/zigbee_af_token_headers.h b/silabs_examples/credentials/device/brd4161a/autogen/zigbee_af_token_headers.h new file mode 100644 index 00000000000000..fcc5d6e16da805 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/zigbee_af_token_headers.h @@ -0,0 +1,25 @@ +/***************************************************************************//** + * @file zigbee_af_token_headers.h + * @brief ZCL callback dispatcher declarations. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +/* + * This file includes token headers for the components selected in the project + */ +// +// *** Generated file. Do not edit! *** +// + +#include "app/xncp/xncp-token.h" + diff --git a/silabs_examples/credentials/device/brd4161a/autogen/zigbee_common_callback_dispatcher.c b/silabs_examples/credentials/device/brd4161a/autogen/zigbee_common_callback_dispatcher.c new file mode 100644 index 00000000000000..7aebdfc9d5db83 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/zigbee_common_callback_dispatcher.c @@ -0,0 +1,38 @@ +/***************************************************************************//** + * @file zigbee_common_callback_dispatcher.c + * @brief ZigBee common dispatcher definitions. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "zigbee_app_framework_common.h" +#include "zigbee_common_callback_dispatcher.h" + +void emAfEventInit(void) +{ +} + +void emAfLocalDataInit(void) +{ +} + +void emAfInitDone(void) +{ +} + + +void emAfTick(void) +{ +} diff --git a/silabs_examples/credentials/device/brd4161a/autogen/zigbee_common_callback_dispatcher.h b/silabs_examples/credentials/device/brd4161a/autogen/zigbee_common_callback_dispatcher.h new file mode 100644 index 00000000000000..f6872e2aa7e0f4 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/zigbee_common_callback_dispatcher.h @@ -0,0 +1,34 @@ +/***************************************************************************//** + * @file zigbee_common_callback_dispatcher.h + * @brief ZigBee common dispatcher declarations. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_ZIGBEE_COMMON_CALLBACK_DISPATCHER_H +#define SL_ZIGBEE_COMMON_CALLBACK_DISPATCHER_H + +#include PLATFORM_HEADER +#include "stack/include/ember.h" + +// Event Init +void emAfEventInit(void); +// Local data Init +void emAfLocalDataInit(void); +// Init done +void emAfInitDone(void); + +// Tick +void emAfTick(void); + +#endif // SL_ZIGBEE_COMMON_CALLBACK_DISPATCHER_H \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4161a/autogen/zigbee_ncp_callback_dispatcher.c b/silabs_examples/credentials/device/brd4161a/autogen/zigbee_ncp_callback_dispatcher.c new file mode 100644 index 00000000000000..3c7a890eff4610 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/zigbee_ncp_callback_dispatcher.c @@ -0,0 +1,93 @@ +/***************************************************************************//** + * @file zigbee_ncp_callback_dispatcher.c + * @brief ZigBee ncp dispatcher definitions. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "zigbee_ncp_callback_dispatcher.h" + + +void emberAfEzspGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context) +{ + emberAfPluginEzspGetValueCommandCallback(context); + emberAfPluginEzspZigbeeProGetValueCommandCallback(context); + emberAfPluginEzspSecurityGetValueCommandCallback(context); +} + + +void emberAfEzspGetExtendedValueCommandCallback(EmberAfPluginEzspValueCommandContext* context) +{ + emberAfPluginEzspZigbeeProGetExtendedValueCommandCallback(context); +} + + +void emberAfEzspSetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context) +{ + emberAfPluginEzspSetValueCommandCallback(context); + emberAfPluginEzspZigbeeProSetValueCommandCallback(context); + emberAfPluginEzspSecuritySetValueCommandCallback(context); +} + + +void emberAfEzspGetPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context) +{ + emberAfPluginEzspBindingPolicyCommandCallback(context); + emberAfPluginEzspPolicyCommandCallback(context); + emberAfPluginEzspZigbeeProPolicyCommandCallback(context); + emberAfPluginEzspSecurityPolicyCommandCallback(context); +} + + +void emberAfEzspSetPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context) +{ + emberAfPluginEzspBindingPolicyCommandCallback(context); + emberAfPluginEzspPolicyCommandCallback(context); + emberAfPluginEzspZigbeeProPolicyCommandCallback(context); + emberAfPluginEzspSecurityPolicyCommandCallback(context); +} + + +void emberAfEzspGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context) +{ + emberAfPluginEzspBindingConfigurationValueCommandCallback(context); + emberAfPluginEzspGetConfigurationValueCommandCallback(context); + emberAfPluginEzspSourceRouteGetConfigurationValueCommandCallback(context); + emberAfPluginEzspZigbeeProGetConfigurationValueCommandCallback(context); + emberAfPluginEzspSecurityGetConfigurationValueCommandCallback(context); +} + + +void emberAfEzspSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context) +{ + emberAfPluginEzspBindingConfigurationValueCommandCallback(context); + emberAfPluginEzspSetConfigurationValueCommandCallback(context); + emberAfPluginEzspSourceRouteSetConfigurationValueCommandCallback(context); + emberAfPluginEzspZigbeeProSetConfigurationValueCommandCallback(context); + emberAfPluginEzspSecuritySetConfigurationValueCommandCallback(context); +} + + +void emberAfPluginEzspModifyMemoryAllocationCallback(void) +{ + emInitializeBindingTable(); + emberAfPluginEzspZigbeeProModifyMemoryAllocationCallback(); +} + + +void emberAfPluginEzspPermitHostToNcpFrameCallback(bool* permit) +{ + emberAfPluginEzspBindingPermitHostToNcpFrameCallback(permit); +} diff --git a/silabs_examples/credentials/device/brd4161a/autogen/zigbee_ncp_callback_dispatcher.h b/silabs_examples/credentials/device/brd4161a/autogen/zigbee_ncp_callback_dispatcher.h new file mode 100644 index 00000000000000..753af5d201f7e1 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/zigbee_ncp_callback_dispatcher.h @@ -0,0 +1,88 @@ +/***************************************************************************//** + * @file zigbee_ncp_callback_dispatcher.h + * @brief ZigBee ncp dispatcher declarations. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_ZIGBEE_NCP_CALLBACK_DISPATCHER_H +#define SL_ZIGBEE_NCP_CALLBACK_DISPATCHER_H + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "app/em260/command-context.h" // EmberAfPluginEzspValueCommandContext + + +// get_value +void emberAfEzspGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspZigbeeProGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspSecurityGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); + + + + +void emberAfEzspGetExtendedValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspZigbeeProGetExtendedValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); + + + +void emberAfEzspSetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspSetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspZigbeeProSetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspSecuritySetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); + + + +void emberAfEzspGetPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspBindingPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspZigbeeProPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspSecurityPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); + + + +void emberAfEzspSetPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspBindingPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspZigbeeProPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspSecurityPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); + + +void emberAfEzspGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspBindingConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSourceRouteGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspZigbeeProGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSecurityGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); + + + +void emberAfEzspSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspBindingConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSourceRouteSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspZigbeeProSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSecuritySetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); + + +void emberAfPluginEzspModifyMemoryAllocationCallback(void); +void emInitializeBindingTable(void); +void emberAfPluginEzspZigbeeProModifyMemoryAllocationCallback(void); + + + +void emberAfPluginEzspPermitHostToNcpFrameCallback(bool* permit); +void emberAfPluginEzspBindingPermitHostToNcpFrameCallback(bool* permit); + +#endif // SL_ZIGBEE_NCP_CALLBACK_DISPATCHER_H \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4161a/autogen/zigbee_stack_callback_dispatcher.c b/silabs_examples/credentials/device/brd4161a/autogen/zigbee_stack_callback_dispatcher.c new file mode 100644 index 00000000000000..2b9b8483a566ec --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/zigbee_stack_callback_dispatcher.c @@ -0,0 +1,993 @@ +/*****************************************************************************/ +/** + * Copyright 2020 Silicon Laboratories, Inc. + * + *****************************************************************************/ +// +// *** Generated file. Do not edit! *** +// + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "zigbee_stack_callback_dispatcher.h" + + + +#ifdef EZSP_HOST +// Incoming Message +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // The link quality + uint8_t lastHopLqi, + // The energy level + int8_t lastHopRssi, + // The sender of the message. + EmberNodeId sender, + // The index of a binding that matches the message + // matching binding. + uint8_t bindingIndex, + // The index of the entry in the address table + uint8_t addressIndex, + // The message length + uint8_t messageLength, + // message + uint8_t *messageContents) +{ +(void) type; +(void) apsFrame; +(void) lastHopLqi; +(void) lastHopRssi; +(void) sender; +(void) bindingIndex; +(void) addressIndex; +(void) messageLength; +(void) messageContents; + +emAfIncomingMessageCallback(type, apsFrame, lastHopLqi, lastHopRssi, sender, bindingIndex, addressIndex, messageLength, messageContents); +} +#else // !EZSP_HOST +// Incoming Message +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message) +{ +(void)type; +(void)apsFrame; +(void)message; + +emAfIncomingMessageCallback(type, apsFrame, message); +} +#endif // EZSP_HOST + + +// Message Sent +#ifdef EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // Message tag + uint8_t messageTag, + // Message delivery status + EmberStatus status, + // The length of the messageContents + uint8_t messageLength, + // Message data + uint8_t *messageContents) +{ +(void)type; +(void)indexOrDestination; +(void)apsFrame; +(void)messageTag; +(void)status; +(void) messageLength; +(void) messageContents; + +emAfMessageSentCallback(type, indexOrDestination, apsFrame, messageTag, status, messageLength, messageContents); +} +#else // !EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message, + // Message delivery status + EmberStatus status) +{ +(void)type; +(void)indexOrDestination; +(void)apsFrame; +(void)message; +(void)status; + +emAfMessageSentCallback(type, indexOrDestination, apsFrame, message, status); +} +#endif // EZSP_HOST + + + +// Trust Center Join +void emAfTrustCenterJoin( + // Joining node's id + EmberNodeId newNodeId, + // Joining node's Eui64 + EmberEUI64 newNodeEui64, + // Status + EmberDeviceUpdate status, + // Parent Id of the joining node + EmberNodeId parentOfNewNode) +{ +(void)newNodeId; +(void)newNodeEui64; +(void)status; +(void)parentOfNewNode; + +} + + + +// Mark Buffers +void emAfMarkBuffers(void) +{ + +emAfMarkBuffersCallback(); +} + + + +// Packet Handoff Incoming +void emAfPacketHandoffIncoming( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +{ +(void)packetType; +(void)packetBuffer; +(void)index; +(void)data; + +} + + + +// Packet Handoff Outgoing +void emAfPacketHandoffOutgoing( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +{ +(void)packetType; +(void)packetBuffer; +(void)index; +(void)data; + +} + + + +// Incoming Mfg Test Message +void emAfIncomingMfgTestMessage( + uint8_t messageType, + uint8_t dataLength, + // Return: + uint8_t *data) +{ +(void)messageType; +(void)dataLength; +(void)data; + +} + + + +// Override Incoming Route Record +void emAfOverrideIncomingRouteRecord( + EmberNodeId source, + EmberEUI64 sourceEui, + uint8_t relayCount, + EmberMessageBuffer header, + uint8_t relayListIndex, + // Return: + bool *consumed) +{ +(void)source; +(void)sourceEui; +(void)relayCount; +(void)header; +(void)relayListIndex; +(void)consumed; + +emAfOverrideIncomingRouteRecordCallback(source, sourceEui, relayCount, header, relayListIndex, consumed); +} + + + +// Override Append Source Route +// Return: Added bytes +void emAfOverrideAppendSourceRoute( + EmberNodeId destination, + // Return: + EmberMessageBuffer *header, + // Return: + bool *consumed) +{ +(void)destination; +(void)header; +(void)consumed; + +} + + + +// Override Furthur Index For Source Route Add Entry +void emAfOverrideFurthurIndexForSourceRouteAddEntry( + EmberNodeId id, + // Return: + uint8_t *furtherIndex) +{ +(void)id; +(void)furtherIndex; + +emAfOverrideFurthurIndexForSourceRouteAddEntryCallback(id, furtherIndex); +} + + + +// Stack Status +void emAfStackStatus( + // Stack status + EmberStatus status) +{ +(void)status; + +emAfStackStatusCallback(status); +} + + + +// Energy Scan Result +void emAfEnergyScanResult( + // The 802.15.4 channel number that was scanned. + uint8_t channel, + // The maximum RSSI value found on the channel. + int8_t maxRssiValue) +{ +(void)channel; +(void)maxRssiValue; + +emAfEnergyScanResultCallback(channel, maxRssiValue); +} + + + +// Network Found +void emAfNetworkFound( + // The parameters associated with the network found. + EmberZigbeeNetwork *networkFound, + // The link quality indication of the network found. + uint8_t lqi, + // The received signal strength indication of the network found. + int8_t rssi) +{ +(void)networkFound; +(void)lqi; +(void)rssi; + +emAfNetworkFoundCallback(networkFound, lqi, rssi); +} + + + +// Scan Complete +void emAfScanComplete( + // The channel on which the current error occurred. Undefined for the case + // of EMBER_SUCCESS. + uint8_t channel, + // The error condition that occurred on the current channel. Value will be + // EMBER_SUCCESS when the scan has completed. + EmberStatus status) +{ +(void)channel; +(void)status; + +emAfScanCompleteCallback(channel, status); +} + + + +// Unused Pan Id Found +void emAfUnusedPanIdFound( + // The unused panID which has been found. + EmberPanId panId, + // The channel that the unused panID was found on. + uint8_t channel) +{ +(void)panId; +(void)channel; + +emAfUnusedPanIdFoundCallback(panId, channel); +} + + + +// Child Join +#ifdef EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining, + // The node ID of the child. + EmberNodeId childId, + // The EUI64 of the child. + EmberEUI64 childEui64, + // The node type of the child. + EmberNodeType childType) +{ +(void)index; +(void)joining; +(void)childId; +(void)childEui64; +(void)childType; + +emAfChildJoinCallback(index, joining, childId, childEui64, childType); +} +#else // !EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining) +{ +(void)index; +(void)joining; + +emAfChildJoinCallback(index, joining); +} +#endif // EZSP_HOST + + + +// Duty Cycle +#ifdef EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state, + // The total number of connected end devices that are being monitored for + // duty cycle. + uint8_t totalDevices, + // Consumed duty cycles of end devices that are being monitored. The first + // entry always be the local stack's nodeId, and thus the total aggregate + // duty cycle for the device. + EmberPerDeviceDutyCycle *arrayOfDeviceDutyCycles) +{ +(void)channelPage; +(void)channel; +(void)state; +(void)totalDevices; +(void)arrayOfDeviceDutyCycles; + +emAfDutyCycleCallback(channelPage, channel, state, totalDevices, arrayOfDeviceDutyCycles); +} +#else // !EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state) +{ +(void)channelPage; +(void)channel; +(void)state; + +emAfDutyCycleCallback(channelPage, channel, state); +} +#endif // EZSP_HOST + + + +// Remote Set Binding +// Return: ZDO response status. +void emAfRemoteSetBinding( + // Return: The contents of the binding entry. + EmberBindingTableEntry *entry) +{ +(void)entry; + +} + + + +// Remote Delete Binding +// Return: ZDO response status +void emAfRemoteDeleteBinding( + // The index of the binding whose deletion was requested. + uint8_t index) +{ +(void)index; + +} + + + +// Poll Complete +void emAfPollComplete( + // An EmberStatus value: EMBER_SUCCESS - Data was received in response to + // the poll. EMBER_MAC_NO_DATA - No data was pending. + // EMBER_DELIVERY_FAILED - The poll message could not be sent. + // EMBER_MAC_NO_ACK_RECEIVED - The poll message was sent but not + // acknowledged by the parent. + EmberStatus status) +{ +(void)status; + +emAfPollCompleteCallback(status); +} + + + +// Poll +void emAfPoll( + // The node ID of the child that is requesting data. + EmberNodeId childId, + // True if transmit expected, false otherwise. + bool transmitExpected) +{ +(void)childId; +(void)transmitExpected; + +emAfPollCallback(childId, transmitExpected); +} + + + +// Debug +void emAfDebug( + // debug message + EmberMessageBuffer message) +{ +(void)message; + +} + + + +// Incoming Many To One Route Request +void emAfIncomingManyToOneRouteRequest( + // The short id of the concentrator. + EmberNodeId source, + // The EUI64 of the concentrator. + EmberEUI64 longId, + // The path cost to the concentrator. The cost may decrease as additional + // route request packets for this discovery arrive, but the callback is + // made only once. + uint8_t cost) +{ +(void)source; +(void)longId; +(void)cost; + +emAfIncomingManyToOneRouteRequestCallback(source, longId, cost); +} + + + +// Incoming Route Error +void emAfIncomingRouteError( + // EMBER_SOURCE_ROUTE_FAILURE or EMBER_MANY_TO_ONE_ROUTE_FAILURE. + EmberStatus status, + // The short id of the remote node. + EmberNodeId target) +{ +(void)status; +(void)target; + +emAfIncomingRouteErrorCallback(status, target); +} + + + +// Incoming Network Status +void emAfIncomingNetworkStatus( + // One byte over-the-air error code from network status message + uint8_t errorCode, + // The short ID of the remote node + EmberNodeId target) +{ +(void)errorCode; +(void)target; + +emAfIncomingNetworkStatusCallback(errorCode, target); +} + + + +// Incoming Route Record +void emAfIncomingRouteRecord( + // The source of the route record. + EmberNodeId source, + // The EUI64 of the source. + EmberEUI64 sourceEui, + // The number of relays in relayList. + uint8_t relayCount, + // Header. + EmberMessageBuffer header, + // The relay List Index. + uint8_t relayListIndex) +{ +(void)source; +(void)sourceEui; +(void)relayCount; +(void)header; +(void)relayListIndex; + +emAfIncomingRouteRecordCallback(source, sourceEui, relayCount, header, relayListIndex); +} + + + +// Id Conflict +void emAfIdConflict( + // The short id for which a conflict was detected + EmberNodeId conflictingId) +{ +(void)conflictingId; + +emAfIdConflictCallback(conflictingId); +} + + + +// Mac Passthrough Message +void emAfMacPassthroughMessage( + // The type of MAC passthrough message received. + EmberMacPassthroughType messageType, + // The raw message that was received. + EmberMessageBuffer message) +{ +(void)messageType; +(void)message; + +emAfMacPassthroughMessageCallback(messageType, message); +} + + + +// Stack Token Changed +void emAfStackTokenChanged( + // The address of the stack token that has changed. + uint16_t tokenAddress) +{ +(void)tokenAddress; + +emAfStackTokenChangedCallback(tokenAddress); +} + + + +// Timer +void emAfTimer( + // Which timer generated the callback (0 or 1). + uint8_t timerId) +{ +(void)timerId; + +} + + + +// Counter Rollover +void emAfCounterRollover( + // Type of Counter + EmberCounterType type) +{ +(void)type; + +emAfCounterRolloverCallback(type); +} + + + +// Raw Transmit Complete +void emAfRawTransmitComplete( + // message + EmberMessageBuffer message, + // EMBER_SUCCESS if the transmission was successful, or + // EMBER_DELIVERY_FAILED if not + EmberStatus status) +{ +(void)message; +(void)status; + +emAfRawTransmitCompleteCallback(message, status); +} + + + +// Switch Network Key +void emAfSwitchNetworkKey( + // The sequence number of the new network key. + uint8_t sequenceNumber) +{ +(void)sequenceNumber; + +emAfSwitchNetworkKeyCallback(sequenceNumber); +} + + + +// Zigbee Key Establishment +void emAfZigbeeKeyEstablishment( + // This is the IEEE address of the partner that the device successfully + // established a key with. This value is all zeros on a failure. + EmberEUI64 partner, + // This is the status indicating what was established or why the key + // establishment failed. + EmberKeyStatus status) +{ +(void)partner; +(void)status; + +emAfZigbeeKeyEstablishmentCallback(partner, status); +} + + + +// Generate Cbke Keys +void emAfGenerateCbkeKeys( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKeyData *ephemeralPublicKey) +{ +(void)status; +(void)ephemeralPublicKey; + +} + + + +// Calculate Smacs +void emAfCalculateSmacs( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +{ +(void)status; +(void)initiatorSmac; +(void)responderSmac; + +} + + + +// Dsa Sign +void emAfDsaSign( + // The result of the DSA signing operation. + EmberStatus status, + // The message and attached which includes the original message and the + // appended signature. + EmberMessageBuffer signedMessage) +{ +(void)status; +(void)signedMessage; + +} + + + +// Dsa Verify +void emAfDsaVerify( + // The result of the DSA verification operation. + EmberStatus status) +{ +(void)status; + +} + + + +// Incoming Bootload Message +void emAfIncomingBootloadMessage( + // The EUI64 of the sending node. + EmberEUI64 longId, + // The bootload message that was sent. + EmberMessageBuffer message) +{ +(void)longId; +(void)message; + +emAfIncomingBootloadMessageCallback(longId, message); +} + + + +// Bootload Transmit Complete +void emAfBootloadTransmitComplete( + // The bootload message that was sent. + EmberMessageBuffer message, + // An EmberStatus value of EMBER_SUCCESS if an ACK was received from the + // destination or EMBER_DELIVERY_FAILED if no ACK was received. + EmberStatus status) +{ +(void)message; +(void)status; + +emAfBootloadTransmitCompleteCallback(message, status); +} + + + +// Zll Network Found +void emAfZllNetworkFound( + // Return: Information about the network. + const EmberZllNetwork *networkInfo, + // Return: Device specific information. + const EmberZllDeviceInfoRecord *deviceInfo) +{ +(void)networkInfo; +(void)deviceInfo; + +} + + + +// Zll Scan Complete +void emAfZllScanComplete( + // Status of the operation. + EmberStatus status) +{ +(void)status; + +} + + + +// Zll Address Assignment +void emAfZllAddressAssignment( + // Return: Address assignment information. + const EmberZllAddressAssignment *addressInfo) +{ +(void)addressInfo; + +} + + + +// Zll Touch Link Target +void emAfZllTouchLinkTarget( + // Return: Information about the network. + const EmberZllNetwork *networkInfo) +{ +(void)networkInfo; + +} + + + +// Mac Filter Match Message +void emAfMacFilterMatchMessage( + // Return: macFilterMatchStruct. + const EmberMacFilterMatchStruct *macFilterMatchStruct) +{ +(void)macFilterMatchStruct; + +emAfMacFilterMatchMessageCallback(macFilterMatchStruct); +} + + + +// D Gp Sent +void emAfDGpSent( + // An EmberStatus value indicating success or the reason for failure. + EmberStatus status, + // The handle of the GPDF. + uint8_t gpepHandle) +{ +(void)status; +(void)gpepHandle; + +emAfDGpSentCallback(status, gpepHandle); +} + + + +// Pan Id Conflict +// Return: An EmberStatus value indicating success or the reason for failure. +void emAfPanIdConflict( + // Number of conflict reports + int8_t conflictCount) +{ +(void)conflictCount; + +} + + + +// Orphan Notification +void emAfOrphanNotification( + // The 8 byte EUI64 of the sender. + EmberEUI64 longId) +{ +(void)longId; + +} + + + +// Counter +void emAfCounter( + // Type of Counter + EmberCounterType type, + // Counter Info and value + EmberCounterInfo Info) +{ +(void)type; +(void)Info; + +emAfCounterCallback(type, Info); +} + + + +// Mac Passthrough Filter +// Return: True if mac passthrough filter was matched. False otherwise. +void emAfMacPassthroughFilter( + // Return: Mac Header of the matched messgae + uint8_t *macHeader) +{ +(void)macHeader; + +} + + + +// Generate Cbke Keys Handler283k1 +void emAfGenerateCbkeKeysHandler283k1( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKey283k1Data *ephemeralPublicKey) +{ +(void)status; +(void)ephemeralPublicKey; + +} + + + +// Calculate Smacs Handler283k1 +void emAfCalculateSmacsHandler283k1( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +{ +(void)status; +(void)initiatorSmac; +(void)responderSmac; + +} + + + +// Gpep Incoming Message +void emAfGpepIncomingMessage( + // The status of the GPDF receive. + EmberStatus status, + // The gpdLink value of the received GPDF. + uint8_t gpdLink, + // The GPDF sequence number. + uint8_t sequenceNumber, + // The address of the source GPD. + EmberGpAddress *addr, + // The security level of the received GPDF. + EmberGpSecurityLevel gpdfSecurityLevel, + // The securityKeyType used to decrypt/authenticate the incoming GPDF. + EmberGpKeyType gpdfSecurityKeyType, + // Whether the incoming GPDF had the auto-commissioning bit set. + bool autoCommissioning, + // Bidirectional information represented in bitfields, where bit0 holds + // the rxAfterTx of incoming gpdf and bit1 holds if tx queue is available + // for outgoing gpdf. + uint8_t bidirectionalInfo, + // The security frame counter of the incoming GDPF. + uint32_t gpdSecurityFrameCounter, + // The gpdCommandId of the incoming GPDF. + uint8_t gpdCommandId, + // The received MIC of the GPDF. + uint32_t mic, + // The proxy table index of the corresponding proxy table entry to the + // incoming GPDF. + uint8_t proxyTableIndex, + // The length of the GPD command payload. + uint8_t gpdCommandPayloadLength, + // The GPD command payload. + uint8_t *gpdCommandPayload) +{ +(void)status; +(void)gpdLink; +(void)sequenceNumber; +(void)addr; +(void)gpdfSecurityLevel; +(void)gpdfSecurityKeyType; +(void)autoCommissioning; +(void)bidirectionalInfo; +(void)gpdSecurityFrameCounter; +(void)gpdCommandId; +(void)mic; +(void)proxyTableIndex; +(void)gpdCommandPayloadLength; +(void)gpdCommandPayload; + +emAfGpepIncomingMessageCallback(status, gpdLink, sequenceNumber, addr, gpdfSecurityLevel, gpdfSecurityKeyType, autoCommissioning, bidirectionalInfo, gpdSecurityFrameCounter, gpdCommandId, mic, proxyTableIndex, gpdCommandPayloadLength, gpdCommandPayload); +} + + + +// Rtos Idle +// Return: True or False. +void emAfRtosIdle( + // Return: Idle time duration + uint32_t *idleTimeMs) +{ +(void)idleTimeMs; + +} + + + +// Rtos Stack Wakeup Isr +void emAfRtosStackWakeupIsr(void) +{ + +} + + + +// Radio Needs Calibrating +void emAfRadioNeedsCalibrating(void) +{ + +} + + + +// Scan Error +void emAfScanError( + // The error status of a scan + EmberStatus status) +{ +(void)status; + +} + diff --git a/silabs_examples/credentials/device/brd4161a/autogen/zigbee_stack_callback_dispatcher.h b/silabs_examples/credentials/device/brd4161a/autogen/zigbee_stack_callback_dispatcher.h new file mode 100644 index 00000000000000..cf2d271a277f10 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/autogen/zigbee_stack_callback_dispatcher.h @@ -0,0 +1,876 @@ +/*****************************************************************************/ +/** + * Copyright 2020 Silicon Laboratories, Inc. + * + *****************************************************************************/ +// +// *** Generated file. Do not edit! *** +// + +#include PLATFORM_HEADER +#ifdef EZSP_HOST +#include "stack/include/ember-types.h" +#else +#include "stack/include/ember.h" +#endif // EZSP_HOST + + + +// Incoming Message +#ifdef EZSP_HOST +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // The link quality + uint8_t lastHopLqi, + // The energy level + int8_t lastHopRssi, + // The sender of the message. + EmberNodeId sender, + // The index of a binding that matches the message + // matching binding. + uint8_t bindingIndex, + // The index of the entry in the address table + uint8_t addressIndex, + // The message length + uint8_t messageLength, + // message + uint8_t *messageContents) +; +void emAfIncomingMessageCallback( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // The link quality + uint8_t lastHopLqi, + // The energy level + int8_t lastHopRssi, + // The sender of the message. + EmberNodeId sender, + // The index of a binding that matches the message + // matching binding. + uint8_t bindingIndex, + // The index of the entry in the address table + uint8_t addressIndex, + // The message length + uint8_t messageLength, + // message + uint8_t *messageContents) +; +#else // !EZSP_HOST +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message) +; +void emAfIncomingMessageCallback( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message) +; +#endif // EZSP_HOST + + +// Message Sent +#ifdef EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // Message tag + uint8_t messageTag, + // Message delivery status + EmberStatus status, + // The length of the messageContents + uint8_t messageLength, + // Message data + uint8_t *messageContents) +; +void emAfMessageSentCallback( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // Message tag + uint8_t messageTag, + // Message delivery status + EmberStatus status, + // The length of the messageContents + uint8_t messageLength, + // Message data + uint8_t *messageContents) +; +#else // !EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message, + // Message delivery status + EmberStatus status) +; +void emAfMessageSentCallback( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message, + // Message delivery status + EmberStatus status) +; +#endif // EZSP_HOST + + + +// Trust Center Join +void emAfTrustCenterJoin( + // Joining node's id + EmberNodeId newNodeId, + // Joining node's Eui64 + EmberEUI64 newNodeEui64, + // Status + EmberDeviceUpdate status, + // Parent Id of the joining node + EmberNodeId parentOfNewNode) +; + +// Mark Buffers +void emAfMarkBuffers(void) +; +void emAfMarkBuffersCallback(void) +; + +// Packet Handoff Incoming +void emAfPacketHandoffIncoming( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +; + +// Packet Handoff Outgoing +void emAfPacketHandoffOutgoing( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +; + +// Incoming Mfg Test Message +void emAfIncomingMfgTestMessage( + uint8_t messageType, + uint8_t dataLength, + // Return: + uint8_t *data) +; + +// Override Incoming Route Record +void emAfOverrideIncomingRouteRecord( + EmberNodeId source, + EmberEUI64 sourceEui, + uint8_t relayCount, + EmberMessageBuffer header, + uint8_t relayListIndex, + // Return: + bool *consumed) +; +void emAfOverrideIncomingRouteRecordCallback( + EmberNodeId source, + EmberEUI64 sourceEui, + uint8_t relayCount, + EmberMessageBuffer header, + uint8_t relayListIndex, + // Return: + bool *consumed) +; + +// Override Append Source Route +// Return: Added bytes +void emAfOverrideAppendSourceRoute( + EmberNodeId destination, + // Return: + EmberMessageBuffer *header, + // Return: + bool *consumed) +; + +// Override Furthur Index For Source Route Add Entry +void emAfOverrideFurthurIndexForSourceRouteAddEntry( + EmberNodeId id, + // Return: + uint8_t *furtherIndex) +; +void emAfOverrideFurthurIndexForSourceRouteAddEntryCallback( + EmberNodeId id, + // Return: + uint8_t *furtherIndex) +; + +// Stack Status +void emAfStackStatus( + // Stack status + EmberStatus status) +; +void emAfStackStatusCallback( + // Stack status + EmberStatus status) +; + +// Energy Scan Result +void emAfEnergyScanResult( + // The 802.15.4 channel number that was scanned. + uint8_t channel, + // The maximum RSSI value found on the channel. + int8_t maxRssiValue) +; +void emAfEnergyScanResultCallback( + // The 802.15.4 channel number that was scanned. + uint8_t channel, + // The maximum RSSI value found on the channel. + int8_t maxRssiValue) +; + +// Network Found +void emAfNetworkFound( + // The parameters associated with the network found. + EmberZigbeeNetwork *networkFound, + // The link quality indication of the network found. + uint8_t lqi, + // The received signal strength indication of the network found. + int8_t rssi) +; +void emAfNetworkFoundCallback( + // The parameters associated with the network found. + EmberZigbeeNetwork *networkFound, + // The link quality indication of the network found. + uint8_t lqi, + // The received signal strength indication of the network found. + int8_t rssi) +; + +// Scan Complete +void emAfScanComplete( + // The channel on which the current error occurred. Undefined for the case + // of EMBER_SUCCESS. + uint8_t channel, + // The error condition that occurred on the current channel. Value will be + // EMBER_SUCCESS when the scan has completed. + EmberStatus status) +; +void emAfScanCompleteCallback( + // The channel on which the current error occurred. Undefined for the case + // of EMBER_SUCCESS. + uint8_t channel, + // The error condition that occurred on the current channel. Value will be + // EMBER_SUCCESS when the scan has completed. + EmberStatus status) +; + +// Unused Pan Id Found +void emAfUnusedPanIdFound( + // The unused panID which has been found. + EmberPanId panId, + // The channel that the unused panID was found on. + uint8_t channel) +; +void emAfUnusedPanIdFoundCallback( + // The unused panID which has been found. + EmberPanId panId, + // The channel that the unused panID was found on. + uint8_t channel) +; + +// Child Join +#ifdef EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining, + // The node ID of the child. + EmberNodeId childId, + // The EUI64 of the child. + EmberEUI64 childEui64, + // The node type of the child. + EmberNodeType childType) +; +void emAfChildJoinCallback( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining, + // The node ID of the child. + EmberNodeId childId, + // The EUI64 of the child. + EmberEUI64 childEui64, + // The node type of the child. + EmberNodeType childType) +; +#else // !EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining) +; +void emAfChildJoinCallback( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining) +; +#endif // EZSP_HOST + + + +// Duty Cycle +#ifdef EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state, + // The total number of connected end devices that are being monitored for + // duty cycle. + uint8_t totalDevices, + // Consumed duty cycles of end devices that are being monitored. The first + // entry always be the local stack's nodeId, and thus the total aggregate + // duty cycle for the device. + EmberPerDeviceDutyCycle *arrayOfDeviceDutyCycles) +; +void emAfDutyCycleCallback( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state, + // The total number of connected end devices that are being monitored for + // duty cycle. + uint8_t totalDevices, + // Consumed duty cycles of end devices that are being monitored. The first + // entry always be the local stack's nodeId, and thus the total aggregate + // duty cycle for the device. + EmberPerDeviceDutyCycle *arrayOfDeviceDutyCycles) +; +#else // !EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state) +; +void emAfDutyCycleCallback( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state) +; +#endif // EZSP_HOST + + + +// Remote Set Binding +// Return: ZDO response status. +void emAfRemoteSetBinding( + // Return: The contents of the binding entry. + EmberBindingTableEntry *entry) +; + +// Remote Delete Binding +// Return: ZDO response status +void emAfRemoteDeleteBinding( + // The index of the binding whose deletion was requested. + uint8_t index) +; + +// Poll Complete +void emAfPollComplete( + // An EmberStatus value: EMBER_SUCCESS - Data was received in response to + // the poll. EMBER_MAC_NO_DATA - No data was pending. + // EMBER_DELIVERY_FAILED - The poll message could not be sent. + // EMBER_MAC_NO_ACK_RECEIVED - The poll message was sent but not + // acknowledged by the parent. + EmberStatus status) +; +void emAfPollCompleteCallback( + // An EmberStatus value: EMBER_SUCCESS - Data was received in response to + // the poll. EMBER_MAC_NO_DATA - No data was pending. + // EMBER_DELIVERY_FAILED - The poll message could not be sent. + // EMBER_MAC_NO_ACK_RECEIVED - The poll message was sent but not + // acknowledged by the parent. + EmberStatus status) +; + +// Poll +void emAfPoll( + // The node ID of the child that is requesting data. + EmberNodeId childId, + // True if transmit expected, false otherwise. + bool transmitExpected) +; +void emAfPollCallback( + // The node ID of the child that is requesting data. + EmberNodeId childId, + // True if transmit expected, false otherwise. + bool transmitExpected) +; + +// Debug +void emAfDebug( + // debug message + EmberMessageBuffer message) +; + +// Incoming Many To One Route Request +void emAfIncomingManyToOneRouteRequest( + // The short id of the concentrator. + EmberNodeId source, + // The EUI64 of the concentrator. + EmberEUI64 longId, + // The path cost to the concentrator. The cost may decrease as additional + // route request packets for this discovery arrive, but the callback is + // made only once. + uint8_t cost) +; +void emAfIncomingManyToOneRouteRequestCallback( + // The short id of the concentrator. + EmberNodeId source, + // The EUI64 of the concentrator. + EmberEUI64 longId, + // The path cost to the concentrator. The cost may decrease as additional + // route request packets for this discovery arrive, but the callback is + // made only once. + uint8_t cost) +; + +// Incoming Route Error +void emAfIncomingRouteError( + // EMBER_SOURCE_ROUTE_FAILURE or EMBER_MANY_TO_ONE_ROUTE_FAILURE. + EmberStatus status, + // The short id of the remote node. + EmberNodeId target) +; +void emAfIncomingRouteErrorCallback( + // EMBER_SOURCE_ROUTE_FAILURE or EMBER_MANY_TO_ONE_ROUTE_FAILURE. + EmberStatus status, + // The short id of the remote node. + EmberNodeId target) +; + +// Incoming Network Status +void emAfIncomingNetworkStatus( + // One byte over-the-air error code from network status message + uint8_t errorCode, + // The short ID of the remote node + EmberNodeId target) +; +void emAfIncomingNetworkStatusCallback( + // One byte over-the-air error code from network status message + uint8_t errorCode, + // The short ID of the remote node + EmberNodeId target) +; + +// Incoming Route Record +void emAfIncomingRouteRecord( + // The source of the route record. + EmberNodeId source, + // The EUI64 of the source. + EmberEUI64 sourceEui, + // The number of relays in relayList. + uint8_t relayCount, + // Header. + EmberMessageBuffer header, + // The relay List Index. + uint8_t relayListIndex) +; +void emAfIncomingRouteRecordCallback( + // The source of the route record. + EmberNodeId source, + // The EUI64 of the source. + EmberEUI64 sourceEui, + // The number of relays in relayList. + uint8_t relayCount, + // Header. + EmberMessageBuffer header, + // The relay List Index. + uint8_t relayListIndex) +; + +// Id Conflict +void emAfIdConflict( + // The short id for which a conflict was detected + EmberNodeId conflictingId) +; +void emAfIdConflictCallback( + // The short id for which a conflict was detected + EmberNodeId conflictingId) +; + +// Mac Passthrough Message +void emAfMacPassthroughMessage( + // The type of MAC passthrough message received. + EmberMacPassthroughType messageType, + // The raw message that was received. + EmberMessageBuffer message) +; +void emAfMacPassthroughMessageCallback( + // The type of MAC passthrough message received. + EmberMacPassthroughType messageType, + // The raw message that was received. + EmberMessageBuffer message) +; + +// Stack Token Changed +void emAfStackTokenChanged( + // The address of the stack token that has changed. + uint16_t tokenAddress) +; +void emAfStackTokenChangedCallback( + // The address of the stack token that has changed. + uint16_t tokenAddress) +; + +// Timer +void emAfTimer( + // Which timer generated the callback (0 or 1). + uint8_t timerId) +; + +// Counter Rollover +void emAfCounterRollover( + // Type of Counter + EmberCounterType type) +; +void emAfCounterRolloverCallback( + // Type of Counter + EmberCounterType type) +; + +// Raw Transmit Complete +void emAfRawTransmitComplete( + // message + EmberMessageBuffer message, + // EMBER_SUCCESS if the transmission was successful, or + // EMBER_DELIVERY_FAILED if not + EmberStatus status) +; +void emAfRawTransmitCompleteCallback( + // message + EmberMessageBuffer message, + // EMBER_SUCCESS if the transmission was successful, or + // EMBER_DELIVERY_FAILED if not + EmberStatus status) +; + +// Switch Network Key +void emAfSwitchNetworkKey( + // The sequence number of the new network key. + uint8_t sequenceNumber) +; +void emAfSwitchNetworkKeyCallback( + // The sequence number of the new network key. + uint8_t sequenceNumber) +; + +// Zigbee Key Establishment +void emAfZigbeeKeyEstablishment( + // This is the IEEE address of the partner that the device successfully + // established a key with. This value is all zeros on a failure. + EmberEUI64 partner, + // This is the status indicating what was established or why the key + // establishment failed. + EmberKeyStatus status) +; +void emAfZigbeeKeyEstablishmentCallback( + // This is the IEEE address of the partner that the device successfully + // established a key with. This value is all zeros on a failure. + EmberEUI64 partner, + // This is the status indicating what was established or why the key + // establishment failed. + EmberKeyStatus status) +; + +// Generate Cbke Keys +void emAfGenerateCbkeKeys( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKeyData *ephemeralPublicKey) +; + +// Calculate Smacs +void emAfCalculateSmacs( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +; + +// Dsa Sign +void emAfDsaSign( + // The result of the DSA signing operation. + EmberStatus status, + // The message and attached which includes the original message and the + // appended signature. + EmberMessageBuffer signedMessage) +; + +// Dsa Verify +void emAfDsaVerify( + // The result of the DSA verification operation. + EmberStatus status) +; + +// Incoming Bootload Message +void emAfIncomingBootloadMessage( + // The EUI64 of the sending node. + EmberEUI64 longId, + // The bootload message that was sent. + EmberMessageBuffer message) +; +void emAfIncomingBootloadMessageCallback( + // The EUI64 of the sending node. + EmberEUI64 longId, + // The bootload message that was sent. + EmberMessageBuffer message) +; + +// Bootload Transmit Complete +void emAfBootloadTransmitComplete( + // The bootload message that was sent. + EmberMessageBuffer message, + // An EmberStatus value of EMBER_SUCCESS if an ACK was received from the + // destination or EMBER_DELIVERY_FAILED if no ACK was received. + EmberStatus status) +; +void emAfBootloadTransmitCompleteCallback( + // The bootload message that was sent. + EmberMessageBuffer message, + // An EmberStatus value of EMBER_SUCCESS if an ACK was received from the + // destination or EMBER_DELIVERY_FAILED if no ACK was received. + EmberStatus status) +; + +// Zll Network Found +void emAfZllNetworkFound( + // Return: Information about the network. + const EmberZllNetwork *networkInfo, + // Return: Device specific information. + const EmberZllDeviceInfoRecord *deviceInfo) +; + +// Zll Scan Complete +void emAfZllScanComplete( + // Status of the operation. + EmberStatus status) +; + +// Zll Address Assignment +void emAfZllAddressAssignment( + // Return: Address assignment information. + const EmberZllAddressAssignment *addressInfo) +; + +// Zll Touch Link Target +void emAfZllTouchLinkTarget( + // Return: Information about the network. + const EmberZllNetwork *networkInfo) +; + +// Mac Filter Match Message +void emAfMacFilterMatchMessage( + // Return: macFilterMatchStruct. + const EmberMacFilterMatchStruct *macFilterMatchStruct) +; +void emAfMacFilterMatchMessageCallback( + // Return: macFilterMatchStruct. + const EmberMacFilterMatchStruct *macFilterMatchStruct) +; + +// D Gp Sent +void emAfDGpSent( + // An EmberStatus value indicating success or the reason for failure. + EmberStatus status, + // The handle of the GPDF. + uint8_t gpepHandle) +; +void emAfDGpSentCallback( + // An EmberStatus value indicating success or the reason for failure. + EmberStatus status, + // The handle of the GPDF. + uint8_t gpepHandle) +; + +// Pan Id Conflict +// Return: An EmberStatus value indicating success or the reason for failure. +void emAfPanIdConflict( + // Number of conflict reports + int8_t conflictCount) +; + +// Orphan Notification +void emAfOrphanNotification( + // The 8 byte EUI64 of the sender. + EmberEUI64 longId) +; + +// Counter +void emAfCounter( + // Type of Counter + EmberCounterType type, + // Counter Info and value + EmberCounterInfo Info) +; +void emAfCounterCallback( + // Type of Counter + EmberCounterType type, + // Counter Info and value + EmberCounterInfo Info) +; + +// Mac Passthrough Filter +// Return: True if mac passthrough filter was matched. False otherwise. +void emAfMacPassthroughFilter( + // Return: Mac Header of the matched messgae + uint8_t *macHeader) +; + +// Generate Cbke Keys Handler283k1 +void emAfGenerateCbkeKeysHandler283k1( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKey283k1Data *ephemeralPublicKey) +; + +// Calculate Smacs Handler283k1 +void emAfCalculateSmacsHandler283k1( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +; + +// Gpep Incoming Message +void emAfGpepIncomingMessage( + // The status of the GPDF receive. + EmberStatus status, + // The gpdLink value of the received GPDF. + uint8_t gpdLink, + // The GPDF sequence number. + uint8_t sequenceNumber, + // The address of the source GPD. + EmberGpAddress *addr, + // The security level of the received GPDF. + EmberGpSecurityLevel gpdfSecurityLevel, + // The securityKeyType used to decrypt/authenticate the incoming GPDF. + EmberGpKeyType gpdfSecurityKeyType, + // Whether the incoming GPDF had the auto-commissioning bit set. + bool autoCommissioning, + // Bidirectional information represented in bitfields, where bit0 holds + // the rxAfterTx of incoming gpdf and bit1 holds if tx queue is available + // for outgoing gpdf. + uint8_t bidirectionalInfo, + // The security frame counter of the incoming GDPF. + uint32_t gpdSecurityFrameCounter, + // The gpdCommandId of the incoming GPDF. + uint8_t gpdCommandId, + // The received MIC of the GPDF. + uint32_t mic, + // The proxy table index of the corresponding proxy table entry to the + // incoming GPDF. + uint8_t proxyTableIndex, + // The length of the GPD command payload. + uint8_t gpdCommandPayloadLength, + // The GPD command payload. + uint8_t *gpdCommandPayload) +; +void emAfGpepIncomingMessageCallback( + // The status of the GPDF receive. + EmberStatus status, + // The gpdLink value of the received GPDF. + uint8_t gpdLink, + // The GPDF sequence number. + uint8_t sequenceNumber, + // The address of the source GPD. + EmberGpAddress *addr, + // The security level of the received GPDF. + EmberGpSecurityLevel gpdfSecurityLevel, + // The securityKeyType used to decrypt/authenticate the incoming GPDF. + EmberGpKeyType gpdfSecurityKeyType, + // Whether the incoming GPDF had the auto-commissioning bit set. + bool autoCommissioning, + // Bidirectional information represented in bitfields, where bit0 holds + // the rxAfterTx of incoming gpdf and bit1 holds if tx queue is available + // for outgoing gpdf. + uint8_t bidirectionalInfo, + // The security frame counter of the incoming GDPF. + uint32_t gpdSecurityFrameCounter, + // The gpdCommandId of the incoming GPDF. + uint8_t gpdCommandId, + // The received MIC of the GPDF. + uint32_t mic, + // The proxy table index of the corresponding proxy table entry to the + // incoming GPDF. + uint8_t proxyTableIndex, + // The length of the GPD command payload. + uint8_t gpdCommandPayloadLength, + // The GPD command payload. + uint8_t *gpdCommandPayload) +; + +// Rtos Idle +// Return: True or False. +void emAfRtosIdle( + // Return: Idle time duration + uint32_t *idleTimeMs) +; + +// Rtos Stack Wakeup Isr +void emAfRtosStackWakeupIsr(void) +; + +// Radio Needs Calibrating +void emAfRadioNeedsCalibrating(void) +; + +// Scan Error +void emAfScanError( + // The error status of a scan + EmberStatus status) +; diff --git a/silabs_examples/credentials/device/brd4161a/config/SEGGER_RTT_Conf.h b/silabs_examples/credentials/device/brd4161a/config/SEGGER_RTT_Conf.h new file mode 100644 index 00000000000000..ca8df42d9c73a7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/SEGGER_RTT_Conf.h @@ -0,0 +1,417 @@ +/********************************************************************* +* SEGGER Microcontroller GmbH * +* The Embedded Experts * +********************************************************************** +* * +* (c) 1995 - 2021 SEGGER Microcontroller GmbH * +* * +* www.segger.com Support: support@segger.com * +* * +********************************************************************** +* * +* SEGGER SystemView * Real-time application analysis * +* * +********************************************************************** +* * +* All rights reserved. * +* * +* SEGGER strongly recommends to not make any changes * +* to or modify the source code of this software in order to stay * +* compatible with the SystemView and RTT protocol, and J-Link. * +* * +* Redistribution and use in source and binary forms, with or * +* without modification, are permitted provided that the following * +* condition is met: * +* * +* o Redistributions of source code must retain the above copyright * +* notice, this condition and the following disclaimer. * +* * +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND * +* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, * +* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * +* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * +* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR * +* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * +* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * +* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * +* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * +* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * +* DAMAGE. * +* * +********************************************************************** +* * +* SystemView version: 3.30 * +* * +********************************************************************** +---------------------------END-OF-HEADER------------------------------ +File : SEGGER_RTT_Conf.h +Purpose : Implementation of SEGGER real-time transfer (RTT) which + allows real-time communication on targets which support + debugger memory accesses while the CPU is running. +Revision: $Rev: 21386 $ + +*/ + +#ifndef SEGGER_RTT_CONF_H +#define SEGGER_RTT_CONF_H + +#ifdef __IAR_SYSTEMS_ICC__ + #include +#endif + +/********************************************************************* + * + * Defines, configurable + * + ********************************************************************** + */ +#ifndef SEGGER_RTT_MAX_NUM_UP_BUFFERS + #define SEGGER_RTT_MAX_NUM_UP_BUFFERS (3) // Max. number of up-buffers (T->H) available on this target (Default: 3) +#endif + +#ifndef SEGGER_RTT_MAX_NUM_DOWN_BUFFERS + #define SEGGER_RTT_MAX_NUM_DOWN_BUFFERS (3) // Max. number of down-buffers (H->T) available on this target (Default: 3) +#endif + +#ifndef BUFFER_SIZE_UP + #define BUFFER_SIZE_UP (1024) // Size of the buffer for terminal output of target, up to host (Default: 1k) +#endif + +#ifndef BUFFER_SIZE_DOWN + #define BUFFER_SIZE_DOWN (1024) // Size of the buffer for terminal input to target from host (Usually keyboard input) (Default: 16) +#endif + +#ifndef SEGGER_RTT_PRINTF_BUFFER_SIZE + #define SEGGER_RTT_PRINTF_BUFFER_SIZE (64u) // Size of buffer for RTT printf to bulk-send chars via RTT (Default: 64) +#endif + +#ifndef SEGGER_RTT_MODE_DEFAULT + #define SEGGER_RTT_MODE_DEFAULT SEGGER_RTT_MODE_NO_BLOCK_SKIP // Mode for pre-initialized terminal channel (buffer 0) +#endif + +/********************************************************************* + * + * RTT memcpy configuration + * + * memcpy() is good for large amounts of data, + * but the overhead is big for small amounts, which are usually stored via RTT. + * With SEGGER_RTT_MEMCPY_USE_BYTELOOP a simple byte loop can be used instead. + * + * SEGGER_RTT_MEMCPY() can be used to replace standard memcpy() in RTT functions. + * This is may be required with memory access restrictions, + * such as on Cortex-A devices with MMU. + */ +#ifndef SEGGER_RTT_MEMCPY_USE_BYTELOOP + #define SEGGER_RTT_MEMCPY_USE_BYTELOOP 0 // 0: Use memcpy/SEGGER_RTT_MEMCPY, 1: Use a simple byte-loop +#endif +// +// Example definition of SEGGER_RTT_MEMCPY to external memcpy with GCC toolchains and Cortex-A targets +// +//#if ((defined __SES_ARM) || (defined __CROSSWORKS_ARM) || (defined __GNUC__)) && (defined (__ARM_ARCH_7A__)) +// #define SEGGER_RTT_MEMCPY(pDest, pSrc, NumBytes) SEGGER_memcpy((pDest), (pSrc), (NumBytes)) +//#endif + +// +// Target is not allowed to perform other RTT operations while string still has not been stored completely. +// Otherwise we would probably end up with a mixed string in the buffer. +// If using RTT from within interrupts, multiple tasks or multi processors, define the SEGGER_RTT_LOCK() and SEGGER_RTT_UNLOCK() function here. +// +// SEGGER_RTT_MAX_INTERRUPT_PRIORITY can be used in the sample lock routines on Cortex-M3/4. +// Make sure to mask all interrupts which can send RTT data, i.e. generate SystemView events, or cause task switches. +// When high-priority interrupts must not be masked while sending RTT data, SEGGER_RTT_MAX_INTERRUPT_PRIORITY needs to be adjusted accordingly. +// (Higher priority = lower priority number) +// Default value for embOS: 128u +// Default configuration in FreeRTOS: configMAX_SYSCALL_INTERRUPT_PRIORITY: ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) +// In case of doubt mask all interrupts: 1 << (8 - BASEPRI_PRIO_BITS) i.e. 1 << 5 when 3 bits are implemented in NVIC +// or define SEGGER_RTT_LOCK() to completely disable interrupts. +// +#ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) // Interrupt priority to lock on SEGGER_RTT_LOCK on Cortex-M3/4 (Default: 0x20) +#endif + +/********************************************************************* + * + * RTT lock configuration for SEGGER Embedded Studio, + * Rowley CrossStudio and GCC + */ +#if ((defined(__SES_ARM) || defined(__SES_RISCV) || defined(__CROSSWORKS_ARM) || defined(__GNUC__) || defined(__clang__)) && !defined (__CC_ARM) && !defined(WIN32)) + #if (defined(__ARM_ARCH_6M__) || defined(__ARM_ARCH_8M_BASE__)) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("mrs %0, primask \n\t" \ + "movs r1, #1 \n\t" \ + "msr primask, r1 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : \ + : "r1", "cc" \ + ); + + #define SEGGER_RTT_UNLOCK() __asm volatile ("msr primask, %0 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : \ + ); \ + } + #elif (defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_8M_MAIN__)) + #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) + #endif + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("mrs %0, basepri \n\t" \ + "mov r1, %1 \n\t" \ + "msr basepri, r1 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : "i" (SEGGER_RTT_MAX_INTERRUPT_PRIORITY) \ + : "r1", "cc" \ + ); + + #define SEGGER_RTT_UNLOCK() __asm volatile ("msr basepri, %0 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : \ + ); \ + } + + #elif defined(__ARM_ARCH_7A__) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("mrs r1, CPSR \n\t" \ + "mov %0, r1 \n\t" \ + "orr r1, r1, #0xC0 \n\t" \ + "msr CPSR_c, r1 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : \ + : "r1", "cc" \ + ); + + #define SEGGER_RTT_UNLOCK() __asm volatile ("mov r0, %0 \n\t" \ + "mrs r1, CPSR \n\t" \ + "bic r1, r1, #0xC0 \n\t" \ + "and r0, r0, #0xC0 \n\t" \ + "orr r1, r1, r0 \n\t" \ + "msr CPSR_c, r1 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : "r0", "r1", "cc" \ + ); \ + } + #elif defined(__riscv) || defined(__riscv_xlen) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("csrr %0, mstatus \n\t" \ + "csrci mstatus, 8 \n\t" \ + "andi %0, %0, 8 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : \ + : \ + ); + #define SEGGER_RTT_UNLOCK() __asm volatile ("csrr a1, mstatus \n\t" \ + "or %0, %0, a1 \n\t" \ + "csrs mstatus, %0 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : "a1" \ + ); \ + } + #else + #define SEGGER_RTT_LOCK() + #define SEGGER_RTT_UNLOCK() + #endif +#endif + +/********************************************************************* + * + * RTT lock configuration for IAR EWARM + */ +#ifdef __ICCARM__ + #if (defined (__ARM6M__) && (__CORE__ == __ARM6M__)) || \ + (defined (__ARM8M_BASELINE__) && (__CORE__ == __ARM8M_BASELINE__)) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_PRIMASK(); \ + __set_PRIMASK(1); + + #define SEGGER_RTT_UNLOCK() __set_PRIMASK(_SEGGER_RTT__LockState); \ + } + #elif (defined (__ARM7EM__) && (__CORE__ == __ARM7EM__)) || \ + (defined (__ARM7M__) && (__CORE__ == __ARM7M__)) || \ + (defined (__ARM8M_MAINLINE__) && (__CORE__ == __ARM8M_MAINLINE__)) || \ + (defined (__ARM8M_MAINLINE__) && (__CORE__ == __ARM8M_MAINLINE__)) + #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) + #endif + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_BASEPRI(); \ + __set_BASEPRI(SEGGER_RTT_MAX_INTERRUPT_PRIORITY); + + #define SEGGER_RTT_UNLOCK() __set_BASEPRI(_SEGGER_RTT__LockState); \ + } + #elif (defined (__ARM7A__) && (__CORE__ == __ARM7A__)) || \ + (defined (__ARM7R__) && (__CORE__ == __ARM7R__)) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("mrs r1, CPSR \n\t" \ + "mov %0, r1 \n\t" \ + "orr r1, r1, #0xC0 \n\t" \ + "msr CPSR_c, r1 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : \ + : "r1", "cc" \ + ); + #define SEGGER_RTT_UNLOCK() __asm volatile ("mov r0, %0 \n\t" \ + "mrs r1, CPSR \n\t" \ + "bic r1, r1, #0xC0 \n\t" \ + "and r0, r0, #0xC0 \n\t" \ + "orr r1, r1, r0 \n\t" \ + "msr CPSR_c, r1 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : "r0", "r1", "cc" \ + ); \ + } + #endif +#endif + +/********************************************************************* + * + * RTT lock configuration for IAR RX + */ +#ifdef __ICCRX__ + #define SEGGER_RTT_LOCK() { \ + unsigned long _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_interrupt_state(); \ + __disable_interrupt(); + + #define SEGGER_RTT_UNLOCK() __set_interrupt_state(_SEGGER_RTT__LockState); \ + } +#endif + +/********************************************************************* + * + * RTT lock configuration for IAR RL78 + */ +#ifdef __ICCRL78__ + #define SEGGER_RTT_LOCK() { \ + __istate_t _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_interrupt_state(); \ + __disable_interrupt(); + + #define SEGGER_RTT_UNLOCK() __set_interrupt_state(_SEGGER_RTT__LockState); \ + } +#endif + +/********************************************************************* + * + * RTT lock configuration for KEIL ARM + */ +#ifdef __CC_ARM + #if (defined __TARGET_ARCH_6S_M) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + register unsigned char _SEGGER_RTT__PRIMASK __asm( "primask"); \ + _SEGGER_RTT__LockState = _SEGGER_RTT__PRIMASK; \ + _SEGGER_RTT__PRIMASK = 1u; \ + __schedule_barrier(); + + #define SEGGER_RTT_UNLOCK() _SEGGER_RTT__PRIMASK = _SEGGER_RTT__LockState; \ + __schedule_barrier(); \ + } + #elif (defined(__TARGET_ARCH_7_M) || defined(__TARGET_ARCH_7E_M)) + #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) + #endif + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + register unsigned char BASEPRI __asm("basepri"); \ + _SEGGER_RTT__LockState = BASEPRI; \ + BASEPRI = SEGGER_RTT_MAX_INTERRUPT_PRIORITY; \ + __schedule_barrier(); + + #define SEGGER_RTT_UNLOCK() BASEPRI = _SEGGER_RTT__LockState; \ + __schedule_barrier(); \ + } + #endif +#endif + +/********************************************************************* + * + * RTT lock configuration for TI ARM + */ +#ifdef __TI_ARM__ + #if defined (__TI_ARM_V6M0__) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_PRIMASK(); \ + __set_PRIMASK(1); + + #define SEGGER_RTT_UNLOCK() __set_PRIMASK(_SEGGER_RTT__LockState); \ + } + #elif (defined (__TI_ARM_V7M3__) || defined (__TI_ARM_V7M4__)) + #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) + #endif + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = _set_interrupt_priority(SEGGER_RTT_MAX_INTERRUPT_PRIORITY); + + #define SEGGER_RTT_UNLOCK() _set_interrupt_priority(_SEGGER_RTT__LockState); \ + } + #endif +#endif + +/********************************************************************* + * + * RTT lock configuration for CCRX + */ +#ifdef __RX + #include + #define SEGGER_RTT_LOCK() { \ + unsigned long _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = get_psw() & 0x010000; \ + clrpsw_i(); + + #define SEGGER_RTT_UNLOCK() set_psw(get_psw() | _SEGGER_RTT__LockState); \ + } +#endif + +/********************************************************************* + * + * RTT lock configuration for embOS Simulation on Windows + * (Can also be used for generic RTT locking with embOS) + */ +#if defined(WIN32) || defined(SEGGER_RTT_LOCK_EMBOS) + +void OS_SIM_EnterCriticalSection(void); +void OS_SIM_LeaveCriticalSection(void); + +#define SEGGER_RTT_LOCK() { \ + OS_SIM_EnterCriticalSection(); + +#define SEGGER_RTT_UNLOCK() OS_SIM_LeaveCriticalSection(); \ + } +#endif + +/********************************************************************* + * + * RTT lock configuration fallback + */ +#ifndef SEGGER_RTT_LOCK + #define SEGGER_RTT_LOCK() // Lock RTT (nestable) (i.e. disable interrupts) +#endif + +#ifndef SEGGER_RTT_UNLOCK + #define SEGGER_RTT_UNLOCK() // Unlock RTT (nestable) (i.e. enable previous interrupt lock state) +#endif + +/********************************************************************* + * + * RTT control block configuration + */ +#define SEGGER_RTT_ALIGNMENT 1024 + +#endif +/*************************** End of file ****************************/ diff --git a/silabs_examples/credentials/device/brd4161a/config/app_properties_config.h b/silabs_examples/credentials/device/brd4161a/config/app_properties_config.h new file mode 100644 index 00000000000000..6a6b976666a554 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/app_properties_config.h @@ -0,0 +1,65 @@ +/***************************************************************************//** + * @file + * @brief Application Properties Header File + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef APP_PROPERTIES_CONFIG_H +#define APP_PROPERTIES_CONFIG_H + +#include "sl_application_type.h" + +// <<< Use Configuration Wizard in Context Menu >>> + +// App Properties settings + +// Type of signature this application is signed with +// Default: APPLICATION_SIGNATURE_NONE(0) +#define SL_APPLICATION_SIGNATURE 0 + +// Location of the signature +// Default: 0xFFFFFFFF +#define SL_APPLICATION_SIGNATURE_LOCATION 0xFFFFFFFF + +// Bitfield representing type of application +#define SL_APPLICATION_TYPE APPLICATION_TYPE + +// Version number for this application +// <0-4294967295:1> +// Default: 1 [0-4294967295] +#define SL_APPLICATION_VERSION 1 + +// Capabilities of this application +// Default: 0 +#define SL_APPLICATION_CAPABILITIES 0 + +//Product ID of the device for which the application is built +#define SL_APPLICATION_PRODUCT_ID { 0 } + +// + +#endif // APP_PROPERTIES_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4161a/config/btl_interface_cfg.h b/silabs_examples/credentials/device/brd4161a/config/btl_interface_cfg.h new file mode 100644 index 00000000000000..eca01575f6cda2 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/btl_interface_cfg.h @@ -0,0 +1,44 @@ +/***************************************************************************//** + * @file + * @brief Configuration header of Bootloader Interface + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +#ifndef BTL_INTERFACE_CFG_H +#define BTL_INTERFACE_CFG_H + +#if !defined(BOOTLOADER_APPLOADER) + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_1) +#include "btl_interface_cfg_s2c1.h" +#endif + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_2) +#include "btl_interface_cfg_s2c2.h" +#endif + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_3) +#include "btl_interface_cfg_s2c3.h" +#endif + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_4) +#include "btl_interface_cfg_s2c4.h" +#endif + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_5) +#define BOOTLOADER_DISABLE_OLD_BOOTLOADER_MITIGATION 1 +#endif + +#endif // !BOOTLOADER_APPLOADER + +#endif // BTL_INTERFACE_CFG_H diff --git a/silabs_examples/credentials/device/brd4161a/config/emlib_core_debug_config.h b/silabs_examples/credentials/device/brd4161a/config/emlib_core_debug_config.h new file mode 100644 index 00000000000000..50dbbed9bc4f59 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/emlib_core_debug_config.h @@ -0,0 +1,46 @@ +/***************************************************************************//** + * @file + * @brief emlib_core Configuration + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef EM_CORE_DEBUG_CONFIG_H +#define EM_CORE_DEBUG_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Core Configuration + +// Enables measuring of interrupt disable time for debugging purposes. +// Default: 0 +// If Enabled, either cycle_counter or systemview component must be added to project. +#define SL_EMLIB_CORE_ENABLE_INTERRUPT_DISABLED_TIMING 0 + +// + +// <<< end of configuration section >>> +#endif // EM_CORE_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4161a/config/legacy_common_ash_config.h b/silabs_examples/credentials/device/brd4161a/config/legacy_common_ash_config.h new file mode 100644 index 00000000000000..ce1ad5d7ad4eb4 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/legacy_common_ash_config.h @@ -0,0 +1,43 @@ +/***************************************************************************//** + * @file + * @brief Legacy Host ASH configuration file. + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef LEGACY_NCP_ASH_CONFIG_H +#define LEGACY_NCP_ASH_CONFIG_H + +// The USART used for ASH communications in COM_Port_t format, as defined in platform/service/legacy_hal/inc/serial.h (see defined names for USART ports) <-1..3:1> +// Default: (-1) +// The default value of -1 causes the ASH code to try to use the USART assigned to the "VCOM" instance of SL_IOSTREAM_USART. Otherwise the value is passed to Legacy HAL, which attempts to find an instance of SL_IOSTREAM_USART which uses that USART. +#define LEGACY_NCP_ASH_SERIAL_PORT (-1) + +#endif /* LEGACY_NCP_ASH_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4161a/config/legacy_hal_config.h b/silabs_examples/credentials/device/brd4161a/config/legacy_hal_config.h new file mode 100644 index 00000000000000..e3386e94094dc0 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/legacy_hal_config.h @@ -0,0 +1,47 @@ +/***************************************************************************//** + * @file + * @brief Legacy HAL configuration file. + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef LEGACY_HAL_CONFIG_H +#define LEGACY_HAL_CONFIG_H + +// Translate button interrupt callback +// When the Simple Button component is included, it provides a callback for +// buttons configured in interrupt mode. When this option is 1, Legacy HAL +// will try to consume that callback and translate it to "halButtonIsr", +// the legacy callback. If anything else in the application consumes the +// Simple button callback, it will override Legacy HAL's version. +// Default: 1 +#define LEGACY_HAL_TRANSLATE_BUTTON_INTERRUPT (1) + +#endif /* LEGACY_HAL_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4161a/config/mbedtls_config.h b/silabs_examples/credentials/device/brd4161a/config/mbedtls_config.h new file mode 100644 index 00000000000000..44ce8ed553755a --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/mbedtls_config.h @@ -0,0 +1,72 @@ +#ifndef MBEDTLS_CONFIG_H +#define MBEDTLS_CONFIG_H + +// Include the autogenerated mbedtls configuration file +#include "mbedtls_config_autogen.h" + +// <<< Use Configuration Wizard in Context Menu >>> +// TLS/DTLS configuration + +// Complete list of ciphersuites to use, in order of preference. +// Default: MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8 +// Complete list of ciphersuites to use, in order of preference. +// The value of this configuration should be updated for the application needs. +#define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8 + +// Maximum TLS/DTLS fragment length in bytes (input). +// Default: 768 +// The size configured here determines the size of the internal I/O +// buffer used in mbedTLS when receiving data. +#define SL_MBEDTLS_SSL_IN_CONTENT_LEN 768 + +// Maximum TLS/DTLS fragment length in bytes (output). +// Default: 768 +// The size configured here determines the size of the internal I/O +// buffer used in mbedTLS when sending data. +#define SL_MBEDTLS_SSL_OUT_CONTENT_LEN 768 + +// Enable support for RFC 6066 max_fragment_length extension in SSL. +// Default: 1 +// Enable support for RFC 6066 max_fragment_length extension in SSL. +#define SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH 1 + +// Enable support for exporting key block and master secret. +// Default: 1 +// Enable support for exporting key block and master secret. +// This is required for certain users of TLS, e.g. EAP-TLS. +#define SL_MBEDTLS_SSL_EXPORT_KEYS 1 + +// Enable the PSK based ciphersuite modes in SSL / TLS. +// Default: 0 +// Enable the PSK based ciphersuite modes in SSL / TLS. +#define SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED 0 + +// Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS. +// Default: 0 +// Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS. +#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED 0 + +// Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS. +// Default: 0 +// Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS. +#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED 0 + +// Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS. +// Default: 0 +// Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS. +#define SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED 0 + +// +// <<< end of configuration section >>> + +// Include transformation logic to apply CMSIS-config configuration options to +// the correct Mbed TLS / PSA Crypto options. +#include "sl_mbedtls_config_transform_autogen.h" + +// Custom defines can be placed here before check_config.h is included. + +#include "mbedtls/config_psa.h" + +#include "mbedtls/check_config.h" + +#endif diff --git a/silabs_examples/credentials/device/brd4161a/config/nvm3_default_config.h b/silabs_examples/credentials/device/brd4161a/config/nvm3_default_config.h new file mode 100644 index 00000000000000..ba2982c27c05b5 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/nvm3_default_config.h @@ -0,0 +1,45 @@ +#ifndef NVM3_DEFAULT_CONFIG_H +#define NVM3_DEFAULT_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// NVM3 Default Instance Configuration + +#ifndef NVM3_DEFAULT_CACHE_SIZE +// NVM3 Default Instance Cache Size +// Number of NVM3 objects to cache. To reduce access times this number +// should be equal to or higher than the number of NVM3 objects in the +// default NVM3 instance. +// Default: 200 +#define NVM3_DEFAULT_CACHE_SIZE 200 +#endif + +#ifndef NVM3_DEFAULT_MAX_OBJECT_SIZE +// NVM3 Default Instance Max Object Size +// Max NVM3 object size that can be stored. +// Default: 254 +#define NVM3_DEFAULT_MAX_OBJECT_SIZE 254 +#endif + +#ifndef NVM3_DEFAULT_REPACK_HEADROOM +// NVM3 Default Instance User Repack Headroom +// Headroom determining how many bytes below the forced repack limit the user +// repack limit should be placed. The default is 0, which means the user and +// forced repack limits are equal. +// Default: 0 +#define NVM3_DEFAULT_REPACK_HEADROOM 0 +#endif + +#ifndef NVM3_DEFAULT_NVM_SIZE +// NVM3 Default Instance Size +// Size of the NVM3 storage region in flash. This size should be aligned with +// the flash page size of the device. +// Default: 36864 +#define NVM3_DEFAULT_NVM_SIZE 36864 +#endif + +// + +// <<< end of configuration section >>> + +#endif // NVM3_DEFAULT_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4161a/config/psa_crypto_config.h b/silabs_examples/credentials/device/brd4161a/config/psa_crypto_config.h new file mode 100644 index 00000000000000..557606d10b524d --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/psa_crypto_config.h @@ -0,0 +1,47 @@ +#ifndef PSA_CRYPTO_CONFIG_H +#define PSA_CRYPTO_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// PSA User Maximum Open Keys Count <0-128> +// Maximum amount of keys that the user application will have open +// simultaneously. In context of PSA Crypto, an open key means any key +// either stored in RAM (lifetime set to PSA_KEY_LIFETIME_VOLATILE), or +// used as part of a cryptographic operation. +// When using a key for a multi-part (setup/update/finish) operation, a key +// is considered to be open from the moment the operation is successfully +// setup, until it finishes or aborts. +// When an application tries to open more keys than this value accounts for, +// the PSA API may return PSA_ERROR_INSUFFICIENT_MEMORY. Keep in mind that +// other software included in the application (e.g. wireless protocol stacks) +// also can have a need to have open keys in PSA Crypto. This could lead to +// a race condition when the application key slot count is set too low for +// the actual usage of the application, as a software stack may not fail +// gracefully in case an application opens more than its declared amount of +// keys, thereby precluding the stack from functioning. +// Default: 4 +#define SL_PSA_KEY_USER_SLOT_COUNT (4) + +// PSA Maximum User Persistent Keys Count <0-1024> +// Maximum amount of keys (or other files) that can be stored persistently +// by the application through the PSA interface, when persistent storage +// support for PSA Crypto is included in the project. +// Due to caching logic, this setting does have an impact on static RAM usage. +// Note that this number is added to the potential requirements from other +// software components in the project, such that the total amount of keys +// which can be stored through the ITS backend can be higher than what is +// configured here. +// +// WARNING: When changing this setting on an application that is already +// deployed, and thus will get the change through an application upgrade, +// care should be taken to ensure that the setting is only ever increased, +// and never decreased. Decreasing this setting might cause previously +// stored keys/files to become inaccessible. +// Default: 128 +#define SL_PSA_ITS_USER_MAX_FILES (128) +// <<< end of configuration section >>> + +// Include the autogenerated PSA Crypto configuration file +#include "psa_crypto_config_autogen.h" + +#endif // PSA_CRYPTO_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_board_control_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_board_control_config.h new file mode 100644 index 00000000000000..e75b074f15e169 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_board_control_config.h @@ -0,0 +1,76 @@ +/***************************************************************************//** + * @file + * @brief Board Control + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_BOARD_CONTROL_CONFIG_H +#define SL_BOARD_CONTROL_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Enable Virtual COM UART +// Default: 0 +#define SL_BOARD_ENABLE_VCOM 1 + +// Enable Display +// Default: 0 +#define SL_BOARD_ENABLE_DISPLAY 0 + +// Enable Relative Humidity and Temperature sensor +// Default: 0 +#define SL_BOARD_ENABLE_SENSOR_RHT 0 + +// Disable SPI Flash +// Default: 1 +#define SL_BOARD_DISABLE_MEMORY_SPI 1 + +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> + +// SL_BOARD_ENABLE_VCOM +// $[GPIO_SL_BOARD_ENABLE_VCOM] +#define SL_BOARD_ENABLE_VCOM_PORT gpioPortA +#define SL_BOARD_ENABLE_VCOM_PIN 5 +// [GPIO_SL_BOARD_ENABLE_VCOM]$ + +// SL_BOARD_ENABLE_DISPLAY +// $[GPIO_SL_BOARD_ENABLE_DISPLAY] +#define SL_BOARD_ENABLE_DISPLAY_PORT gpioPortD +#define SL_BOARD_ENABLE_DISPLAY_PIN 15 +// [GPIO_SL_BOARD_ENABLE_DISPLAY]$ + +// SL_BOARD_ENABLE_SENSOR_RHT +// $[GPIO_SL_BOARD_ENABLE_SENSOR_RHT] +#define SL_BOARD_ENABLE_SENSOR_RHT_PORT gpioPortB +#define SL_BOARD_ENABLE_SENSOR_RHT_PIN 10 +// [GPIO_SL_BOARD_ENABLE_SENSOR_RHT]$ + +// <<< sl:end pin_tool >>> + +#endif // SL_BOARD_CONTROL_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_custom_manufacturing_token_header.h b/silabs_examples/credentials/device/brd4161a/config/sl_custom_manufacturing_token_header.h new file mode 100644 index 00000000000000..08b66580998c71 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_custom_manufacturing_token_header.h @@ -0,0 +1,84 @@ +/***************************************************************************//** + * @file + * @brief Custom manufacturing token header + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +/***************************************************************************//** + * Custom Manufacturing Token Usage Examples + * + * The macro DEFINE_MFG_TOKEN() should be used when instantiating a + * manufacturing token. Refer to the list of *_LOCATION defines to + * see what memory is allocated and what memory is unused/available. + * + * The _LOCATION is or'ed with either USERDATA_TOKENS or LOCKBITSDATA_TOKENS + * to control which segment of memory the token is placed in. + * + * REMEMBER: By definition, manufacturing tokens exist at fixed addresses. + * Tokens should not overlap. + * + * Here is a basic example of a manufacturing token header file: + * + * Note that the address used here is just an example. It places the 8 bytes + * in the middle of the USERDATA space on an EFR32MG12P433F1024GM68. + * To review addresses of existing tokens when choosing a new address, refer + * to an961-custom-nodes-efr32.pdf and the files + * platform/service/token_manager/inc/sl_token_manufacturing_series_1.h + * platform/service/token_manager/inc/sl_token_manufacturing_series_2.h + * + * @code + * #define CREATOR_MFG_EXAMPLE 0x4242 + * #ifdef DEFINETYPES + * typedef uint8_t tokTypeMfgExample[8]; + * #endif + * #ifdef DEFINETOKENS + * #define MFG_EXAMPLE_LOCATION (USERDATA_TOKENS | 0x2000) + * DEFINE_MFG_TOKEN(MFG_EXAMPLE, + * tokTypeMfgExample, + * MFG_EXAMPLE_LOCATION, + * {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}) + * #endif + * @endcode + * + * Since this file contains both the typedefs and the token defs, there are + * two \#defines used to select which one is needed when this file is included. + * \#define DEFINETYPES is used to select the type definitions and + * \#define DEFINETOKENS is used to select the token definitions. + * + * To use this example: + * Ensure the Token Manager's configuration in Studio + * has enabled Custom Manufacuturing Tokens. + * + * Ensure your application has: + * #include "sl_token_api.h" + * #include "sl_token_manager.h" + * + * This code will read the token data: + * uint8_t data[8]; + * sl_token_get_data(TOKEN_MFG_EXAMPLE, 0, &data, sizeof(data)); + ******************************************************************************/ + +/* + #define CREATOR_MFG_EXAMPLE 0x4242 + #ifdef DEFINETYPES + typedef uint8_t tokTypeMfgExample[8]; + #endif + #ifdef DEFINETOKENS + #define MFG_EXAMPLE_LOCATION (USERDATA_TOKENS | 0x2000) + DEFINE_MFG_TOKEN(MFG_EXAMPLE, + tokTypeMfgExample, + MFG_EXAMPLE_LOCATION, + {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}) + #endif + */ diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_custom_token_header.h b/silabs_examples/credentials/device/brd4161a/config/sl_custom_token_header.h new file mode 100644 index 00000000000000..abfe057a05ee5b --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_custom_token_header.h @@ -0,0 +1,86 @@ +/***************************************************************************//** + * @file + * @brief Custom token header + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +/***************************************************************************//** + * Custom Tokens Usage Examples + * + * #define BASICTOKEN1_DEFAULT 0xA5F0 + * #define BASICTOKEN2_DEFAULT { { 0xAA, 0xBB, 0xCC }, 0xDDDD } + * #define BASICTOKEN3_DEFAULT { { 0 } } + * #define COUNTERTOKEN1_DEFAULT 0 + * #define COUNTERTOKEN2_DEFAULT 0xCCCCCCCC + * #define INDEXEDTOKEN1_DEFAULT 0 + * #define INDEXEDTOKEN2_DEFAULT { 0xDDDD } + * #define INDEXEDTOKEN3_DEFAULT { 0xAA, 0xBBBB, { 0x00, 0x11, 0x22 }, 0xCC } + * + * #ifdef DEFINETYPES + * typedef uint16_t tokTypeBasicToken1; + * typedef struct { + * uint8_t basicToken2Array[3]; + * uint16_t basicToken2VarA; + * } tokTypeBasicToken2; + * + * typedef struct { + * uint8_t basicToken3Array[254]; + * } tokTypeBasicToken3; + * + * typedef uint32_t tokTypeCounterToken1; + * typedef uint32_t tokTypeCounterToken2; + * + * typedef uint8_t tokTypeIndexedToken1Element; + * typedef uint16_t tokTypeIndexedToken2Element; + * + * typedef struct { + * uint8_t indexedToken3VarA; + * uint16_t indexedToken3VarB; + * uint8_t indexedToken3Array[3]; + * int8_t indexedToken3VarC; + * } tokTypeIndexedToken3Element; + * + * #endif + * + * #ifdef DEFINETOKENS + * DEFINE_BASIC_TOKEN(BASICTOKEN1, + * tokTypeBasicToken1, + * BASICTOKEN1_DEFAULT) + * DEFINE_BASIC_TOKEN(BASICTOKEN2, + * tokTypeBasicToken2, + * BASICTOKEN2_DEFAULT) + * DEFINE_BASIC_TOKEN(BASICTOKEN3, + * tokTypeBasicToken3, + * BASICTOKEN3_DEFAULT) + * DEFINE_COUNTER_TOKEN(COUNTERTOKEN1, + * tokTypeCounterToken1, + * COUNTERTOKEN1_DEFAULT) + * DEFINE_COUNTER_TOKEN(COUNTERTOKEN2, + * tokTypeCounterToken2, + * COUNTERTOKEN2_DEFAULT) + * DEFINE_INDEXED_TOKEN(INDEXEDTOKEN1, + * tokTypeIndexedToken1Element, + * INDEXEDTOKEN1_ELEMENTS, + * INDEXEDTOKEN1_DEFAULT) + * DEFINE_INDEXED_TOKEN(INDEXEDTOKEN2, + * tokTypeIndexedToken2Element, + * INDEXEDTOKEN2_ELEMENTS, + * INDEXEDTOKEN2_DEFAULT) + * DEFINE_INDEXED_TOKEN(INDEXEDTOKEN3, + * tokTypeIndexedToken3Element, + * INDEXEDTOKEN3_ELEMENTS, + * INDEXEDTOKEN3_DEFAULT) + * #endif + * + ******************************************************************************/ diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_debug_swo_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_debug_swo_config.h new file mode 100644 index 00000000000000..bd2964af646e17 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_debug_swo_config.h @@ -0,0 +1,100 @@ +/***************************************************************************//** + * @file + * @brief SWO configuration + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEBUG_SWO_CONFIG_H +#define SL_DEBUG_SWO_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// SWO Configuration + +// SWO Frequency +// Must be 875 kHz for communication with Silicon Labs debuggers +// Default: 875000 +#define SL_DEBUG_SWO_FREQ 875000 + +// Enable interrupt event trace +// Default: 0 +#define SL_DEBUG_SWO_SAMPLE_IRQ 0 + +// Enable Program Counter samples +// Default: 0 +#define SL_DEBUG_SWO_SAMPLE_PC 0 + +// SWO debug sample intervals +// <64=> 64 +// <128=> 128 +// <192=> 192 +// <256=> 256 +// <320=> 320 +// <384=> 384 +// <448=> 448 +// <512=> 512 +// <576=> 576 +// <640=> 640 +// <704=> 704 +// <768=> 768 +// <832=> 832 +// <896=> 896 +// <960=> 960 +// <1024=> 1024 +// <2048=> 2048 +// <3072=> 3072 +// <4096=> 4096 +// <5102=> 5102 +// <6144=> 6144 +// <7168=> 7168 +// <8192=> 8192 +// <9216=> 9216 +// <10240=> 10240 +// <11264=> 11264 +// <12288=> 12288 +// <13312=> 13312 +// <14336=> 14336 +// <15360=> 15360 +// Must be 64, 128, 192, [ n * 64 ], 1024, 2048, 3072, [ n * 1024 ] , 15360 +// Default: 15360 +#define SL_DEBUG_SWO_SAMPLE_INTERVAL 15360 +// + +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> +// SL_DEBUG +// $[DBG_SL_DEBUG] +#define SL_DEBUG_PERIPHERAL DBG + +#define SL_DEBUG_SWV_PORT gpioPortF +#define SL_DEBUG_SWV_PIN 2 +#define SL_DEBUG_SWV_LOC 0 +// [DBG_SL_DEBUG]$ +// <<< sl:end pin_tool >>> + +#endif // SL_DEBUG_SWO_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_device_init_dcdc_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_device_init_dcdc_config.h new file mode 100644 index 00000000000000..734aed362b884a --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_device_init_dcdc_config.h @@ -0,0 +1,58 @@ +/***************************************************************************//** + * @file + * @brief DEVICE_INIT_DCDC Config + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEVICE_INIT_DCDC_CONFIG_H +#define SL_DEVICE_INIT_DCDC_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Enable DC/DC Converter +// +// Default: 1 +#define SL_DEVICE_INIT_DCDC_ENABLE 1 + +// Set DC/DC Converter in Bypass Mode +// +// Default: 0 +#define SL_DEVICE_INIT_DCDC_BYPASS 0 + +// Override for DCDC PFMX Mode Peak Current Setting +// +// Default: 0 +#define SL_DEVICE_INIT_DCDC_PFMX_IPKVAL_OVERRIDE 0 + +// DCDC PFMX Mode Peak Current Setting <0-15> +// +// Default: DCDC_PFMXCTRL_IPKVAL_DEFAULT +#define SL_DEVICE_INIT_DCDC_PFMX_IPKVAL DCDC_PFMXCTRL_IPKVAL_DEFAULT + +// <<< end of configuration section >>> + +#endif // SL_DEVICE_INIT_DCDC_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_device_init_emu_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_device_init_emu_config.h new file mode 100644 index 00000000000000..387abf94f4a066 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_device_init_emu_config.h @@ -0,0 +1,68 @@ +/***************************************************************************//** + * @file + * @brief DEVICE_INIT_EMU Config + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEVICE_INIT_EMU_CONFIG_H +#define SL_DEVICE_INIT_EMU_CONFIG_H + +#include "em_emu.h" + +// <<< Use Configuration Wizard in Context Menu >>> + +// EM4H Voltage scaling level +// Fast-wakeup voltage level +// Low-power optimized voltage level +// Default: emuVScaleEM4H_LowPower +#define SL_DEVICE_INIT_EMU_EM4_VSCALE emuVScaleEM4H_LowPower + +// Retain LFXO in EM4 +#define SL_DEVICE_INIT_EMU_EM4_RETAIN_LFXO 0 + +// Retain LFRCO in EM4 +#define SL_DEVICE_INIT_EMU_EM4_RETAIN_LFRCO 0 + +// Retain ULFRCO in EM4S +#define SL_DEVICE_INIT_EMU_EM4_RETAIN_ULFRCO 0 + +// Hibernate or shutoff EM4 state +// EM4 Shutoff +// EM4 Hibernate +// Default: emuEM4Shutoff +#define SL_DEVICE_INIT_EMU_EM4_STATE emuEM4Shutoff + +// EM4 pin retention mode +// No Retention: Pads enter reset state when entering EM4. +// Retention through EM4: Pads enter reset state when exiting EM4. +// Retention through EM4 and wakeup. +// Default: emuPinRetentionDisable +#define SL_DEVICE_INIT_EMU_EM4_PIN_RETENTION_MODE emuPinRetentionDisable + +// <<< end of configuration section >>> + +#endif // SL_DEVICE_INIT_EMU_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_device_init_hfxo_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_device_init_hfxo_config.h new file mode 100644 index 00000000000000..ccd1c239703c6c --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_device_init_hfxo_config.h @@ -0,0 +1,68 @@ +/***************************************************************************//** + * @file + * @brief DEVICE_INIT_HFXO Config + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEVICE_INIT_HFXO_CONFIG_H +#define SL_DEVICE_INIT_HFXO_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Mode +// +// Crystal oscillator +// External digital clock +// Default: cmuOscMode_Crystal +#define SL_DEVICE_INIT_HFXO_MODE cmuOscMode_Crystal + +// Frequency <38000000-40000000> +// Default: 38400000 +#define SL_DEVICE_INIT_HFXO_FREQ 38400000 + +// CTUNE <0-511> +// Default: 360 +#define SL_DEVICE_INIT_HFXO_CTUNE 327 + +// Advanced Configurations +// Auto-start HFXO. This feature is incompatible with Power Manager and can only be enabled in applications that do not use Power Manager or a radio protocol stack. - DEPRECATED +// True +// False +// Default: false +#define SL_DEVICE_INIT_HFXO_AUTOSTART false + +// Auto-select HFXO. This feature is incompatible with Power Manager and can only be enabled in applications that do not use Power Manager or a radio protocol stack. - DEPRECATED +// True +// False +// Default: false +#define SL_DEVICE_INIT_HFXO_AUTOSELECT false + +// + +// <<< end of configuration section >>> + +#endif // SL_DEVICE_INIT_HFXO_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_device_init_lfxo_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_device_init_lfxo_config.h new file mode 100644 index 00000000000000..d4b79b3d88b130 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_device_init_lfxo_config.h @@ -0,0 +1,67 @@ +/***************************************************************************//** + * @file + * @brief DEVICE_INIT_LFXO Config + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEVICE_INIT_LFXO_CONFIG_H +#define SL_DEVICE_INIT_LFXO_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Mode +// +// Crystal oscillator +// AC-coupled buffer +// External digital clock +// Default: cmuOscMode_Crystal +#define SL_DEVICE_INIT_LFXO_MODE cmuOscMode_Crystal + +// CTUNE <0-127> +// Default: 63 +#define SL_DEVICE_INIT_LFXO_CTUNE 32 + +// LFXO precision in PPM <0-65535> +// Default: 500 +#define SL_DEVICE_INIT_LFXO_PRECISION 100 + +// Startup Timeout Delay +// +// <_CMU_LFXOCTRL_TIMEOUT_2CYCLES=> 2 cycles +// <_CMU_LFXOCTRL_TIMEOUT_256CYCLES=> 256 cycles +// <_CMU_LFXOCTRL_TIMEOUT_1KCYCLES=> 1K cycles +// <_CMU_LFXOCTRL_TIMEOUT_2KCYCLES=> 2K cycles +// <_CMU_LFXOCTRL_TIMEOUT_4KCYCLES=> 4K cycles +// <_CMU_LFXOCTRL_TIMEOUT_8KCYCLES=> 8K cycles +// <_CMU_LFXOCTRL_TIMEOUT_16KCYCLES=> 16K cycles +// <_CMU_LFXOCTRL_TIMEOUT_32KCYCLES=> 32K cycles +// <_CMU_LFXOCTRL_TIMEOUT_DEFAULT=> Default +// Default: _CMU_LFXOCTRL_TIMEOUT_DEFAULT +#define SL_DEVICE_INIT_LFXO_TIMEOUT _CMU_LFXOCTRL_TIMEOUT_DEFAULT +// <<< end of configuration section >>> + +#endif // SL_DEVICE_INIT_LFXO_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_iostream_usart_vcom_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_iostream_usart_vcom_config.h new file mode 100644 index 00000000000000..a7cbd14c3ce2df --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_iostream_usart_vcom_config.h @@ -0,0 +1,113 @@ +/***************************************************************************//** + * @file + * @brief IOSTREAM_USART Config. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_IOSTREAM_USART_VCOM_CONFIG_H +#define SL_IOSTREAM_USART_VCOM_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// USART settings + +// Baud rate +// Default: 115200 +#define SL_IOSTREAM_USART_VCOM_BAUDRATE 115200 + +// Parity mode to use +// No Parity +// Even parity +// Odd parity +// Default: usartNoParity +#define SL_IOSTREAM_USART_VCOM_PARITY usartNoParity + +// Number of stop bits to use. +// 0.5 stop bits +// 1 stop bits +// 1.5 stop bits +// 2 stop bits +// Default: usartStopbits1 +#define SL_IOSTREAM_USART_VCOM_STOP_BITS usartStopbits1 + +// Flow control +// None +// CTS +// RTS +// CTS/RTS +// Software Flow control (XON/XOFF) +// Default: usartHwFlowControlNone +#define SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE usartHwFlowControlCtsAndRts + +// Receive buffer size +// Default: 32 +#define SL_IOSTREAM_USART_VCOM_RX_BUFFER_SIZE 32 + +// Convert \n to \r\n +// It can be changed at runtime using the C API. +// Default: 0 +#define SL_IOSTREAM_USART_VCOM_CONVERT_BY_DEFAULT_LF_TO_CRLF 0 + +// Restrict the energy mode to allow the reception. +// Default: 1 +// Limits the lowest energy mode the system can sleep to in order to keep the reception on. May cause higher power consumption. +#define SL_IOSTREAM_USART_VCOM_RESTRICT_ENERGY_MODE_TO_ALLOW_RECEPTION 1 + +// + +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> +// SL_IOSTREAM_USART_VCOM +// $[USART_SL_IOSTREAM_USART_VCOM] +#define SL_IOSTREAM_USART_VCOM_PERIPHERAL USART0 +#define SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO 0 + +// USART0 TX on PA0 +#define SL_IOSTREAM_USART_VCOM_TX_PORT gpioPortA +#define SL_IOSTREAM_USART_VCOM_TX_PIN 0 +#define SL_IOSTREAM_USART_VCOM_TX_LOC 0 + +// USART0 RX on PA1 +#define SL_IOSTREAM_USART_VCOM_RX_PORT gpioPortA +#define SL_IOSTREAM_USART_VCOM_RX_PIN 1 +#define SL_IOSTREAM_USART_VCOM_RX_LOC 0 + +// USART0 CTS on PA2 +#define SL_IOSTREAM_USART_VCOM_CTS_PORT gpioPortA +#define SL_IOSTREAM_USART_VCOM_CTS_PIN 2 +#define SL_IOSTREAM_USART_VCOM_CTS_LOC 30 + +// USART0 RTS on PA3 +#define SL_IOSTREAM_USART_VCOM_RTS_PORT gpioPortA +#define SL_IOSTREAM_USART_VCOM_RTS_PIN 3 +#define SL_IOSTREAM_USART_VCOM_RTS_LOC 30 + +// [USART_SL_IOSTREAM_USART_VCOM]$ +// <<< sl:end pin_tool >>> + +#endif diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_iostream_vuart_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_iostream_vuart_config.h new file mode 100644 index 00000000000000..82889008b77e1b --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_iostream_vuart_config.h @@ -0,0 +1,42 @@ +/***************************************************************************//** + * @file + * @brief SL_IOSTREAM_VUART Config. + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ +#ifndef SL_IOSTREAM_VUART_CONFIG_H +#define SL_IOSTREAM_VUART_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// VUART settings +// Receive buffer size +// Default: 32 +#define SL_IOSTREAM_VUART_RX_BUFFER_SIZE 32 + +// +// <<< end of configuration section >>> +#endif diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_legacy_hal_wdog_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_legacy_hal_wdog_config.h new file mode 100644 index 00000000000000..83b67575534e1f --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_legacy_hal_wdog_config.h @@ -0,0 +1,53 @@ +/***************************************************************************//** + * @file sl_legacy_hal_wdog_config.h + * @brief Legacy HAL watchdog configuration file. + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_LEGACY_HAL_WDOG_CONFIG_H +#define SL_LEGACY_HAL_WDOG_CONFIG_H + +// Legacy HAL WDOG Configurations + +// Disable calling halInternalEnableWatchDog in base-replacement.c's halInit(). +// Default: 0 +#define SL_LEGACY_HAL_DISABLE_WATCHDOG 0 +// + +// WDOG to use for SL_LEGACY_HAL_WDOGn. +// Default: 0 +// <0=> WDOG0 +// <1=> WDOD1 +#define SL_LEGACY_HAL_WDOGn 0 + +// + +#endif /* SL_LEGACY_HAL_WDOG_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_memory_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_memory_config.h new file mode 100644 index 00000000000000..b43ebcba024b94 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_memory_config.h @@ -0,0 +1,28 @@ +#ifndef SL_MEMORY_CONFIG_H +#define SL_MEMORY_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> +// Memory configuration + +// Stack size for the application. +// Default: 4096 +// The stack size configured here will be used by the stack that the +// application uses when coming out of a reset. +#ifndef SL_STACK_SIZE + #define SL_STACK_SIZE 4096 +#endif + +// Minimum heap size for the application. +// Default: 2048 +// Note that this value will configure the c heap which is normally used by +// malloc() and free() from the c library. The value defines a minimum heap +// size that is guaranteed to be available. The available heap may be larger +// to make use of any memory that would otherwise remain unused. +#ifndef SL_HEAP_SIZE + #define SL_HEAP_SIZE 2048 +#endif + +// +// <<< end of configuration section >>> + +#endif diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_mx25_flash_shutdown_usart_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_mx25_flash_shutdown_usart_config.h new file mode 100644 index 00000000000000..742762a355d7e0 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_mx25_flash_shutdown_usart_config.h @@ -0,0 +1,54 @@ +/***************************************************************************//** + * @file + * @brief SL_MX25_FLASH_SHUTDOWN_USART Config + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_MX25_FLASH_SHUTDOWN_CONFIG_H +#define SL_MX25_FLASH_SHUTDOWN_CONFIG_H + +// <<< sl:start pin_tool >>> +// {usart signal=TX,RX,CLK} SL_MX25_FLASH_SHUTDOWN +// [USART_SL_MX25_FLASH_SHUTDOWN] +#define SL_MX25_FLASH_SHUTDOWN_PERIPHERAL USART1 +#define SL_MX25_FLASH_SHUTDOWN_PERIPHERAL_NO 1 + +// USART1 TX on PC6 +#define SL_MX25_FLASH_SHUTDOWN_TX_PORT gpioPortC +#define SL_MX25_FLASH_SHUTDOWN_TX_PIN 6 +#define SL_MX25_FLASH_SHUTDOWN_TX_LOC 11 + +// USART1 RX on PC7 +#define SL_MX25_FLASH_SHUTDOWN_RX_PORT gpioPortC +#define SL_MX25_FLASH_SHUTDOWN_RX_PIN 7 +#define SL_MX25_FLASH_SHUTDOWN_RX_LOC 11 + +// USART1 CLK on PC8 +#define SL_MX25_FLASH_SHUTDOWN_CLK_PORT gpioPortC +#define SL_MX25_FLASH_SHUTDOWN_CLK_PIN 8 +#define SL_MX25_FLASH_SHUTDOWN_CLK_LOC 11 + +// [USART_SL_MX25_FLASH_SHUTDOWN] + +// SL_MX25_FLASH_SHUTDOWN_CS + +// $[GPIO_SL_MX25_FLASH_SHUTDOWN_CS] +#define SL_MX25_FLASH_SHUTDOWN_CS_PORT gpioPortA +#define SL_MX25_FLASH_SHUTDOWN_CS_PIN 4 + +// [GPIO_SL_MX25_FLASH_SHUTDOWN_CS]$ + +// <<< sl:end pin_tool >>> + +#endif // SL_MX25_FLASH_SHUTDOWN_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_power_manager_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_power_manager_config.h new file mode 100644 index 00000000000000..fa5c557a4f85fc --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_power_manager_config.h @@ -0,0 +1,71 @@ +/***************************************************************************//** + * @file + * @brief Power Manager configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_POWER_MANAGER_CONFIG_H +#define SL_POWER_MANAGER_CONFIG_H + +// Power Manager Configuration + +// Enable custom IRQ handler for external HF oscillator. +// Enable if CMU_IRQHandler/HFXO0_IRQHandler is needed from your application. +// The function sl_power_manager_irq_handler() will have to be called from you custom handler if this is enabled. +// Default: 0 +#define SL_POWER_MANAGER_CUSTOM_HF_OSCILLATOR_IRQ_HANDLER 0 + +// Lowest Energy mode allowed +// <1=> EM1 +// <2=> EM2 +// <3=> EM3 +// Default: 2 +#define SL_POWER_MANAGER_LOWEST_EM_ALLOWED 2 + +// Enable fast wakeup (disable voltage scaling in EM2/3 mode) +// Enable or disable voltage scaling in EM2/3 modes (when available). This decreases wakeup time by about 30 us. +// Deprecated. It is replaced by the function sl_power_manager_em23_voltage_scaling_enable_fast_wakeup() +// Default: 0 +#define SL_POWER_MANAGER_CONFIG_VOLTAGE_SCALING_FAST_WAKEUP 0 + +// Enable debugging feature +// Enable or disable debugging features (trace the different modules that have requirements). +// Default: 0 +#define SL_POWER_MANAGER_DEBUG 0 + +// Maximum numbers of requirements that can be logged +// Default: 10 +#define SL_POWER_MANAGER_DEBUG_POOL_SIZE 10 +// + +// + +#endif /* SL_POWER_MANAGER_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_rail_util_pa_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_rail_util_pa_config.h new file mode 100644 index 00000000000000..09a4e6f01f5e26 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_rail_util_pa_config.h @@ -0,0 +1,80 @@ +/***************************************************************************//** + * @file + * @brief Power Amplifier configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_RAIL_UTIL_PA_CONFIG_H +#define SL_RAIL_UTIL_PA_CONFIG_H + +#include "rail_types.h" + +// <<< Use Configuration Wizard in Context Menu >>> + +// PA Configuration +// Initial PA Power (deci-dBm, 100 = 10.0 dBm) +// Default: 100 +#define SL_RAIL_UTIL_PA_POWER_DECI_DBM 100 +// PA Ramp Time (microseconds) +// <0-65535:1> +// Default: 10 +#define SL_RAIL_UTIL_PA_RAMP_TIME_US 10 +// Milli-volts on PA supply pin (PA_VDD) +// <0-65535:1> +// Default: 3300 +#define SL_RAIL_UTIL_PA_VOLTAGE_MV 3300 +// 2.4 GHz PA Selection +// High Power +// Low Power +// Disable +// Default: RAIL_TX_POWER_MODE_2P4GIG_HP +#define SL_RAIL_UTIL_PA_SELECTION_2P4GHZ RAIL_TX_POWER_MODE_2P4GIG_HP +// Sub-1 GHz PA Selection +// Enable +// Disable +// Default: RAIL_TX_POWER_MODE_SUBGIG +#define SL_RAIL_UTIL_PA_SELECTION_SUBGHZ RAIL_TX_POWER_MODE_NONE +// + +// PA Curve Configuration +// Header file containing custom PA curves +// Default: "pa_curves_efr32.h" +#define SL_RAIL_UTIL_PA_CURVE_HEADER "pa_curves_efr32.h" +// Header file containing PA curve types +// Default: "pa_curve_types_efr32.h" +#define SL_RAIL_UTIL_PA_CURVE_TYPES "pa_curve_types_efr32.h" +// + +// PA Calibration Configuration +// Apply PA Calibration Factory Offset +// Default: 1 +#define SL_RAIL_UTIL_PA_CALIBRATION_ENABLE 1 +// + +// <<< end of configuration section >>> + +#endif // SL_RAIL_UTIL_PA_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_rail_util_pti_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_rail_util_pti_config.h new file mode 100644 index 00000000000000..e5ea09f6f514fe --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_rail_util_pti_config.h @@ -0,0 +1,75 @@ +/***************************************************************************//** + * @file + * @brief Packet Trace Information configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_RAIL_UTIL_PTI_CONFIG_H +#define SL_RAIL_UTIL_PTI_CONFIG_H + +#include "rail_types.h" + +// <<< Use Configuration Wizard in Context Menu >>> +// PTI Configuration + +// PTI mode +// UART +// UART onewire +// SPI +// Disabled +// Default: RAIL_PTI_MODE_UART +#define SL_RAIL_UTIL_PTI_MODE RAIL_PTI_MODE_UART + +// PTI Baud Rate (Hertz) +// <147800-20000000:1> +// Default: 1600000 +#define SL_RAIL_UTIL_PTI_BAUD_RATE_HZ 1600000 + +// +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> +// SL_RAIL_UTIL_PTI +// $[PTI_SL_RAIL_UTIL_PTI] +#define SL_RAIL_UTIL_PTI_PERIPHERAL PTI + +// PTI DOUT on PB12 +#define SL_RAIL_UTIL_PTI_DOUT_PORT gpioPortB +#define SL_RAIL_UTIL_PTI_DOUT_PIN 12 +#define SL_RAIL_UTIL_PTI_DOUT_LOC 6 + +// PTI DFRAME on PB13 +#define SL_RAIL_UTIL_PTI_DFRAME_PORT gpioPortB +#define SL_RAIL_UTIL_PTI_DFRAME_PIN 13 +#define SL_RAIL_UTIL_PTI_DFRAME_LOC 6 + + +// [PTI_SL_RAIL_UTIL_PTI]$ + +// <<< sl:end pin_tool >>> + +#endif // SL_RAIL_UTIL_PTI_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_simple_led_led0_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_simple_led_led0_config.h new file mode 100644 index 00000000000000..48deadf3348a02 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_simple_led_led0_config.h @@ -0,0 +1,44 @@ +/***************************************************************************//** + * @file + * @brief Simple Led Driver Configuration + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_SIMPLE_LED_LED0_CONFIG_H +#define SL_SIMPLE_LED_LED0_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Simple LED configuration +// +// Active low +// Active high +// Default: SL_SIMPLE_LED_POLARITY_ACTIVE_HIGH +#define SL_SIMPLE_LED_LED0_POLARITY SL_SIMPLE_LED_POLARITY_ACTIVE_HIGH +// end led configuration + +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> + +// SL_SIMPLE_LED_LED0 +// $[GPIO_SL_SIMPLE_LED_LED0] +#define SL_SIMPLE_LED_LED0_PORT gpioPortF +#define SL_SIMPLE_LED_LED0_PIN 4 + +// [GPIO_SL_SIMPLE_LED_LED0]$ + +// <<< sl:end pin_tool >>> + +#endif // SL_SIMPLE_LED_LED0_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_sleeptimer_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_sleeptimer_config.h new file mode 100644 index 00000000000000..846d37d60828b7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_sleeptimer_config.h @@ -0,0 +1,72 @@ +/***************************************************************************//** + * @file + * @brief Sleep Timer configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_SLEEPTIMER_CONFIG_H +#define SL_SLEEPTIMER_CONFIG_H + +#define SL_SLEEPTIMER_PERIPHERAL_DEFAULT 0 +#define SL_SLEEPTIMER_PERIPHERAL_RTCC 1 +#define SL_SLEEPTIMER_PERIPHERAL_PRORTC 2 +#define SL_SLEEPTIMER_PERIPHERAL_RTC 3 +#define SL_SLEEPTIMER_PERIPHERAL_SYSRTC 4 +#define SL_SLEEPTIMER_PERIPHERAL_BURTC 5 + +// Timer Peripheral Used by Sleeptimer +// Default (auto select) +// RTCC +// Radio internal RTC (PRORTC) +// RTC +// SYSRTC +// Back-Up RTC (BURTC) +// Selection of the Timer Peripheral Used by the Sleeptimer +#define SL_SLEEPTIMER_PERIPHERAL SL_SLEEPTIMER_PERIPHERAL_DEFAULT + +// Enable wallclock functionality +// Enable or disable wallclock functionalities (get_time, get_date, etc). +// Default: 0 +#define SL_SLEEPTIMER_WALLCLOCK_CONFIG 0 + +// Timer frequency divider +// Default: 1 +#define SL_SLEEPTIMER_FREQ_DIVIDER 1 + +// If Radio internal RTC (PRORTC) HAL is used, determines if it owns the IRQ handler. Enable, if no wireless stack is used. +// Default: 0 +#define SL_SLEEPTIMER_PRORTC_HAL_OWNS_IRQ_HANDLER 0 + +// Enable DEBUGRUN functionality on hardware RTC. +// Default: 0 +#define SL_SLEEPTIMER_DEBUGRUN 0 + +#endif /* SLEEPTIMER_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_token_manager_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_token_manager_config.h new file mode 100644 index 00000000000000..d99e78e083594e --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_token_manager_config.h @@ -0,0 +1,54 @@ +/***************************************************************************//** + * @file + * @brief Token Manager Configurations + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_TOKEN_MANAGER_CONFIG_H +#define SL_TOKEN_MANAGER_CONFIG_H + +// TOKEN MANAGER Configurations + +// Enable Custom Tokens +// Default: 0 +#define SL_TOKEN_MANAGER_CUSTOM_TOKENS_PRESENT 0 + +// File containing custom tokens +// Default: "sl_custom_token_header.h" +// Header file containing custom tokens located at project_root/config +#define SL_TOKEN_MANAGER_CUSTOM_TOKEN_HEADER "sl_custom_token_header.h" + +// + +// Enable Custom Manufacturing Tokens +// Default: 0 +#define SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKENS_PRESENT 0 + +// File containing custom manufacturing tokens +// Default: "sl_custom_manufacturing_token_header.h" +// Header file containing custom tokens located at project_root/config +#define SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKEN_HEADER "sl_custom_manufacturing_token_header.h" + +// +// + +#if (SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKENS_PRESENT) +#define APPLICATION_MFG_TOKEN_HEADER SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKEN_HEADER +#endif // SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKENS_PRESENT + +#endif // SL_TOKEN_MANAGER_CONFIG_H + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_zigbee_binding_table_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_zigbee_binding_table_config.h new file mode 100644 index 00000000000000..ef4b92fbc30681 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_zigbee_binding_table_config.h @@ -0,0 +1,28 @@ +/***************************************************************************//** + * @brief Zigbee Binding Table component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Binding Table configuration + +// Binding Table Size <1-127> +// Default: 3 +// The number of entries that the binding table can hold. +#define EMBER_BINDING_TABLE_SIZE 32 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_zigbee_debug_print_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_zigbee_debug_print_config.h new file mode 100644 index 00000000000000..9c901f40481767 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_zigbee_debug_print_config.h @@ -0,0 +1,74 @@ +/***************************************************************************//** + * @brief ZigBee Debug Print component configuration header. + * + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// ZigBee Debug Print configuration + +// Stack group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "stack" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_STACK_GROUP_ENABLED (1) + +// Stack group runtime default +// Default: 1 +// If this option is enabled, prints belonging to the "stack" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_STACK_GROUP_RUNTIME_DEFAULT (1) + +// Core group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "core" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_CORE_GROUP_ENABLED (1) + +// Core group runtime default +// Default: 1 +// If this option is enabled, prints belonging to the "core" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_CORE_GROUP_RUNTIME_DEFAULT (1) + +// App group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "app" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_APP_GROUP_ENABLED (1) + +// App group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "app" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_APP_GROUP_RUNTIME_DEFAULT (1) + +// ZCL group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "zcl" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_ZCL_GROUP_ENABLED (1) + +// ZCL group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "zcl" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_ZCL_GROUP_RUNTIME_DEFAULT (1) + +// Legacy App Framework Debug group enabled +// Default: 0 +// If both this option and ZIGBEE_DEBUG_ZCL_GROUP_ENABLED are enabled, prints belonging to the "legacy app framework debug" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_PRINTS_ZCL_LEGACY_AF_DEBUG_ENABLED (0) + +// Legacy App Framework Debug runtime default +// Default: 0 +// If both this option and ZIGBEE_DEBUG_ZCL_GROUP_ENABLED are enabled, prints belonging to the "legacy app framework debug" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_PRINTS_ZCL_LEGACY_AF_DEBUG_RUNTIME_DEFAULT (0) + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_zigbee_green_power_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_zigbee_green_power_config.h new file mode 100644 index 00000000000000..75a81eec322a24 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_zigbee_green_power_config.h @@ -0,0 +1,63 @@ +/***************************************************************************//** + * @brief Zigbee Green Power component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Green Power Library configuration + +// Green Power Proxy Table Size <1-126> +// Default: 5 +// The maximum number of Green Power proxy table entries supported by the stack. +#define EMBER_GP_PROXY_TABLE_SIZE 5 + +// Green Power Proxy Table Token Size <1-126> +// Default: 5 +// The maximum number of pairings stored in proxy table non-volatile memory,between 0 and EMBER_GP_PROXY_TABLE_SIZE. +#define EMBER_GP_PROXY_TABLE_TOKEN_SIZE 5 + +// Green Power Sink Table Size <0-126> +// Default: 0 +// The maximum number of Green Power sink table entries supported by the stack. +#define EMBER_GP_SINK_TABLE_SIZE 0 + +// Green Power Sink Table Token Size <0-126> +// Default: 0 +// The maximum number of pairings stored in sink table non-volatile memory,between 0 and EMBER_GP_SINK_TABLE_SIZE. +#define EMBER_GP_SINK_TABLE_TOKEN_SIZE 0 + +// Green Power incoming FC (as part of proxy table) Token timeout <0-60> +// Default: 0 +// The timeout (seconds) to restore the GPD incoming security frame counter in the Flash (0 being never). +#define EMBER_GP_INCOMING_FC_TOKEN_TIMEOUT 7 + +// Green Power incoming FC (as part of proxy table) table token table size <0-126> +// Default: 0 +// The maximum table size to restore the GPD incoming security frame counter in the Flash (being either 0 or EMBER_GP_PROXY_TABLE_SIZE). +#define EMBER_GP_INCOMING_FC_TOKEN_TABLE_SIZE 0 + +// Green Power incoming FC (as part of sink table) token table token timeout <0-60> +// Default: 0 +// The timeout (seconds) to restore the GPD incoming security frame counter in the Flash (0 being never). +#define EMBER_GP_INCOMING_FC_IN_SINK_TOKEN_TIMEOUT 7 + +// Green Power incoming FC (as part of sink table)Token table size <0-126> +// Default: 0 +// The maximum table size to restore the GPD incoming security frame counter in the Flash (being either 0 or EMBER_GP_SINK_TABLE_SIZE). +#define EMBER_GP_INCOMING_FC_IN_SINK_TOKEN_TABLE_SIZE 0 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_zigbee_pro_stack_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_zigbee_pro_stack_config.h new file mode 100644 index 00000000000000..e035ce1f9c9388 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_zigbee_pro_stack_config.h @@ -0,0 +1,89 @@ +/***************************************************************************//** + * @brief ZigBee PRO Full Stack component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee PRO Stack Library configuration + +// Child Table Size <0-64> +// Default: 6 +// The maximum number of ZigBee PRO End Devices that can be supported by a single device. +#define EMBER_MAX_END_DEVICE_CHILDREN 32 + +// Packet Buffer Count <20-254> +// Default: 75 +// The maximum number of packet buffers supported by the system. This is limited by the amount of available RAM. +#define EMBER_PACKET_BUFFER_COUNT 75 + +// End Device keep alive support mode +// End Device keep alive support mode +// MAC Data Poll Keep Alive +// End Device Timeout Keep Alive +// Keep Alive Support All +// Default: EMBER_KEEP_ALIVE_SUPPORT_ALL +// End Device keep alive support mode on the coordinator/router could be set here. +#define EMBER_END_DEVICE_KEEP_ALIVE_SUPPORT_MODE EMBER_KEEP_ALIVE_SUPPORT_ALL + +// End Device Poll Timeout Value +// End Device Poll Timeout Value +// Seconds-10 +// Minutes-2 +// Minutes-4 +// Minutes-8 +// Minutes-16 +// Minutes-32 +// Minutes-64 +// Minutes-128 +// Minutes-256 +// Minutes-512 +// Minutes-1024 +// Minutes-2048 +// Minutes-4096 +// Minutes-8192 +// Minutes-16384 +// Default: MINUTES_256 +// The amount of time that must pass without hearing a MAC data poll from the device before the end device is removed from the child table. For a router device this applies to its children. For an end device, this is the amount of time before it automatically times itself out. +#define EMBER_END_DEVICE_POLL_TIMEOUT MINUTES_256 + +// Link Power Delta Request Interval <1-65535> +// Default: 300 +// The amount of time in seconds that pass between link power delta requests. +#define EMBER_LINK_POWER_DELTA_INTERVAL 300 + +// APS Unicast Message Queue Size <1-255> +// Default: 10 +// The maximum number of APS unicast messages that can be queued up by the stack. A message is considered queued when emberSendUnicast() is called and is de-queued when the emberMessageSentHandler() is called. +#define EMBER_APS_UNICAST_MESSAGE_COUNT 10 + +// Broadcast Table Size <15-254> +// Default: 15 +// The size of the broadcast table. +#define EMBER_BROADCAST_TABLE_SIZE 15 + +// Neighbor Table Size +// Neighbor Table Size +// <16=> 16 +// <26=> 26 +// Default: 16 +// The size of the neighbor table. +#define EMBER_NEIGHBOR_TABLE_SIZE 16 + +// Transient key timeout (in seconds) <0-65535> +// Default: 300 +// The amount of time a device will store a transient link key that can be used to join a network. +#define EMBER_TRANSIENT_KEY_TIMEOUT_S 300 +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_zigbee_security_link_keys_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_zigbee_security_link_keys_config.h new file mode 100644 index 00000000000000..9a0c84883944c6 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_zigbee_security_link_keys_config.h @@ -0,0 +1,33 @@ +/***************************************************************************//** + * @brief Zigbee Security Link Keys component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Security Link Keys Library configuration + +// Link Key Table Size <1-127> +// Default: 6 +// The maximum number of link key table entries supported by the stack. +#define EMBER_KEY_TABLE_SIZE 12 + +// Request Key Timeout <0-10> +// Default: 0 +// The length of time that a node will wait for a trust center to answer its Application Link Key request. +#define EMBER_REQUEST_KEY_TIMEOUT 0 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4161a/config/sl_zigbee_source_route_config.h b/silabs_examples/credentials/device/brd4161a/config/sl_zigbee_source_route_config.h new file mode 100644 index 00000000000000..41b5e4bb2155ef --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/sl_zigbee_source_route_config.h @@ -0,0 +1,33 @@ +/***************************************************************************//** + * @brief Zigbee Source Route component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Source Route Library configuration + +// Source route table Size (SoC or NCP) <2-255> +// Default: 7 +// The size of the source route table for storing source routes on the SOC or NCP. +#define EMBER_SOURCE_ROUTE_TABLE_SIZE 7 + +// Max source route relay counts <11-40> +// Default: 11 +// Max source route hops accepted or/and inserted in the source route table/header. +#define EMBER_MAX_SOURCE_ROUTE_RELAY_COUNT 11 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4161a/config/zigbee_sleep_config.h b/silabs_examples/credentials/device/brd4161a/config/zigbee_sleep_config.h new file mode 100644 index 00000000000000..fa4efd14070497 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/config/zigbee_sleep_config.h @@ -0,0 +1,42 @@ +/***************************************************************************//** + * @brief Zigbee Application Framework common component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Sleep configuration + +// Minimum Sleep Duration <5-1000> +// Default: 5 +// The minimum duration in milliseconds that the application will attempt to sleep for. If the sleep duration would be less than this amount, the application will not sleep. +#define SL_ZIGBEE_APP_FRAMEWORK_MINIMUM_SLEEP_DURATION_MS 5 + +// Sleep Backoff time <0-10000> +// Default: 0 +// This setting will keep a device from going back to sleep immediately upon waking up +#define SL_ZIGBEE_APP_FRAMEWORK_BACKOFF_SLEEP_MS 0 + +// Stay awake when NOT joined +// Default: TRUE +// This will force a device to stay awake even when not joined to the network. This is often used for debugging and is not recommended for production devices since it cause the device to consume battery power even when not joined to a ZigBee network. +#define SL_ZIGBEE_APP_FRAMEWORK_STAY_AWAKE_WHEN_NOT_JOINED 1 + +// Use button to force wakeup or allow sleep +// Default: FALSE +// This will setup the hardware buttons to wake-up or allow the device to go to sleep. Button 0 will force the device to wake up and stay awake. Button 1 will turn off this behavior to allow the device to sleep normally. Please note that in order for this option to be fully functional, button 0 and button 1 have to be configured to wake the device from sleep. +#define SL_ZIGBEE_APP_FRAMEWORK_USE_BUTTON_TO_STAY_AWAKE 0 +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4161a/device-creds.Makefile b/silabs_examples/credentials/device/brd4161a/device-creds.Makefile new file mode 100644 index 00000000000000..ea4140191048d6 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/device-creds.Makefile @@ -0,0 +1,190 @@ +#################################################################### +# User Makefile # +# This will not be overwritten. Edit as desired. # +#################################################################### +.SUFFIXES: # ignore builtin rules +.PHONY: all debug release clean + +# Default goal +all: debug + +#################################################################### +# Definitions # +#################################################################### + +# Values set by the initial generation +PROJECTNAME = device-creds +ARM_GCC_DIR_WIN = +ARM_GCC_DIR_OSX = +ARM_GCC_DIR_LINUX = + +# Pre-defined definitions in this file +ifeq ($(OS),Windows_NT) + ARM_GCC_DIR ?= $(ARM_GCC_DIR_WIN) +else + UNAME_S := $(shell uname -s) + ifeq ($(UNAME_S),Darwin) + ARM_GCC_DIR ?= $(ARM_GCC_DIR_OSX) + else + ARM_GCC_DIR ?= $(ARM_GCC_DIR_LINUX) + endif +endif + +# Command output is hidden by default, it can be enabled by +# setting VERBOSE=true on the commandline. +ifeq ($(VERBOSE),) + ECHO = @ +endif + +# Build Directories +BUILD_DIR = build +LST_DIR = lst + +ifneq ($(filter $(MAKECMDGOALS),release),) + OUTPUT_DIR = $(BUILD_DIR)/release +else + OUTPUT_DIR = $(BUILD_DIR)/debug +endif + +# Values that should be appended by the sub-makefiles +C_SOURCE_FILES = +CXX_SOURCE_FILES = +ASM_SOURCE_FILES = + +LIBS = + +C_DEFS = +ASM_DEFS = + +INCLUDES = + +C_FLAGS = +C_FLAGS_DEBUG = +C_FLAGS_RELEASE = +CXX_FLAGS = +CXX_FLAGS_DEBUG = +CXX_FLAGS_RELEASE = +ASM_FLAGS = +ASM_FLAGS_DEBUG = +ASM_FLAGS_RELEASE = +LD_FLAGS = + +OBJS = + +#################################################################### +# Definitions of toolchain. # +# You might need to do changes to match your system setup # +#################################################################### + +AR = "$(ARM_GCC_DIR)/bin/arm-none-eabi-gcc-ar" +CC = "$(ARM_GCC_DIR)/bin/arm-none-eabi-gcc" +CXX = "$(ARM_GCC_DIR)/bin/arm-none-eabi-g++" +OBJCOPY = "$(ARM_GCC_DIR)/bin/arm-none-eabi-objcopy" +LD = "$(ARM_GCC_DIR)/bin/arm-none-eabi-gcc" + +#################################################################### +# Include sub-makefiles # +# Define a makefile here to add files/settings to the build. # +#################################################################### +-include device-creds.project.mak + + +#################################################################### +# Rules # +#################################################################### + +# -MMD : Don't generate dependencies on system header files. +# -MP : Add phony targets, useful when a h-file is removed from a project. +# -MF : Specify a file to write the dependencies to. +DEPFLAGS = -MMD -MP -MF $(@:.o=.d) + +CSOURCES = $(notdir $(C_SOURCE_FILES)) +CXXSOURCES = $(notdir $(filter %.cpp, $(CXX_SOURCE_FILES))) +CCSOURCES = $(notdir $(filter %.cc, $(CXX_SOURCE_FILES))) +ASMSOURCES_s = $(notdir $(filter %.s, $(ASM_SOURCE_FILES))) +ASMSOURCES_S = $(notdir $(filter %.S, $(ASM_SOURCE_FILES))) + +COBJS = $(addprefix $(OUTPUT_DIR)/,$(CSOURCES:.c=.o)) +CXXOBJS = $(addprefix $(OUTPUT_DIR)/,$(CXXSOURCES:.cpp=.o)) +CCOBJS = $(addprefix $(OUTPUT_DIR)/,$(CCSOURCES:.cc=.o)) +ASMOBJS_s = $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_s:.s=.o)) +ASMOBJS_S = $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_S:.S=.o)) +OBJS += $(COBJS) $(CXXOBJS) $(CCOBJS) $(ASMOBJS_s) $(ASMOBJS_S) + +CDEPS += $(addprefix $(OUTPUT_DIR)/,$(CSOURCES:.c=.d)) +CXXDEPS += $(addprefix $(OUTPUT_DIR)/,$(CXXSOURCES:.cpp=.d)) +CXXDEPS += $(addprefix $(OUTPUT_DIR)/,$(CCSOURCES:.cc=.d)) +ASMDEPS_s += $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_s:.s=.d)) +ASMDEPS_S += $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_S:.S=.d)) + +C_PATHS = $(subst \,/,$(sort $(dir $(C_SOURCE_FILES)))) +CXX_PATHS = $(subst \,/,$(sort $(dir $(CXX_SOURCE_FILES)))) +ASM_PATHS = $(subst \,/,$(sort $(dir $(ASM_SOURCE_FILES)))) + +vpath %.c $(C_PATHS) +vpath %.cpp $(CXX_PATHS) +vpath %.cc $(CXX_PATHS) +vpath %.s $(ASM_PATHS) +vpath %.S $(ASM_PATHS) + +override CFLAGS = $(C_FLAGS) $(C_DEFS) $(INCLUDES) $(DEPFLAGS) +override CXXFLAGS = $(CXX_FLAGS) $(C_DEFS) $(INCLUDES) $(DEPFLAGS) +override ASMFLAGS = $(ASM_FLAGS) $(ASM_DEFS) $(INCLUDES) $(DEPFLAGS) + +# Rule Definitions +debug: C_FLAGS += $(C_FLAGS_DEBUG) +debug: CXX_FLAGS += $(CXX_FLAGS_DEBUG) +debug: ASM_FLAGS += $(ASM_FLAGS_DEBUG) +debug: $(OUTPUT_DIR)/$(PROJECTNAME).out + +release: C_FLAGS += $(C_FLAGS_RELEASE) +release: CXX_FLAGS += $(CXX_FLAGS_RELEASE) +release: ASM_FLAGS += $(ASM_FLAGS_RELEASE) +release: $(OUTPUT_DIR)/$(PROJECTNAME).out + +# include auto-generated dependency files (explicit rules) +ifneq (clean,$(findstring clean, $(MAKECMDGOALS))) +-include $(CDEPS) +-include $(CXXDEPS) +-include $(ASMDEPS_s) +-include $(ASMDEPS_S) +endif + +$(OUTPUT_DIR)/$(PROJECTNAME).out: $(OBJS) $(LIB_FILES) + @echo 'Linking $(OUTPUT_DIR)/$(PROJECTNAME).out' + @echo $(OBJS) > $(OUTPUT_DIR)/linker_objs + $(ECHO)$(LD) $(LD_FLAGS) @$(OUTPUT_DIR)/linker_objs $(LIBS) -o $(OUTPUT_DIR)/$(PROJECTNAME).out + $(ECHO)$(OBJCOPY) $(OUTPUT_DIR)/$(PROJECTNAME).out -O binary $(OUTPUT_DIR)/$(PROJECTNAME).bin + $(ECHO)$(OBJCOPY) $(OUTPUT_DIR)/$(PROJECTNAME).out -O ihex $(OUTPUT_DIR)/$(PROJECTNAME).hex + $(ECHO)$(OBJCOPY) $(OUTPUT_DIR)/$(PROJECTNAME).out -O srec $(OUTPUT_DIR)/$(PROJECTNAME).s37 + @echo 'Done.' + +$(OBJS): + +$(OUTPUT_DIR)/%.o: %.c + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.cpp + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CXX) $(CXXFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.cc + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CXX) $(CXXFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.s + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.S + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $< + +clean: + $(RM) -rf $(BUILD_DIR) diff --git a/silabs_examples/credentials/device/brd4161a/device-creds.emProject b/silabs_examples/credentials/device/brd4161a/device-creds.emProject new file mode 100644 index 00000000000000..71028fbc0369e9 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/device-creds.emProject @@ -0,0 +1,1107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/silabs_examples/credentials/device/brd4161a/device-creds.ewd b/silabs_examples/credentials/device/brd4161a/device-creds.ewd new file mode 100644 index 00000000000000..7195b0367878a2 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/device-creds.ewd @@ -0,0 +1,1476 @@ + + + 3 + + Default + + ARM + + 1 + + C-SPY + 2 + + 30 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 5 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/silabs_examples/credentials/device/brd4161a/device-creds.ewp b/silabs_examples/credentials/device/brd4161a/device-creds.ewp new file mode 100644 index 00000000000000..185c8a3e439d41 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/device-creds.ewp @@ -0,0 +1,1241 @@ + + + + 3 + + Default + + ARM + + 1 + + General + 3 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 21 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + $PROJ_DIR$\device-creds.ipcf + + \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4161a/device-creds.eww b/silabs_examples/credentials/device/brd4161a/device-creds.eww new file mode 100644 index 00000000000000..57aaa4ba1bfcbb --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/device-creds.eww @@ -0,0 +1,8 @@ + + + + + $WS_DIR$\device-creds.ewp + + + diff --git a/silabs_examples/credentials/device/brd4161a/device-creds.ipcf b/silabs_examples/credentials/device/brd4161a/device-creds.ipcf new file mode 100644 index 00000000000000..408720bec36136 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/device-creds.ipcf @@ -0,0 +1,1073 @@ + + + + + config\sl_memory_config.h + config\sl_mx25_flash_shutdown_usart_config.h + config\SEGGER_RTT_Conf.h + config\psa_crypto_config.h + config\sl_device_init_dcdc_config.h + config\sl_zigbee_security_link_keys_config.h + config\sl_zigbee_binding_table_config.h + config\sl_legacy_hal_wdog_config.h + config\sl_board_control_config.h + config\sl_debug_swo_config.h + config\sl_zigbee_pro_stack_config.h + config\sl_token_manager_config.h + config\sl_custom_token_header.h + config\sl_custom_manufacturing_token_header.h + config\sl_zigbee_debug_print_config.h + config\sl_sleeptimer_config.h + config\sl_power_manager_config.h + config\sl_device_init_lfxo_config.h + config\sl_zigbee_green_power_config.h + config\sl_simple_led_led0_config.h + config\sl_rail_util_pti_config.h + config\nvm3_default_config.h + config\zigbee_sleep_config.h + config\app_properties_config.h + config\sl_iostream_usart_vcom_config.h + config\sl_device_init_emu_config.h + config\sl_zigbee_source_route_config.h + config\legacy_hal_config.h + config\sl_device_init_hfxo_config.h + config\sl_rail_util_pa_config.h + config\btl_interface_cfg.h + config\emlib_core_debug_config.h + config\mbedtls_config.h + config\sl_iostream_vuart_config.h + config\legacy_common_ash_config.h + + + autogen\sl_board_default_init.c + autogen\sl_application_type.h + autogen\RTE_Components.h + autogen\sl_component_catalog.h + autogen\sl_device_init_clocks.c + autogen\sl_event_handler.h + autogen\sl_event_handler.c + autogen\sl_iostream_handles.h + autogen\sl_iostream_handles.c + autogen\sl_iostream_init_instances.h + autogen\sl_iostream_init_usart_instances.c + autogen\sl_iostream_init_usart_instances.h + autogen\sl_legacy_bootloader_device_info.h + autogen\mbedtls_config_autogen.h + autogen\sl_mbedtls_config_transform_autogen.h + autogen\sl_power_manager_handler.c + autogen\psa_crypto_config_autogen.h + autogen\sl_rail_util_ieee802154_phy_select.c + autogen\sl_rail_util_ieee802154_stack_event.c + autogen\sl_simple_led_instances.c + autogen\sl_simple_led_instances.h + autogen\linkerfile_base.icf + autogen\zigbee_stack_callback_dispatcher.h + autogen\zigbee_stack_callback_dispatcher.c + autogen\zigbee_common_callback_dispatcher.h + autogen\zigbee_common_callback_dispatcher.c + autogen\zigbee_ncp_callback_dispatcher.h + autogen\zigbee_ncp_callback_dispatcher.c + autogen\zigbee_af_token_headers.h + autogen\.crc_config.crc + + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Source\system_efr32mg12p.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Source\startup_efr32mg12p.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p432f1024gl125.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_acmp.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_adc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_af_pins.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_af_ports.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_cmu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_cryotimer.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_crypto.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_csen.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_devinfo.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_dma_descriptor.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_dmareq.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_emu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_etm.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_fpueh.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_gpcrc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_gpio.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_gpio_p.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_i2c.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_idac.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_ldma.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_ldma_ch.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_lesense.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_lesense_buf.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_lesense_ch.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_lesense_st.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_letimer.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_leuart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_msc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_pcnt.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_prs.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_prs_ch.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_prs_signals.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_rmu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_romtable.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_rtcc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_rtcc_cc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_rtcc_ret.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_smu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_timer.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_timer_cc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_trng.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_usart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_vdac.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_vdac_opa.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_wdog.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_wdog_pch.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\em_device.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\system_efr32mg12p.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_atomic.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_endianness.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_enum.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_assert.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_slist.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_status.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\src\sl_assert.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\src\sl_slist.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\toolchain\src\sl_memory.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\toolchain\inc\sl_memory_region.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\toolchain\inc\sl_memory.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\app_properties\app_properties.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface_storage.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\application_properties.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_errorcode.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface_parser.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface_storage.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_reset_info.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\cmsis_compiler.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\cmsis_version.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\tz_context.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\cmsis_iccarm.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\core_cm4.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\mpu_armv7.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\debug\src\sl_debug_swo.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\debug\inc\sl_debug_swo.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\leddrv\src\sl_led.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\leddrv\src\sl_simple_led.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\leddrv\inc\sl_led.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\leddrv\inc\sl_simple_led.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_clocks.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_dcdc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_emu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_hfxo.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_lfxo.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_nvic.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_dcdc_s1.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_emu_s1.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_hfxo_s1.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_lfxo_s1.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_nvic.c + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_debug.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_swo_itm_8.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_retarget_stdio.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_uart.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_usart.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_vuart.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sli_iostream_swo_itm_8.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_swo_itm_8.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_uart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sli_iostream_uart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_usart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_vuart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_swo.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\bootloader-interface.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\bootloader-interface-app.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\bootloader-interface-standalone.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\bootloader-common.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\crc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\base-replacement.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\diagnostic.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\ember-phy.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\faults.s + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\random.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\token_legacy.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\serial\serial.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\cortexm3\diagnostic.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\hal\hal.h + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-interface.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-interface-app.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-interface-standalone.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-eeprom.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\asm.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\button.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\crc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\efm32_micro.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\em2xx-reset-defs.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\emlib_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\hal.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\interrupts-efm32.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\led.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\micro-common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\micro-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\micro.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\platform-header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\random.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\reset-def.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\serial.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\token-manufacturing-series-1.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\token-manufacturing-series-2.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\token-manufacturing.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\sl_legacy_hal_integration_hooks.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_common_ash\src\ash-common.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_common_ash\inc\ash-common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_common_ash\inc\ash-protocol.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal_wdog\src\sl_legacy_hal_wdog.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal_wdog\inc\sl_legacy_hal_wdog.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_ncp_ash\src\ash-ncp.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_ncp_ash\inc\ash-ncp.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_printf\src\sl_legacy_printf.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_printf\inc\sl_legacy_printf.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\src\sl_power_manager.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\src\sl_power_manager_debug.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\src\sl_power_manager_hal_s0_s1.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\src\sli_power_manager_private.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\inc\sl_power_manager.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\inc\sl_power_manager_debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\inc\sli_power_manager.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\system\src\sl_system_init.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\system\src\sl_system_process_action.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\system\inc\sl_system_init.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\system\inc\sl_system_process_action.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\src\sl_sleeptimer.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\src\sl_sleeptimer_hal_rtcc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\src\sli_sleeptimer_hal.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\inc\sl_sleeptimer.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\inc\sli_sleeptimer.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\src\sl_token_def.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\src\sl_token_manager.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\src\sl_token_manufacturing.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_api.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manager.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manager_af_token_header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manufacturing.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manufacturing_api.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manufacturing_series_1.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manufacturing_series_2.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\udelay\src\sl_udelay.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\udelay\src\sl_udelay_armv6m_iar.s + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\udelay\inc\sl_udelay.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\common\inc\ecode.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\src\nvm3_default_common_linker.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\src\nvm3_hal_flash.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\src\nvm3_lock.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3_default.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3_hal.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3_hal_flash.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3_lock.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\lib\libnvm3_CM4_iar.a + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_chip.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_cmu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_cmu_compat.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_assert.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_bus.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_ramfunc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_version.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_core.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_crypto.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_crypto_compat.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_emu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_gpio.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_msc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_msc_compat.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_prs.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_rmu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_rtcc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_system.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_usart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_wdog.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_cmu.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_core.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_crypto.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_emu.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_gpio.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_msc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_prs.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_rmu.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_rtcc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_system.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_usart.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_wdog.c + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail_mfm.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail_assert_error_codes.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail_types.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail_features.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\protocol\ble\rail_ble.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\protocol\ieee802154\rail_ieee802154.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\protocol\zwave\rail_zwave.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\chip\efr32\efr32xg1x\rail_chip_specific.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\autogen\librail_release\librail_efr32xg12_iar_release.a + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_ieee802154\sl_rail_util_ieee802154_stack_event.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_ieee802154\sl_rail_util_ieee802154_phy_select.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\efr32xg1x\sl_rail_util_pa_curves.h + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_conversions_efr32.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_curves_efr32.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_conversions_efr32.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_curve_types_efr32.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_curves_efr32.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_pti\sl_rail_util_pti.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_pti\sl_rail_util_pti.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_ant_div\sl_rail_util_ant_div.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_ant_div\sl_rail_util_ant_div.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\coexistence\protocol\ieee802154_uc\coexistence-802154.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\coexistence\protocol\ieee802154_uc\coexistence-802154.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\coexistence\common\coexistence.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\rail_mux\sl_rail_mux_rename.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\rail_mux\sl_rail_mux.h + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\indirect-queue.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\lower-mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\lower-mac-debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-child.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-command.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-flat-header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-packet-header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-phy.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\multi-mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-multi-network.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\scan.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\upper-mac.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\board\src\sl_board_init.c + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\board\src\sl_board_control_gpio.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\board\inc\sl_board_control.h + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\board\inc\sl_board_init.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\driver\configuration_over_swo\src\sl_cos.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\driver\configuration_over_swo\inc\sl_cos.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\driver\mx25_flash_shutdown\src\sl_mx25_flash_shutdown_usart\sl_mx25_flash_shutdown.c + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\driver\mx25_flash_shutdown\inc\sl_mx25_flash_shutdown_usart\sl_mx25_flash_shutdown.h + + + + + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\aes.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\padlock.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\asn1parse.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\asn1write.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\base64.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\cipher_wrap.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\cipher_wrap.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecp.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecp_curves.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecdh.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecdsa.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecp_internal_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\md.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\md_wrap.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\bignum.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\bn_mul.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pem.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pk.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pkparse.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pkwrite.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pk_wrap.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\entropy.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\entropy_poll.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ctr_drbg.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\hmac_drbg.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\entropy_poll.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\sha1.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\sha256.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\sha512.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\constant_time.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\threading.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\platform.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\platform_util.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\check_crypto_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\common.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\constant_time_internal.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\constant_time_invasive.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecdh_misc.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecp_invasive.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\mps_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\mps_error.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\mps_reader.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\mps_trace.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pk_wrap.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\rsa_alt_helpers.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ssl_debug_helpers_generated.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ssl_misc.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ssl_tls13_keys.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\oid.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509_create.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509_crl.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509_crt.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509_csr.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509write_crt.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509write_csr.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\des.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_client.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_aead.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_driver_wrappers.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_slot_management.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_storage.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_ecp.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_hash.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_mac.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_rsa.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_se.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_aead.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_cipher.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_core.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_driver_wrappers.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_ecp.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_hash.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_invasive.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_its.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_random_impl.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_rsa.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_se.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_slot_management.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_storage.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\aes.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\asn1.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\asn1write.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\base64.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\camellia.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\cipher.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ecp.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ecdh.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ecdsa.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\md.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\md5.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ripemd160.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\sha1.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\sha256.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\sha512.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\bignum.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\pem.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\des.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\entropy.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ctr_drbg.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\hmac_drbg.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\aria.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\build_info.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ccm.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\chacha20.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\chachapoly.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\check_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\cmac.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\compat-2.x.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\config_psa.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\constant_time.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\dhm.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ecjpake.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\error.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\gcm.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\hkdf.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\mbedtls_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\memory_buffer_alloc.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\net_sockets.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\nist_kw.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\oid.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\pk.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\pkcs12.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\pkcs5.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\platform.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\platform_time.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\platform_util.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\poly1305.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\private_access.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\psa_util.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\rsa.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl_cache.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl_ciphersuites.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl_cookie.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl_ticket.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\threading.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\timing.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\version.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\x509.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\x509_crl.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\x509_crt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\x509_csr.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_builtin_composites.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_builtin_primitives.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_compat.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_driver_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_driver_contexts_composites.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_driver_contexts_primitives.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_extra.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_platform.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_se_driver.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_sizes.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_struct.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_types.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_values.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\config\config-device-acceleration.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\config\config-sl-crypto-all-acceleration.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\sl_entropy_hardware.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\sl_mbedtls.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\crypto_aes.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\crypto_ecp.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\mbedtls_sha.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\aes_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\ccm_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\cmac_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\sha1_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\sha256_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\sha512_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\sl_mbedtls.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\threading_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\gcm_alt.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_psa_trng.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_crypto_trng_driver.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_psa_driver_init.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_psa_driver_common.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_version_dependencies.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\crypto_management.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_crypto_transparent_driver_cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_crypto_transparent_driver_hash.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_crypto_transparent_driver_mac.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_crypto_transparent_driver_aead.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sl_psa_its_nvm3.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\public\sl_psa_values.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\psa\internal_trusted_storage.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\psa\error.h + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_crypto_trng_driver.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_psa_driver_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_version_dependencies.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\crypto_management.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_crypto_transparent_functions.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_crypto_transparent_types.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\printf\src\iostream_printf.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\printf\inc\iostream_printf.h + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\printf\printf.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\printf\printf.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\segger\systemview\SEGGER\SEGGER_RTT.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\segger\systemview\SEGGER\SEGGER.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\segger\systemview\SEGGER\SEGGER_RTT.h + + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\memory_manager\sl_malloc.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\memory_manager\sl_malloc.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\buffer_manager\legacy-packet-buffer.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\buffer_manager\buffer-queue.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\buffer_manager\buffer-management.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\event_queue\event-queue.h + + + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\aes-ecb.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\ccm-star.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\zigbee_debug_channel.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\zigbee-debug-extended.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\zigbee-event-logger-stub-gen.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\strong-random-api.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\platform\micro\aes.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\security.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\binding-table.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ccm-star.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\gp-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\source-route.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\zll-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-types-internal.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\error-def.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\error.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\child.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-alternate-mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-duty-cycle.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-static-struct.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\message.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\multi-network.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\multi-phy.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\network-formation.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\stack-info.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\trust-center.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\zigbee-device-stack.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\raw-message.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\aes-mmo.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\byte-utilities.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-random-api.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\library.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\mac-layer.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\bootload.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\cbke-crypto-engine.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\zigbee-event-logger-gen.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\mfglib.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\zll-api.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\gp\gp-token-config.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\gp\gp-proxy-table.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\gp\gp-sink-table.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\ember-configuration.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\config.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\token-stack.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\token-phy.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\ember-configuration-defaults.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-163k1-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-283k1-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-dsa-verify-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-dsa-sign-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-dsa-verify-283k1-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\install-code-stub.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\ember-multi-network-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\multi-pan-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\multi-pan-common.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\ember-multi-network.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\multi-pan-token-config.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\multi-pan.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\zll\zll-stubs.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\zll\zll-token-config.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\zigbee\source-route-table-update.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\mac\multi-mac.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_common.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_stack_cb.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_sleep.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_event.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_callback.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_ncp_framework_cb.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\plugin\debug-print\sl_zigbee_debug_print.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\plugin\debug-print\sl_zigbee_debug_print.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\util\af-ncp-token.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\security\security-address-cache.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\security\security.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\secure-ezsp-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\ezsp-protocol.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\secure-ezsp-protocol.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\secure-ezsp-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\ezsp-enum.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\ezsp-frame-utilities.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-binding-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-binding.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-green-power-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\em260-common.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\serial-interface-uart.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\ncp-stack-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-secure-ezsp-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-context.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\serial-interface.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\em260-callbacks.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-cbke.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-mfglib.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-messaging-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-networking-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-security-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-trust-center-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-zll.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-security.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-zigbee-pro.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\xncp\xncp.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\xncp\xncp_cb.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\xncp\xncp-token.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\xncp\xncp-sample-custom-ezsp-protocol.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\ncp\plugin\xncp\xncp.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\binding-table-library-cortexm3-iar-efr32mg12p-rail-ember_multi_network_stripped\binding-table-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\ncp-binding-library-cortexm3-iar-efr32mg12p-rail-ember_multi_network_stripped\ncp-binding-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\debug-basic-library-cortexm3-iar-efr32mg12p-rail\debug-basic-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\debug-extended-library-cortexm3-iar-efr32mg12p-rail\debug-extended-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\end-device-bind-library-cortexm3-iar-efr32mg12p-rail-ember_multi_network_stripped\end-device-bind-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\gp-library-cortexm3-iar-efr32mg12p-rail-ember_multi_network_stripped\gp-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\ncp-gp-library-cortexm3-iar-efr32mg12p-rail\ncp-gp-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\em260-uart-util-library-cortexm3-iar-efr32mg12p-rail-ember_multi_network_stripped\em260-uart-util-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\packet-validate-library-cortexm3-iar-efr32mg12p-rail\packet-validate-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\zigbee-pro-stack-cortexm3-iar-efr32mg12p-rail-ember_multi_network_stripped\zigbee-pro-stack.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\ncp-pro-library-cortexm3-iar-efr32mg12p-rail-ember_multi_network_stripped\ncp-pro-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\zigbee-r22-support-library-cortexm3-iar-efr32mg12p-rail-ember_multi_network_stripped\zigbee-r22-support-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\security-library-link-keys-cortexm3-iar-efr32mg12p-rail-ember_multi_network_stripped\security-library-link-keys.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\source-route-library-cortexm3-iar-efr32mg12p-rail-ember_multi_network_stripped\source-route-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\ncp-source-route-library-cortexm3-iar-efr32mg12p-rail\ncp-source-route-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\em260-xncp-library-cortexm3-iar-efr32mg12p-rail\em260-xncp-library.a + + + + + + ..\main.c + ..\device_creds.c + ..\device_cert.c + ..\..\common\creds.h + ..\..\common\creds.c + ..\README.md + + + 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 + + diff --git a/silabs_examples/credentials/device/brd4161a/device-creds.project.mak b/silabs_examples/credentials/device/brd4161a/device-creds.project.mak new file mode 100644 index 00000000000000..085a12808cfcb8 --- /dev/null +++ b/silabs_examples/credentials/device/brd4161a/device-creds.project.mak @@ -0,0 +1,1624 @@ +#################################################################### +# Automatically-generated file. Do not edit! # +# Makefile Version 10 # +#################################################################### + +UNAME:=$(shell uname -s | sed -e 's/^\(CYGWIN\).*/\1/' | sed -e 's/^\(MINGW\).*/\1/') +ifeq ($(UNAME),MINGW) +# Translate "C:/super" into "/C/super" for MinGW make. +SDK_PATH := /$(shell echo $(BASE_SDK_PATH) | sed s/://) +endif +SDK_PATH ?= $(BASE_SDK_PATH) +COPIED_SDK_PATH = ../../common/gsdk + +# This uses the explicit build rules below +PROJECT_SOURCE_FILES = + +C_SOURCE_FILES += $(filter %.c, $(PROJECT_SOURCE_FILES)) +CXX_SOURCE_FILES += $(filter %.cpp, $(PROJECT_SOURCE_FILES)) +CXX_SOURCE_FILES += $(filter %.cc, $(PROJECT_SOURCE_FILES)) +ASM_SOURCE_FILES += $(filter %.s, $(PROJECT_SOURCE_FILES)) +ASM_SOURCE_FILES += $(filter %.S, $(PROJECT_SOURCE_FILES)) +LIB_FILES += $(filter %.a, $(PROJECT_SOURCE_FILES)) + +C_DEFS += \ + '-DMATTER_COMMON_NAME="Matter Dev DAC 0xFFF1/0x8005"' \ + '-DMATTER_PRODUCT_ID=0x8005' \ + '-DMATTER_VENDOR_ID=0xFFF1' \ + '-DMATTER_X509_EXTENSIONS=1' \ + '-DPSA_CRYPTO_PRINT=1' \ + '-DPSA_CRYPTO_PRINT_CERT=1' \ + '-DRESERVED_AVAILABLE_MEMORY=1000' \ + '-DEFR32MG12P432F1024GL125=1' \ + '-DSL_APP_PROPERTIES=1' \ + '-DSL_BOARD_NAME="BRD4161A"' \ + '-DSL_BOARD_REV="A03"' \ + '-DSL_COMPONENT_CATALOG_PRESENT=1' \ + '-DSEGGER_RTT_ALIGNMENT=1024' \ + '-DEMBER_AF_API_BOOTLOADER_INTERFACE=1' \ + '-DCORTEXM3=1' \ + '-DCORTEXM3_EFM32_MICRO=1' \ + '-DCORTEXM3_EFR32=1' \ + '-DPHY_RAIL=1' \ + '-DPLATFORM_HEADER="platform-header.h"' \ + '-DSL_LEGACY_HAL_ENABLE_WATCHDOG=1' \ + '-DMBEDTLS_CONFIG_FILE=' \ + '-DMBEDTLS_PSA_CRYPTO_CONFIG_FILE=' \ + '-DSL_RAIL_LIB_MULTIPROTOCOL_SUPPORT=0' \ + '-DSL_RAIL_UTIL_PA_CONFIG_HEADER=' \ + '-DRTT_USE_ASM=0' \ + '-DSEGGER_RTT_SECTION="SEGGER_RTT"' \ + '-DCUSTOM_TOKEN_HEADER="sl_token_manager_af_token_header.h"' \ + '-DUSE_NVM3=1' \ + '-DUC_BUILD=1' \ + '-DEMBER_AF_NCP=1' \ + '-DEMBER_SERIAL1_RTSCTS=1' \ + '-DEZSP_UART=1' \ + '-DNO_USB=1' \ + '-DEMBER_MULTI_NETWORK_STRIPPED=1' \ + '-DSL_ZIGBEE_PHY_SELECT_STACK_SUPPORT=1' + +ASM_DEFS += \ + '-DMATTER_COMMON_NAME="Matter Dev DAC 0xFFF1/0x8005"' \ + '-DMATTER_PRODUCT_ID=0x8005' \ + '-DMATTER_VENDOR_ID=0xFFF1' \ + '-DMATTER_X509_EXTENSIONS=1' \ + '-DPSA_CRYPTO_PRINT=1' \ + '-DPSA_CRYPTO_PRINT_CERT=1' \ + '-DRESERVED_AVAILABLE_MEMORY=1000' \ + '-DEFR32MG12P432F1024GL125=1' \ + '-DSL_APP_PROPERTIES=1' \ + '-DSL_BOARD_NAME="BRD4161A"' \ + '-DSL_BOARD_REV="A03"' \ + '-DSL_COMPONENT_CATALOG_PRESENT=1' \ + '-DSEGGER_RTT_ALIGNMENT=1024' \ + '-DEMBER_AF_API_BOOTLOADER_INTERFACE=1' \ + '-DCORTEXM3=1' \ + '-DCORTEXM3_EFM32_MICRO=1' \ + '-DCORTEXM3_EFR32=1' \ + '-DPHY_RAIL=1' \ + '-DPLATFORM_HEADER="platform-header.h"' \ + '-DSL_LEGACY_HAL_ENABLE_WATCHDOG=1' \ + '-DMBEDTLS_CONFIG_FILE=' \ + '-DMBEDTLS_PSA_CRYPTO_CONFIG_FILE=' \ + '-DSL_RAIL_LIB_MULTIPROTOCOL_SUPPORT=0' \ + '-DSL_RAIL_UTIL_PA_CONFIG_HEADER=' \ + '-DRTT_USE_ASM=0' \ + '-DSEGGER_RTT_SECTION="SEGGER_RTT"' \ + '-DCUSTOM_TOKEN_HEADER="sl_token_manager_af_token_header.h"' \ + '-DUSE_NVM3=1' \ + '-DUC_BUILD=1' \ + '-DEMBER_AF_NCP=1' \ + '-DEMBER_SERIAL1_RTSCTS=1' \ + '-DEZSP_UART=1' \ + '-DNO_USB=1' \ + '-DEMBER_MULTI_NETWORK_STRIPPED=1' \ + '-DSL_ZIGBEE_PHY_SELECT_STACK_SUPPORT=1' + +INCLUDES += \ + -Iconfig \ + -Iautogen \ + -I.. \ + -I../../common \ + -I$(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG12P/Include \ + -I$(SDK_PATH)/platform/common/inc \ + -I$(SDK_PATH)/hardware/board/inc \ + -I$(SDK_PATH)/platform/bootloader \ + -I$(SDK_PATH)/platform/bootloader/api \ + -I$(SDK_PATH)/platform/CMSIS/Core/Include \ + -I$(SDK_PATH)/hardware/driver/configuration_over_swo/inc \ + -I$(SDK_PATH)/platform/driver/debug/inc \ + -I$(SDK_PATH)/platform/service/device_init/inc \ + -I$(SDK_PATH)/platform/emdrv/common/inc \ + -I$(SDK_PATH)/platform/emlib/inc \ + -I$(SDK_PATH)/platform/service/iostream/inc \ + -I$(SDK_PATH)/platform/driver/leddrv/inc \ + -I$(SDK_PATH)/platform/service/legacy_hal/inc \ + -I$(SDK_PATH)/platform/service/legacy_common_ash/inc \ + -I$(SDK_PATH)/platform/service/legacy_hal_wdog/inc \ + -I$(SDK_PATH)/platform/service/legacy_ncp_ash/inc \ + -I$(SDK_PATH)/platform/service/legacy_printf/inc \ + -I$(COPIED_SDK_PATH)/util/third_party/crypto/mbedtls/include \ + -I$(SDK_PATH)/util/third_party/crypto/mbedtls/include \ + -I$(SDK_PATH)/util/third_party/crypto/mbedtls/library \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/config \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/inc \ + -I$(SDK_PATH)/hardware/driver/mx25_flash_shutdown/inc/sl_mx25_flash_shutdown_usart \ + -I$(SDK_PATH)/platform/emdrv/nvm3/inc \ + -I$(SDK_PATH)/platform/service/power_manager/inc \ + -I$(SDK_PATH)/util/third_party/printf \ + -I$(SDK_PATH)/util/third_party/printf/inc \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/inc \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/inc/public \ + -I$(SDK_PATH)/platform/radio/rail_lib/common \ + -I$(SDK_PATH)/platform/radio/rail_lib/protocol/ble \ + -I$(SDK_PATH)/platform/radio/rail_lib/protocol/ieee802154 \ + -I$(SDK_PATH)/platform/radio/rail_lib/protocol/zwave \ + -I$(SDK_PATH)/platform/radio/rail_lib/chip/efr32/efr32xg1x \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_ieee802154 \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/efr32xg1x \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_pti \ + -I$(SDK_PATH)/util/third_party/segger/systemview/SEGGER \ + -I$(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager \ + -I$(SDK_PATH)/platform/common/toolchain/inc \ + -I$(SDK_PATH)/platform/service/system/inc \ + -I$(SDK_PATH)/platform/service/sleeptimer/inc \ + -I$(SDK_PATH)/platform/service/token_manager/inc \ + -I$(SDK_PATH)/platform/service/udelay/inc \ + -I$(SDK_PATH)/protocol/zigbee/stack/platform/micro \ + -I$(SDK_PATH)/protocol/zigbee/stack/include \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/common \ + -I$(SDK_PATH)/protocol/zigbee/app/em260 \ + -I$(SDK_PATH)/protocol/zigbee/stack/framework \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print \ + -I$(SDK_PATH)/protocol/zigbee/stack/gp \ + -I$(SDK_PATH)/protocol/zigbee/app/xncp \ + -I$(SDK_PATH)/protocol/zigbee/app/util/ezsp \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/util \ + -I$(SDK_PATH)/protocol/zigbee/app/util/security \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin \ + -I$(SDK_PATH)/protocol/zigbee \ + -I$(SDK_PATH)/protocol/zigbee/stack \ + -I$(SDK_PATH)/protocol/zigbee/stack/zigbee \ + -I$(SDK_PATH)/platform/radio/mac/rail_mux \ + -I$(SDK_PATH)/platform/radio/mac \ + -I$(SDK_PATH)/util/silicon_labs/silabs_core \ + -I$(SDK_PATH)/protocol/zigbee/stack/core \ + -I$(SDK_PATH)/protocol/zigbee/stack/mac \ + -I$(SDK_PATH)/protocol/zigbee/app/ncp/plugin/xncp + +GROUP_START =-Wl,--start-group +GROUP_END =-Wl,--end-group + +PROJECT_LIBS = \ + -lgcc \ + -lc \ + -lm \ + -lnosys \ + $(SDK_PATH)/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a \ + $(SDK_PATH)/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg12_gcc_release.a \ + $(SDK_PATH)/protocol/zigbee/build/binding-table-library-cortexm3-gcc-efr32mg12p-rail-ember_multi_network_stripped/binding-table-library.a \ + $(SDK_PATH)/protocol/zigbee/build/ncp-binding-library-cortexm3-gcc-efr32mg12p-rail-ember_multi_network_stripped/ncp-binding-library.a \ + $(SDK_PATH)/protocol/zigbee/build/debug-basic-library-cortexm3-gcc-efr32mg12p-rail/debug-basic-library.a \ + $(SDK_PATH)/protocol/zigbee/build/debug-extended-library-cortexm3-gcc-efr32mg12p-rail/debug-extended-library.a \ + $(SDK_PATH)/protocol/zigbee/build/end-device-bind-library-cortexm3-gcc-efr32mg12p-rail-ember_multi_network_stripped/end-device-bind-library.a \ + $(SDK_PATH)/protocol/zigbee/build/gp-library-cortexm3-gcc-efr32mg12p-rail-ember_multi_network_stripped/gp-library.a \ + $(SDK_PATH)/protocol/zigbee/build/ncp-gp-library-cortexm3-gcc-efr32mg12p-rail/ncp-gp-library.a \ + $(SDK_PATH)/protocol/zigbee/build/em260-uart-util-library-cortexm3-gcc-efr32mg12p-rail-ember_multi_network_stripped/em260-uart-util-library.a \ + $(SDK_PATH)/protocol/zigbee/build/packet-validate-library-cortexm3-gcc-efr32mg12p-rail/packet-validate-library.a \ + $(SDK_PATH)/protocol/zigbee/build/zigbee-pro-stack-cortexm3-gcc-efr32mg12p-rail-ember_multi_network_stripped/zigbee-pro-stack.a \ + $(SDK_PATH)/protocol/zigbee/build/ncp-pro-library-cortexm3-gcc-efr32mg12p-rail-ember_multi_network_stripped/ncp-pro-library.a \ + $(SDK_PATH)/protocol/zigbee/build/zigbee-r22-support-library-cortexm3-gcc-efr32mg12p-rail-ember_multi_network_stripped/zigbee-r22-support-library.a \ + $(SDK_PATH)/protocol/zigbee/build/security-library-link-keys-cortexm3-gcc-efr32mg12p-rail-ember_multi_network_stripped/security-library-link-keys.a \ + $(SDK_PATH)/protocol/zigbee/build/source-route-library-cortexm3-gcc-efr32mg12p-rail-ember_multi_network_stripped/source-route-library.a \ + $(SDK_PATH)/protocol/zigbee/build/ncp-source-route-library-cortexm3-gcc-efr32mg12p-rail/ncp-source-route-library.a \ + $(SDK_PATH)/protocol/zigbee/build/em260-xncp-library-cortexm3-gcc-efr32mg12p-rail/em260-xncp-library.a + +LIBS += $(GROUP_START) $(PROJECT_LIBS) $(GROUP_END) + +LIB_FILES += $(filter %.a, $(PROJECT_LIBS)) + +C_FLAGS += \ + -mcpu=cortex-m4 \ + -mthumb \ + -mfpu=fpv4-sp-d16 \ + -mfloat-abi=softfp \ + -std=c99 \ + -Wall \ + -Wextra \ + -Os \ + -fdata-sections \ + -ffunction-sections \ + -fomit-frame-pointer \ + -imacros sl_gcc_preinclude.h \ + -fno-builtin-printf \ + -fno-builtin-sprintf \ + --specs=nano.specs \ + -Wno-unused-parameter \ + -Wno-missing-field-initializers \ + -Wno-missing-braces \ + -Wno-format \ + -g + +CXX_FLAGS += \ + -mcpu=cortex-m4 \ + -mthumb \ + -mfpu=fpv4-sp-d16 \ + -mfloat-abi=softfp \ + -std=c++11 \ + -fno-rtti \ + -fno-exceptions \ + -Wall \ + -Wextra \ + -Os \ + -fdata-sections \ + -ffunction-sections \ + -fomit-frame-pointer \ + -imacros sl_gcc_preinclude.h \ + -fno-builtin-printf \ + -fno-builtin-sprintf \ + --specs=nano.specs \ + -Wno-unused-parameter \ + -Wno-missing-field-initializers \ + -Wno-missing-braces \ + -Wno-format \ + -g + +ASM_FLAGS += \ + -mcpu=cortex-m4 \ + -mthumb \ + -mfpu=fpv4-sp-d16 \ + -mfloat-abi=softfp \ + -imacros sl_gcc_preinclude.h \ + -x assembler-with-cpp + +LD_FLAGS += \ + -mcpu=cortex-m4 \ + -mthumb \ + -mfpu=fpv4-sp-d16 \ + -mfloat-abi=softfp \ + -T"autogen/linkerfile_base.ld" \ + --specs=nano.specs \ + -Xlinker -Map=$(OUTPUT_DIR)/$(PROJECTNAME).map \ + -Wl,--gc-sections + + +#################################################################### +# SDK Build Rules # +#################################################################### +$(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_control_gpio.o: $(SDK_PATH)/hardware/board/src/sl_board_control_gpio.c + @echo 'Building $(SDK_PATH)/hardware/board/src/sl_board_control_gpio.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/hardware/board/src/sl_board_control_gpio.c +CDEPS += $(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_control_gpio.d +OBJS += $(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_control_gpio.o + +$(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_init.o: $(SDK_PATH)/hardware/board/src/sl_board_init.c + @echo 'Building $(SDK_PATH)/hardware/board/src/sl_board_init.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/hardware/board/src/sl_board_init.c +CDEPS += $(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_init.d +OBJS += $(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_init.o + +$(OUTPUT_DIR)/sdk/hardware/driver/configuration_over_swo/src/sl_cos.o: $(SDK_PATH)/hardware/driver/configuration_over_swo/src/sl_cos.c + @echo 'Building $(SDK_PATH)/hardware/driver/configuration_over_swo/src/sl_cos.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/hardware/driver/configuration_over_swo/src/sl_cos.c +CDEPS += $(OUTPUT_DIR)/sdk/hardware/driver/configuration_over_swo/src/sl_cos.d +OBJS += $(OUTPUT_DIR)/sdk/hardware/driver/configuration_over_swo/src/sl_cos.o + +$(OUTPUT_DIR)/sdk/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_usart/sl_mx25_flash_shutdown.o: $(SDK_PATH)/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_usart/sl_mx25_flash_shutdown.c + @echo 'Building $(SDK_PATH)/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_usart/sl_mx25_flash_shutdown.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_usart/sl_mx25_flash_shutdown.c +CDEPS += $(OUTPUT_DIR)/sdk/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_usart/sl_mx25_flash_shutdown.d +OBJS += $(OUTPUT_DIR)/sdk/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_usart/sl_mx25_flash_shutdown.o + +$(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface.o: $(SDK_PATH)/platform/bootloader/api/btl_interface.c + @echo 'Building $(SDK_PATH)/platform/bootloader/api/btl_interface.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/bootloader/api/btl_interface.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface.d +OBJS += $(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface.o + +$(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface_storage.o: $(SDK_PATH)/platform/bootloader/api/btl_interface_storage.c + @echo 'Building $(SDK_PATH)/platform/bootloader/api/btl_interface_storage.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/bootloader/api/btl_interface_storage.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface_storage.d +OBJS += $(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface_storage.o + +$(OUTPUT_DIR)/sdk/platform/bootloader/app_properties/app_properties.o: $(SDK_PATH)/platform/bootloader/app_properties/app_properties.c + @echo 'Building $(SDK_PATH)/platform/bootloader/app_properties/app_properties.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/bootloader/app_properties/app_properties.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/bootloader/app_properties/app_properties.d +OBJS += $(OUTPUT_DIR)/sdk/platform/bootloader/app_properties/app_properties.o + +$(OUTPUT_DIR)/sdk/platform/common/src/sl_assert.o: $(SDK_PATH)/platform/common/src/sl_assert.c + @echo 'Building $(SDK_PATH)/platform/common/src/sl_assert.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/common/src/sl_assert.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_assert.d +OBJS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_assert.o + +$(OUTPUT_DIR)/sdk/platform/common/src/sl_slist.o: $(SDK_PATH)/platform/common/src/sl_slist.c + @echo 'Building $(SDK_PATH)/platform/common/src/sl_slist.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/common/src/sl_slist.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_slist.d +OBJS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_slist.o + +$(OUTPUT_DIR)/sdk/platform/common/toolchain/src/sl_memory.o: $(SDK_PATH)/platform/common/toolchain/src/sl_memory.c + @echo 'Building $(SDK_PATH)/platform/common/toolchain/src/sl_memory.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/common/toolchain/src/sl_memory.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/common/toolchain/src/sl_memory.d +OBJS += $(OUTPUT_DIR)/sdk/platform/common/toolchain/src/sl_memory.o + +$(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG12P/Source/startup_efr32mg12p.o: $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG12P/Source/startup_efr32mg12p.c + @echo 'Building $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG12P/Source/startup_efr32mg12p.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG12P/Source/startup_efr32mg12p.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG12P/Source/startup_efr32mg12p.d +OBJS += $(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG12P/Source/startup_efr32mg12p.o + +$(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG12P/Source/system_efr32mg12p.o: $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG12P/Source/system_efr32mg12p.c + @echo 'Building $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG12P/Source/system_efr32mg12p.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG12P/Source/system_efr32mg12p.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG12P/Source/system_efr32mg12p.d +OBJS += $(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG12P/Source/system_efr32mg12p.o + +$(OUTPUT_DIR)/sdk/platform/driver/debug/src/sl_debug_swo.o: $(SDK_PATH)/platform/driver/debug/src/sl_debug_swo.c + @echo 'Building $(SDK_PATH)/platform/driver/debug/src/sl_debug_swo.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/driver/debug/src/sl_debug_swo.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/driver/debug/src/sl_debug_swo.d +OBJS += $(OUTPUT_DIR)/sdk/platform/driver/debug/src/sl_debug_swo.o + +$(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_led.o: $(SDK_PATH)/platform/driver/leddrv/src/sl_led.c + @echo 'Building $(SDK_PATH)/platform/driver/leddrv/src/sl_led.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/driver/leddrv/src/sl_led.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_led.d +OBJS += $(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_led.o + +$(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_simple_led.o: $(SDK_PATH)/platform/driver/leddrv/src/sl_simple_led.c + @echo 'Building $(SDK_PATH)/platform/driver/leddrv/src/sl_simple_led.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/driver/leddrv/src/sl_simple_led.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_simple_led.d +OBJS += $(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_simple_led.o + +$(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_default_common_linker.o: $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_default_common_linker.c + @echo 'Building $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_default_common_linker.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_default_common_linker.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_default_common_linker.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_default_common_linker.o + +$(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_hal_flash.o: $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_hal_flash.c + @echo 'Building $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_hal_flash.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_hal_flash.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_hal_flash.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_hal_flash.o + +$(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_lock.o: $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_lock.c + @echo 'Building $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_lock.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_lock.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_lock.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_lock.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_cmu.o: $(SDK_PATH)/platform/emlib/src/em_cmu.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_cmu.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_cmu.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_cmu.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_cmu.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_core.o: $(SDK_PATH)/platform/emlib/src/em_core.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_core.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_core.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_core.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_core.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_crypto.o: $(SDK_PATH)/platform/emlib/src/em_crypto.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_crypto.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_crypto.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_crypto.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_crypto.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_emu.o: $(SDK_PATH)/platform/emlib/src/em_emu.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_emu.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_emu.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_emu.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_emu.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_gpio.o: $(SDK_PATH)/platform/emlib/src/em_gpio.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_gpio.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_gpio.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_gpio.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_gpio.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_msc.o: $(SDK_PATH)/platform/emlib/src/em_msc.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_msc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_msc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_msc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_msc.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_prs.o: $(SDK_PATH)/platform/emlib/src/em_prs.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_prs.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_prs.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_prs.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_prs.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_rmu.o: $(SDK_PATH)/platform/emlib/src/em_rmu.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_rmu.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_rmu.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_rmu.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_rmu.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_rtcc.o: $(SDK_PATH)/platform/emlib/src/em_rtcc.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_rtcc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_rtcc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_rtcc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_rtcc.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_system.o: $(SDK_PATH)/platform/emlib/src/em_system.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_system.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_system.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_system.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_system.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_usart.o: $(SDK_PATH)/platform/emlib/src/em_usart.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_usart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_usart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_usart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_usart.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_wdog.o: $(SDK_PATH)/platform/emlib/src/em_wdog.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_wdog.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_wdog.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_wdog.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_wdog.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_dcdc_s1.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_dcdc_s1.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_dcdc_s1.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_dcdc_s1.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_dcdc_s1.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_dcdc_s1.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_emu_s1.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_emu_s1.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_emu_s1.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_emu_s1.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_emu_s1.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_emu_s1.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_hfxo_s1.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_hfxo_s1.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_hfxo_s1.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_hfxo_s1.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_hfxo_s1.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_hfxo_s1.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_lfxo_s1.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_lfxo_s1.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_lfxo_s1.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_lfxo_s1.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_lfxo_s1.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_lfxo_s1.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_nvic.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_nvic.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_nvic.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_nvic.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_nvic.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_nvic.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_debug.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_debug.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_debug.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_debug.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_debug.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_debug.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_retarget_stdio.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_retarget_stdio.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_retarget_stdio.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_retarget_stdio.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_retarget_stdio.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_retarget_stdio.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_swo_itm_8.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_swo_itm_8.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_swo_itm_8.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_swo_itm_8.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_swo_itm_8.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_swo_itm_8.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_uart.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_uart.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_uart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_uart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_uart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_uart.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_usart.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_usart.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_usart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_usart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_usart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_usart.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_vuart.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_vuart.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_vuart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_vuart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_vuart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_vuart.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_common_ash/src/ash-common.o: $(SDK_PATH)/platform/service/legacy_common_ash/src/ash-common.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_common_ash/src/ash-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_common_ash/src/ash-common.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_common_ash/src/ash-common.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_common_ash/src/ash-common.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/base-replacement.o: $(SDK_PATH)/platform/service/legacy_hal/src/base-replacement.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/base-replacement.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/base-replacement.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/base-replacement.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/base-replacement.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-common.o: $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-common.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-common.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-common.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-common.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-app.o: $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-app.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-app.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-app.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-app.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-app.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-standalone.o: $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-standalone.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-standalone.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-standalone.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-standalone.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-standalone.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface.o: $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/crc.o: $(SDK_PATH)/platform/service/legacy_hal/src/crc.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/crc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/crc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/crc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/crc.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/diagnostic.o: $(SDK_PATH)/platform/service/legacy_hal/src/diagnostic.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/diagnostic.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/diagnostic.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/diagnostic.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/diagnostic.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/ember-phy.o: $(SDK_PATH)/platform/service/legacy_hal/src/ember-phy.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/ember-phy.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/ember-phy.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/ember-phy.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/ember-phy.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/faults.o: $(SDK_PATH)/platform/service/legacy_hal/src/faults.s + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/faults.s' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/faults.s +ASMDEPS_s += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/faults.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/faults.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/random.o: $(SDK_PATH)/platform/service/legacy_hal/src/random.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/random.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/random.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/random.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/random.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/token_legacy.o: $(SDK_PATH)/platform/service/legacy_hal/src/token_legacy.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/token_legacy.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/token_legacy.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/token_legacy.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/token_legacy.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.o: $(SDK_PATH)/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_ncp_ash/src/ash-ncp.o: $(SDK_PATH)/platform/service/legacy_ncp_ash/src/ash-ncp.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_ncp_ash/src/ash-ncp.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_ncp_ash/src/ash-ncp.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_ncp_ash/src/ash-ncp.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_ncp_ash/src/ash-ncp.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_printf/src/sl_legacy_printf.o: $(SDK_PATH)/platform/service/legacy_printf/src/sl_legacy_printf.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_printf/src/sl_legacy_printf.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_printf/src/sl_legacy_printf.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_printf/src/sl_legacy_printf.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_printf/src/sl_legacy_printf.o + +$(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager.o: $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager.c + @echo 'Building $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager.o + +$(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_debug.o: $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_debug.c + @echo 'Building $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_debug.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_debug.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_debug.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_debug.o + +$(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_hal_s0_s1.o: $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_hal_s0_s1.c + @echo 'Building $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_hal_s0_s1.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_hal_s0_s1.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_hal_s0_s1.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_hal_s0_s1.o + +$(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer.o: $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer.c + @echo 'Building $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer.o + +$(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_rtcc.o: $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_rtcc.c + @echo 'Building $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_rtcc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_rtcc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_rtcc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_rtcc.o + +$(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_init.o: $(SDK_PATH)/platform/service/system/src/sl_system_init.c + @echo 'Building $(SDK_PATH)/platform/service/system/src/sl_system_init.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/system/src/sl_system_init.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_init.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_init.o + +$(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_process_action.o: $(SDK_PATH)/platform/service/system/src/sl_system_process_action.c + @echo 'Building $(SDK_PATH)/platform/service/system/src/sl_system_process_action.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/system/src/sl_system_process_action.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_process_action.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_process_action.o + +$(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_def.o: $(SDK_PATH)/platform/service/token_manager/src/sl_token_def.c + @echo 'Building $(SDK_PATH)/platform/service/token_manager/src/sl_token_def.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/token_manager/src/sl_token_def.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_def.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_def.o + +$(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manager.o: $(SDK_PATH)/platform/service/token_manager/src/sl_token_manager.c + @echo 'Building $(SDK_PATH)/platform/service/token_manager/src/sl_token_manager.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/token_manager/src/sl_token_manager.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manager.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manager.o + +$(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manufacturing.o: $(SDK_PATH)/platform/service/token_manager/src/sl_token_manufacturing.c + @echo 'Building $(SDK_PATH)/platform/service/token_manager/src/sl_token_manufacturing.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/token_manager/src/sl_token_manufacturing.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manufacturing.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manufacturing.o + +$(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay.o: $(SDK_PATH)/platform/service/udelay/src/sl_udelay.c + @echo 'Building $(SDK_PATH)/platform/service/udelay/src/sl_udelay.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/udelay/src/sl_udelay.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay.o + +$(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay_armv6m_gcc.o: $(SDK_PATH)/platform/service/udelay/src/sl_udelay_armv6m_gcc.S + @echo 'Building $(SDK_PATH)/platform/service/udelay/src/sl_udelay_armv6m_gcc.S' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $(SDK_PATH)/platform/service/udelay/src/sl_udelay_armv6m_gcc.S +ASMDEPS_S += $(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay_armv6m_gcc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay_armv6m_gcc.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-binding-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-binding-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-binding-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-binding-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-binding-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-binding-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-green-power-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-green-power-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-green-power-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-green-power-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-green-power-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-green-power-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-messaging-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-messaging-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-messaging-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-messaging-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-messaging-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-messaging-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-networking-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-networking-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-networking-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-networking-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-networking-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-networking-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-security-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-security-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-security-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-security-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-security-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-security-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-trust-center-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-trust-center-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-trust-center-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-trust-center-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-trust-center-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-trust-center-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/em260-common.o: $(SDK_PATH)/protocol/zigbee/app/em260/em260-common.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/em260-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/em260-common.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/em260-common.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/em260-common.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/ncp-stack-stub.o: $(SDK_PATH)/protocol/zigbee/app/em260/ncp-stack-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/ncp-stack-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/ncp-stack-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/ncp-stack-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/ncp-stack-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/serial-interface-uart.o: $(SDK_PATH)/protocol/zigbee/app/em260/serial-interface-uart.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/serial-interface-uart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/serial-interface-uart.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/serial-interface-uart.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/serial-interface-uart.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_common.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_common.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_common.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_common.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_common.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.o: $(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.o: $(SDK_PATH)/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/security/security-address-cache.o: $(SDK_PATH)/protocol/zigbee/app/util/security/security-address-cache.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/security/security-address-cache.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/security/security-address-cache.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/security/security-address-cache.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/security/security-address-cache.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/xncp/xncp_cb.o: $(SDK_PATH)/protocol/zigbee/app/xncp/xncp_cb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/xncp/xncp_cb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/xncp/xncp_cb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/xncp/xncp_cb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/xncp/xncp_cb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/config/ember-configuration.o: $(SDK_PATH)/protocol/zigbee/stack/config/ember-configuration.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/config/ember-configuration.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/config/ember-configuration.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/config/ember-configuration.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/config/ember-configuration.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/ember-multi-network-stub.o: $(SDK_PATH)/protocol/zigbee/stack/core/ember-multi-network-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/core/ember-multi-network-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/core/ember-multi-network-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/ember-multi-network-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/ember-multi-network-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-common.o: $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-common.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-common.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-common.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-common.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-stub.o: $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/aes-ecb.o: $(SDK_PATH)/protocol/zigbee/stack/framework/aes-ecb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/framework/aes-ecb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/framework/aes-ecb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/aes-ecb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/aes-ecb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/ccm-star.o: $(SDK_PATH)/protocol/zigbee/stack/framework/ccm-star.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/framework/ccm-star.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/framework/ccm-star.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/ccm-star.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/ccm-star.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/strong-random-api.o: $(SDK_PATH)/protocol/zigbee/stack/framework/strong-random-api.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/framework/strong-random-api.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/framework/strong-random-api.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/strong-random-api.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/strong-random-api.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.o: $(SDK_PATH)/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/install-code-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/install-code-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/install-code-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/install-code-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/install-code-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/install-code-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/zll/zll-stubs.o: $(SDK_PATH)/protocol/zigbee/stack/zll/zll-stubs.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/zll/zll-stubs.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/zll/zll-stubs.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/zll/zll-stubs.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/zll/zll-stubs.o + +$(OUTPUT_DIR)/sdk/util/silicon_labs/silabs_core/memory_manager/sl_malloc.o: $(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager/sl_malloc.c + @echo 'Building $(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager/sl_malloc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager/sl_malloc.c +CDEPS += $(OUTPUT_DIR)/sdk/util/silicon_labs/silabs_core/memory_manager/sl_malloc.d +OBJS += $(OUTPUT_DIR)/sdk/util/silicon_labs/silabs_core/memory_manager/sl_malloc.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/aes.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/aes.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/aes.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/aes.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/aes.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/aes.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1parse.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1parse.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1parse.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1parse.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1parse.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1parse.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1write.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1write.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1write.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1write.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1write.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1write.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/base64.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/base64.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/base64.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/base64.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/base64.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/base64.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/bignum.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/bignum.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/bignum.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/bignum.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/bignum.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/bignum.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher_wrap.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher_wrap.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher_wrap.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher_wrap.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher_wrap.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher_wrap.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/constant_time.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/constant_time.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/constant_time.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/constant_time.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/constant_time.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/constant_time.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ctr_drbg.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ctr_drbg.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ctr_drbg.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ctr_drbg.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ctr_drbg.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ctr_drbg.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/des.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/des.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/des.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/des.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/des.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/des.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdh.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdh.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdh.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdh.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdh.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdh.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdsa.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdsa.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdsa.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdsa.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdsa.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdsa.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp_curves.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp_curves.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp_curves.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp_curves.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp_curves.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp_curves.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy_poll.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy_poll.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy_poll.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy_poll.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy_poll.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy_poll.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/hmac_drbg.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/hmac_drbg.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/hmac_drbg.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/hmac_drbg.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/hmac_drbg.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/hmac_drbg.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/md.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/md.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/md.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/md.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/md.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/md.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/oid.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/oid.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/oid.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/oid.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/oid.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/oid.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pem.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pem.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pem.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pem.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pem.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pem.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk_wrap.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk_wrap.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk_wrap.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk_wrap.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk_wrap.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk_wrap.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkparse.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkparse.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkparse.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkparse.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkparse.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkparse.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkwrite.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkwrite.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkwrite.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkwrite.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkwrite.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkwrite.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform_util.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform_util.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform_util.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform_util.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform_util.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform_util.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_aead.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_aead.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_aead.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_aead.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_aead.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_aead.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_client.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_client.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_client.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_client.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_client.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_client.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_hash.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_hash.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_hash.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_hash.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_hash.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_hash.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_mac.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_mac.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_mac.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_mac.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_mac.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_mac.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_se.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_se.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_se.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_se.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_se.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_se.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_storage.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_storage.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_storage.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_storage.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_storage.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_storage.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha1.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha1.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha1.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha1.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha1.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha1.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha256.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha256.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha256.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha256.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha256.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha256.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha512.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha512.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha512.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha512.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha512.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha512.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/threading.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/threading.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/threading.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/threading.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/threading.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/threading.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509.o + +$(OUTPUT_DIR)/project/_/_/common/gsdk/util/third_party/crypto/mbedtls/library/x509_create.o: $(COPIED_SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_create.c + @echo 'Building $(COPIED_SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_create.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(COPIED_SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_create.c +CDEPS += $(OUTPUT_DIR)/project/_/_/common/gsdk/util/third_party/crypto/mbedtls/library/x509_create.d +OBJS += $(OUTPUT_DIR)/project/_/_/common/gsdk/util/third_party/crypto/mbedtls/library/x509_create.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crl.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crl.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crl.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crl.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crl.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crl.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crt.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crt.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crt.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crt.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crt.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crt.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_csr.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_csr.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_csr.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_csr.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_csr.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_csr.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_crt.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_crt.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_crt.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_crt.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_crt.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_crt.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_csr.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_csr.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_csr.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_csr.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_csr.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_csr.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_aes.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_aes.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_aes.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_aes.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_aes.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_aes.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_ecp.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_ecp.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_ecp.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_ecp.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_ecp.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_ecp.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/crypto_management.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/crypto_management.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/crypto_management.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/crypto_management.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/crypto_management.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/crypto_management.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_aead.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_aead.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_aead.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_aead.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_aead.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_aead.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_cipher.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_hash.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_hash.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_hash.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_hash.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_hash.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_hash.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_mac.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_mac.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_mac.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_mac.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_mac.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_mac.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_trng_driver.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_trng_driver.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_trng_driver.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_trng_driver.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_trng_driver.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_trng_driver.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.o + +$(OUTPUT_DIR)/sdk/util/third_party/printf/printf.o: $(SDK_PATH)/util/third_party/printf/printf.c + @echo 'Building $(SDK_PATH)/util/third_party/printf/printf.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/printf/printf.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/printf/printf.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/printf/printf.o + +$(OUTPUT_DIR)/sdk/util/third_party/printf/src/iostream_printf.o: $(SDK_PATH)/util/third_party/printf/src/iostream_printf.c + @echo 'Building $(SDK_PATH)/util/third_party/printf/src/iostream_printf.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/printf/src/iostream_printf.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/printf/src/iostream_printf.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/printf/src/iostream_printf.o + +$(OUTPUT_DIR)/sdk/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.o: $(SDK_PATH)/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.c + @echo 'Building $(SDK_PATH)/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.o + +$(OUTPUT_DIR)/project/_/_/common/creds.o: ../../common/creds.c + @echo 'Building ../../common/creds.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../../common/creds.c +CDEPS += $(OUTPUT_DIR)/project/_/_/common/creds.d +OBJS += $(OUTPUT_DIR)/project/_/_/common/creds.o + +$(OUTPUT_DIR)/project/_/device_cert.o: ../device_cert.c + @echo 'Building ../device_cert.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../device_cert.c +CDEPS += $(OUTPUT_DIR)/project/_/device_cert.d +OBJS += $(OUTPUT_DIR)/project/_/device_cert.o + +$(OUTPUT_DIR)/project/_/device_creds.o: ../device_creds.c + @echo 'Building ../device_creds.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../device_creds.c +CDEPS += $(OUTPUT_DIR)/project/_/device_creds.d +OBJS += $(OUTPUT_DIR)/project/_/device_creds.o + +$(OUTPUT_DIR)/project/_/main.o: ../main.c + @echo 'Building ../main.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../main.c +CDEPS += $(OUTPUT_DIR)/project/_/main.d +OBJS += $(OUTPUT_DIR)/project/_/main.o + +$(OUTPUT_DIR)/project/autogen/sl_board_default_init.o: autogen/sl_board_default_init.c + @echo 'Building autogen/sl_board_default_init.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_board_default_init.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_board_default_init.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_board_default_init.o + +$(OUTPUT_DIR)/project/autogen/sl_device_init_clocks.o: autogen/sl_device_init_clocks.c + @echo 'Building autogen/sl_device_init_clocks.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_device_init_clocks.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_device_init_clocks.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_device_init_clocks.o + +$(OUTPUT_DIR)/project/autogen/sl_event_handler.o: autogen/sl_event_handler.c + @echo 'Building autogen/sl_event_handler.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_event_handler.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_event_handler.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_event_handler.o + +$(OUTPUT_DIR)/project/autogen/sl_iostream_handles.o: autogen/sl_iostream_handles.c + @echo 'Building autogen/sl_iostream_handles.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_iostream_handles.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_iostream_handles.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_iostream_handles.o + +$(OUTPUT_DIR)/project/autogen/sl_iostream_init_usart_instances.o: autogen/sl_iostream_init_usart_instances.c + @echo 'Building autogen/sl_iostream_init_usart_instances.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_iostream_init_usart_instances.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_iostream_init_usart_instances.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_iostream_init_usart_instances.o + +$(OUTPUT_DIR)/project/autogen/sl_power_manager_handler.o: autogen/sl_power_manager_handler.c + @echo 'Building autogen/sl_power_manager_handler.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_power_manager_handler.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_power_manager_handler.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_power_manager_handler.o + +$(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_phy_select.o: autogen/sl_rail_util_ieee802154_phy_select.c + @echo 'Building autogen/sl_rail_util_ieee802154_phy_select.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_rail_util_ieee802154_phy_select.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_phy_select.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_phy_select.o + +$(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_stack_event.o: autogen/sl_rail_util_ieee802154_stack_event.c + @echo 'Building autogen/sl_rail_util_ieee802154_stack_event.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_rail_util_ieee802154_stack_event.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_stack_event.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_stack_event.o + +$(OUTPUT_DIR)/project/autogen/sl_simple_led_instances.o: autogen/sl_simple_led_instances.c + @echo 'Building autogen/sl_simple_led_instances.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_simple_led_instances.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_simple_led_instances.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_simple_led_instances.o + +$(OUTPUT_DIR)/project/autogen/zigbee_common_callback_dispatcher.o: autogen/zigbee_common_callback_dispatcher.c + @echo 'Building autogen/zigbee_common_callback_dispatcher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/zigbee_common_callback_dispatcher.c +CDEPS += $(OUTPUT_DIR)/project/autogen/zigbee_common_callback_dispatcher.d +OBJS += $(OUTPUT_DIR)/project/autogen/zigbee_common_callback_dispatcher.o + +$(OUTPUT_DIR)/project/autogen/zigbee_ncp_callback_dispatcher.o: autogen/zigbee_ncp_callback_dispatcher.c + @echo 'Building autogen/zigbee_ncp_callback_dispatcher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/zigbee_ncp_callback_dispatcher.c +CDEPS += $(OUTPUT_DIR)/project/autogen/zigbee_ncp_callback_dispatcher.d +OBJS += $(OUTPUT_DIR)/project/autogen/zigbee_ncp_callback_dispatcher.o + +$(OUTPUT_DIR)/project/autogen/zigbee_stack_callback_dispatcher.o: autogen/zigbee_stack_callback_dispatcher.c + @echo 'Building autogen/zigbee_stack_callback_dispatcher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/zigbee_stack_callback_dispatcher.c +CDEPS += $(OUTPUT_DIR)/project/autogen/zigbee_stack_callback_dispatcher.d +OBJS += $(OUTPUT_DIR)/project/autogen/zigbee_stack_callback_dispatcher.o + +# Automatically-generated Simplicity Studio Metadata +# Please do not edit or delete these lines! +# SIMPLICITY_STUDIO_METADATA=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END_SIMPLICITY_STUDIO_METADATA +# END OF METADATA \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4164a/autogen/RTE_Components.h b/silabs_examples/credentials/device/brd4164a/autogen/RTE_Components.h new file mode 100644 index 00000000000000..3b6ea30c43423f --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/RTE_Components.h @@ -0,0 +1,22 @@ +// This file is autogenerated by Silicon Labs SLC. +// The contents of this file will be replaced in their entirety upon regeneration. +// +// Source template file: RTE_Components.h.jinja + + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + +/* standard device header from emlib */ +#define CMSIS_device_header "em_device.h" + +/* components are auto-generated here */ + + +#endif /* RTE_COMPONENTS_H */ + +/* This file is autogenerated by Silicon Labs SLC. */ +/* The contents of this file will be replaced in their entirety upon regeneration. */ +/* */ +/* Source template file: RTE_Components.h.jinja */ + diff --git a/silabs_examples/credentials/device/brd4164a/autogen/linkerfile_base.icf b/silabs_examples/credentials/device/brd4164a/autogen/linkerfile_base.icf new file mode 100644 index 00000000000000..83026bfad15b1a --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/linkerfile_base.icf @@ -0,0 +1,85 @@ + + +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ +/* Version 4.1.1 */ + +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_ROM_start__ = 0x0; +define symbol __ICFEDIT_region_ROM_end__ = (0x0+0x100000-1); +define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; +define symbol __ICFEDIT_region_RAM_end__ = (0x20000000+0x40000-1); + +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; +define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; + +define block CSTACK with alignment = 8 +{ + section .stack +}; + +define block HEAP with alignment = 8 +{ + section .heap +}; + +define block header with alignment = 8 +{ + section AAT +}; + +define block nvm with alignment = 2048 +{ + section SIMEE, +}; +keep { block nvm }; + +define block storage with alignment = 2048 +{ + section INTERNAL_STORAGE, +}; +keep { block storage }; + +define block application with fixed order +{ + block header, + readonly section .intvec, + readonly +}; + +define block application_ram with fixed order +{ + block CSTACK, + readwrite, + block HEAP +}; + +initialize by copy { readwrite }; + +do not initialize +{ + section .noinit, + section .stack, + section .heap +}; + +keep { + section .intvec, + section AAT, + block header +}; +"application": +place at start of ROM_region { block application }; + +"storage_regions": +place at end of ROM_region { + block nvm, + block storage +}; + +"application_ram": +place at start of RAM_region { block application_ram }; diff --git a/silabs_examples/credentials/device/brd4164a/autogen/linkerfile_base.ld b/silabs_examples/credentials/device/brd4164a/autogen/linkerfile_base.ld new file mode 100644 index 00000000000000..91a638d21ca83c --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/linkerfile_base.ld @@ -0,0 +1,225 @@ +/***************************************************************************//** + * GCC Linker script for Silicon Labs devices + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + + + +MEMORY +{ + FLASH (rx) : ORIGIN = 0x0, LENGTH = 0x100000 + RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x40000 +} + +ENTRY(Reset_Handler) + +SECTIONS +{ + .aat : + { + KEEP(*(.aat*)); + . = ALIGN(512); + } > FLASH + + .text : + { + linker_vectors_begin = .; + KEEP(*(.vectors)) + linker_vectors_end = .; + + __Vectors_End = .; + __Vectors_Size = __Vectors_End - __Vectors; + + linker_code_begin = .; + *(.text*) + linker_code_end = .; + + KEEP(*(.init)) + KEEP(*(.fini)) + + /* .ctors */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + + /* .dtors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + + *(.rodata*) + *(.eh_frame*) + } > FLASH + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > FLASH + + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > FLASH + __exidx_end = .; + + .copy.table : + { + . = ALIGN(4); + __copy_table_start__ = .; + + LONG (__etext) + LONG (__data_start__) + LONG ((__data_end__ - __data_start__) / 4) + + /* Add each additional data section here */ +/* + LONG (__etext2) + LONG (__data2_start__) + LONG ((__data2_end__ - __data2_start__) / 4) +*/ + __copy_table_end__ = .; + } > FLASH + + .zero.table : + { + . = ALIGN(4); + __zero_table_start__ = .; + /* Add each additional bss section here */ +/* + LONG (__bss2_start__) + LONG ((__bss2_end__ - __bss2_start__) / 4) +*/ + __zero_table_end__ = .; + } > FLASH + + __etext = .; + + /* Start placing output sections which are loaded into RAM */ + . = ORIGIN(RAM); + + .stack ALIGN(8) (NOLOAD): + { + __StackLimit = .; + KEEP(*(.stack*)) + . = ALIGN(4); + __StackTop = .; + PROVIDE(__stack = __StackTop); + } > RAM + + .noinit . (NOLOAD): + { + PROVIDE(__NO_INIT__begin = .); + *(.noinit*); + PROVIDE(__NO_INIT__end = .); + } > RAM + PROVIDE(__NO_INIT_NEW__size = SIZEOF(.noinit)); + + .data . : AT (__etext) + { + . = ALIGN(4); + __data_start__ = .; + *(vtable) + *(.data*) + . = ALIGN (4); + + PROVIDE(__ram_func_section_start = .); + *(.ram) + PROVIDE(__ram_func_section_end = .); + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + + . = ALIGN(4); + /* init data */ + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + + . = ALIGN(4); + /* finit data */ + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + + . = ALIGN(4); + /* All data end */ + __data_end__ = .; + + } > RAM + + .bss . : + { + . = ALIGN(4); + __bss_start__ = .; + *(SEGGER_RTT) + *(.bss*) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + } > RAM + + .heap (COPY): + { + __HeapBase = .; + __end__ = .; + end = __end__; + _end = __end__; + KEEP(*(.heap*)) + . = ORIGIN(RAM) + LENGTH(RAM); + __HeapLimit = .; + } > RAM + + __heap_size = __HeapLimit - __HeapBase; + + /* This is where we handle flash storage blocks. We use dummy sections for finding the configured + * block sizes and then "place" them at the end of flash when the size is known. */ + .internal_storage (DSECT) : { + KEEP(*(.internal_storage*)) + } > FLASH + + .nvm (DSECT) : { + KEEP(*(.simee*)) + } > FLASH + + linker_storage_end = ORIGIN(FLASH) + LENGTH(FLASH); + linker_storage_begin = linker_storage_end - SIZEOF(.internal_storage); + linker_storage_size = SIZEOF(.internal_storage); + linker_nvm_end = linker_storage_begin; + linker_nvm_begin = linker_nvm_end - SIZEOF(.nvm); + linker_nvm_size = SIZEOF(.nvm); + __nvm3Base = linker_nvm_begin; +} diff --git a/silabs_examples/credentials/device/brd4164a/autogen/mbedtls_config_autogen.h b/silabs_examples/credentials/device/brd4164a/autogen/mbedtls_config_autogen.h new file mode 100644 index 00000000000000..1e6fc322a5a674 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/mbedtls_config_autogen.h @@ -0,0 +1,97 @@ +// This is an autogenerated config file, any changes to this file will be overwritten + +#ifndef MBEDTLS_CONFIG_AUTOGEN_H +#define MBEDTLS_CONFIG_AUTOGEN_H + + +#define MBEDTLS_MPI_MAX_SIZE 66 + + +#define MBEDTLS_AES_C +#define MBEDTLS_ASN1_PARSE_C +#define MBEDTLS_ASN1_WRITE_C +#define MBEDTLS_BASE64_C +#define MBEDTLS_CIPHER_C +#define MBEDTLS_ECP_C +#define MBEDTLS_ECP_DP_SECP192R1_ENABLED +#define MBEDTLS_ECP_DP_SECP256R1_ENABLED +#define MBEDTLS_ECP_DP_SECP384R1_ENABLED +#define MBEDTLS_ECP_DP_SECP521R1_ENABLED +#define MBEDTLS_ECDSA_C +#define MBEDTLS_ENTROPY_HARDWARE_ALT +#define MBEDTLS_ENTROPY_RAIL_PRESENT +#define MBEDTLS_MD_C +#define MBEDTLS_BIGNUM_C +#define MBEDTLS_PEM_PARSE_C +#define MBEDTLS_PEM_WRITE_C +#define MBEDTLS_PK_C +#define MBEDTLS_PK_PARSE_C +#define MBEDTLS_PK_WRITE_C +#define MBEDTLS_ENTROPY_C +#define MBEDTLS_ENTROPY_FORCE_SHA256 +#define MBEDTLS_ENTROPY_MAX_SOURCES 2 +#define MBEDTLS_NO_PLATFORM_ENTROPY +#define MBEDTLS_CTR_DRBG_C +#define MBEDTLS_SHA1_C +#define MBEDTLS_SHA256_C +#define MBEDTLS_SHA224_C +#define MBEDTLS_SHA384_C +#define MBEDTLS_SHA512_C +#define MBEDTLS_X509_USE_C +#define MBEDTLS_X509_CREATE_C +#define MBEDTLS_X509_CRT_PARSE_C +#define MBEDTLS_X509_CRT_WRITE_C +#define MBEDTLS_X509_CRL_PARSE_C +#define MBEDTLS_X509_CSR_PARSE_C +#define MBEDTLS_X509_CSR_WRITE_C +#define MBEDTLS_OID_C +#define MBEDTLS_PSA_CRYPTO_C +#define MBEDTLS_USE_PSA_CRYPTO +#define MBEDTLS_PSA_CRYPTO_CONFIG +#define MBEDTLS_PSA_CRYPTO_DRIVERS +#define MBEDTLS_PSA_CRYPTO_STORAGE_C + + +#include "config-device-acceleration.h" + +#if defined(SL_SE_ASSUME_FW_AT_LEAST_1_2_10) || defined(SL_SE_ASSUME_FW_AT_LEAST_2_1_7) + #undef MBEDTLS_ECP_DP_CURVE25519_ENABLED + #if !(defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)) + #undef MBEDTLS_ECDH_C + #undef MBEDTLS_ECP_C + #undef MBEDTLS_BIGNUM_C + #endif /* !MBEDTLS_ECP_DP_SECPxR1_ENABLED */ +#endif /* SL_SE_ASSUME_FW_AT_LEAST_x */ + +#if !defined(TEST_SUITE_MEMORY_BUFFER_ALLOC) +#if !defined(MBEDTLS_PLATFORM_FREE_MACRO) && !defined(MBEDTLS_PLATFORM_CALLOC_MACRO) +#if defined(CONFIG_MBEDTLS_USE_FREERTOS_PVCALLOC) + /* In FreeRTOS, use pvCalloc (and vPortFree) for dynamic memory allocation. + E.g. Amazon FreeRTOS implements pvCalloc for dynamic memory allocation. */ + #include + + extern void * pvCalloc( size_t xNumElements, + size_t xSize ) ; + extern void vPortFree( void *pv ); + #define MBEDTLS_PLATFORM_CALLOC_MACRO pvCalloc + #define MBEDTLS_PLATFORM_FREE_MACRO vPortFree +#else + /* No memory allocator override, supply the default for SL platforms */ + #include "sl_malloc.h" + + #define MBEDTLS_PLATFORM_FREE_MACRO sl_free + #define MBEDTLS_PLATFORM_CALLOC_MACRO sl_calloc +#endif +#endif /* No specific memory allocator override */ +#endif /* Not under test */ + +#define MBEDTLS_PLATFORM_MEMORY +#define MBEDTLS_PLATFORM_C + + + +#endif diff --git a/silabs_examples/credentials/device/brd4164a/autogen/psa_crypto_config_autogen.h b/silabs_examples/credentials/device/brd4164a/autogen/psa_crypto_config_autogen.h new file mode 100644 index 00000000000000..b11e42f5193bf2 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/psa_crypto_config_autogen.h @@ -0,0 +1,126 @@ +// This is an autogenerated config file, any changes to this file will be overwritten + +#ifndef PSA_CRYPTO_CONFIG_AUTOGEN_H +#define PSA_CRYPTO_CONFIG_AUTOGEN_H + +#define PSA_WANT_KEY_TYPE_AES +#define PSA_WANT_ALG_CCM +#define PSA_WANT_ALG_ECB_NO_PADDING +#define MBEDTLS_PSA_BUILTIN_ALG_ECB_NO_PADDING 1 +#define PSA_WANT_ALG_SHA_1 +#define PSA_WANT_ALG_SHA_224 +#define PSA_WANT_ALG_SHA_256 +#define PSA_WANT_ALG_SHA_384 +#define PSA_WANT_ALG_SHA_512 +#define PSA_WANT_ALG_ECDSA +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR +#define PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY +#define PSA_WANT_ECC_SECP_R1_192 +#define PSA_WANT_ECC_SECP_R1_256 +#define PSA_WANT_ECC_SECP_R1_384 +#define PSA_WANT_ECC_SECP_R1_521 +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY 1 +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR 1 +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_192 1 +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_256 1 +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_384 1 +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_521 1 +#define MBEDTLS_PSA_BUILTIN_ALG_ECDSA 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_1 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_224 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_256 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_384 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_512 1 +#define MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG +#define MBEDTLS_PSA_ACCEL_ALG_SHA_1 +#define MBEDTLS_PSA_ACCEL_ALG_SHA_224 +#define MBEDTLS_PSA_ACCEL_ALG_SHA_256 +#define MBEDTLS_PSA_ACCEL_KEY_TYPE_AES +#define MBEDTLS_PSA_ACCEL_ALG_ECB_NO_PADDING +#define MBEDTLS_PSA_ACCEL_ALG_CBC_NO_PADDING +#define MBEDTLS_PSA_ACCEL_ALG_CBC_PKCS7 +#define MBEDTLS_PSA_ACCEL_ALG_CTR +#define MBEDTLS_PSA_ACCEL_ALG_CFB +#define MBEDTLS_PSA_ACCEL_ALG_OFB +#define MBEDTLS_PSA_ACCEL_ALG_GCM +#define MBEDTLS_PSA_ACCEL_ALG_CCM +#define MBEDTLS_PSA_ACCEL_ALG_CMAC + +#define MBEDTLS_PSA_KEY_SLOT_COUNT (1 + SL_PSA_KEY_USER_SLOT_COUNT) +#define SL_PSA_ITS_MAX_FILES (1 + SL_PSA_ITS_USER_MAX_FILES) + +#include "config-device-acceleration.h" +#if defined(SL_SE_ASSUME_FW_AT_LEAST_1_2_10) || defined(SL_SE_ASSUME_FW_AT_LEAST_2_1_7) + #define MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_255 + #undef MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_255 + #if !(defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)) + #undef MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR + #undef MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY + #undef MBEDTLS_PSA_BUILTIN_ALG_ECDH + #endif /* !MBEDTLS_ECP_DP_SECPxR1_ENABLED */ +#endif /* SL_SE_ASSUME_FW_AT_LEAST_x */ + +#if defined(TFM_CONFIG_SL_SECURE_LIBRARY) +// Asymmetric Crypt module (RSA is not supported) +#define TFM_CRYPTO_ASYM_ENCRYPT_MODULE_DISABLED + +// HASH module +#if !defined(PSA_WANT_ALG_SHA_1) \ + && !defined(PSA_WANT_ALG_SHA_224) \ + && !defined(PSA_WANT_ALG_SHA_256) \ + && !defined(PSA_WANT_ALG_SHA_384) \ + && !defined(PSA_WANT_ALG_SHA_512) \ + && !defined(PSA_WANT_ALG_MD5) +#define TFM_CRYPTO_HASH_MODULE_DISABLED +#endif + +// AEAD module +#if !defined(PSA_WANT_ALG_CCM) \ + && !defined(PSA_WANT_ALG_GCM) \ + && !defined(PSA_WANT_ALG_CHACHA20_POLY1305) +#define TFM_CRYPTO_AEAD_MODULE_DISABLED +#endif + +// Asymmetric Sign module +#if !defined(PSA_WANT_ALG_ECDSA) \ + && !defined(PSA_WANT_ALG_EDDSA) \ + && !defined(PSA_WANT_ALG_DETERMINISTIC_ECDSA) +#define TFM_CRYPTO_ASYM_SIGN_MODULE_DISABLED +#endif + +// Cipher module +#if !defined(PSA_WANT_ALG_CFB) \ + && !defined(PSA_WANT_ALG_CTR) \ + && !defined(PSA_WANT_ALG_CBC_NO_PADDING) \ + && !defined(PSA_WANT_ALG_CBC_PKCS7) \ + && !defined(PSA_WANT_ALG_ECB_NO_PADDING) \ + && !defined(PSA_WANT_ALG_XTS) \ + && !defined(PSA_WANT_ALG_OFB) \ + && !defined(PSA_WANT_ALG_STREAM_CIPHER) +#define TFM_CRYPTO_CIPHER_MODULE_DISABLED +#endif + +// MAC module +#if !defined(PSA_WANT_ALG_HMAC) \ + && !defined(PSA_WANT_ALG_CMAC) \ + && !defined(PSA_WANT_ALG_CBC_MAC) +#define TFM_CRYPTO_MAC_MODULE_DISABLED +#endif + +// Key derivation module +#if !defined(PSA_WANT_ALG_PBKDF2_HMAC) \ + && !defined(PSA_WANT_ALG_HKDF) \ + && !defined(PSA_WANT_ALG_PBKDF2_AES_CMAC_PRF_128) \ + && !defined(PSA_WANT_ALG_TLS12_PRF) \ + && !defined(PSA_WANT_ALG_TLS12_PSK_TO_MS) \ + && !defined(PSA_WANT_ALG_ECDH) +#define TFM_CRYPTO_KEY_DERIVATION_MODULE_DISABLED +#endif + +#endif // TFM_CONFIG_SL_SECURE_LIBRARY + +#endif diff --git a/silabs_examples/credentials/device/brd4164a/autogen/sl_application_type.h b/silabs_examples/credentials/device/brd4164a/autogen/sl_application_type.h new file mode 100644 index 00000000000000..8bc7f50103c1e2 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/sl_application_type.h @@ -0,0 +1,41 @@ +/***************************************************************************//** + * @file + * @brief Autogenerated configuration file for application properties + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_APPLICATION_TYPE_H +#define SL_APPLICATION_TYPE_H + +#include "api/application_properties.h" + +// Bitfield representing type of application +#define APPLICATION_TYPE APPLICATION_TYPE_ZIGBEE + + +#endif // SL_APPLICATION_TYPE_H + diff --git a/silabs_examples/credentials/device/brd4164a/autogen/sl_board_default_init.c b/silabs_examples/credentials/device/brd4164a/autogen/sl_board_default_init.c new file mode 100644 index 00000000000000..bd43db368b3c3a --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/sl_board_default_init.c @@ -0,0 +1,36 @@ +/***************************************************************************//** + * @file + * @brief Board Default Init + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ +#include "sl_board_control.h" + +void sl_board_default_init(void) +{ + sl_board_disable_vcom(); + +} diff --git a/silabs_examples/credentials/device/brd4164a/autogen/sl_component_catalog.h b/silabs_examples/credentials/device/brd4164a/autogen/sl_component_catalog.h new file mode 100644 index 00000000000000..77ad9c6f78b307 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/sl_component_catalog.h @@ -0,0 +1,54 @@ +#ifndef SL_COMPONENT_CATALOG_H +#define SL_COMPONENT_CATALOG_H + +// APIs present in project +#define SL_CATALOG_GECKO_BOOTLOADER_INTERFACE_PRESENT +#define SL_CATALOG_DEVICE_INIT_NVIC_PRESENT +#define SL_CATALOG_EMLIB_CORE_DEBUG_CONFIG_PRESENT +#define SL_CATALOG_RETARGET_STDIO_PRESENT +#define SL_CATALOG_IOSTREAM_UART_COMMON_PRESENT +#define SL_CATALOG_IOSTREAM_USART_PRESENT +#define SL_CATALOG_LEGACY_BOOTLOADER_INTERFACE_PRESENT +#define SL_CATALOG_LEGACY_COMMON_ASH_PRESENT +#define SL_CATALOG_LEGACY_HAL_PRESENT +#define SL_CATALOG_LEGACY_HAL_WDOG_PRESENT +#define SL_CATALOG_LEGACY_NCP_ASH_PRESENT +#define SL_CATALOG_LEGACY_PRINTF_PRESENT +#define SL_CATALOG_MX25_FLASH_SHUTDOWN_USART_PRESENT +#define SL_CATALOG_NVM3_PRESENT +#define SL_CATALOG_POWER_MANAGER_PRESENT +#define SL_CATALOG_PRINTF_PRESENT +#define SL_CATALOG_PSA_CRYPTO_PRESENT +#define SL_CATALOG_RAIL_LIB_PRESENT +#define SL_CATALOG_RAIL_UTIL_IEEE802154_PHY_SELECT_PRESENT +#define SL_CATALOG_RAIL_UTIL_IEEE802154_STACK_EVENT_PRESENT +#define SL_CATALOG_RAIL_UTIL_PTI_PRESENT +#define SL_CATALOG_LED0_PRESENT +#define SL_CATALOG_SIMPLE_LED_PRESENT +#define SL_CATALOG_SIMPLE_LED_LED0_PRESENT +#define SL_CATALOG_SLEEPTIMER_PRESENT +#define SL_CATALOG_TOKEN_MANAGER_PRESENT +#define SL_CATALOG_TOKEN_MANAGER_NVM3_PRESENT +#define SL_CATALOG_ZIGBEE_AES_PSA_PRESENT +#define SL_CATALOG_ZIGBEE_APP_FRAMEWORK_COMMON_PRESENT +#define SL_CATALOG_ZIGBEE_BINDING_TABLE_PRESENT +#define SL_CATALOG_ZIGBEE_CCM_PSA_PRESENT +#define SL_CATALOG_ZIGBEE_DEBUG_BASIC_PRESENT +#define SL_CATALOG_ZIGBEE_DEBUG_EXTENDED_PRESENT +#define SL_CATALOG_ZIGBEE_DEBUG_PRINT_PRESENT +#define SL_CATALOG_ZIGBEE_END_DEVICE_BIND_PRESENT +#define SL_CATALOG_ZIGBEE_GREEN_POWER_PRESENT +#define SL_CATALOG_ZIGBEE_NCP_FRAMEWORK_PRESENT +#define SL_CATALOG_ZIGBEE_NCP_PRESENT +#define SL_CATALOG_ZIGBEE_NCP_UART_HARDWARE_PRESENT +#define SL_CATALOG_ZIGBEE_PACKET_VALIDATE_PRESENT +#define SL_CATALOG_ZIGBEE_PHY_2_4_PRESENT +#define SL_CATALOG_ZIGBEE_PRO_STACK_PRESENT +#define SL_CATALOG_ZIGBEE_R22_SUPPORT_PRESENT +#define SL_CATALOG_ZIGBEE_SECURITY_LINK_KEYS_PRESENT +#define SL_CATALOG_ZIGBEE_SOURCE_ROUTE_PRESENT +#define SL_CATALOG_ZIGBEE_STACK_COMMON_PRESENT +#define SL_CATALOG_ZIGBEE_STRONG_RANDOM_API_RADIO_PRESENT +#define SL_CATALOG_ZIGBEE_XNCP_PRESENT + +#endif // SL_COMPONENT_CATALOG_H diff --git a/silabs_examples/credentials/device/brd4164a/autogen/sl_device_init_clocks.c b/silabs_examples/credentials/device/brd4164a/autogen/sl_device_init_clocks.c new file mode 100644 index 00000000000000..9349ba24c2b605 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/sl_device_init_clocks.c @@ -0,0 +1,49 @@ +/***************************************************************************//** + * @file + * @brief Device initialization for clocks. + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ +#include "sl_device_init_clocks.h" + +#include "em_cmu.h" + +sl_status_t sl_device_init_clocks(void) +{ + CMU_ClockSelectSet(cmuClock_HF, cmuSelect_HFXO); + + CMU_ClockEnable(cmuClock_HFLE, true); + CMU_ClockSelectSet(cmuClock_LFA, cmuSelect_LFXO); + CMU_ClockSelectSet(cmuClock_LFB, cmuSelect_LFXO); +#if defined(_CMU_LFCCLKSEL_MASK) + CMU_ClockSelectSet(cmuClock_LFC, cmuSelect_LFXO); +#endif +#if defined(_CMU_LFECLKSEL_MASK) + CMU_ClockSelectSet(cmuClock_LFE, cmuSelect_LFXO); +#endif + + return SL_STATUS_OK; +} diff --git a/silabs_examples/credentials/device/brd4164a/autogen/sl_event_handler.c b/silabs_examples/credentials/device/brd4164a/autogen/sl_event_handler.c new file mode 100644 index 00000000000000..3a2df0b05f6627 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/sl_event_handler.c @@ -0,0 +1,102 @@ +#include "sl_event_handler.h" + +#include "em_chip.h" +#include "sl_device_init_nvic.h" +#include "sl_board_init.h" +#include "sl_device_init_dcdc.h" +#include "sl_device_init_hfxo.h" +#include "sl_device_init_lfxo.h" +#include "sl_device_init_clocks.h" +#include "sl_device_init_emu.h" +#include "pa_conversions_efr32.h" +#include "sl_rail_util_pti.h" +#include "zigbee-debug-extended.h" +#include "zigbee_app_framework_common.h" +#include "btl_interface.h" +#include "sl_board_control.h" +#include "sl_sleeptimer.h" +#include "sl_debug_swo.h" +#include "sl_iostream_debug.h" +#include "sl_iostream_init_usart_instances.h" +#include "sl_iostream_vuart.h" +#include "hal.h" +#include "sl_mbedtls.h" +#include "nvm3_default.h" +#include "sl_simple_led_instances.h" +#include "sl_iostream_init_instances.h" +#include "sl_power_manager.h" +#include "sl_cos.h" + +void sl_platform_init(void) +{ + CHIP_Init(); + sl_device_init_nvic(); + sl_board_preinit(); + sl_device_init_dcdc(); + sl_device_init_hfxo(); + sl_device_init_lfxo(); + sl_device_init_clocks(); + sl_device_init_emu(); + sl_board_init(); + bootloader_init(); + halInit(); + nvm3_initDefault(); + sl_power_manager_init(); +} + +void sl_driver_init(void) +{ + sl_debug_swo_init(); + sl_simple_led_init_instances(); + sl_cos_send_config(); +} + +void sl_service_init(void) +{ + sl_board_configure_vcom(); + sl_sleeptimer_init(); + sl_mbedtls_init(); + sl_iostream_init_instances(); +} + +void sl_stack_init(void) +{ + sl_rail_util_pa_init(); + sl_rail_util_pti_init(); + sli_zigbee_debug_extended_init(); + sli_zigbee_stack_init_callback(); + sli_zigbee_app_framework_init_callback(); + sli_zigbee_app_framework_sleep_init(); + sli_zigbee_ncp_init_callback(); +} + +void sl_internal_app_init(void) +{ +} + +void sl_platform_process_action(void) +{ +} + +void sl_service_process_action(void) +{ +} + +void sl_stack_process_action(void) +{ + sli_zigbee_stack_tick_callback(); + sli_zigbee_app_framework_tick_callback(); + sli_zigbee_ncp_tick_callback(); +} + +void sl_internal_app_process_action(void) +{ +} + +void sl_iostream_init_instances(void) +{ + sl_iostream_debug_init(); + sl_iostream_usart_init_instances(); + sl_iostream_vuart_init(); +} + diff --git a/silabs_examples/credentials/device/brd4164a/autogen/sl_event_handler.h b/silabs_examples/credentials/device/brd4164a/autogen/sl_event_handler.h new file mode 100644 index 00000000000000..9ac6fcdb22b424 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/sl_event_handler.h @@ -0,0 +1,15 @@ +#ifndef SL_EVENT_HANDLER_H +#define SL_EVENT_HANDLER_H + +void sl_platform_init(void); +void sl_driver_init(void); +void sl_service_init(void); +void sl_stack_init(void); +void sl_internal_app_init(void); +void sl_platform_process_action(void); +void sl_service_process_action(void); +void sl_stack_process_action(void); +void sl_internal_app_process_action(void); +void sl_iostream_init_instances(void); + +#endif // SL_EVENT_HANDLER_H diff --git a/silabs_examples/credentials/device/brd4164a/autogen/sl_iostream_handles.c b/silabs_examples/credentials/device/brd4164a/autogen/sl_iostream_handles.c new file mode 100644 index 00000000000000..f59e9ca1e44fff --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/sl_iostream_handles.c @@ -0,0 +1,31 @@ +#include "sl_iostream.h" +#include "sl_iostream_handles.h" +#include "string.h" + +const sl_iostream_instance_info_t *sl_iostream_instances_info[] = { + + &sl_iostream_instance_debug_info, + + &sl_iostream_instance_vcom_info, + + &sl_iostream_instance_vuart_info, + +}; + +const uint32_t sl_iostream_instances_count = sizeof(sl_iostream_instances_info) / sizeof(sl_iostream_instances_info[0]); + +/***************************************************************************//** + * Get iostream instance handle for a given name + * + * @return Instance handle if it exist, NULL otherwise. + ******************************************************************************/ +sl_iostream_t *sl_iostream_get_handle(char *name) +{ + for (uint32_t i = 0; i < sl_iostream_instances_count; i++) { + if (strcmp(sl_iostream_instances_info[i]->name, name) == 0) { + return sl_iostream_instances_info[i]->handle; + } + } + + return NULL; +} \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4164a/autogen/sl_iostream_handles.h b/silabs_examples/credentials/device/brd4164a/autogen/sl_iostream_handles.h new file mode 100644 index 00000000000000..a26f04340f8671 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/sl_iostream_handles.h @@ -0,0 +1,22 @@ +#ifndef SL_IOSTREAM_HANDLES_H +#define SL_IOSTREAM_HANDLES_H +#include "sl_iostream.h" +#include "sl_iostream_debug.h" +#include "sl_iostream_init_usart_instances.h" +#include "sl_iostream_vuart.h" + + +#ifdef __cplusplus +extern "C" { +#endif + +extern const sl_iostream_instance_info_t *sl_iostream_instances_info[]; +extern const uint32_t sl_iostream_instances_count; + +sl_iostream_t *sl_iostream_get_handle(char *name); + +#ifdef __cplusplus +} +#endif + +#endif // SL_IOSTREAM_HANDLES_H diff --git a/silabs_examples/credentials/device/brd4164a/autogen/sl_iostream_init_instances.h b/silabs_examples/credentials/device/brd4164a/autogen/sl_iostream_init_instances.h new file mode 100644 index 00000000000000..c092c37eec59a0 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/sl_iostream_init_instances.h @@ -0,0 +1,16 @@ +#ifndef SL_IOSTREAM_INIT_INSTANCES_H +#define SL_IOSTREAM_INIT_INSTANCES_H + +#include "sl_iostream.h" +#ifdef __cplusplus +extern "C" { +#endif + +// Initialize iostream component(s) / instance(s) +void sl_iostream_init_instances(void); + +#ifdef __cplusplus +} +#endif + +#endif // SL_IOSTREAM_INIT_INSTANCES_H \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4164a/autogen/sl_iostream_init_usart_instances.c b/silabs_examples/credentials/device/brd4164a/autogen/sl_iostream_init_usart_instances.c new file mode 100644 index 00000000000000..ec04146afbe6dd --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/sl_iostream_init_usart_instances.c @@ -0,0 +1,203 @@ +#if defined(SL_COMPONENT_CATALOG_PRESENT) +#include "sl_component_catalog.h" +#endif +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) +#include "sl_power_manager.h" +#endif +#include "em_device.h" +#include "sl_iostream.h" +#include "sl_iostream_uart.h" +#include "sl_iostream_usart.h" +// Include instance config + #include "sl_iostream_usart_vcom_config.h" + +// MACROs for generating name and IRQ handler function +#define SL_IOSTREAM_USART_CONCAT_PASTER(first, second, third) first ## second ## third + + + + +#define SL_IOSTREAM_USART_TX_IRQ_NUMBER(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(USART, periph_nbr, _TX_IRQn) +#define SL_IOSTREAM_USART_RX_IRQ_NUMBER(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(USART, periph_nbr, _RX_IRQn) +#define SL_IOSTREAM_USART_TX_IRQ_HANDLER(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(USART, periph_nbr, _TX_IRQHandler) +#define SL_IOSTREAM_USART_RX_IRQ_HANDLER(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(USART, periph_nbr, _RX_IRQHandler) + +#define SL_IOSTREAM_USART_CLOCK_REF(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(cmuClock_, USART, periph_nbr) + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && defined(_SILICON_LABS_32B_SERIES_2) +// EM Events +#define SLEEP_EM_EVENT_MASK ( SL_POWER_MANAGER_EVENT_TRANSITION_ENTERING_EM2 \ + | SL_POWER_MANAGER_EVENT_TRANSITION_LEAVING_EM2 \ + | SL_POWER_MANAGER_EVENT_TRANSITION_ENTERING_EM3 \ + | SL_POWER_MANAGER_EVENT_TRANSITION_LEAVING_EM3) +#endif + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && defined(_SILICON_LABS_32B_SERIES_2) +static void events_handler(sl_power_manager_em_t from, + sl_power_manager_em_t to); +static sl_power_manager_em_transition_event_info_t events_info = +{ + .event_mask = SLEEP_EM_EVENT_MASK, + .on_event = events_handler, +}; +static sl_power_manager_em_transition_event_handle_t events_handle; +#endif + + +sl_status_t sl_iostream_usart_init_vcom(void); + + +// Instance(s) handle and context variable +static sl_iostream_uart_t sl_iostream_vcom; +sl_iostream_t *sl_iostream_vcom_handle = &sl_iostream_vcom.stream; +sl_iostream_uart_t *sl_iostream_uart_vcom_handle = &sl_iostream_vcom; +static sl_iostream_usart_context_t context_vcom; +static uint8_t rx_buffer_vcom[SL_IOSTREAM_USART_VCOM_RX_BUFFER_SIZE]; +sl_iostream_instance_info_t sl_iostream_instance_vcom_info = { + .handle = &sl_iostream_vcom.stream, + .name = "vcom", + .type = SL_IOSTREAM_TYPE_UART, + .periph_id = SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO, + .init = sl_iostream_usart_init_vcom, +}; + + + +sl_status_t sl_iostream_usart_init_vcom(void) +{ + sl_status_t status; + USART_InitAsync_TypeDef init_vcom = USART_INITASYNC_DEFAULT; + init_vcom.baudrate = SL_IOSTREAM_USART_VCOM_BAUDRATE; + init_vcom.parity = SL_IOSTREAM_USART_VCOM_PARITY; + init_vcom.stopbits = SL_IOSTREAM_USART_VCOM_STOP_BITS; +#if (_SILICON_LABS_32B_SERIES > 0) +#if (SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE != uartFlowControlSoftware) + init_vcom.hwFlowControl = SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE; +#else + init_vcom.hwFlowControl = usartHwFlowControlNone; +#endif +#endif + sl_iostream_usart_config_t config_vcom = { + .usart = SL_IOSTREAM_USART_VCOM_PERIPHERAL, + .clock = SL_IOSTREAM_USART_CLOCK_REF(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO), + .tx_port = SL_IOSTREAM_USART_VCOM_TX_PORT, + .tx_pin = SL_IOSTREAM_USART_VCOM_TX_PIN, + .rx_port = SL_IOSTREAM_USART_VCOM_RX_PORT, + .rx_pin = SL_IOSTREAM_USART_VCOM_RX_PIN, +#if (_SILICON_LABS_32B_SERIES > 0) +#if defined(SL_IOSTREAM_USART_VCOM_CTS_PORT) + .cts_port = SL_IOSTREAM_USART_VCOM_CTS_PORT, + .cts_pin = SL_IOSTREAM_USART_VCOM_CTS_PIN, +#endif +#if defined(SL_IOSTREAM_USART_VCOM_RTS_PORT) + .rts_port = SL_IOSTREAM_USART_VCOM_RTS_PORT, + .rts_pin = SL_IOSTREAM_USART_VCOM_RTS_PIN, +#endif +#endif +#if defined(GPIO_USART_ROUTEEN_TXPEN) + .usart_index = SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO, +#elif defined(USART_ROUTEPEN_RXPEN) + .usart_tx_location = SL_IOSTREAM_USART_VCOM_TX_LOC, + .usart_rx_location = SL_IOSTREAM_USART_VCOM_RX_LOC, +#if defined(SL_IOSTREAM_USART_VCOM_CTS_PORT) + .usart_cts_location = SL_IOSTREAM_USART_VCOM_CTS_LOC, +#endif +#if defined(SL_IOSTREAM_USART_VCOM_RTS_PORT) + .usart_rts_location = SL_IOSTREAM_USART_VCOM_RTS_LOC, +#endif +#else + .usart_location = SL_IOSTREAM_USART_VCOM_ROUTE_LOC, +#endif + }; + sl_iostream_uart_config_t uart_config_vcom = { + .tx_irq_number = SL_IOSTREAM_USART_TX_IRQ_NUMBER(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO), + .rx_irq_number = SL_IOSTREAM_USART_RX_IRQ_NUMBER(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO), + .rx_buffer = rx_buffer_vcom, + .rx_buffer_length = SL_IOSTREAM_USART_VCOM_RX_BUFFER_SIZE, + .lf_to_crlf = SL_IOSTREAM_USART_VCOM_CONVERT_BY_DEFAULT_LF_TO_CRLF, + .rx_when_sleeping = SL_IOSTREAM_USART_VCOM_RESTRICT_ENERGY_MODE_TO_ALLOW_RECEPTION, +#if defined(SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE) +#if (SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE == uartFlowControlSoftware) + .sw_flow_control = true, +#else + .sw_flow_control = false, +#endif +#else + .sw_flow_control = false, +#endif + }; + // Instantiate usart instance + status = sl_iostream_usart_init(&sl_iostream_vcom, + &uart_config_vcom, + &init_vcom, + &config_vcom, + &context_vcom); + EFM_ASSERT(status == SL_STATUS_OK); + + return status; +} + + + +void sl_iostream_usart_init_instances(void) +{ +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && defined(_SILICON_LABS_32B_SERIES_2) + // Enable power manager notifications + sl_power_manager_subscribe_em_transition_event(&events_handle, &events_info); +#endif + + // Instantiate usart instance(s) + + sl_iostream_usart_init_vcom(); + +} + + +// VCOM IRQ Handler +void SL_IOSTREAM_USART_TX_IRQ_HANDLER(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO)(void) +{ + sl_iostream_usart_irq_handler(sl_iostream_vcom.stream.context); +} + +void SL_IOSTREAM_USART_RX_IRQ_HANDLER(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO)(void) +{ + sl_iostream_usart_irq_handler(sl_iostream_vcom.stream.context); +} + + + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && !defined(SL_CATALOG_KERNEL_PRESENT) + +sl_power_manager_on_isr_exit_t sl_iostream_usart_vcom_sleep_on_isr_exit(void) +{ + return sl_iostream_uart_sleep_on_isr_exit(&sl_iostream_vcom); +} + +#endif + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && defined(_SILICON_LABS_32B_SERIES_2) +static void events_handler(sl_power_manager_em_t from, + sl_power_manager_em_t to) +{ + uint32_t out; + if (((from == SL_POWER_MANAGER_EM2) + || (from == SL_POWER_MANAGER_EM3)) + && ((to == SL_POWER_MANAGER_EM1) + || (to == SL_POWER_MANAGER_EM0))) { + + // Wake the USART Tx pin back up + out = GPIO_PinOutGet(SL_IOSTREAM_USART_VCOM_TX_PORT, SL_IOSTREAM_USART_VCOM_TX_PIN); + GPIO_PinModeSet(SL_IOSTREAM_USART_VCOM_TX_PORT, SL_IOSTREAM_USART_VCOM_TX_PIN, gpioModePushPull, out); + + } else if (((to == SL_POWER_MANAGER_EM2) + || (to == SL_POWER_MANAGER_EM3)) + && ((from == SL_POWER_MANAGER_EM1) + || (from == SL_POWER_MANAGER_EM0))) { + + // Sleep the USART Tx pin on series 2 devices to save energy + out = GPIO_PinOutGet(SL_IOSTREAM_USART_VCOM_TX_PORT, SL_IOSTREAM_USART_VCOM_TX_PIN); + GPIO_PinModeSet(SL_IOSTREAM_USART_VCOM_TX_PORT, SL_IOSTREAM_USART_VCOM_TX_PIN, gpioModeDisabled, out); + + } +} +#endif \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4164a/autogen/sl_iostream_init_usart_instances.h b/silabs_examples/credentials/device/brd4164a/autogen/sl_iostream_init_usart_instances.h new file mode 100644 index 00000000000000..2301dbe600fab7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/sl_iostream_init_usart_instances.h @@ -0,0 +1,34 @@ +#ifndef SL_IOSTREAM_INIT_USART_INSTANCES_H +#define SL_IOSTREAM_INIT_USART_INSTANCES_H +#if defined(SL_COMPONENT_CATALOG_PRESENT) +#include "sl_component_catalog.h" +#endif +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) +#include "sl_power_manager.h" +#endif +#include "sl_iostream.h" +#include "sl_iostream_uart.h" +#ifdef __cplusplus +extern "C" { +#endif + + +extern sl_iostream_t *sl_iostream_vcom_handle; +extern sl_iostream_uart_t *sl_iostream_uart_vcom_handle; +extern sl_iostream_instance_info_t sl_iostream_instance_vcom_info; + + +// Initialize only iostream usart instance(s) +void sl_iostream_usart_init_instances(void); + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) + +sl_power_manager_on_isr_exit_t sl_iostream_usart_vcom_sleep_on_isr_exit(void); + +#endif + +#ifdef __cplusplus +} +#endif + +#endif // SL_IOSTREAM_INIT_USART_INSTANCES_H \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4164a/autogen/sl_legacy_bootloader_device_info.h b/silabs_examples/credentials/device/brd4164a/autogen/sl_legacy_bootloader_device_info.h new file mode 100644 index 00000000000000..a1e81e735d428f --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/sl_legacy_bootloader_device_info.h @@ -0,0 +1,41 @@ +/***************************************************************************//** + * @file + * @brief Legacy Bootloader Interface Device Info + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +enum { + SL_FAMILY_UNKNOWN = 0, + SL_FAMILY_MGM1 = 1, + SL_FAMILY_BGM1 = 1, + SL_FAMILY_EFR32MG1P = 16, + SL_FAMILY_EFR32MG1B = 17, + SL_FAMILY_EFR32MG1V = 18, + SL_FAMILY_EFR32BG1P = 19, + SL_FAMILY_EFR32BG1B = 20, + SL_FAMILY_EFR32BG1V = 21, + SL_FAMILY_EFR32FG1P = 25, + SL_FAMILY_EFR32FG1V = 27, +}; + +// CORTEXM3 +#define SL_PLAT 4U + +// CORTEXM3_EFR32 +#define SL_MICRO 24U + +#define SL_FAMILY SL_FAMILY_EFR32MG12P + +// PHY_RAIL +#define SL_PHY 15U diff --git a/silabs_examples/credentials/device/brd4164a/autogen/sl_mbedtls_config_transform_autogen.h b/silabs_examples/credentials/device/brd4164a/autogen/sl_mbedtls_config_transform_autogen.h new file mode 100644 index 00000000000000..2e0dcae5c15f29 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/sl_mbedtls_config_transform_autogen.h @@ -0,0 +1,44 @@ +// This is an autogenerated config file, any changes to this file will be overwritten + +#ifndef SL_MBEDTLS_CONFIG_TRANSFORM_AUTOGEN_H +#define SL_MBEDTLS_CONFIG_TRANSFORM_AUTOGEN_H + +// Convert CMSIS Markup config defines to mbedTLS specific config defines + +// Allow undefining the specified cipher suites +#if defined(SLI_MBEDTLS_AUTODETECT_CIPHERSUITES) +#undef MBEDTLS_SSL_CIPHERSUITES +#endif + +#if SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH + #define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH +#endif +#if SL_MBEDTLS_SSL_EXPORT_KEYS + #define MBEDTLS_SSL_EXPORT_KEYS +#endif +#if SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED + #define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED +#endif +#if SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED + #define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED +#endif +#if SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED + #define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED +#endif +#if SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED + #define MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED +#endif + +#if !defined(MBEDTLS_SSL_IN_CONTENT_LEN) + #define MBEDTLS_SSL_IN_CONTENT_LEN SL_MBEDTLS_SSL_IN_CONTENT_LEN +#endif + +#if !defined(MBEDTLS_SSL_OUT_CONTENT_LEN) + #define MBEDTLS_SSL_OUT_CONTENT_LEN SL_MBEDTLS_SSL_OUT_CONTENT_LEN +#endif + + + + + +#endif // SL_MBEDTLS_CONFIG_TRANSFORM_AUTOGEN_H diff --git a/silabs_examples/credentials/device/brd4164a/autogen/sl_power_manager_handler.c b/silabs_examples/credentials/device/brd4164a/autogen/sl_power_manager_handler.c new file mode 100644 index 00000000000000..6f5254fbcf984e --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/sl_power_manager_handler.c @@ -0,0 +1,126 @@ +#include +#include "em_core.h" +#include "sl_power_manager.h" +#include "sl_sleeptimer.h" +#include "sl_iostream_init_usart_instances.h" +#include "sl_legacy_hal_integration_hooks.h" +#include "zigbee_app_framework_common.h" +#include "serial-interface.h" + +/***************************************************************************//** + * Check if the MCU can sleep at that time. This function is called when the system + * is about to go sleeping, with the interrupts disabled. It allows the software to + * cancel going to sleep in case of a last-minute event occurred (window between the + * function call and interrupt disable). + * + * @return True, if the system can go to sleep. + * False, otherwise. + * + * @note This function is called with the interrupt disabled and it MUST NOT be + * re-enabled. + ******************************************************************************/ +__WEAK bool app_is_ok_to_sleep(void) +{ + return true; +} + +/***************************************************************************//** + * Check if the MCU can sleep after an interrupt. This function is called after an + * interrupt occured and was processed. It allows the power manger to know if it must + * go back to sleep or wakeup. + * + * @return SL_POWER_MANAGER_IGNORE, if the module did not trigger an ISR and it + * won't to contribute to the decision. + * + * SL_POWER_MANAGER_SLEEP, The module was the one that caused the system + * wakeup and the system SHOULD go back to sleep. + * + * SL_POWER_MANAGER_WAKEUP, The module was the one that caused the system + * wakeup and the system MUST NOT go back to sleep. + * + * @note This function must not have any side effects. It is not guaranteed to be + * called for every ISR. If a prior hook function requires to wakeup, such + * as a wireless stack, the application hook function won't be called. + ******************************************************************************/ +__WEAK sl_power_manager_on_isr_exit_t app_sleep_on_isr_exit(void) +{ + return SL_POWER_MANAGER_IGNORE; +} + +/***************************************************************************//** + * Mandatory callback that allows to cancel sleeping action. This function is called + * when the system is about to go sleeping, with the interrupts disabled. It allows + * the software to cancel going to sleep in case of a last-minute event occurred + * (window between the function call and interrupt disable). + ******************************************************************************/ +bool sl_power_manager_is_ok_to_sleep(void) +{ + bool ok_to_sleep = true; + if (sl_legacy_hal_is_ok_to_sleep() == false) { + ok_to_sleep = false; + } + if (sli_zigbee_app_framework_is_ok_to_sleep() == false) { + ok_to_sleep = false; + } + if (serialOkToSleep() == false) { + ok_to_sleep = false; + } + // Application hook + if (app_is_ok_to_sleep() == false) { + ok_to_sleep = false; + } + + return ok_to_sleep; +} + +/***************************************************************************//** + * Mandatory callback that must validate if the MCU can sleep after having + * processed an interrupt when the system was sleeping. + ******************************************************************************/ +bool sl_power_manager_sleep_on_isr_exit(void) +{ + sl_power_manager_on_isr_exit_t answer; + bool sleep = false; + bool force_wakeup = false; + + // This function allow the power manager to return into sleep, if the latest timer + // to expire was power manager's internal one used to restore HFXO on time or + // the HFXO interrupt. + // Most of the time we want to get back to sleep until the next event occurs. + sleep = sl_power_manager_is_latest_wakeup_internal(); + + answer = sl_iostream_usart_vcom_sleep_on_isr_exit(); + if (answer == SL_POWER_MANAGER_WAKEUP) { + force_wakeup = true; + } else if (answer == SL_POWER_MANAGER_SLEEP) { + sleep = true; + } + + answer = sl_legacy_hal_sleep_on_isr_exit(); + if (answer == SL_POWER_MANAGER_WAKEUP) { + force_wakeup = true; + } else if (answer == SL_POWER_MANAGER_SLEEP) { + sleep = true; + } + + answer = sli_zigbee_sleep_on_isr_exit(); + if (answer == SL_POWER_MANAGER_WAKEUP) { + force_wakeup = true; + } else if (answer == SL_POWER_MANAGER_SLEEP) { + sleep = true; + } + + // Application hook + answer = app_sleep_on_isr_exit(); + if (answer == SL_POWER_MANAGER_WAKEUP) { + force_wakeup = true; + } else if (answer == SL_POWER_MANAGER_SLEEP) { + sleep = true; + } + + if (force_wakeup) { + sleep = false; + } + + return sleep; +} \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4164a/autogen/sl_rail_util_ieee802154_phy_select.c b/silabs_examples/credentials/device/brd4164a/autogen/sl_rail_util_ieee802154_phy_select.c new file mode 100644 index 00000000000000..a7632d665dbdfa --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/sl_rail_util_ieee802154_phy_select.c @@ -0,0 +1,261 @@ +/***************************************************************************//** + * @file + * @brief + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#if defined(SL_COMPONENT_CATALOG_PRESENT) + #include "sl_component_catalog.h" +#endif + +#ifdef SL_CATALOG_RAIL_MULTIPLEXER_PRESENT +#include "sl_rail_mux_rename.h" +#endif + +#include "rail.h" +#include "rail_ieee802154.h" +#include "sl_rail_util_ieee802154_phy_select.h" +#include "sl_status.h" +#include "em_assert.h" +extern void sl_mac_lower_mac_update_active_radio_config(void); + +extern RAIL_Handle_t emPhyRailHandle; + +#define RUNTIME_PHY_SELECT (0) + +#define RUNTIME_PHY_SELECT_STACK_SUPPORT (0 || SL_ZIGBEE_PHY_SELECT_STACK_SUPPORT) + +static sl_rail_util_ieee802154_radio_config_t active_radio_config = SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT; + + +static sl_rail_util_ieee802154_radio_config_t sl_rail_util_get_desired_radio_config(void) +{ + return (SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT + ); +} + +#if RUNTIME_PHY_SELECT +#if !RUNTIME_PHY_SELECT_STACK_SUPPORT +#error "Run time PHY select is currently unsupported on the selected stack." +#endif + +static bool stackInitialized = false; + +static uint8_t blockPhySwitch = 0U; +#define BLOCK_SWITCH_RX 0x01u +#define BLOCK_SWITCH_TX 0x02u +#define setBlockPhySwitch(dir, boolval) \ + do { \ + if (boolval) { \ + blockPhySwitch |= (dir); \ + } else { \ + blockPhySwitch &= (uint8_t) ~(dir); \ + } \ + } while (false) + +static bool checkPhySwitch(void) +{ + sl_rail_util_ieee802154_radio_config_t desired_radio_config = sl_rail_util_get_desired_radio_config(); + if ((active_radio_config != desired_radio_config) + && (blockPhySwitch == 0U) + && stackInitialized + && (emPhyRailHandle != NULL)) { + //@TODO: Ascertain radio is OFF, RXWARM, or RXSEARCH only. + active_radio_config = desired_radio_config; + sl_mac_lower_mac_update_active_radio_config(); + return true; + } + return false; +} + +#else//!RUNTIME_PHY_SELECT + +#define setBlockPhySwitch(dir, boolval) /*no-op*/ +#define checkPhySwitch() (false) + +#endif//RUNTIME_PHY_SELECT + +sl_rail_util_ieee802154_radio_config_t sl_rail_util_ieee802154_get_active_radio_config(void) +{ + return active_radio_config; +} + +#define ANT_DIV_PHY_DEFAULT_ENABLED (SL_RAIL_UTIL_ANTENNA_RX_DEFAULT_MODE != SL_RAIL_UTIL_ANTENNA_MODE_DISABLED) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || !ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || !SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || !SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || !SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || !SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || !ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || !SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || !SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) + +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_FEM_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || !ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || !SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_FEM_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || !SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_FEM_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || !ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_FEM_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) + +RAIL_Status_t sl_rail_util_ieee802154_config_radio(RAIL_Handle_t railHandle) +{ + // Establish the proper radio config + RAIL_Status_t status = RAIL_STATUS_INVALID_STATE; + sl_rail_util_ieee802154_radio_config_t desired_radio_config = sl_rail_util_get_desired_radio_config(); + switch (desired_radio_config) { +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT: + status = RAIL_IEEE802154_Config2p4GHzRadio(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV: + status = RAIL_IEEE802154_Config2p4GHzRadioAntDiv(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX: + status = RAIL_IEEE802154_Config2p4GHzRadioCoex(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX: + status = RAIL_IEEE802154_Config2p4GHzRadioAntDivCoex(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_FEM_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_FEM: + status = RAIL_IEEE802154_Config2p4GHzRadioFem(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_FEM_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_FEM_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_FEM: + status = RAIL_IEEE802154_Config2p4GHzRadioAntDivFem(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_FEM_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_FEM_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_FEM: + status = RAIL_IEEE802154_Config2p4GHzRadioCoexFem(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_FEM_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_FEM_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_FEM: + status = RAIL_IEEE802154_Config2p4GHzRadioAntDivCoexFem(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_FEM_SUPPORTED + default: + break; + } + EFM_ASSERT(status == RAIL_STATUS_NO_ERROR); + active_radio_config = desired_radio_config; + + return status; +} + +#if RUNTIME_PHY_SELECT +sl_rail_util_ieee802154_stack_status_t sl_rail_util_ieee802154_phy_select_on_event( + sl_rail_util_ieee802154_stack_event_t stack_event, + uint32_t supplement) +{ + bool isReceivingFrame = false; + + switch (stack_event) { + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TICK: + stackInitialized = true; + (void) checkPhySwitch(); + break; + + // RX events: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_STARTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACCEPTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACKING: + setBlockPhySwitch(BLOCK_SWITCH_RX, true); + break; + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_CORRUPTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACK_BLOCKED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACK_ABORTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_FILTERED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ENDED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACK_SENT: + isReceivingFrame = (bool) supplement; + // FALLTHROUGH + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_IDLED: + setBlockPhySwitch(BLOCK_SWITCH_RX, isReceivingFrame); + break; + + // TX events: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_PENDED_MAC: + break; + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_PENDED_PHY: + setBlockPhySwitch(BLOCK_SWITCH_TX, true); + break; + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_CCA_SOON: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_CCA_BUSY: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_STARTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ACK_WAITING: + break; + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ACK_RECEIVED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ACK_TIMEDOUT: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_BLOCKED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ABORTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ENDED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_IDLED: + setBlockPhySwitch(BLOCK_SWITCH_TX, false); + break; + default: + break; + } + return SL_RAIL_UTIL_IEEE802154_STACK_STATUS_SUCCESS; +} +#else +sl_rail_util_ieee802154_stack_status_t sl_rail_util_ieee802154_phy_select_on_event( + sl_rail_util_ieee802154_stack_event_t stack_event, + uint32_t supplement) +{ + (void)stack_event; + (void)supplement; + return SL_RAIL_UTIL_IEEE802154_STACK_STATUS_UNSUPPORTED; +} +#endif //RUNTIME_PHY_SELECT diff --git a/silabs_examples/credentials/device/brd4164a/autogen/sl_rail_util_ieee802154_stack_event.c b/silabs_examples/credentials/device/brd4164a/autogen/sl_rail_util_ieee802154_stack_event.c new file mode 100644 index 00000000000000..4d98c10bee1fc5 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/sl_rail_util_ieee802154_stack_event.c @@ -0,0 +1,44 @@ +/***************************************************************************//** + * @file + * @brief + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#include "rail.h" +#include "rail_ieee802154.h" +#include "sl_status.h" +#include "sl_rail_util_ieee802154_stack_event.h" +#include "em_assert.h" +#include "sl_rail_util_ieee802154_phy_select.h" + +sl_rail_util_ieee802154_stack_status_t sl_rail_util_ieee802154_on_event( + sl_rail_util_ieee802154_stack_event_t stack_event, + uint32_t supplement) +{ + sl_rail_util_ieee802154_phy_select_on_event(stack_event, supplement); + return SL_RAIL_UTIL_IEEE802154_STACK_STATUS_SUCCESS; +} diff --git a/silabs_examples/credentials/device/brd4164a/autogen/sl_simple_led_instances.c b/silabs_examples/credentials/device/brd4164a/autogen/sl_simple_led_instances.c new file mode 100644 index 00000000000000..a194fc048f3e4f --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/sl_simple_led_instances.c @@ -0,0 +1,44 @@ +/***************************************************************************//** + * @file + * @brief LED Driver Instances + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include "sl_simple_led.h" +#include "em_gpio.h" +#include "sl_simple_led_led0_config.h" + +sl_simple_led_context_t simple_led0_context = { + .port = SL_SIMPLE_LED_LED0_PORT, + .pin = SL_SIMPLE_LED_LED0_PIN, + .polarity = SL_SIMPLE_LED_LED0_POLARITY, +}; + +const sl_led_t sl_led_led0 = { + .context = &simple_led0_context, + .init = sl_simple_led_init, + .turn_on = sl_simple_led_turn_on, + .turn_off = sl_simple_led_turn_off, + .toggle = sl_simple_led_toggle, + .get_state = sl_simple_led_get_state, +}; + +const sl_led_t *sl_simple_led_array[] = { + &sl_led_led0 +}; + +void sl_simple_led_init_instances(void) +{ + sl_led_init(&sl_led_led0); +} diff --git a/silabs_examples/credentials/device/brd4164a/autogen/sl_simple_led_instances.h b/silabs_examples/credentials/device/brd4164a/autogen/sl_simple_led_instances.h new file mode 100644 index 00000000000000..61f19773c9b2ed --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/sl_simple_led_instances.h @@ -0,0 +1,32 @@ +/***************************************************************************//** + * @file + * @brief LED Driver Instances + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_SIMPLE_LED_INSTANCES_H +#define SL_SIMPLE_LED_INSTANCES_H + +#include "sl_simple_led.h" + +extern const sl_led_t sl_led_led0; + +extern const sl_led_t *sl_simple_led_array[]; + +#define SL_SIMPLE_LED_COUNT 1 +#define SL_SIMPLE_LED_INSTANCE(n) (sl_simple_led_array[n]) + +void sl_simple_led_init_instances(void); + +#endif // SL_SIMPLE_LED_INIT_H diff --git a/silabs_examples/credentials/device/brd4164a/autogen/zigbee_af_token_headers.h b/silabs_examples/credentials/device/brd4164a/autogen/zigbee_af_token_headers.h new file mode 100644 index 00000000000000..fcc5d6e16da805 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/zigbee_af_token_headers.h @@ -0,0 +1,25 @@ +/***************************************************************************//** + * @file zigbee_af_token_headers.h + * @brief ZCL callback dispatcher declarations. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +/* + * This file includes token headers for the components selected in the project + */ +// +// *** Generated file. Do not edit! *** +// + +#include "app/xncp/xncp-token.h" + diff --git a/silabs_examples/credentials/device/brd4164a/autogen/zigbee_common_callback_dispatcher.c b/silabs_examples/credentials/device/brd4164a/autogen/zigbee_common_callback_dispatcher.c new file mode 100644 index 00000000000000..7aebdfc9d5db83 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/zigbee_common_callback_dispatcher.c @@ -0,0 +1,38 @@ +/***************************************************************************//** + * @file zigbee_common_callback_dispatcher.c + * @brief ZigBee common dispatcher definitions. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "zigbee_app_framework_common.h" +#include "zigbee_common_callback_dispatcher.h" + +void emAfEventInit(void) +{ +} + +void emAfLocalDataInit(void) +{ +} + +void emAfInitDone(void) +{ +} + + +void emAfTick(void) +{ +} diff --git a/silabs_examples/credentials/device/brd4164a/autogen/zigbee_common_callback_dispatcher.h b/silabs_examples/credentials/device/brd4164a/autogen/zigbee_common_callback_dispatcher.h new file mode 100644 index 00000000000000..f6872e2aa7e0f4 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/zigbee_common_callback_dispatcher.h @@ -0,0 +1,34 @@ +/***************************************************************************//** + * @file zigbee_common_callback_dispatcher.h + * @brief ZigBee common dispatcher declarations. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_ZIGBEE_COMMON_CALLBACK_DISPATCHER_H +#define SL_ZIGBEE_COMMON_CALLBACK_DISPATCHER_H + +#include PLATFORM_HEADER +#include "stack/include/ember.h" + +// Event Init +void emAfEventInit(void); +// Local data Init +void emAfLocalDataInit(void); +// Init done +void emAfInitDone(void); + +// Tick +void emAfTick(void); + +#endif // SL_ZIGBEE_COMMON_CALLBACK_DISPATCHER_H \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4164a/autogen/zigbee_ncp_callback_dispatcher.c b/silabs_examples/credentials/device/brd4164a/autogen/zigbee_ncp_callback_dispatcher.c new file mode 100644 index 00000000000000..3c7a890eff4610 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/zigbee_ncp_callback_dispatcher.c @@ -0,0 +1,93 @@ +/***************************************************************************//** + * @file zigbee_ncp_callback_dispatcher.c + * @brief ZigBee ncp dispatcher definitions. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "zigbee_ncp_callback_dispatcher.h" + + +void emberAfEzspGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context) +{ + emberAfPluginEzspGetValueCommandCallback(context); + emberAfPluginEzspZigbeeProGetValueCommandCallback(context); + emberAfPluginEzspSecurityGetValueCommandCallback(context); +} + + +void emberAfEzspGetExtendedValueCommandCallback(EmberAfPluginEzspValueCommandContext* context) +{ + emberAfPluginEzspZigbeeProGetExtendedValueCommandCallback(context); +} + + +void emberAfEzspSetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context) +{ + emberAfPluginEzspSetValueCommandCallback(context); + emberAfPluginEzspZigbeeProSetValueCommandCallback(context); + emberAfPluginEzspSecuritySetValueCommandCallback(context); +} + + +void emberAfEzspGetPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context) +{ + emberAfPluginEzspBindingPolicyCommandCallback(context); + emberAfPluginEzspPolicyCommandCallback(context); + emberAfPluginEzspZigbeeProPolicyCommandCallback(context); + emberAfPluginEzspSecurityPolicyCommandCallback(context); +} + + +void emberAfEzspSetPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context) +{ + emberAfPluginEzspBindingPolicyCommandCallback(context); + emberAfPluginEzspPolicyCommandCallback(context); + emberAfPluginEzspZigbeeProPolicyCommandCallback(context); + emberAfPluginEzspSecurityPolicyCommandCallback(context); +} + + +void emberAfEzspGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context) +{ + emberAfPluginEzspBindingConfigurationValueCommandCallback(context); + emberAfPluginEzspGetConfigurationValueCommandCallback(context); + emberAfPluginEzspSourceRouteGetConfigurationValueCommandCallback(context); + emberAfPluginEzspZigbeeProGetConfigurationValueCommandCallback(context); + emberAfPluginEzspSecurityGetConfigurationValueCommandCallback(context); +} + + +void emberAfEzspSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context) +{ + emberAfPluginEzspBindingConfigurationValueCommandCallback(context); + emberAfPluginEzspSetConfigurationValueCommandCallback(context); + emberAfPluginEzspSourceRouteSetConfigurationValueCommandCallback(context); + emberAfPluginEzspZigbeeProSetConfigurationValueCommandCallback(context); + emberAfPluginEzspSecuritySetConfigurationValueCommandCallback(context); +} + + +void emberAfPluginEzspModifyMemoryAllocationCallback(void) +{ + emInitializeBindingTable(); + emberAfPluginEzspZigbeeProModifyMemoryAllocationCallback(); +} + + +void emberAfPluginEzspPermitHostToNcpFrameCallback(bool* permit) +{ + emberAfPluginEzspBindingPermitHostToNcpFrameCallback(permit); +} diff --git a/silabs_examples/credentials/device/brd4164a/autogen/zigbee_ncp_callback_dispatcher.h b/silabs_examples/credentials/device/brd4164a/autogen/zigbee_ncp_callback_dispatcher.h new file mode 100644 index 00000000000000..753af5d201f7e1 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/zigbee_ncp_callback_dispatcher.h @@ -0,0 +1,88 @@ +/***************************************************************************//** + * @file zigbee_ncp_callback_dispatcher.h + * @brief ZigBee ncp dispatcher declarations. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_ZIGBEE_NCP_CALLBACK_DISPATCHER_H +#define SL_ZIGBEE_NCP_CALLBACK_DISPATCHER_H + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "app/em260/command-context.h" // EmberAfPluginEzspValueCommandContext + + +// get_value +void emberAfEzspGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspZigbeeProGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspSecurityGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); + + + + +void emberAfEzspGetExtendedValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspZigbeeProGetExtendedValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); + + + +void emberAfEzspSetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspSetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspZigbeeProSetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspSecuritySetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); + + + +void emberAfEzspGetPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspBindingPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspZigbeeProPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspSecurityPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); + + + +void emberAfEzspSetPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspBindingPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspZigbeeProPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspSecurityPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); + + +void emberAfEzspGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspBindingConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSourceRouteGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspZigbeeProGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSecurityGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); + + + +void emberAfEzspSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspBindingConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSourceRouteSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspZigbeeProSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSecuritySetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); + + +void emberAfPluginEzspModifyMemoryAllocationCallback(void); +void emInitializeBindingTable(void); +void emberAfPluginEzspZigbeeProModifyMemoryAllocationCallback(void); + + + +void emberAfPluginEzspPermitHostToNcpFrameCallback(bool* permit); +void emberAfPluginEzspBindingPermitHostToNcpFrameCallback(bool* permit); + +#endif // SL_ZIGBEE_NCP_CALLBACK_DISPATCHER_H \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4164a/autogen/zigbee_stack_callback_dispatcher.c b/silabs_examples/credentials/device/brd4164a/autogen/zigbee_stack_callback_dispatcher.c new file mode 100644 index 00000000000000..2b9b8483a566ec --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/zigbee_stack_callback_dispatcher.c @@ -0,0 +1,993 @@ +/*****************************************************************************/ +/** + * Copyright 2020 Silicon Laboratories, Inc. + * + *****************************************************************************/ +// +// *** Generated file. Do not edit! *** +// + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "zigbee_stack_callback_dispatcher.h" + + + +#ifdef EZSP_HOST +// Incoming Message +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // The link quality + uint8_t lastHopLqi, + // The energy level + int8_t lastHopRssi, + // The sender of the message. + EmberNodeId sender, + // The index of a binding that matches the message + // matching binding. + uint8_t bindingIndex, + // The index of the entry in the address table + uint8_t addressIndex, + // The message length + uint8_t messageLength, + // message + uint8_t *messageContents) +{ +(void) type; +(void) apsFrame; +(void) lastHopLqi; +(void) lastHopRssi; +(void) sender; +(void) bindingIndex; +(void) addressIndex; +(void) messageLength; +(void) messageContents; + +emAfIncomingMessageCallback(type, apsFrame, lastHopLqi, lastHopRssi, sender, bindingIndex, addressIndex, messageLength, messageContents); +} +#else // !EZSP_HOST +// Incoming Message +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message) +{ +(void)type; +(void)apsFrame; +(void)message; + +emAfIncomingMessageCallback(type, apsFrame, message); +} +#endif // EZSP_HOST + + +// Message Sent +#ifdef EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // Message tag + uint8_t messageTag, + // Message delivery status + EmberStatus status, + // The length of the messageContents + uint8_t messageLength, + // Message data + uint8_t *messageContents) +{ +(void)type; +(void)indexOrDestination; +(void)apsFrame; +(void)messageTag; +(void)status; +(void) messageLength; +(void) messageContents; + +emAfMessageSentCallback(type, indexOrDestination, apsFrame, messageTag, status, messageLength, messageContents); +} +#else // !EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message, + // Message delivery status + EmberStatus status) +{ +(void)type; +(void)indexOrDestination; +(void)apsFrame; +(void)message; +(void)status; + +emAfMessageSentCallback(type, indexOrDestination, apsFrame, message, status); +} +#endif // EZSP_HOST + + + +// Trust Center Join +void emAfTrustCenterJoin( + // Joining node's id + EmberNodeId newNodeId, + // Joining node's Eui64 + EmberEUI64 newNodeEui64, + // Status + EmberDeviceUpdate status, + // Parent Id of the joining node + EmberNodeId parentOfNewNode) +{ +(void)newNodeId; +(void)newNodeEui64; +(void)status; +(void)parentOfNewNode; + +} + + + +// Mark Buffers +void emAfMarkBuffers(void) +{ + +emAfMarkBuffersCallback(); +} + + + +// Packet Handoff Incoming +void emAfPacketHandoffIncoming( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +{ +(void)packetType; +(void)packetBuffer; +(void)index; +(void)data; + +} + + + +// Packet Handoff Outgoing +void emAfPacketHandoffOutgoing( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +{ +(void)packetType; +(void)packetBuffer; +(void)index; +(void)data; + +} + + + +// Incoming Mfg Test Message +void emAfIncomingMfgTestMessage( + uint8_t messageType, + uint8_t dataLength, + // Return: + uint8_t *data) +{ +(void)messageType; +(void)dataLength; +(void)data; + +} + + + +// Override Incoming Route Record +void emAfOverrideIncomingRouteRecord( + EmberNodeId source, + EmberEUI64 sourceEui, + uint8_t relayCount, + EmberMessageBuffer header, + uint8_t relayListIndex, + // Return: + bool *consumed) +{ +(void)source; +(void)sourceEui; +(void)relayCount; +(void)header; +(void)relayListIndex; +(void)consumed; + +emAfOverrideIncomingRouteRecordCallback(source, sourceEui, relayCount, header, relayListIndex, consumed); +} + + + +// Override Append Source Route +// Return: Added bytes +void emAfOverrideAppendSourceRoute( + EmberNodeId destination, + // Return: + EmberMessageBuffer *header, + // Return: + bool *consumed) +{ +(void)destination; +(void)header; +(void)consumed; + +} + + + +// Override Furthur Index For Source Route Add Entry +void emAfOverrideFurthurIndexForSourceRouteAddEntry( + EmberNodeId id, + // Return: + uint8_t *furtherIndex) +{ +(void)id; +(void)furtherIndex; + +emAfOverrideFurthurIndexForSourceRouteAddEntryCallback(id, furtherIndex); +} + + + +// Stack Status +void emAfStackStatus( + // Stack status + EmberStatus status) +{ +(void)status; + +emAfStackStatusCallback(status); +} + + + +// Energy Scan Result +void emAfEnergyScanResult( + // The 802.15.4 channel number that was scanned. + uint8_t channel, + // The maximum RSSI value found on the channel. + int8_t maxRssiValue) +{ +(void)channel; +(void)maxRssiValue; + +emAfEnergyScanResultCallback(channel, maxRssiValue); +} + + + +// Network Found +void emAfNetworkFound( + // The parameters associated with the network found. + EmberZigbeeNetwork *networkFound, + // The link quality indication of the network found. + uint8_t lqi, + // The received signal strength indication of the network found. + int8_t rssi) +{ +(void)networkFound; +(void)lqi; +(void)rssi; + +emAfNetworkFoundCallback(networkFound, lqi, rssi); +} + + + +// Scan Complete +void emAfScanComplete( + // The channel on which the current error occurred. Undefined for the case + // of EMBER_SUCCESS. + uint8_t channel, + // The error condition that occurred on the current channel. Value will be + // EMBER_SUCCESS when the scan has completed. + EmberStatus status) +{ +(void)channel; +(void)status; + +emAfScanCompleteCallback(channel, status); +} + + + +// Unused Pan Id Found +void emAfUnusedPanIdFound( + // The unused panID which has been found. + EmberPanId panId, + // The channel that the unused panID was found on. + uint8_t channel) +{ +(void)panId; +(void)channel; + +emAfUnusedPanIdFoundCallback(panId, channel); +} + + + +// Child Join +#ifdef EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining, + // The node ID of the child. + EmberNodeId childId, + // The EUI64 of the child. + EmberEUI64 childEui64, + // The node type of the child. + EmberNodeType childType) +{ +(void)index; +(void)joining; +(void)childId; +(void)childEui64; +(void)childType; + +emAfChildJoinCallback(index, joining, childId, childEui64, childType); +} +#else // !EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining) +{ +(void)index; +(void)joining; + +emAfChildJoinCallback(index, joining); +} +#endif // EZSP_HOST + + + +// Duty Cycle +#ifdef EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state, + // The total number of connected end devices that are being monitored for + // duty cycle. + uint8_t totalDevices, + // Consumed duty cycles of end devices that are being monitored. The first + // entry always be the local stack's nodeId, and thus the total aggregate + // duty cycle for the device. + EmberPerDeviceDutyCycle *arrayOfDeviceDutyCycles) +{ +(void)channelPage; +(void)channel; +(void)state; +(void)totalDevices; +(void)arrayOfDeviceDutyCycles; + +emAfDutyCycleCallback(channelPage, channel, state, totalDevices, arrayOfDeviceDutyCycles); +} +#else // !EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state) +{ +(void)channelPage; +(void)channel; +(void)state; + +emAfDutyCycleCallback(channelPage, channel, state); +} +#endif // EZSP_HOST + + + +// Remote Set Binding +// Return: ZDO response status. +void emAfRemoteSetBinding( + // Return: The contents of the binding entry. + EmberBindingTableEntry *entry) +{ +(void)entry; + +} + + + +// Remote Delete Binding +// Return: ZDO response status +void emAfRemoteDeleteBinding( + // The index of the binding whose deletion was requested. + uint8_t index) +{ +(void)index; + +} + + + +// Poll Complete +void emAfPollComplete( + // An EmberStatus value: EMBER_SUCCESS - Data was received in response to + // the poll. EMBER_MAC_NO_DATA - No data was pending. + // EMBER_DELIVERY_FAILED - The poll message could not be sent. + // EMBER_MAC_NO_ACK_RECEIVED - The poll message was sent but not + // acknowledged by the parent. + EmberStatus status) +{ +(void)status; + +emAfPollCompleteCallback(status); +} + + + +// Poll +void emAfPoll( + // The node ID of the child that is requesting data. + EmberNodeId childId, + // True if transmit expected, false otherwise. + bool transmitExpected) +{ +(void)childId; +(void)transmitExpected; + +emAfPollCallback(childId, transmitExpected); +} + + + +// Debug +void emAfDebug( + // debug message + EmberMessageBuffer message) +{ +(void)message; + +} + + + +// Incoming Many To One Route Request +void emAfIncomingManyToOneRouteRequest( + // The short id of the concentrator. + EmberNodeId source, + // The EUI64 of the concentrator. + EmberEUI64 longId, + // The path cost to the concentrator. The cost may decrease as additional + // route request packets for this discovery arrive, but the callback is + // made only once. + uint8_t cost) +{ +(void)source; +(void)longId; +(void)cost; + +emAfIncomingManyToOneRouteRequestCallback(source, longId, cost); +} + + + +// Incoming Route Error +void emAfIncomingRouteError( + // EMBER_SOURCE_ROUTE_FAILURE or EMBER_MANY_TO_ONE_ROUTE_FAILURE. + EmberStatus status, + // The short id of the remote node. + EmberNodeId target) +{ +(void)status; +(void)target; + +emAfIncomingRouteErrorCallback(status, target); +} + + + +// Incoming Network Status +void emAfIncomingNetworkStatus( + // One byte over-the-air error code from network status message + uint8_t errorCode, + // The short ID of the remote node + EmberNodeId target) +{ +(void)errorCode; +(void)target; + +emAfIncomingNetworkStatusCallback(errorCode, target); +} + + + +// Incoming Route Record +void emAfIncomingRouteRecord( + // The source of the route record. + EmberNodeId source, + // The EUI64 of the source. + EmberEUI64 sourceEui, + // The number of relays in relayList. + uint8_t relayCount, + // Header. + EmberMessageBuffer header, + // The relay List Index. + uint8_t relayListIndex) +{ +(void)source; +(void)sourceEui; +(void)relayCount; +(void)header; +(void)relayListIndex; + +emAfIncomingRouteRecordCallback(source, sourceEui, relayCount, header, relayListIndex); +} + + + +// Id Conflict +void emAfIdConflict( + // The short id for which a conflict was detected + EmberNodeId conflictingId) +{ +(void)conflictingId; + +emAfIdConflictCallback(conflictingId); +} + + + +// Mac Passthrough Message +void emAfMacPassthroughMessage( + // The type of MAC passthrough message received. + EmberMacPassthroughType messageType, + // The raw message that was received. + EmberMessageBuffer message) +{ +(void)messageType; +(void)message; + +emAfMacPassthroughMessageCallback(messageType, message); +} + + + +// Stack Token Changed +void emAfStackTokenChanged( + // The address of the stack token that has changed. + uint16_t tokenAddress) +{ +(void)tokenAddress; + +emAfStackTokenChangedCallback(tokenAddress); +} + + + +// Timer +void emAfTimer( + // Which timer generated the callback (0 or 1). + uint8_t timerId) +{ +(void)timerId; + +} + + + +// Counter Rollover +void emAfCounterRollover( + // Type of Counter + EmberCounterType type) +{ +(void)type; + +emAfCounterRolloverCallback(type); +} + + + +// Raw Transmit Complete +void emAfRawTransmitComplete( + // message + EmberMessageBuffer message, + // EMBER_SUCCESS if the transmission was successful, or + // EMBER_DELIVERY_FAILED if not + EmberStatus status) +{ +(void)message; +(void)status; + +emAfRawTransmitCompleteCallback(message, status); +} + + + +// Switch Network Key +void emAfSwitchNetworkKey( + // The sequence number of the new network key. + uint8_t sequenceNumber) +{ +(void)sequenceNumber; + +emAfSwitchNetworkKeyCallback(sequenceNumber); +} + + + +// Zigbee Key Establishment +void emAfZigbeeKeyEstablishment( + // This is the IEEE address of the partner that the device successfully + // established a key with. This value is all zeros on a failure. + EmberEUI64 partner, + // This is the status indicating what was established or why the key + // establishment failed. + EmberKeyStatus status) +{ +(void)partner; +(void)status; + +emAfZigbeeKeyEstablishmentCallback(partner, status); +} + + + +// Generate Cbke Keys +void emAfGenerateCbkeKeys( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKeyData *ephemeralPublicKey) +{ +(void)status; +(void)ephemeralPublicKey; + +} + + + +// Calculate Smacs +void emAfCalculateSmacs( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +{ +(void)status; +(void)initiatorSmac; +(void)responderSmac; + +} + + + +// Dsa Sign +void emAfDsaSign( + // The result of the DSA signing operation. + EmberStatus status, + // The message and attached which includes the original message and the + // appended signature. + EmberMessageBuffer signedMessage) +{ +(void)status; +(void)signedMessage; + +} + + + +// Dsa Verify +void emAfDsaVerify( + // The result of the DSA verification operation. + EmberStatus status) +{ +(void)status; + +} + + + +// Incoming Bootload Message +void emAfIncomingBootloadMessage( + // The EUI64 of the sending node. + EmberEUI64 longId, + // The bootload message that was sent. + EmberMessageBuffer message) +{ +(void)longId; +(void)message; + +emAfIncomingBootloadMessageCallback(longId, message); +} + + + +// Bootload Transmit Complete +void emAfBootloadTransmitComplete( + // The bootload message that was sent. + EmberMessageBuffer message, + // An EmberStatus value of EMBER_SUCCESS if an ACK was received from the + // destination or EMBER_DELIVERY_FAILED if no ACK was received. + EmberStatus status) +{ +(void)message; +(void)status; + +emAfBootloadTransmitCompleteCallback(message, status); +} + + + +// Zll Network Found +void emAfZllNetworkFound( + // Return: Information about the network. + const EmberZllNetwork *networkInfo, + // Return: Device specific information. + const EmberZllDeviceInfoRecord *deviceInfo) +{ +(void)networkInfo; +(void)deviceInfo; + +} + + + +// Zll Scan Complete +void emAfZllScanComplete( + // Status of the operation. + EmberStatus status) +{ +(void)status; + +} + + + +// Zll Address Assignment +void emAfZllAddressAssignment( + // Return: Address assignment information. + const EmberZllAddressAssignment *addressInfo) +{ +(void)addressInfo; + +} + + + +// Zll Touch Link Target +void emAfZllTouchLinkTarget( + // Return: Information about the network. + const EmberZllNetwork *networkInfo) +{ +(void)networkInfo; + +} + + + +// Mac Filter Match Message +void emAfMacFilterMatchMessage( + // Return: macFilterMatchStruct. + const EmberMacFilterMatchStruct *macFilterMatchStruct) +{ +(void)macFilterMatchStruct; + +emAfMacFilterMatchMessageCallback(macFilterMatchStruct); +} + + + +// D Gp Sent +void emAfDGpSent( + // An EmberStatus value indicating success or the reason for failure. + EmberStatus status, + // The handle of the GPDF. + uint8_t gpepHandle) +{ +(void)status; +(void)gpepHandle; + +emAfDGpSentCallback(status, gpepHandle); +} + + + +// Pan Id Conflict +// Return: An EmberStatus value indicating success or the reason for failure. +void emAfPanIdConflict( + // Number of conflict reports + int8_t conflictCount) +{ +(void)conflictCount; + +} + + + +// Orphan Notification +void emAfOrphanNotification( + // The 8 byte EUI64 of the sender. + EmberEUI64 longId) +{ +(void)longId; + +} + + + +// Counter +void emAfCounter( + // Type of Counter + EmberCounterType type, + // Counter Info and value + EmberCounterInfo Info) +{ +(void)type; +(void)Info; + +emAfCounterCallback(type, Info); +} + + + +// Mac Passthrough Filter +// Return: True if mac passthrough filter was matched. False otherwise. +void emAfMacPassthroughFilter( + // Return: Mac Header of the matched messgae + uint8_t *macHeader) +{ +(void)macHeader; + +} + + + +// Generate Cbke Keys Handler283k1 +void emAfGenerateCbkeKeysHandler283k1( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKey283k1Data *ephemeralPublicKey) +{ +(void)status; +(void)ephemeralPublicKey; + +} + + + +// Calculate Smacs Handler283k1 +void emAfCalculateSmacsHandler283k1( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +{ +(void)status; +(void)initiatorSmac; +(void)responderSmac; + +} + + + +// Gpep Incoming Message +void emAfGpepIncomingMessage( + // The status of the GPDF receive. + EmberStatus status, + // The gpdLink value of the received GPDF. + uint8_t gpdLink, + // The GPDF sequence number. + uint8_t sequenceNumber, + // The address of the source GPD. + EmberGpAddress *addr, + // The security level of the received GPDF. + EmberGpSecurityLevel gpdfSecurityLevel, + // The securityKeyType used to decrypt/authenticate the incoming GPDF. + EmberGpKeyType gpdfSecurityKeyType, + // Whether the incoming GPDF had the auto-commissioning bit set. + bool autoCommissioning, + // Bidirectional information represented in bitfields, where bit0 holds + // the rxAfterTx of incoming gpdf and bit1 holds if tx queue is available + // for outgoing gpdf. + uint8_t bidirectionalInfo, + // The security frame counter of the incoming GDPF. + uint32_t gpdSecurityFrameCounter, + // The gpdCommandId of the incoming GPDF. + uint8_t gpdCommandId, + // The received MIC of the GPDF. + uint32_t mic, + // The proxy table index of the corresponding proxy table entry to the + // incoming GPDF. + uint8_t proxyTableIndex, + // The length of the GPD command payload. + uint8_t gpdCommandPayloadLength, + // The GPD command payload. + uint8_t *gpdCommandPayload) +{ +(void)status; +(void)gpdLink; +(void)sequenceNumber; +(void)addr; +(void)gpdfSecurityLevel; +(void)gpdfSecurityKeyType; +(void)autoCommissioning; +(void)bidirectionalInfo; +(void)gpdSecurityFrameCounter; +(void)gpdCommandId; +(void)mic; +(void)proxyTableIndex; +(void)gpdCommandPayloadLength; +(void)gpdCommandPayload; + +emAfGpepIncomingMessageCallback(status, gpdLink, sequenceNumber, addr, gpdfSecurityLevel, gpdfSecurityKeyType, autoCommissioning, bidirectionalInfo, gpdSecurityFrameCounter, gpdCommandId, mic, proxyTableIndex, gpdCommandPayloadLength, gpdCommandPayload); +} + + + +// Rtos Idle +// Return: True or False. +void emAfRtosIdle( + // Return: Idle time duration + uint32_t *idleTimeMs) +{ +(void)idleTimeMs; + +} + + + +// Rtos Stack Wakeup Isr +void emAfRtosStackWakeupIsr(void) +{ + +} + + + +// Radio Needs Calibrating +void emAfRadioNeedsCalibrating(void) +{ + +} + + + +// Scan Error +void emAfScanError( + // The error status of a scan + EmberStatus status) +{ +(void)status; + +} + diff --git a/silabs_examples/credentials/device/brd4164a/autogen/zigbee_stack_callback_dispatcher.h b/silabs_examples/credentials/device/brd4164a/autogen/zigbee_stack_callback_dispatcher.h new file mode 100644 index 00000000000000..cf2d271a277f10 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/autogen/zigbee_stack_callback_dispatcher.h @@ -0,0 +1,876 @@ +/*****************************************************************************/ +/** + * Copyright 2020 Silicon Laboratories, Inc. + * + *****************************************************************************/ +// +// *** Generated file. Do not edit! *** +// + +#include PLATFORM_HEADER +#ifdef EZSP_HOST +#include "stack/include/ember-types.h" +#else +#include "stack/include/ember.h" +#endif // EZSP_HOST + + + +// Incoming Message +#ifdef EZSP_HOST +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // The link quality + uint8_t lastHopLqi, + // The energy level + int8_t lastHopRssi, + // The sender of the message. + EmberNodeId sender, + // The index of a binding that matches the message + // matching binding. + uint8_t bindingIndex, + // The index of the entry in the address table + uint8_t addressIndex, + // The message length + uint8_t messageLength, + // message + uint8_t *messageContents) +; +void emAfIncomingMessageCallback( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // The link quality + uint8_t lastHopLqi, + // The energy level + int8_t lastHopRssi, + // The sender of the message. + EmberNodeId sender, + // The index of a binding that matches the message + // matching binding. + uint8_t bindingIndex, + // The index of the entry in the address table + uint8_t addressIndex, + // The message length + uint8_t messageLength, + // message + uint8_t *messageContents) +; +#else // !EZSP_HOST +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message) +; +void emAfIncomingMessageCallback( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message) +; +#endif // EZSP_HOST + + +// Message Sent +#ifdef EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // Message tag + uint8_t messageTag, + // Message delivery status + EmberStatus status, + // The length of the messageContents + uint8_t messageLength, + // Message data + uint8_t *messageContents) +; +void emAfMessageSentCallback( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // Message tag + uint8_t messageTag, + // Message delivery status + EmberStatus status, + // The length of the messageContents + uint8_t messageLength, + // Message data + uint8_t *messageContents) +; +#else // !EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message, + // Message delivery status + EmberStatus status) +; +void emAfMessageSentCallback( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message, + // Message delivery status + EmberStatus status) +; +#endif // EZSP_HOST + + + +// Trust Center Join +void emAfTrustCenterJoin( + // Joining node's id + EmberNodeId newNodeId, + // Joining node's Eui64 + EmberEUI64 newNodeEui64, + // Status + EmberDeviceUpdate status, + // Parent Id of the joining node + EmberNodeId parentOfNewNode) +; + +// Mark Buffers +void emAfMarkBuffers(void) +; +void emAfMarkBuffersCallback(void) +; + +// Packet Handoff Incoming +void emAfPacketHandoffIncoming( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +; + +// Packet Handoff Outgoing +void emAfPacketHandoffOutgoing( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +; + +// Incoming Mfg Test Message +void emAfIncomingMfgTestMessage( + uint8_t messageType, + uint8_t dataLength, + // Return: + uint8_t *data) +; + +// Override Incoming Route Record +void emAfOverrideIncomingRouteRecord( + EmberNodeId source, + EmberEUI64 sourceEui, + uint8_t relayCount, + EmberMessageBuffer header, + uint8_t relayListIndex, + // Return: + bool *consumed) +; +void emAfOverrideIncomingRouteRecordCallback( + EmberNodeId source, + EmberEUI64 sourceEui, + uint8_t relayCount, + EmberMessageBuffer header, + uint8_t relayListIndex, + // Return: + bool *consumed) +; + +// Override Append Source Route +// Return: Added bytes +void emAfOverrideAppendSourceRoute( + EmberNodeId destination, + // Return: + EmberMessageBuffer *header, + // Return: + bool *consumed) +; + +// Override Furthur Index For Source Route Add Entry +void emAfOverrideFurthurIndexForSourceRouteAddEntry( + EmberNodeId id, + // Return: + uint8_t *furtherIndex) +; +void emAfOverrideFurthurIndexForSourceRouteAddEntryCallback( + EmberNodeId id, + // Return: + uint8_t *furtherIndex) +; + +// Stack Status +void emAfStackStatus( + // Stack status + EmberStatus status) +; +void emAfStackStatusCallback( + // Stack status + EmberStatus status) +; + +// Energy Scan Result +void emAfEnergyScanResult( + // The 802.15.4 channel number that was scanned. + uint8_t channel, + // The maximum RSSI value found on the channel. + int8_t maxRssiValue) +; +void emAfEnergyScanResultCallback( + // The 802.15.4 channel number that was scanned. + uint8_t channel, + // The maximum RSSI value found on the channel. + int8_t maxRssiValue) +; + +// Network Found +void emAfNetworkFound( + // The parameters associated with the network found. + EmberZigbeeNetwork *networkFound, + // The link quality indication of the network found. + uint8_t lqi, + // The received signal strength indication of the network found. + int8_t rssi) +; +void emAfNetworkFoundCallback( + // The parameters associated with the network found. + EmberZigbeeNetwork *networkFound, + // The link quality indication of the network found. + uint8_t lqi, + // The received signal strength indication of the network found. + int8_t rssi) +; + +// Scan Complete +void emAfScanComplete( + // The channel on which the current error occurred. Undefined for the case + // of EMBER_SUCCESS. + uint8_t channel, + // The error condition that occurred on the current channel. Value will be + // EMBER_SUCCESS when the scan has completed. + EmberStatus status) +; +void emAfScanCompleteCallback( + // The channel on which the current error occurred. Undefined for the case + // of EMBER_SUCCESS. + uint8_t channel, + // The error condition that occurred on the current channel. Value will be + // EMBER_SUCCESS when the scan has completed. + EmberStatus status) +; + +// Unused Pan Id Found +void emAfUnusedPanIdFound( + // The unused panID which has been found. + EmberPanId panId, + // The channel that the unused panID was found on. + uint8_t channel) +; +void emAfUnusedPanIdFoundCallback( + // The unused panID which has been found. + EmberPanId panId, + // The channel that the unused panID was found on. + uint8_t channel) +; + +// Child Join +#ifdef EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining, + // The node ID of the child. + EmberNodeId childId, + // The EUI64 of the child. + EmberEUI64 childEui64, + // The node type of the child. + EmberNodeType childType) +; +void emAfChildJoinCallback( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining, + // The node ID of the child. + EmberNodeId childId, + // The EUI64 of the child. + EmberEUI64 childEui64, + // The node type of the child. + EmberNodeType childType) +; +#else // !EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining) +; +void emAfChildJoinCallback( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining) +; +#endif // EZSP_HOST + + + +// Duty Cycle +#ifdef EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state, + // The total number of connected end devices that are being monitored for + // duty cycle. + uint8_t totalDevices, + // Consumed duty cycles of end devices that are being monitored. The first + // entry always be the local stack's nodeId, and thus the total aggregate + // duty cycle for the device. + EmberPerDeviceDutyCycle *arrayOfDeviceDutyCycles) +; +void emAfDutyCycleCallback( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state, + // The total number of connected end devices that are being monitored for + // duty cycle. + uint8_t totalDevices, + // Consumed duty cycles of end devices that are being monitored. The first + // entry always be the local stack's nodeId, and thus the total aggregate + // duty cycle for the device. + EmberPerDeviceDutyCycle *arrayOfDeviceDutyCycles) +; +#else // !EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state) +; +void emAfDutyCycleCallback( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state) +; +#endif // EZSP_HOST + + + +// Remote Set Binding +// Return: ZDO response status. +void emAfRemoteSetBinding( + // Return: The contents of the binding entry. + EmberBindingTableEntry *entry) +; + +// Remote Delete Binding +// Return: ZDO response status +void emAfRemoteDeleteBinding( + // The index of the binding whose deletion was requested. + uint8_t index) +; + +// Poll Complete +void emAfPollComplete( + // An EmberStatus value: EMBER_SUCCESS - Data was received in response to + // the poll. EMBER_MAC_NO_DATA - No data was pending. + // EMBER_DELIVERY_FAILED - The poll message could not be sent. + // EMBER_MAC_NO_ACK_RECEIVED - The poll message was sent but not + // acknowledged by the parent. + EmberStatus status) +; +void emAfPollCompleteCallback( + // An EmberStatus value: EMBER_SUCCESS - Data was received in response to + // the poll. EMBER_MAC_NO_DATA - No data was pending. + // EMBER_DELIVERY_FAILED - The poll message could not be sent. + // EMBER_MAC_NO_ACK_RECEIVED - The poll message was sent but not + // acknowledged by the parent. + EmberStatus status) +; + +// Poll +void emAfPoll( + // The node ID of the child that is requesting data. + EmberNodeId childId, + // True if transmit expected, false otherwise. + bool transmitExpected) +; +void emAfPollCallback( + // The node ID of the child that is requesting data. + EmberNodeId childId, + // True if transmit expected, false otherwise. + bool transmitExpected) +; + +// Debug +void emAfDebug( + // debug message + EmberMessageBuffer message) +; + +// Incoming Many To One Route Request +void emAfIncomingManyToOneRouteRequest( + // The short id of the concentrator. + EmberNodeId source, + // The EUI64 of the concentrator. + EmberEUI64 longId, + // The path cost to the concentrator. The cost may decrease as additional + // route request packets for this discovery arrive, but the callback is + // made only once. + uint8_t cost) +; +void emAfIncomingManyToOneRouteRequestCallback( + // The short id of the concentrator. + EmberNodeId source, + // The EUI64 of the concentrator. + EmberEUI64 longId, + // The path cost to the concentrator. The cost may decrease as additional + // route request packets for this discovery arrive, but the callback is + // made only once. + uint8_t cost) +; + +// Incoming Route Error +void emAfIncomingRouteError( + // EMBER_SOURCE_ROUTE_FAILURE or EMBER_MANY_TO_ONE_ROUTE_FAILURE. + EmberStatus status, + // The short id of the remote node. + EmberNodeId target) +; +void emAfIncomingRouteErrorCallback( + // EMBER_SOURCE_ROUTE_FAILURE or EMBER_MANY_TO_ONE_ROUTE_FAILURE. + EmberStatus status, + // The short id of the remote node. + EmberNodeId target) +; + +// Incoming Network Status +void emAfIncomingNetworkStatus( + // One byte over-the-air error code from network status message + uint8_t errorCode, + // The short ID of the remote node + EmberNodeId target) +; +void emAfIncomingNetworkStatusCallback( + // One byte over-the-air error code from network status message + uint8_t errorCode, + // The short ID of the remote node + EmberNodeId target) +; + +// Incoming Route Record +void emAfIncomingRouteRecord( + // The source of the route record. + EmberNodeId source, + // The EUI64 of the source. + EmberEUI64 sourceEui, + // The number of relays in relayList. + uint8_t relayCount, + // Header. + EmberMessageBuffer header, + // The relay List Index. + uint8_t relayListIndex) +; +void emAfIncomingRouteRecordCallback( + // The source of the route record. + EmberNodeId source, + // The EUI64 of the source. + EmberEUI64 sourceEui, + // The number of relays in relayList. + uint8_t relayCount, + // Header. + EmberMessageBuffer header, + // The relay List Index. + uint8_t relayListIndex) +; + +// Id Conflict +void emAfIdConflict( + // The short id for which a conflict was detected + EmberNodeId conflictingId) +; +void emAfIdConflictCallback( + // The short id for which a conflict was detected + EmberNodeId conflictingId) +; + +// Mac Passthrough Message +void emAfMacPassthroughMessage( + // The type of MAC passthrough message received. + EmberMacPassthroughType messageType, + // The raw message that was received. + EmberMessageBuffer message) +; +void emAfMacPassthroughMessageCallback( + // The type of MAC passthrough message received. + EmberMacPassthroughType messageType, + // The raw message that was received. + EmberMessageBuffer message) +; + +// Stack Token Changed +void emAfStackTokenChanged( + // The address of the stack token that has changed. + uint16_t tokenAddress) +; +void emAfStackTokenChangedCallback( + // The address of the stack token that has changed. + uint16_t tokenAddress) +; + +// Timer +void emAfTimer( + // Which timer generated the callback (0 or 1). + uint8_t timerId) +; + +// Counter Rollover +void emAfCounterRollover( + // Type of Counter + EmberCounterType type) +; +void emAfCounterRolloverCallback( + // Type of Counter + EmberCounterType type) +; + +// Raw Transmit Complete +void emAfRawTransmitComplete( + // message + EmberMessageBuffer message, + // EMBER_SUCCESS if the transmission was successful, or + // EMBER_DELIVERY_FAILED if not + EmberStatus status) +; +void emAfRawTransmitCompleteCallback( + // message + EmberMessageBuffer message, + // EMBER_SUCCESS if the transmission was successful, or + // EMBER_DELIVERY_FAILED if not + EmberStatus status) +; + +// Switch Network Key +void emAfSwitchNetworkKey( + // The sequence number of the new network key. + uint8_t sequenceNumber) +; +void emAfSwitchNetworkKeyCallback( + // The sequence number of the new network key. + uint8_t sequenceNumber) +; + +// Zigbee Key Establishment +void emAfZigbeeKeyEstablishment( + // This is the IEEE address of the partner that the device successfully + // established a key with. This value is all zeros on a failure. + EmberEUI64 partner, + // This is the status indicating what was established or why the key + // establishment failed. + EmberKeyStatus status) +; +void emAfZigbeeKeyEstablishmentCallback( + // This is the IEEE address of the partner that the device successfully + // established a key with. This value is all zeros on a failure. + EmberEUI64 partner, + // This is the status indicating what was established or why the key + // establishment failed. + EmberKeyStatus status) +; + +// Generate Cbke Keys +void emAfGenerateCbkeKeys( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKeyData *ephemeralPublicKey) +; + +// Calculate Smacs +void emAfCalculateSmacs( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +; + +// Dsa Sign +void emAfDsaSign( + // The result of the DSA signing operation. + EmberStatus status, + // The message and attached which includes the original message and the + // appended signature. + EmberMessageBuffer signedMessage) +; + +// Dsa Verify +void emAfDsaVerify( + // The result of the DSA verification operation. + EmberStatus status) +; + +// Incoming Bootload Message +void emAfIncomingBootloadMessage( + // The EUI64 of the sending node. + EmberEUI64 longId, + // The bootload message that was sent. + EmberMessageBuffer message) +; +void emAfIncomingBootloadMessageCallback( + // The EUI64 of the sending node. + EmberEUI64 longId, + // The bootload message that was sent. + EmberMessageBuffer message) +; + +// Bootload Transmit Complete +void emAfBootloadTransmitComplete( + // The bootload message that was sent. + EmberMessageBuffer message, + // An EmberStatus value of EMBER_SUCCESS if an ACK was received from the + // destination or EMBER_DELIVERY_FAILED if no ACK was received. + EmberStatus status) +; +void emAfBootloadTransmitCompleteCallback( + // The bootload message that was sent. + EmberMessageBuffer message, + // An EmberStatus value of EMBER_SUCCESS if an ACK was received from the + // destination or EMBER_DELIVERY_FAILED if no ACK was received. + EmberStatus status) +; + +// Zll Network Found +void emAfZllNetworkFound( + // Return: Information about the network. + const EmberZllNetwork *networkInfo, + // Return: Device specific information. + const EmberZllDeviceInfoRecord *deviceInfo) +; + +// Zll Scan Complete +void emAfZllScanComplete( + // Status of the operation. + EmberStatus status) +; + +// Zll Address Assignment +void emAfZllAddressAssignment( + // Return: Address assignment information. + const EmberZllAddressAssignment *addressInfo) +; + +// Zll Touch Link Target +void emAfZllTouchLinkTarget( + // Return: Information about the network. + const EmberZllNetwork *networkInfo) +; + +// Mac Filter Match Message +void emAfMacFilterMatchMessage( + // Return: macFilterMatchStruct. + const EmberMacFilterMatchStruct *macFilterMatchStruct) +; +void emAfMacFilterMatchMessageCallback( + // Return: macFilterMatchStruct. + const EmberMacFilterMatchStruct *macFilterMatchStruct) +; + +// D Gp Sent +void emAfDGpSent( + // An EmberStatus value indicating success or the reason for failure. + EmberStatus status, + // The handle of the GPDF. + uint8_t gpepHandle) +; +void emAfDGpSentCallback( + // An EmberStatus value indicating success or the reason for failure. + EmberStatus status, + // The handle of the GPDF. + uint8_t gpepHandle) +; + +// Pan Id Conflict +// Return: An EmberStatus value indicating success or the reason for failure. +void emAfPanIdConflict( + // Number of conflict reports + int8_t conflictCount) +; + +// Orphan Notification +void emAfOrphanNotification( + // The 8 byte EUI64 of the sender. + EmberEUI64 longId) +; + +// Counter +void emAfCounter( + // Type of Counter + EmberCounterType type, + // Counter Info and value + EmberCounterInfo Info) +; +void emAfCounterCallback( + // Type of Counter + EmberCounterType type, + // Counter Info and value + EmberCounterInfo Info) +; + +// Mac Passthrough Filter +// Return: True if mac passthrough filter was matched. False otherwise. +void emAfMacPassthroughFilter( + // Return: Mac Header of the matched messgae + uint8_t *macHeader) +; + +// Generate Cbke Keys Handler283k1 +void emAfGenerateCbkeKeysHandler283k1( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKey283k1Data *ephemeralPublicKey) +; + +// Calculate Smacs Handler283k1 +void emAfCalculateSmacsHandler283k1( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +; + +// Gpep Incoming Message +void emAfGpepIncomingMessage( + // The status of the GPDF receive. + EmberStatus status, + // The gpdLink value of the received GPDF. + uint8_t gpdLink, + // The GPDF sequence number. + uint8_t sequenceNumber, + // The address of the source GPD. + EmberGpAddress *addr, + // The security level of the received GPDF. + EmberGpSecurityLevel gpdfSecurityLevel, + // The securityKeyType used to decrypt/authenticate the incoming GPDF. + EmberGpKeyType gpdfSecurityKeyType, + // Whether the incoming GPDF had the auto-commissioning bit set. + bool autoCommissioning, + // Bidirectional information represented in bitfields, where bit0 holds + // the rxAfterTx of incoming gpdf and bit1 holds if tx queue is available + // for outgoing gpdf. + uint8_t bidirectionalInfo, + // The security frame counter of the incoming GDPF. + uint32_t gpdSecurityFrameCounter, + // The gpdCommandId of the incoming GPDF. + uint8_t gpdCommandId, + // The received MIC of the GPDF. + uint32_t mic, + // The proxy table index of the corresponding proxy table entry to the + // incoming GPDF. + uint8_t proxyTableIndex, + // The length of the GPD command payload. + uint8_t gpdCommandPayloadLength, + // The GPD command payload. + uint8_t *gpdCommandPayload) +; +void emAfGpepIncomingMessageCallback( + // The status of the GPDF receive. + EmberStatus status, + // The gpdLink value of the received GPDF. + uint8_t gpdLink, + // The GPDF sequence number. + uint8_t sequenceNumber, + // The address of the source GPD. + EmberGpAddress *addr, + // The security level of the received GPDF. + EmberGpSecurityLevel gpdfSecurityLevel, + // The securityKeyType used to decrypt/authenticate the incoming GPDF. + EmberGpKeyType gpdfSecurityKeyType, + // Whether the incoming GPDF had the auto-commissioning bit set. + bool autoCommissioning, + // Bidirectional information represented in bitfields, where bit0 holds + // the rxAfterTx of incoming gpdf and bit1 holds if tx queue is available + // for outgoing gpdf. + uint8_t bidirectionalInfo, + // The security frame counter of the incoming GDPF. + uint32_t gpdSecurityFrameCounter, + // The gpdCommandId of the incoming GPDF. + uint8_t gpdCommandId, + // The received MIC of the GPDF. + uint32_t mic, + // The proxy table index of the corresponding proxy table entry to the + // incoming GPDF. + uint8_t proxyTableIndex, + // The length of the GPD command payload. + uint8_t gpdCommandPayloadLength, + // The GPD command payload. + uint8_t *gpdCommandPayload) +; + +// Rtos Idle +// Return: True or False. +void emAfRtosIdle( + // Return: Idle time duration + uint32_t *idleTimeMs) +; + +// Rtos Stack Wakeup Isr +void emAfRtosStackWakeupIsr(void) +; + +// Radio Needs Calibrating +void emAfRadioNeedsCalibrating(void) +; + +// Scan Error +void emAfScanError( + // The error status of a scan + EmberStatus status) +; diff --git a/silabs_examples/credentials/device/brd4164a/config/SEGGER_RTT_Conf.h b/silabs_examples/credentials/device/brd4164a/config/SEGGER_RTT_Conf.h new file mode 100644 index 00000000000000..ca8df42d9c73a7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/SEGGER_RTT_Conf.h @@ -0,0 +1,417 @@ +/********************************************************************* +* SEGGER Microcontroller GmbH * +* The Embedded Experts * +********************************************************************** +* * +* (c) 1995 - 2021 SEGGER Microcontroller GmbH * +* * +* www.segger.com Support: support@segger.com * +* * +********************************************************************** +* * +* SEGGER SystemView * Real-time application analysis * +* * +********************************************************************** +* * +* All rights reserved. * +* * +* SEGGER strongly recommends to not make any changes * +* to or modify the source code of this software in order to stay * +* compatible with the SystemView and RTT protocol, and J-Link. * +* * +* Redistribution and use in source and binary forms, with or * +* without modification, are permitted provided that the following * +* condition is met: * +* * +* o Redistributions of source code must retain the above copyright * +* notice, this condition and the following disclaimer. * +* * +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND * +* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, * +* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * +* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * +* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR * +* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * +* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * +* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * +* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * +* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * +* DAMAGE. * +* * +********************************************************************** +* * +* SystemView version: 3.30 * +* * +********************************************************************** +---------------------------END-OF-HEADER------------------------------ +File : SEGGER_RTT_Conf.h +Purpose : Implementation of SEGGER real-time transfer (RTT) which + allows real-time communication on targets which support + debugger memory accesses while the CPU is running. +Revision: $Rev: 21386 $ + +*/ + +#ifndef SEGGER_RTT_CONF_H +#define SEGGER_RTT_CONF_H + +#ifdef __IAR_SYSTEMS_ICC__ + #include +#endif + +/********************************************************************* + * + * Defines, configurable + * + ********************************************************************** + */ +#ifndef SEGGER_RTT_MAX_NUM_UP_BUFFERS + #define SEGGER_RTT_MAX_NUM_UP_BUFFERS (3) // Max. number of up-buffers (T->H) available on this target (Default: 3) +#endif + +#ifndef SEGGER_RTT_MAX_NUM_DOWN_BUFFERS + #define SEGGER_RTT_MAX_NUM_DOWN_BUFFERS (3) // Max. number of down-buffers (H->T) available on this target (Default: 3) +#endif + +#ifndef BUFFER_SIZE_UP + #define BUFFER_SIZE_UP (1024) // Size of the buffer for terminal output of target, up to host (Default: 1k) +#endif + +#ifndef BUFFER_SIZE_DOWN + #define BUFFER_SIZE_DOWN (1024) // Size of the buffer for terminal input to target from host (Usually keyboard input) (Default: 16) +#endif + +#ifndef SEGGER_RTT_PRINTF_BUFFER_SIZE + #define SEGGER_RTT_PRINTF_BUFFER_SIZE (64u) // Size of buffer for RTT printf to bulk-send chars via RTT (Default: 64) +#endif + +#ifndef SEGGER_RTT_MODE_DEFAULT + #define SEGGER_RTT_MODE_DEFAULT SEGGER_RTT_MODE_NO_BLOCK_SKIP // Mode for pre-initialized terminal channel (buffer 0) +#endif + +/********************************************************************* + * + * RTT memcpy configuration + * + * memcpy() is good for large amounts of data, + * but the overhead is big for small amounts, which are usually stored via RTT. + * With SEGGER_RTT_MEMCPY_USE_BYTELOOP a simple byte loop can be used instead. + * + * SEGGER_RTT_MEMCPY() can be used to replace standard memcpy() in RTT functions. + * This is may be required with memory access restrictions, + * such as on Cortex-A devices with MMU. + */ +#ifndef SEGGER_RTT_MEMCPY_USE_BYTELOOP + #define SEGGER_RTT_MEMCPY_USE_BYTELOOP 0 // 0: Use memcpy/SEGGER_RTT_MEMCPY, 1: Use a simple byte-loop +#endif +// +// Example definition of SEGGER_RTT_MEMCPY to external memcpy with GCC toolchains and Cortex-A targets +// +//#if ((defined __SES_ARM) || (defined __CROSSWORKS_ARM) || (defined __GNUC__)) && (defined (__ARM_ARCH_7A__)) +// #define SEGGER_RTT_MEMCPY(pDest, pSrc, NumBytes) SEGGER_memcpy((pDest), (pSrc), (NumBytes)) +//#endif + +// +// Target is not allowed to perform other RTT operations while string still has not been stored completely. +// Otherwise we would probably end up with a mixed string in the buffer. +// If using RTT from within interrupts, multiple tasks or multi processors, define the SEGGER_RTT_LOCK() and SEGGER_RTT_UNLOCK() function here. +// +// SEGGER_RTT_MAX_INTERRUPT_PRIORITY can be used in the sample lock routines on Cortex-M3/4. +// Make sure to mask all interrupts which can send RTT data, i.e. generate SystemView events, or cause task switches. +// When high-priority interrupts must not be masked while sending RTT data, SEGGER_RTT_MAX_INTERRUPT_PRIORITY needs to be adjusted accordingly. +// (Higher priority = lower priority number) +// Default value for embOS: 128u +// Default configuration in FreeRTOS: configMAX_SYSCALL_INTERRUPT_PRIORITY: ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) +// In case of doubt mask all interrupts: 1 << (8 - BASEPRI_PRIO_BITS) i.e. 1 << 5 when 3 bits are implemented in NVIC +// or define SEGGER_RTT_LOCK() to completely disable interrupts. +// +#ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) // Interrupt priority to lock on SEGGER_RTT_LOCK on Cortex-M3/4 (Default: 0x20) +#endif + +/********************************************************************* + * + * RTT lock configuration for SEGGER Embedded Studio, + * Rowley CrossStudio and GCC + */ +#if ((defined(__SES_ARM) || defined(__SES_RISCV) || defined(__CROSSWORKS_ARM) || defined(__GNUC__) || defined(__clang__)) && !defined (__CC_ARM) && !defined(WIN32)) + #if (defined(__ARM_ARCH_6M__) || defined(__ARM_ARCH_8M_BASE__)) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("mrs %0, primask \n\t" \ + "movs r1, #1 \n\t" \ + "msr primask, r1 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : \ + : "r1", "cc" \ + ); + + #define SEGGER_RTT_UNLOCK() __asm volatile ("msr primask, %0 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : \ + ); \ + } + #elif (defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_8M_MAIN__)) + #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) + #endif + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("mrs %0, basepri \n\t" \ + "mov r1, %1 \n\t" \ + "msr basepri, r1 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : "i" (SEGGER_RTT_MAX_INTERRUPT_PRIORITY) \ + : "r1", "cc" \ + ); + + #define SEGGER_RTT_UNLOCK() __asm volatile ("msr basepri, %0 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : \ + ); \ + } + + #elif defined(__ARM_ARCH_7A__) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("mrs r1, CPSR \n\t" \ + "mov %0, r1 \n\t" \ + "orr r1, r1, #0xC0 \n\t" \ + "msr CPSR_c, r1 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : \ + : "r1", "cc" \ + ); + + #define SEGGER_RTT_UNLOCK() __asm volatile ("mov r0, %0 \n\t" \ + "mrs r1, CPSR \n\t" \ + "bic r1, r1, #0xC0 \n\t" \ + "and r0, r0, #0xC0 \n\t" \ + "orr r1, r1, r0 \n\t" \ + "msr CPSR_c, r1 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : "r0", "r1", "cc" \ + ); \ + } + #elif defined(__riscv) || defined(__riscv_xlen) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("csrr %0, mstatus \n\t" \ + "csrci mstatus, 8 \n\t" \ + "andi %0, %0, 8 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : \ + : \ + ); + #define SEGGER_RTT_UNLOCK() __asm volatile ("csrr a1, mstatus \n\t" \ + "or %0, %0, a1 \n\t" \ + "csrs mstatus, %0 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : "a1" \ + ); \ + } + #else + #define SEGGER_RTT_LOCK() + #define SEGGER_RTT_UNLOCK() + #endif +#endif + +/********************************************************************* + * + * RTT lock configuration for IAR EWARM + */ +#ifdef __ICCARM__ + #if (defined (__ARM6M__) && (__CORE__ == __ARM6M__)) || \ + (defined (__ARM8M_BASELINE__) && (__CORE__ == __ARM8M_BASELINE__)) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_PRIMASK(); \ + __set_PRIMASK(1); + + #define SEGGER_RTT_UNLOCK() __set_PRIMASK(_SEGGER_RTT__LockState); \ + } + #elif (defined (__ARM7EM__) && (__CORE__ == __ARM7EM__)) || \ + (defined (__ARM7M__) && (__CORE__ == __ARM7M__)) || \ + (defined (__ARM8M_MAINLINE__) && (__CORE__ == __ARM8M_MAINLINE__)) || \ + (defined (__ARM8M_MAINLINE__) && (__CORE__ == __ARM8M_MAINLINE__)) + #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) + #endif + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_BASEPRI(); \ + __set_BASEPRI(SEGGER_RTT_MAX_INTERRUPT_PRIORITY); + + #define SEGGER_RTT_UNLOCK() __set_BASEPRI(_SEGGER_RTT__LockState); \ + } + #elif (defined (__ARM7A__) && (__CORE__ == __ARM7A__)) || \ + (defined (__ARM7R__) && (__CORE__ == __ARM7R__)) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("mrs r1, CPSR \n\t" \ + "mov %0, r1 \n\t" \ + "orr r1, r1, #0xC0 \n\t" \ + "msr CPSR_c, r1 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : \ + : "r1", "cc" \ + ); + #define SEGGER_RTT_UNLOCK() __asm volatile ("mov r0, %0 \n\t" \ + "mrs r1, CPSR \n\t" \ + "bic r1, r1, #0xC0 \n\t" \ + "and r0, r0, #0xC0 \n\t" \ + "orr r1, r1, r0 \n\t" \ + "msr CPSR_c, r1 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : "r0", "r1", "cc" \ + ); \ + } + #endif +#endif + +/********************************************************************* + * + * RTT lock configuration for IAR RX + */ +#ifdef __ICCRX__ + #define SEGGER_RTT_LOCK() { \ + unsigned long _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_interrupt_state(); \ + __disable_interrupt(); + + #define SEGGER_RTT_UNLOCK() __set_interrupt_state(_SEGGER_RTT__LockState); \ + } +#endif + +/********************************************************************* + * + * RTT lock configuration for IAR RL78 + */ +#ifdef __ICCRL78__ + #define SEGGER_RTT_LOCK() { \ + __istate_t _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_interrupt_state(); \ + __disable_interrupt(); + + #define SEGGER_RTT_UNLOCK() __set_interrupt_state(_SEGGER_RTT__LockState); \ + } +#endif + +/********************************************************************* + * + * RTT lock configuration for KEIL ARM + */ +#ifdef __CC_ARM + #if (defined __TARGET_ARCH_6S_M) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + register unsigned char _SEGGER_RTT__PRIMASK __asm( "primask"); \ + _SEGGER_RTT__LockState = _SEGGER_RTT__PRIMASK; \ + _SEGGER_RTT__PRIMASK = 1u; \ + __schedule_barrier(); + + #define SEGGER_RTT_UNLOCK() _SEGGER_RTT__PRIMASK = _SEGGER_RTT__LockState; \ + __schedule_barrier(); \ + } + #elif (defined(__TARGET_ARCH_7_M) || defined(__TARGET_ARCH_7E_M)) + #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) + #endif + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + register unsigned char BASEPRI __asm("basepri"); \ + _SEGGER_RTT__LockState = BASEPRI; \ + BASEPRI = SEGGER_RTT_MAX_INTERRUPT_PRIORITY; \ + __schedule_barrier(); + + #define SEGGER_RTT_UNLOCK() BASEPRI = _SEGGER_RTT__LockState; \ + __schedule_barrier(); \ + } + #endif +#endif + +/********************************************************************* + * + * RTT lock configuration for TI ARM + */ +#ifdef __TI_ARM__ + #if defined (__TI_ARM_V6M0__) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_PRIMASK(); \ + __set_PRIMASK(1); + + #define SEGGER_RTT_UNLOCK() __set_PRIMASK(_SEGGER_RTT__LockState); \ + } + #elif (defined (__TI_ARM_V7M3__) || defined (__TI_ARM_V7M4__)) + #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) + #endif + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = _set_interrupt_priority(SEGGER_RTT_MAX_INTERRUPT_PRIORITY); + + #define SEGGER_RTT_UNLOCK() _set_interrupt_priority(_SEGGER_RTT__LockState); \ + } + #endif +#endif + +/********************************************************************* + * + * RTT lock configuration for CCRX + */ +#ifdef __RX + #include + #define SEGGER_RTT_LOCK() { \ + unsigned long _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = get_psw() & 0x010000; \ + clrpsw_i(); + + #define SEGGER_RTT_UNLOCK() set_psw(get_psw() | _SEGGER_RTT__LockState); \ + } +#endif + +/********************************************************************* + * + * RTT lock configuration for embOS Simulation on Windows + * (Can also be used for generic RTT locking with embOS) + */ +#if defined(WIN32) || defined(SEGGER_RTT_LOCK_EMBOS) + +void OS_SIM_EnterCriticalSection(void); +void OS_SIM_LeaveCriticalSection(void); + +#define SEGGER_RTT_LOCK() { \ + OS_SIM_EnterCriticalSection(); + +#define SEGGER_RTT_UNLOCK() OS_SIM_LeaveCriticalSection(); \ + } +#endif + +/********************************************************************* + * + * RTT lock configuration fallback + */ +#ifndef SEGGER_RTT_LOCK + #define SEGGER_RTT_LOCK() // Lock RTT (nestable) (i.e. disable interrupts) +#endif + +#ifndef SEGGER_RTT_UNLOCK + #define SEGGER_RTT_UNLOCK() // Unlock RTT (nestable) (i.e. enable previous interrupt lock state) +#endif + +/********************************************************************* + * + * RTT control block configuration + */ +#define SEGGER_RTT_ALIGNMENT 1024 + +#endif +/*************************** End of file ****************************/ diff --git a/silabs_examples/credentials/device/brd4164a/config/app_properties_config.h b/silabs_examples/credentials/device/brd4164a/config/app_properties_config.h new file mode 100644 index 00000000000000..6a6b976666a554 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/app_properties_config.h @@ -0,0 +1,65 @@ +/***************************************************************************//** + * @file + * @brief Application Properties Header File + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef APP_PROPERTIES_CONFIG_H +#define APP_PROPERTIES_CONFIG_H + +#include "sl_application_type.h" + +// <<< Use Configuration Wizard in Context Menu >>> + +// App Properties settings + +// Type of signature this application is signed with +// Default: APPLICATION_SIGNATURE_NONE(0) +#define SL_APPLICATION_SIGNATURE 0 + +// Location of the signature +// Default: 0xFFFFFFFF +#define SL_APPLICATION_SIGNATURE_LOCATION 0xFFFFFFFF + +// Bitfield representing type of application +#define SL_APPLICATION_TYPE APPLICATION_TYPE + +// Version number for this application +// <0-4294967295:1> +// Default: 1 [0-4294967295] +#define SL_APPLICATION_VERSION 1 + +// Capabilities of this application +// Default: 0 +#define SL_APPLICATION_CAPABILITIES 0 + +//Product ID of the device for which the application is built +#define SL_APPLICATION_PRODUCT_ID { 0 } + +// + +#endif // APP_PROPERTIES_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4164a/config/btl_interface_cfg.h b/silabs_examples/credentials/device/brd4164a/config/btl_interface_cfg.h new file mode 100644 index 00000000000000..eca01575f6cda2 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/btl_interface_cfg.h @@ -0,0 +1,44 @@ +/***************************************************************************//** + * @file + * @brief Configuration header of Bootloader Interface + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +#ifndef BTL_INTERFACE_CFG_H +#define BTL_INTERFACE_CFG_H + +#if !defined(BOOTLOADER_APPLOADER) + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_1) +#include "btl_interface_cfg_s2c1.h" +#endif + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_2) +#include "btl_interface_cfg_s2c2.h" +#endif + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_3) +#include "btl_interface_cfg_s2c3.h" +#endif + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_4) +#include "btl_interface_cfg_s2c4.h" +#endif + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_5) +#define BOOTLOADER_DISABLE_OLD_BOOTLOADER_MITIGATION 1 +#endif + +#endif // !BOOTLOADER_APPLOADER + +#endif // BTL_INTERFACE_CFG_H diff --git a/silabs_examples/credentials/device/brd4164a/config/emlib_core_debug_config.h b/silabs_examples/credentials/device/brd4164a/config/emlib_core_debug_config.h new file mode 100644 index 00000000000000..50dbbed9bc4f59 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/emlib_core_debug_config.h @@ -0,0 +1,46 @@ +/***************************************************************************//** + * @file + * @brief emlib_core Configuration + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef EM_CORE_DEBUG_CONFIG_H +#define EM_CORE_DEBUG_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Core Configuration + +// Enables measuring of interrupt disable time for debugging purposes. +// Default: 0 +// If Enabled, either cycle_counter or systemview component must be added to project. +#define SL_EMLIB_CORE_ENABLE_INTERRUPT_DISABLED_TIMING 0 + +// + +// <<< end of configuration section >>> +#endif // EM_CORE_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4164a/config/legacy_common_ash_config.h b/silabs_examples/credentials/device/brd4164a/config/legacy_common_ash_config.h new file mode 100644 index 00000000000000..ce1ad5d7ad4eb4 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/legacy_common_ash_config.h @@ -0,0 +1,43 @@ +/***************************************************************************//** + * @file + * @brief Legacy Host ASH configuration file. + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef LEGACY_NCP_ASH_CONFIG_H +#define LEGACY_NCP_ASH_CONFIG_H + +// The USART used for ASH communications in COM_Port_t format, as defined in platform/service/legacy_hal/inc/serial.h (see defined names for USART ports) <-1..3:1> +// Default: (-1) +// The default value of -1 causes the ASH code to try to use the USART assigned to the "VCOM" instance of SL_IOSTREAM_USART. Otherwise the value is passed to Legacy HAL, which attempts to find an instance of SL_IOSTREAM_USART which uses that USART. +#define LEGACY_NCP_ASH_SERIAL_PORT (-1) + +#endif /* LEGACY_NCP_ASH_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4164a/config/legacy_hal_config.h b/silabs_examples/credentials/device/brd4164a/config/legacy_hal_config.h new file mode 100644 index 00000000000000..e3386e94094dc0 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/legacy_hal_config.h @@ -0,0 +1,47 @@ +/***************************************************************************//** + * @file + * @brief Legacy HAL configuration file. + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef LEGACY_HAL_CONFIG_H +#define LEGACY_HAL_CONFIG_H + +// Translate button interrupt callback +// When the Simple Button component is included, it provides a callback for +// buttons configured in interrupt mode. When this option is 1, Legacy HAL +// will try to consume that callback and translate it to "halButtonIsr", +// the legacy callback. If anything else in the application consumes the +// Simple button callback, it will override Legacy HAL's version. +// Default: 1 +#define LEGACY_HAL_TRANSLATE_BUTTON_INTERRUPT (1) + +#endif /* LEGACY_HAL_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4164a/config/mbedtls_config.h b/silabs_examples/credentials/device/brd4164a/config/mbedtls_config.h new file mode 100644 index 00000000000000..44ce8ed553755a --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/mbedtls_config.h @@ -0,0 +1,72 @@ +#ifndef MBEDTLS_CONFIG_H +#define MBEDTLS_CONFIG_H + +// Include the autogenerated mbedtls configuration file +#include "mbedtls_config_autogen.h" + +// <<< Use Configuration Wizard in Context Menu >>> +// TLS/DTLS configuration + +// Complete list of ciphersuites to use, in order of preference. +// Default: MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8 +// Complete list of ciphersuites to use, in order of preference. +// The value of this configuration should be updated for the application needs. +#define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8 + +// Maximum TLS/DTLS fragment length in bytes (input). +// Default: 768 +// The size configured here determines the size of the internal I/O +// buffer used in mbedTLS when receiving data. +#define SL_MBEDTLS_SSL_IN_CONTENT_LEN 768 + +// Maximum TLS/DTLS fragment length in bytes (output). +// Default: 768 +// The size configured here determines the size of the internal I/O +// buffer used in mbedTLS when sending data. +#define SL_MBEDTLS_SSL_OUT_CONTENT_LEN 768 + +// Enable support for RFC 6066 max_fragment_length extension in SSL. +// Default: 1 +// Enable support for RFC 6066 max_fragment_length extension in SSL. +#define SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH 1 + +// Enable support for exporting key block and master secret. +// Default: 1 +// Enable support for exporting key block and master secret. +// This is required for certain users of TLS, e.g. EAP-TLS. +#define SL_MBEDTLS_SSL_EXPORT_KEYS 1 + +// Enable the PSK based ciphersuite modes in SSL / TLS. +// Default: 0 +// Enable the PSK based ciphersuite modes in SSL / TLS. +#define SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED 0 + +// Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS. +// Default: 0 +// Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS. +#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED 0 + +// Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS. +// Default: 0 +// Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS. +#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED 0 + +// Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS. +// Default: 0 +// Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS. +#define SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED 0 + +// +// <<< end of configuration section >>> + +// Include transformation logic to apply CMSIS-config configuration options to +// the correct Mbed TLS / PSA Crypto options. +#include "sl_mbedtls_config_transform_autogen.h" + +// Custom defines can be placed here before check_config.h is included. + +#include "mbedtls/config_psa.h" + +#include "mbedtls/check_config.h" + +#endif diff --git a/silabs_examples/credentials/device/brd4164a/config/nvm3_default_config.h b/silabs_examples/credentials/device/brd4164a/config/nvm3_default_config.h new file mode 100644 index 00000000000000..ba2982c27c05b5 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/nvm3_default_config.h @@ -0,0 +1,45 @@ +#ifndef NVM3_DEFAULT_CONFIG_H +#define NVM3_DEFAULT_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// NVM3 Default Instance Configuration + +#ifndef NVM3_DEFAULT_CACHE_SIZE +// NVM3 Default Instance Cache Size +// Number of NVM3 objects to cache. To reduce access times this number +// should be equal to or higher than the number of NVM3 objects in the +// default NVM3 instance. +// Default: 200 +#define NVM3_DEFAULT_CACHE_SIZE 200 +#endif + +#ifndef NVM3_DEFAULT_MAX_OBJECT_SIZE +// NVM3 Default Instance Max Object Size +// Max NVM3 object size that can be stored. +// Default: 254 +#define NVM3_DEFAULT_MAX_OBJECT_SIZE 254 +#endif + +#ifndef NVM3_DEFAULT_REPACK_HEADROOM +// NVM3 Default Instance User Repack Headroom +// Headroom determining how many bytes below the forced repack limit the user +// repack limit should be placed. The default is 0, which means the user and +// forced repack limits are equal. +// Default: 0 +#define NVM3_DEFAULT_REPACK_HEADROOM 0 +#endif + +#ifndef NVM3_DEFAULT_NVM_SIZE +// NVM3 Default Instance Size +// Size of the NVM3 storage region in flash. This size should be aligned with +// the flash page size of the device. +// Default: 36864 +#define NVM3_DEFAULT_NVM_SIZE 36864 +#endif + +// + +// <<< end of configuration section >>> + +#endif // NVM3_DEFAULT_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4164a/config/psa_crypto_config.h b/silabs_examples/credentials/device/brd4164a/config/psa_crypto_config.h new file mode 100644 index 00000000000000..557606d10b524d --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/psa_crypto_config.h @@ -0,0 +1,47 @@ +#ifndef PSA_CRYPTO_CONFIG_H +#define PSA_CRYPTO_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// PSA User Maximum Open Keys Count <0-128> +// Maximum amount of keys that the user application will have open +// simultaneously. In context of PSA Crypto, an open key means any key +// either stored in RAM (lifetime set to PSA_KEY_LIFETIME_VOLATILE), or +// used as part of a cryptographic operation. +// When using a key for a multi-part (setup/update/finish) operation, a key +// is considered to be open from the moment the operation is successfully +// setup, until it finishes or aborts. +// When an application tries to open more keys than this value accounts for, +// the PSA API may return PSA_ERROR_INSUFFICIENT_MEMORY. Keep in mind that +// other software included in the application (e.g. wireless protocol stacks) +// also can have a need to have open keys in PSA Crypto. This could lead to +// a race condition when the application key slot count is set too low for +// the actual usage of the application, as a software stack may not fail +// gracefully in case an application opens more than its declared amount of +// keys, thereby precluding the stack from functioning. +// Default: 4 +#define SL_PSA_KEY_USER_SLOT_COUNT (4) + +// PSA Maximum User Persistent Keys Count <0-1024> +// Maximum amount of keys (or other files) that can be stored persistently +// by the application through the PSA interface, when persistent storage +// support for PSA Crypto is included in the project. +// Due to caching logic, this setting does have an impact on static RAM usage. +// Note that this number is added to the potential requirements from other +// software components in the project, such that the total amount of keys +// which can be stored through the ITS backend can be higher than what is +// configured here. +// +// WARNING: When changing this setting on an application that is already +// deployed, and thus will get the change through an application upgrade, +// care should be taken to ensure that the setting is only ever increased, +// and never decreased. Decreasing this setting might cause previously +// stored keys/files to become inaccessible. +// Default: 128 +#define SL_PSA_ITS_USER_MAX_FILES (128) +// <<< end of configuration section >>> + +// Include the autogenerated PSA Crypto configuration file +#include "psa_crypto_config_autogen.h" + +#endif // PSA_CRYPTO_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_board_control_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_board_control_config.h new file mode 100644 index 00000000000000..e75b074f15e169 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_board_control_config.h @@ -0,0 +1,76 @@ +/***************************************************************************//** + * @file + * @brief Board Control + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_BOARD_CONTROL_CONFIG_H +#define SL_BOARD_CONTROL_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Enable Virtual COM UART +// Default: 0 +#define SL_BOARD_ENABLE_VCOM 1 + +// Enable Display +// Default: 0 +#define SL_BOARD_ENABLE_DISPLAY 0 + +// Enable Relative Humidity and Temperature sensor +// Default: 0 +#define SL_BOARD_ENABLE_SENSOR_RHT 0 + +// Disable SPI Flash +// Default: 1 +#define SL_BOARD_DISABLE_MEMORY_SPI 1 + +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> + +// SL_BOARD_ENABLE_VCOM +// $[GPIO_SL_BOARD_ENABLE_VCOM] +#define SL_BOARD_ENABLE_VCOM_PORT gpioPortA +#define SL_BOARD_ENABLE_VCOM_PIN 5 +// [GPIO_SL_BOARD_ENABLE_VCOM]$ + +// SL_BOARD_ENABLE_DISPLAY +// $[GPIO_SL_BOARD_ENABLE_DISPLAY] +#define SL_BOARD_ENABLE_DISPLAY_PORT gpioPortD +#define SL_BOARD_ENABLE_DISPLAY_PIN 15 +// [GPIO_SL_BOARD_ENABLE_DISPLAY]$ + +// SL_BOARD_ENABLE_SENSOR_RHT +// $[GPIO_SL_BOARD_ENABLE_SENSOR_RHT] +#define SL_BOARD_ENABLE_SENSOR_RHT_PORT gpioPortB +#define SL_BOARD_ENABLE_SENSOR_RHT_PIN 10 +// [GPIO_SL_BOARD_ENABLE_SENSOR_RHT]$ + +// <<< sl:end pin_tool >>> + +#endif // SL_BOARD_CONTROL_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_custom_manufacturing_token_header.h b/silabs_examples/credentials/device/brd4164a/config/sl_custom_manufacturing_token_header.h new file mode 100644 index 00000000000000..08b66580998c71 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_custom_manufacturing_token_header.h @@ -0,0 +1,84 @@ +/***************************************************************************//** + * @file + * @brief Custom manufacturing token header + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +/***************************************************************************//** + * Custom Manufacturing Token Usage Examples + * + * The macro DEFINE_MFG_TOKEN() should be used when instantiating a + * manufacturing token. Refer to the list of *_LOCATION defines to + * see what memory is allocated and what memory is unused/available. + * + * The _LOCATION is or'ed with either USERDATA_TOKENS or LOCKBITSDATA_TOKENS + * to control which segment of memory the token is placed in. + * + * REMEMBER: By definition, manufacturing tokens exist at fixed addresses. + * Tokens should not overlap. + * + * Here is a basic example of a manufacturing token header file: + * + * Note that the address used here is just an example. It places the 8 bytes + * in the middle of the USERDATA space on an EFR32MG12P433F1024GM68. + * To review addresses of existing tokens when choosing a new address, refer + * to an961-custom-nodes-efr32.pdf and the files + * platform/service/token_manager/inc/sl_token_manufacturing_series_1.h + * platform/service/token_manager/inc/sl_token_manufacturing_series_2.h + * + * @code + * #define CREATOR_MFG_EXAMPLE 0x4242 + * #ifdef DEFINETYPES + * typedef uint8_t tokTypeMfgExample[8]; + * #endif + * #ifdef DEFINETOKENS + * #define MFG_EXAMPLE_LOCATION (USERDATA_TOKENS | 0x2000) + * DEFINE_MFG_TOKEN(MFG_EXAMPLE, + * tokTypeMfgExample, + * MFG_EXAMPLE_LOCATION, + * {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}) + * #endif + * @endcode + * + * Since this file contains both the typedefs and the token defs, there are + * two \#defines used to select which one is needed when this file is included. + * \#define DEFINETYPES is used to select the type definitions and + * \#define DEFINETOKENS is used to select the token definitions. + * + * To use this example: + * Ensure the Token Manager's configuration in Studio + * has enabled Custom Manufacuturing Tokens. + * + * Ensure your application has: + * #include "sl_token_api.h" + * #include "sl_token_manager.h" + * + * This code will read the token data: + * uint8_t data[8]; + * sl_token_get_data(TOKEN_MFG_EXAMPLE, 0, &data, sizeof(data)); + ******************************************************************************/ + +/* + #define CREATOR_MFG_EXAMPLE 0x4242 + #ifdef DEFINETYPES + typedef uint8_t tokTypeMfgExample[8]; + #endif + #ifdef DEFINETOKENS + #define MFG_EXAMPLE_LOCATION (USERDATA_TOKENS | 0x2000) + DEFINE_MFG_TOKEN(MFG_EXAMPLE, + tokTypeMfgExample, + MFG_EXAMPLE_LOCATION, + {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}) + #endif + */ diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_custom_token_header.h b/silabs_examples/credentials/device/brd4164a/config/sl_custom_token_header.h new file mode 100644 index 00000000000000..abfe057a05ee5b --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_custom_token_header.h @@ -0,0 +1,86 @@ +/***************************************************************************//** + * @file + * @brief Custom token header + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +/***************************************************************************//** + * Custom Tokens Usage Examples + * + * #define BASICTOKEN1_DEFAULT 0xA5F0 + * #define BASICTOKEN2_DEFAULT { { 0xAA, 0xBB, 0xCC }, 0xDDDD } + * #define BASICTOKEN3_DEFAULT { { 0 } } + * #define COUNTERTOKEN1_DEFAULT 0 + * #define COUNTERTOKEN2_DEFAULT 0xCCCCCCCC + * #define INDEXEDTOKEN1_DEFAULT 0 + * #define INDEXEDTOKEN2_DEFAULT { 0xDDDD } + * #define INDEXEDTOKEN3_DEFAULT { 0xAA, 0xBBBB, { 0x00, 0x11, 0x22 }, 0xCC } + * + * #ifdef DEFINETYPES + * typedef uint16_t tokTypeBasicToken1; + * typedef struct { + * uint8_t basicToken2Array[3]; + * uint16_t basicToken2VarA; + * } tokTypeBasicToken2; + * + * typedef struct { + * uint8_t basicToken3Array[254]; + * } tokTypeBasicToken3; + * + * typedef uint32_t tokTypeCounterToken1; + * typedef uint32_t tokTypeCounterToken2; + * + * typedef uint8_t tokTypeIndexedToken1Element; + * typedef uint16_t tokTypeIndexedToken2Element; + * + * typedef struct { + * uint8_t indexedToken3VarA; + * uint16_t indexedToken3VarB; + * uint8_t indexedToken3Array[3]; + * int8_t indexedToken3VarC; + * } tokTypeIndexedToken3Element; + * + * #endif + * + * #ifdef DEFINETOKENS + * DEFINE_BASIC_TOKEN(BASICTOKEN1, + * tokTypeBasicToken1, + * BASICTOKEN1_DEFAULT) + * DEFINE_BASIC_TOKEN(BASICTOKEN2, + * tokTypeBasicToken2, + * BASICTOKEN2_DEFAULT) + * DEFINE_BASIC_TOKEN(BASICTOKEN3, + * tokTypeBasicToken3, + * BASICTOKEN3_DEFAULT) + * DEFINE_COUNTER_TOKEN(COUNTERTOKEN1, + * tokTypeCounterToken1, + * COUNTERTOKEN1_DEFAULT) + * DEFINE_COUNTER_TOKEN(COUNTERTOKEN2, + * tokTypeCounterToken2, + * COUNTERTOKEN2_DEFAULT) + * DEFINE_INDEXED_TOKEN(INDEXEDTOKEN1, + * tokTypeIndexedToken1Element, + * INDEXEDTOKEN1_ELEMENTS, + * INDEXEDTOKEN1_DEFAULT) + * DEFINE_INDEXED_TOKEN(INDEXEDTOKEN2, + * tokTypeIndexedToken2Element, + * INDEXEDTOKEN2_ELEMENTS, + * INDEXEDTOKEN2_DEFAULT) + * DEFINE_INDEXED_TOKEN(INDEXEDTOKEN3, + * tokTypeIndexedToken3Element, + * INDEXEDTOKEN3_ELEMENTS, + * INDEXEDTOKEN3_DEFAULT) + * #endif + * + ******************************************************************************/ diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_debug_swo_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_debug_swo_config.h new file mode 100644 index 00000000000000..bd2964af646e17 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_debug_swo_config.h @@ -0,0 +1,100 @@ +/***************************************************************************//** + * @file + * @brief SWO configuration + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEBUG_SWO_CONFIG_H +#define SL_DEBUG_SWO_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// SWO Configuration + +// SWO Frequency +// Must be 875 kHz for communication with Silicon Labs debuggers +// Default: 875000 +#define SL_DEBUG_SWO_FREQ 875000 + +// Enable interrupt event trace +// Default: 0 +#define SL_DEBUG_SWO_SAMPLE_IRQ 0 + +// Enable Program Counter samples +// Default: 0 +#define SL_DEBUG_SWO_SAMPLE_PC 0 + +// SWO debug sample intervals +// <64=> 64 +// <128=> 128 +// <192=> 192 +// <256=> 256 +// <320=> 320 +// <384=> 384 +// <448=> 448 +// <512=> 512 +// <576=> 576 +// <640=> 640 +// <704=> 704 +// <768=> 768 +// <832=> 832 +// <896=> 896 +// <960=> 960 +// <1024=> 1024 +// <2048=> 2048 +// <3072=> 3072 +// <4096=> 4096 +// <5102=> 5102 +// <6144=> 6144 +// <7168=> 7168 +// <8192=> 8192 +// <9216=> 9216 +// <10240=> 10240 +// <11264=> 11264 +// <12288=> 12288 +// <13312=> 13312 +// <14336=> 14336 +// <15360=> 15360 +// Must be 64, 128, 192, [ n * 64 ], 1024, 2048, 3072, [ n * 1024 ] , 15360 +// Default: 15360 +#define SL_DEBUG_SWO_SAMPLE_INTERVAL 15360 +// + +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> +// SL_DEBUG +// $[DBG_SL_DEBUG] +#define SL_DEBUG_PERIPHERAL DBG + +#define SL_DEBUG_SWV_PORT gpioPortF +#define SL_DEBUG_SWV_PIN 2 +#define SL_DEBUG_SWV_LOC 0 +// [DBG_SL_DEBUG]$ +// <<< sl:end pin_tool >>> + +#endif // SL_DEBUG_SWO_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_device_init_dcdc_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_device_init_dcdc_config.h new file mode 100644 index 00000000000000..734aed362b884a --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_device_init_dcdc_config.h @@ -0,0 +1,58 @@ +/***************************************************************************//** + * @file + * @brief DEVICE_INIT_DCDC Config + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEVICE_INIT_DCDC_CONFIG_H +#define SL_DEVICE_INIT_DCDC_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Enable DC/DC Converter +// +// Default: 1 +#define SL_DEVICE_INIT_DCDC_ENABLE 1 + +// Set DC/DC Converter in Bypass Mode +// +// Default: 0 +#define SL_DEVICE_INIT_DCDC_BYPASS 0 + +// Override for DCDC PFMX Mode Peak Current Setting +// +// Default: 0 +#define SL_DEVICE_INIT_DCDC_PFMX_IPKVAL_OVERRIDE 0 + +// DCDC PFMX Mode Peak Current Setting <0-15> +// +// Default: DCDC_PFMXCTRL_IPKVAL_DEFAULT +#define SL_DEVICE_INIT_DCDC_PFMX_IPKVAL DCDC_PFMXCTRL_IPKVAL_DEFAULT + +// <<< end of configuration section >>> + +#endif // SL_DEVICE_INIT_DCDC_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_device_init_emu_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_device_init_emu_config.h new file mode 100644 index 00000000000000..387abf94f4a066 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_device_init_emu_config.h @@ -0,0 +1,68 @@ +/***************************************************************************//** + * @file + * @brief DEVICE_INIT_EMU Config + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEVICE_INIT_EMU_CONFIG_H +#define SL_DEVICE_INIT_EMU_CONFIG_H + +#include "em_emu.h" + +// <<< Use Configuration Wizard in Context Menu >>> + +// EM4H Voltage scaling level +// Fast-wakeup voltage level +// Low-power optimized voltage level +// Default: emuVScaleEM4H_LowPower +#define SL_DEVICE_INIT_EMU_EM4_VSCALE emuVScaleEM4H_LowPower + +// Retain LFXO in EM4 +#define SL_DEVICE_INIT_EMU_EM4_RETAIN_LFXO 0 + +// Retain LFRCO in EM4 +#define SL_DEVICE_INIT_EMU_EM4_RETAIN_LFRCO 0 + +// Retain ULFRCO in EM4S +#define SL_DEVICE_INIT_EMU_EM4_RETAIN_ULFRCO 0 + +// Hibernate or shutoff EM4 state +// EM4 Shutoff +// EM4 Hibernate +// Default: emuEM4Shutoff +#define SL_DEVICE_INIT_EMU_EM4_STATE emuEM4Shutoff + +// EM4 pin retention mode +// No Retention: Pads enter reset state when entering EM4. +// Retention through EM4: Pads enter reset state when exiting EM4. +// Retention through EM4 and wakeup. +// Default: emuPinRetentionDisable +#define SL_DEVICE_INIT_EMU_EM4_PIN_RETENTION_MODE emuPinRetentionDisable + +// <<< end of configuration section >>> + +#endif // SL_DEVICE_INIT_EMU_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_device_init_hfxo_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_device_init_hfxo_config.h new file mode 100644 index 00000000000000..ccd1c239703c6c --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_device_init_hfxo_config.h @@ -0,0 +1,68 @@ +/***************************************************************************//** + * @file + * @brief DEVICE_INIT_HFXO Config + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEVICE_INIT_HFXO_CONFIG_H +#define SL_DEVICE_INIT_HFXO_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Mode +// +// Crystal oscillator +// External digital clock +// Default: cmuOscMode_Crystal +#define SL_DEVICE_INIT_HFXO_MODE cmuOscMode_Crystal + +// Frequency <38000000-40000000> +// Default: 38400000 +#define SL_DEVICE_INIT_HFXO_FREQ 38400000 + +// CTUNE <0-511> +// Default: 360 +#define SL_DEVICE_INIT_HFXO_CTUNE 327 + +// Advanced Configurations +// Auto-start HFXO. This feature is incompatible with Power Manager and can only be enabled in applications that do not use Power Manager or a radio protocol stack. - DEPRECATED +// True +// False +// Default: false +#define SL_DEVICE_INIT_HFXO_AUTOSTART false + +// Auto-select HFXO. This feature is incompatible with Power Manager and can only be enabled in applications that do not use Power Manager or a radio protocol stack. - DEPRECATED +// True +// False +// Default: false +#define SL_DEVICE_INIT_HFXO_AUTOSELECT false + +// + +// <<< end of configuration section >>> + +#endif // SL_DEVICE_INIT_HFXO_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_device_init_lfxo_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_device_init_lfxo_config.h new file mode 100644 index 00000000000000..d4b79b3d88b130 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_device_init_lfxo_config.h @@ -0,0 +1,67 @@ +/***************************************************************************//** + * @file + * @brief DEVICE_INIT_LFXO Config + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEVICE_INIT_LFXO_CONFIG_H +#define SL_DEVICE_INIT_LFXO_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Mode +// +// Crystal oscillator +// AC-coupled buffer +// External digital clock +// Default: cmuOscMode_Crystal +#define SL_DEVICE_INIT_LFXO_MODE cmuOscMode_Crystal + +// CTUNE <0-127> +// Default: 63 +#define SL_DEVICE_INIT_LFXO_CTUNE 32 + +// LFXO precision in PPM <0-65535> +// Default: 500 +#define SL_DEVICE_INIT_LFXO_PRECISION 100 + +// Startup Timeout Delay +// +// <_CMU_LFXOCTRL_TIMEOUT_2CYCLES=> 2 cycles +// <_CMU_LFXOCTRL_TIMEOUT_256CYCLES=> 256 cycles +// <_CMU_LFXOCTRL_TIMEOUT_1KCYCLES=> 1K cycles +// <_CMU_LFXOCTRL_TIMEOUT_2KCYCLES=> 2K cycles +// <_CMU_LFXOCTRL_TIMEOUT_4KCYCLES=> 4K cycles +// <_CMU_LFXOCTRL_TIMEOUT_8KCYCLES=> 8K cycles +// <_CMU_LFXOCTRL_TIMEOUT_16KCYCLES=> 16K cycles +// <_CMU_LFXOCTRL_TIMEOUT_32KCYCLES=> 32K cycles +// <_CMU_LFXOCTRL_TIMEOUT_DEFAULT=> Default +// Default: _CMU_LFXOCTRL_TIMEOUT_DEFAULT +#define SL_DEVICE_INIT_LFXO_TIMEOUT _CMU_LFXOCTRL_TIMEOUT_DEFAULT +// <<< end of configuration section >>> + +#endif // SL_DEVICE_INIT_LFXO_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_iostream_usart_vcom_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_iostream_usart_vcom_config.h new file mode 100644 index 00000000000000..a7cbd14c3ce2df --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_iostream_usart_vcom_config.h @@ -0,0 +1,113 @@ +/***************************************************************************//** + * @file + * @brief IOSTREAM_USART Config. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_IOSTREAM_USART_VCOM_CONFIG_H +#define SL_IOSTREAM_USART_VCOM_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// USART settings + +// Baud rate +// Default: 115200 +#define SL_IOSTREAM_USART_VCOM_BAUDRATE 115200 + +// Parity mode to use +// No Parity +// Even parity +// Odd parity +// Default: usartNoParity +#define SL_IOSTREAM_USART_VCOM_PARITY usartNoParity + +// Number of stop bits to use. +// 0.5 stop bits +// 1 stop bits +// 1.5 stop bits +// 2 stop bits +// Default: usartStopbits1 +#define SL_IOSTREAM_USART_VCOM_STOP_BITS usartStopbits1 + +// Flow control +// None +// CTS +// RTS +// CTS/RTS +// Software Flow control (XON/XOFF) +// Default: usartHwFlowControlNone +#define SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE usartHwFlowControlCtsAndRts + +// Receive buffer size +// Default: 32 +#define SL_IOSTREAM_USART_VCOM_RX_BUFFER_SIZE 32 + +// Convert \n to \r\n +// It can be changed at runtime using the C API. +// Default: 0 +#define SL_IOSTREAM_USART_VCOM_CONVERT_BY_DEFAULT_LF_TO_CRLF 0 + +// Restrict the energy mode to allow the reception. +// Default: 1 +// Limits the lowest energy mode the system can sleep to in order to keep the reception on. May cause higher power consumption. +#define SL_IOSTREAM_USART_VCOM_RESTRICT_ENERGY_MODE_TO_ALLOW_RECEPTION 1 + +// + +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> +// SL_IOSTREAM_USART_VCOM +// $[USART_SL_IOSTREAM_USART_VCOM] +#define SL_IOSTREAM_USART_VCOM_PERIPHERAL USART0 +#define SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO 0 + +// USART0 TX on PA0 +#define SL_IOSTREAM_USART_VCOM_TX_PORT gpioPortA +#define SL_IOSTREAM_USART_VCOM_TX_PIN 0 +#define SL_IOSTREAM_USART_VCOM_TX_LOC 0 + +// USART0 RX on PA1 +#define SL_IOSTREAM_USART_VCOM_RX_PORT gpioPortA +#define SL_IOSTREAM_USART_VCOM_RX_PIN 1 +#define SL_IOSTREAM_USART_VCOM_RX_LOC 0 + +// USART0 CTS on PA2 +#define SL_IOSTREAM_USART_VCOM_CTS_PORT gpioPortA +#define SL_IOSTREAM_USART_VCOM_CTS_PIN 2 +#define SL_IOSTREAM_USART_VCOM_CTS_LOC 30 + +// USART0 RTS on PA3 +#define SL_IOSTREAM_USART_VCOM_RTS_PORT gpioPortA +#define SL_IOSTREAM_USART_VCOM_RTS_PIN 3 +#define SL_IOSTREAM_USART_VCOM_RTS_LOC 30 + +// [USART_SL_IOSTREAM_USART_VCOM]$ +// <<< sl:end pin_tool >>> + +#endif diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_iostream_vuart_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_iostream_vuart_config.h new file mode 100644 index 00000000000000..82889008b77e1b --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_iostream_vuart_config.h @@ -0,0 +1,42 @@ +/***************************************************************************//** + * @file + * @brief SL_IOSTREAM_VUART Config. + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ +#ifndef SL_IOSTREAM_VUART_CONFIG_H +#define SL_IOSTREAM_VUART_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// VUART settings +// Receive buffer size +// Default: 32 +#define SL_IOSTREAM_VUART_RX_BUFFER_SIZE 32 + +// +// <<< end of configuration section >>> +#endif diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_legacy_hal_wdog_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_legacy_hal_wdog_config.h new file mode 100644 index 00000000000000..83b67575534e1f --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_legacy_hal_wdog_config.h @@ -0,0 +1,53 @@ +/***************************************************************************//** + * @file sl_legacy_hal_wdog_config.h + * @brief Legacy HAL watchdog configuration file. + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_LEGACY_HAL_WDOG_CONFIG_H +#define SL_LEGACY_HAL_WDOG_CONFIG_H + +// Legacy HAL WDOG Configurations + +// Disable calling halInternalEnableWatchDog in base-replacement.c's halInit(). +// Default: 0 +#define SL_LEGACY_HAL_DISABLE_WATCHDOG 0 +// + +// WDOG to use for SL_LEGACY_HAL_WDOGn. +// Default: 0 +// <0=> WDOG0 +// <1=> WDOD1 +#define SL_LEGACY_HAL_WDOGn 0 + +// + +#endif /* SL_LEGACY_HAL_WDOG_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_memory_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_memory_config.h new file mode 100644 index 00000000000000..b43ebcba024b94 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_memory_config.h @@ -0,0 +1,28 @@ +#ifndef SL_MEMORY_CONFIG_H +#define SL_MEMORY_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> +// Memory configuration + +// Stack size for the application. +// Default: 4096 +// The stack size configured here will be used by the stack that the +// application uses when coming out of a reset. +#ifndef SL_STACK_SIZE + #define SL_STACK_SIZE 4096 +#endif + +// Minimum heap size for the application. +// Default: 2048 +// Note that this value will configure the c heap which is normally used by +// malloc() and free() from the c library. The value defines a minimum heap +// size that is guaranteed to be available. The available heap may be larger +// to make use of any memory that would otherwise remain unused. +#ifndef SL_HEAP_SIZE + #define SL_HEAP_SIZE 2048 +#endif + +// +// <<< end of configuration section >>> + +#endif diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_mx25_flash_shutdown_usart_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_mx25_flash_shutdown_usart_config.h new file mode 100644 index 00000000000000..742762a355d7e0 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_mx25_flash_shutdown_usart_config.h @@ -0,0 +1,54 @@ +/***************************************************************************//** + * @file + * @brief SL_MX25_FLASH_SHUTDOWN_USART Config + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_MX25_FLASH_SHUTDOWN_CONFIG_H +#define SL_MX25_FLASH_SHUTDOWN_CONFIG_H + +// <<< sl:start pin_tool >>> +// {usart signal=TX,RX,CLK} SL_MX25_FLASH_SHUTDOWN +// [USART_SL_MX25_FLASH_SHUTDOWN] +#define SL_MX25_FLASH_SHUTDOWN_PERIPHERAL USART1 +#define SL_MX25_FLASH_SHUTDOWN_PERIPHERAL_NO 1 + +// USART1 TX on PC6 +#define SL_MX25_FLASH_SHUTDOWN_TX_PORT gpioPortC +#define SL_MX25_FLASH_SHUTDOWN_TX_PIN 6 +#define SL_MX25_FLASH_SHUTDOWN_TX_LOC 11 + +// USART1 RX on PC7 +#define SL_MX25_FLASH_SHUTDOWN_RX_PORT gpioPortC +#define SL_MX25_FLASH_SHUTDOWN_RX_PIN 7 +#define SL_MX25_FLASH_SHUTDOWN_RX_LOC 11 + +// USART1 CLK on PC8 +#define SL_MX25_FLASH_SHUTDOWN_CLK_PORT gpioPortC +#define SL_MX25_FLASH_SHUTDOWN_CLK_PIN 8 +#define SL_MX25_FLASH_SHUTDOWN_CLK_LOC 11 + +// [USART_SL_MX25_FLASH_SHUTDOWN] + +// SL_MX25_FLASH_SHUTDOWN_CS + +// $[GPIO_SL_MX25_FLASH_SHUTDOWN_CS] +#define SL_MX25_FLASH_SHUTDOWN_CS_PORT gpioPortA +#define SL_MX25_FLASH_SHUTDOWN_CS_PIN 4 + +// [GPIO_SL_MX25_FLASH_SHUTDOWN_CS]$ + +// <<< sl:end pin_tool >>> + +#endif // SL_MX25_FLASH_SHUTDOWN_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_power_manager_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_power_manager_config.h new file mode 100644 index 00000000000000..fa5c557a4f85fc --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_power_manager_config.h @@ -0,0 +1,71 @@ +/***************************************************************************//** + * @file + * @brief Power Manager configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_POWER_MANAGER_CONFIG_H +#define SL_POWER_MANAGER_CONFIG_H + +// Power Manager Configuration + +// Enable custom IRQ handler for external HF oscillator. +// Enable if CMU_IRQHandler/HFXO0_IRQHandler is needed from your application. +// The function sl_power_manager_irq_handler() will have to be called from you custom handler if this is enabled. +// Default: 0 +#define SL_POWER_MANAGER_CUSTOM_HF_OSCILLATOR_IRQ_HANDLER 0 + +// Lowest Energy mode allowed +// <1=> EM1 +// <2=> EM2 +// <3=> EM3 +// Default: 2 +#define SL_POWER_MANAGER_LOWEST_EM_ALLOWED 2 + +// Enable fast wakeup (disable voltage scaling in EM2/3 mode) +// Enable or disable voltage scaling in EM2/3 modes (when available). This decreases wakeup time by about 30 us. +// Deprecated. It is replaced by the function sl_power_manager_em23_voltage_scaling_enable_fast_wakeup() +// Default: 0 +#define SL_POWER_MANAGER_CONFIG_VOLTAGE_SCALING_FAST_WAKEUP 0 + +// Enable debugging feature +// Enable or disable debugging features (trace the different modules that have requirements). +// Default: 0 +#define SL_POWER_MANAGER_DEBUG 0 + +// Maximum numbers of requirements that can be logged +// Default: 10 +#define SL_POWER_MANAGER_DEBUG_POOL_SIZE 10 +// + +// + +#endif /* SL_POWER_MANAGER_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_rail_util_pa_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_rail_util_pa_config.h new file mode 100644 index 00000000000000..64712b7e00e528 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_rail_util_pa_config.h @@ -0,0 +1,80 @@ +/***************************************************************************//** + * @file + * @brief Power Amplifier configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_RAIL_UTIL_PA_CONFIG_H +#define SL_RAIL_UTIL_PA_CONFIG_H + +#include "rail_types.h" + +// <<< Use Configuration Wizard in Context Menu >>> + +// PA Configuration +// Initial PA Power (deci-dBm, 100 = 10.0 dBm) +// Default: 100 +#define SL_RAIL_UTIL_PA_POWER_DECI_DBM 100 +// PA Ramp Time (microseconds) +// <0-65535:1> +// Default: 10 +#define SL_RAIL_UTIL_PA_RAMP_TIME_US 10 +// Milli-volts on PA supply pin (PA_VDD) +// <0-65535:1> +// Default: 3300 +#define SL_RAIL_UTIL_PA_VOLTAGE_MV 3300 +// 2.4 GHz PA Selection +// High Power +// Low Power +// Disable +// Default: RAIL_TX_POWER_MODE_2P4GIG_HP +#define SL_RAIL_UTIL_PA_SELECTION_2P4GHZ RAIL_TX_POWER_MODE_2P4GIG_HP +// Sub-1 GHz PA Selection +// Enable +// Disable +// Default: RAIL_TX_POWER_MODE_SUBGIG +#define SL_RAIL_UTIL_PA_SELECTION_SUBGHZ RAIL_TX_POWER_MODE_SUBGIG +// + +// PA Curve Configuration +// Header file containing custom PA curves +// Default: "pa_curves_efr32.h" +#define SL_RAIL_UTIL_PA_CURVE_HEADER "pa_curves_efr32.h" +// Header file containing PA curve types +// Default: "pa_curve_types_efr32.h" +#define SL_RAIL_UTIL_PA_CURVE_TYPES "pa_curve_types_efr32.h" +// + +// PA Calibration Configuration +// Apply PA Calibration Factory Offset +// Default: 1 +#define SL_RAIL_UTIL_PA_CALIBRATION_ENABLE 1 +// + +// <<< end of configuration section >>> + +#endif // SL_RAIL_UTIL_PA_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_rail_util_pti_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_rail_util_pti_config.h new file mode 100644 index 00000000000000..e5ea09f6f514fe --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_rail_util_pti_config.h @@ -0,0 +1,75 @@ +/***************************************************************************//** + * @file + * @brief Packet Trace Information configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_RAIL_UTIL_PTI_CONFIG_H +#define SL_RAIL_UTIL_PTI_CONFIG_H + +#include "rail_types.h" + +// <<< Use Configuration Wizard in Context Menu >>> +// PTI Configuration + +// PTI mode +// UART +// UART onewire +// SPI +// Disabled +// Default: RAIL_PTI_MODE_UART +#define SL_RAIL_UTIL_PTI_MODE RAIL_PTI_MODE_UART + +// PTI Baud Rate (Hertz) +// <147800-20000000:1> +// Default: 1600000 +#define SL_RAIL_UTIL_PTI_BAUD_RATE_HZ 1600000 + +// +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> +// SL_RAIL_UTIL_PTI +// $[PTI_SL_RAIL_UTIL_PTI] +#define SL_RAIL_UTIL_PTI_PERIPHERAL PTI + +// PTI DOUT on PB12 +#define SL_RAIL_UTIL_PTI_DOUT_PORT gpioPortB +#define SL_RAIL_UTIL_PTI_DOUT_PIN 12 +#define SL_RAIL_UTIL_PTI_DOUT_LOC 6 + +// PTI DFRAME on PB13 +#define SL_RAIL_UTIL_PTI_DFRAME_PORT gpioPortB +#define SL_RAIL_UTIL_PTI_DFRAME_PIN 13 +#define SL_RAIL_UTIL_PTI_DFRAME_LOC 6 + + +// [PTI_SL_RAIL_UTIL_PTI]$ + +// <<< sl:end pin_tool >>> + +#endif // SL_RAIL_UTIL_PTI_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_simple_led_led0_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_simple_led_led0_config.h new file mode 100644 index 00000000000000..48deadf3348a02 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_simple_led_led0_config.h @@ -0,0 +1,44 @@ +/***************************************************************************//** + * @file + * @brief Simple Led Driver Configuration + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_SIMPLE_LED_LED0_CONFIG_H +#define SL_SIMPLE_LED_LED0_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Simple LED configuration +// +// Active low +// Active high +// Default: SL_SIMPLE_LED_POLARITY_ACTIVE_HIGH +#define SL_SIMPLE_LED_LED0_POLARITY SL_SIMPLE_LED_POLARITY_ACTIVE_HIGH +// end led configuration + +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> + +// SL_SIMPLE_LED_LED0 +// $[GPIO_SL_SIMPLE_LED_LED0] +#define SL_SIMPLE_LED_LED0_PORT gpioPortF +#define SL_SIMPLE_LED_LED0_PIN 4 + +// [GPIO_SL_SIMPLE_LED_LED0]$ + +// <<< sl:end pin_tool >>> + +#endif // SL_SIMPLE_LED_LED0_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_sleeptimer_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_sleeptimer_config.h new file mode 100644 index 00000000000000..846d37d60828b7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_sleeptimer_config.h @@ -0,0 +1,72 @@ +/***************************************************************************//** + * @file + * @brief Sleep Timer configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_SLEEPTIMER_CONFIG_H +#define SL_SLEEPTIMER_CONFIG_H + +#define SL_SLEEPTIMER_PERIPHERAL_DEFAULT 0 +#define SL_SLEEPTIMER_PERIPHERAL_RTCC 1 +#define SL_SLEEPTIMER_PERIPHERAL_PRORTC 2 +#define SL_SLEEPTIMER_PERIPHERAL_RTC 3 +#define SL_SLEEPTIMER_PERIPHERAL_SYSRTC 4 +#define SL_SLEEPTIMER_PERIPHERAL_BURTC 5 + +// Timer Peripheral Used by Sleeptimer +// Default (auto select) +// RTCC +// Radio internal RTC (PRORTC) +// RTC +// SYSRTC +// Back-Up RTC (BURTC) +// Selection of the Timer Peripheral Used by the Sleeptimer +#define SL_SLEEPTIMER_PERIPHERAL SL_SLEEPTIMER_PERIPHERAL_DEFAULT + +// Enable wallclock functionality +// Enable or disable wallclock functionalities (get_time, get_date, etc). +// Default: 0 +#define SL_SLEEPTIMER_WALLCLOCK_CONFIG 0 + +// Timer frequency divider +// Default: 1 +#define SL_SLEEPTIMER_FREQ_DIVIDER 1 + +// If Radio internal RTC (PRORTC) HAL is used, determines if it owns the IRQ handler. Enable, if no wireless stack is used. +// Default: 0 +#define SL_SLEEPTIMER_PRORTC_HAL_OWNS_IRQ_HANDLER 0 + +// Enable DEBUGRUN functionality on hardware RTC. +// Default: 0 +#define SL_SLEEPTIMER_DEBUGRUN 0 + +#endif /* SLEEPTIMER_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_token_manager_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_token_manager_config.h new file mode 100644 index 00000000000000..d99e78e083594e --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_token_manager_config.h @@ -0,0 +1,54 @@ +/***************************************************************************//** + * @file + * @brief Token Manager Configurations + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_TOKEN_MANAGER_CONFIG_H +#define SL_TOKEN_MANAGER_CONFIG_H + +// TOKEN MANAGER Configurations + +// Enable Custom Tokens +// Default: 0 +#define SL_TOKEN_MANAGER_CUSTOM_TOKENS_PRESENT 0 + +// File containing custom tokens +// Default: "sl_custom_token_header.h" +// Header file containing custom tokens located at project_root/config +#define SL_TOKEN_MANAGER_CUSTOM_TOKEN_HEADER "sl_custom_token_header.h" + +// + +// Enable Custom Manufacturing Tokens +// Default: 0 +#define SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKENS_PRESENT 0 + +// File containing custom manufacturing tokens +// Default: "sl_custom_manufacturing_token_header.h" +// Header file containing custom tokens located at project_root/config +#define SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKEN_HEADER "sl_custom_manufacturing_token_header.h" + +// +// + +#if (SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKENS_PRESENT) +#define APPLICATION_MFG_TOKEN_HEADER SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKEN_HEADER +#endif // SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKENS_PRESENT + +#endif // SL_TOKEN_MANAGER_CONFIG_H + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_zigbee_binding_table_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_zigbee_binding_table_config.h new file mode 100644 index 00000000000000..ef4b92fbc30681 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_zigbee_binding_table_config.h @@ -0,0 +1,28 @@ +/***************************************************************************//** + * @brief Zigbee Binding Table component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Binding Table configuration + +// Binding Table Size <1-127> +// Default: 3 +// The number of entries that the binding table can hold. +#define EMBER_BINDING_TABLE_SIZE 32 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_zigbee_debug_print_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_zigbee_debug_print_config.h new file mode 100644 index 00000000000000..9c901f40481767 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_zigbee_debug_print_config.h @@ -0,0 +1,74 @@ +/***************************************************************************//** + * @brief ZigBee Debug Print component configuration header. + * + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// ZigBee Debug Print configuration + +// Stack group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "stack" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_STACK_GROUP_ENABLED (1) + +// Stack group runtime default +// Default: 1 +// If this option is enabled, prints belonging to the "stack" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_STACK_GROUP_RUNTIME_DEFAULT (1) + +// Core group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "core" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_CORE_GROUP_ENABLED (1) + +// Core group runtime default +// Default: 1 +// If this option is enabled, prints belonging to the "core" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_CORE_GROUP_RUNTIME_DEFAULT (1) + +// App group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "app" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_APP_GROUP_ENABLED (1) + +// App group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "app" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_APP_GROUP_RUNTIME_DEFAULT (1) + +// ZCL group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "zcl" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_ZCL_GROUP_ENABLED (1) + +// ZCL group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "zcl" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_ZCL_GROUP_RUNTIME_DEFAULT (1) + +// Legacy App Framework Debug group enabled +// Default: 0 +// If both this option and ZIGBEE_DEBUG_ZCL_GROUP_ENABLED are enabled, prints belonging to the "legacy app framework debug" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_PRINTS_ZCL_LEGACY_AF_DEBUG_ENABLED (0) + +// Legacy App Framework Debug runtime default +// Default: 0 +// If both this option and ZIGBEE_DEBUG_ZCL_GROUP_ENABLED are enabled, prints belonging to the "legacy app framework debug" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_PRINTS_ZCL_LEGACY_AF_DEBUG_RUNTIME_DEFAULT (0) + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_zigbee_green_power_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_zigbee_green_power_config.h new file mode 100644 index 00000000000000..75a81eec322a24 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_zigbee_green_power_config.h @@ -0,0 +1,63 @@ +/***************************************************************************//** + * @brief Zigbee Green Power component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Green Power Library configuration + +// Green Power Proxy Table Size <1-126> +// Default: 5 +// The maximum number of Green Power proxy table entries supported by the stack. +#define EMBER_GP_PROXY_TABLE_SIZE 5 + +// Green Power Proxy Table Token Size <1-126> +// Default: 5 +// The maximum number of pairings stored in proxy table non-volatile memory,between 0 and EMBER_GP_PROXY_TABLE_SIZE. +#define EMBER_GP_PROXY_TABLE_TOKEN_SIZE 5 + +// Green Power Sink Table Size <0-126> +// Default: 0 +// The maximum number of Green Power sink table entries supported by the stack. +#define EMBER_GP_SINK_TABLE_SIZE 0 + +// Green Power Sink Table Token Size <0-126> +// Default: 0 +// The maximum number of pairings stored in sink table non-volatile memory,between 0 and EMBER_GP_SINK_TABLE_SIZE. +#define EMBER_GP_SINK_TABLE_TOKEN_SIZE 0 + +// Green Power incoming FC (as part of proxy table) Token timeout <0-60> +// Default: 0 +// The timeout (seconds) to restore the GPD incoming security frame counter in the Flash (0 being never). +#define EMBER_GP_INCOMING_FC_TOKEN_TIMEOUT 7 + +// Green Power incoming FC (as part of proxy table) table token table size <0-126> +// Default: 0 +// The maximum table size to restore the GPD incoming security frame counter in the Flash (being either 0 or EMBER_GP_PROXY_TABLE_SIZE). +#define EMBER_GP_INCOMING_FC_TOKEN_TABLE_SIZE 0 + +// Green Power incoming FC (as part of sink table) token table token timeout <0-60> +// Default: 0 +// The timeout (seconds) to restore the GPD incoming security frame counter in the Flash (0 being never). +#define EMBER_GP_INCOMING_FC_IN_SINK_TOKEN_TIMEOUT 7 + +// Green Power incoming FC (as part of sink table)Token table size <0-126> +// Default: 0 +// The maximum table size to restore the GPD incoming security frame counter in the Flash (being either 0 or EMBER_GP_SINK_TABLE_SIZE). +#define EMBER_GP_INCOMING_FC_IN_SINK_TOKEN_TABLE_SIZE 0 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_zigbee_pro_stack_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_zigbee_pro_stack_config.h new file mode 100644 index 00000000000000..e035ce1f9c9388 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_zigbee_pro_stack_config.h @@ -0,0 +1,89 @@ +/***************************************************************************//** + * @brief ZigBee PRO Full Stack component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee PRO Stack Library configuration + +// Child Table Size <0-64> +// Default: 6 +// The maximum number of ZigBee PRO End Devices that can be supported by a single device. +#define EMBER_MAX_END_DEVICE_CHILDREN 32 + +// Packet Buffer Count <20-254> +// Default: 75 +// The maximum number of packet buffers supported by the system. This is limited by the amount of available RAM. +#define EMBER_PACKET_BUFFER_COUNT 75 + +// End Device keep alive support mode +// End Device keep alive support mode +// MAC Data Poll Keep Alive +// End Device Timeout Keep Alive +// Keep Alive Support All +// Default: EMBER_KEEP_ALIVE_SUPPORT_ALL +// End Device keep alive support mode on the coordinator/router could be set here. +#define EMBER_END_DEVICE_KEEP_ALIVE_SUPPORT_MODE EMBER_KEEP_ALIVE_SUPPORT_ALL + +// End Device Poll Timeout Value +// End Device Poll Timeout Value +// Seconds-10 +// Minutes-2 +// Minutes-4 +// Minutes-8 +// Minutes-16 +// Minutes-32 +// Minutes-64 +// Minutes-128 +// Minutes-256 +// Minutes-512 +// Minutes-1024 +// Minutes-2048 +// Minutes-4096 +// Minutes-8192 +// Minutes-16384 +// Default: MINUTES_256 +// The amount of time that must pass without hearing a MAC data poll from the device before the end device is removed from the child table. For a router device this applies to its children. For an end device, this is the amount of time before it automatically times itself out. +#define EMBER_END_DEVICE_POLL_TIMEOUT MINUTES_256 + +// Link Power Delta Request Interval <1-65535> +// Default: 300 +// The amount of time in seconds that pass between link power delta requests. +#define EMBER_LINK_POWER_DELTA_INTERVAL 300 + +// APS Unicast Message Queue Size <1-255> +// Default: 10 +// The maximum number of APS unicast messages that can be queued up by the stack. A message is considered queued when emberSendUnicast() is called and is de-queued when the emberMessageSentHandler() is called. +#define EMBER_APS_UNICAST_MESSAGE_COUNT 10 + +// Broadcast Table Size <15-254> +// Default: 15 +// The size of the broadcast table. +#define EMBER_BROADCAST_TABLE_SIZE 15 + +// Neighbor Table Size +// Neighbor Table Size +// <16=> 16 +// <26=> 26 +// Default: 16 +// The size of the neighbor table. +#define EMBER_NEIGHBOR_TABLE_SIZE 16 + +// Transient key timeout (in seconds) <0-65535> +// Default: 300 +// The amount of time a device will store a transient link key that can be used to join a network. +#define EMBER_TRANSIENT_KEY_TIMEOUT_S 300 +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_zigbee_security_link_keys_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_zigbee_security_link_keys_config.h new file mode 100644 index 00000000000000..9a0c84883944c6 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_zigbee_security_link_keys_config.h @@ -0,0 +1,33 @@ +/***************************************************************************//** + * @brief Zigbee Security Link Keys component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Security Link Keys Library configuration + +// Link Key Table Size <1-127> +// Default: 6 +// The maximum number of link key table entries supported by the stack. +#define EMBER_KEY_TABLE_SIZE 12 + +// Request Key Timeout <0-10> +// Default: 0 +// The length of time that a node will wait for a trust center to answer its Application Link Key request. +#define EMBER_REQUEST_KEY_TIMEOUT 0 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4164a/config/sl_zigbee_source_route_config.h b/silabs_examples/credentials/device/brd4164a/config/sl_zigbee_source_route_config.h new file mode 100644 index 00000000000000..41b5e4bb2155ef --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/sl_zigbee_source_route_config.h @@ -0,0 +1,33 @@ +/***************************************************************************//** + * @brief Zigbee Source Route component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Source Route Library configuration + +// Source route table Size (SoC or NCP) <2-255> +// Default: 7 +// The size of the source route table for storing source routes on the SOC or NCP. +#define EMBER_SOURCE_ROUTE_TABLE_SIZE 7 + +// Max source route relay counts <11-40> +// Default: 11 +// Max source route hops accepted or/and inserted in the source route table/header. +#define EMBER_MAX_SOURCE_ROUTE_RELAY_COUNT 11 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4164a/config/zigbee_sleep_config.h b/silabs_examples/credentials/device/brd4164a/config/zigbee_sleep_config.h new file mode 100644 index 00000000000000..fa4efd14070497 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/config/zigbee_sleep_config.h @@ -0,0 +1,42 @@ +/***************************************************************************//** + * @brief Zigbee Application Framework common component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Sleep configuration + +// Minimum Sleep Duration <5-1000> +// Default: 5 +// The minimum duration in milliseconds that the application will attempt to sleep for. If the sleep duration would be less than this amount, the application will not sleep. +#define SL_ZIGBEE_APP_FRAMEWORK_MINIMUM_SLEEP_DURATION_MS 5 + +// Sleep Backoff time <0-10000> +// Default: 0 +// This setting will keep a device from going back to sleep immediately upon waking up +#define SL_ZIGBEE_APP_FRAMEWORK_BACKOFF_SLEEP_MS 0 + +// Stay awake when NOT joined +// Default: TRUE +// This will force a device to stay awake even when not joined to the network. This is often used for debugging and is not recommended for production devices since it cause the device to consume battery power even when not joined to a ZigBee network. +#define SL_ZIGBEE_APP_FRAMEWORK_STAY_AWAKE_WHEN_NOT_JOINED 1 + +// Use button to force wakeup or allow sleep +// Default: FALSE +// This will setup the hardware buttons to wake-up or allow the device to go to sleep. Button 0 will force the device to wake up and stay awake. Button 1 will turn off this behavior to allow the device to sleep normally. Please note that in order for this option to be fully functional, button 0 and button 1 have to be configured to wake the device from sleep. +#define SL_ZIGBEE_APP_FRAMEWORK_USE_BUTTON_TO_STAY_AWAKE 0 +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4164a/device-creds.Makefile b/silabs_examples/credentials/device/brd4164a/device-creds.Makefile new file mode 100644 index 00000000000000..ea4140191048d6 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/device-creds.Makefile @@ -0,0 +1,190 @@ +#################################################################### +# User Makefile # +# This will not be overwritten. Edit as desired. # +#################################################################### +.SUFFIXES: # ignore builtin rules +.PHONY: all debug release clean + +# Default goal +all: debug + +#################################################################### +# Definitions # +#################################################################### + +# Values set by the initial generation +PROJECTNAME = device-creds +ARM_GCC_DIR_WIN = +ARM_GCC_DIR_OSX = +ARM_GCC_DIR_LINUX = + +# Pre-defined definitions in this file +ifeq ($(OS),Windows_NT) + ARM_GCC_DIR ?= $(ARM_GCC_DIR_WIN) +else + UNAME_S := $(shell uname -s) + ifeq ($(UNAME_S),Darwin) + ARM_GCC_DIR ?= $(ARM_GCC_DIR_OSX) + else + ARM_GCC_DIR ?= $(ARM_GCC_DIR_LINUX) + endif +endif + +# Command output is hidden by default, it can be enabled by +# setting VERBOSE=true on the commandline. +ifeq ($(VERBOSE),) + ECHO = @ +endif + +# Build Directories +BUILD_DIR = build +LST_DIR = lst + +ifneq ($(filter $(MAKECMDGOALS),release),) + OUTPUT_DIR = $(BUILD_DIR)/release +else + OUTPUT_DIR = $(BUILD_DIR)/debug +endif + +# Values that should be appended by the sub-makefiles +C_SOURCE_FILES = +CXX_SOURCE_FILES = +ASM_SOURCE_FILES = + +LIBS = + +C_DEFS = +ASM_DEFS = + +INCLUDES = + +C_FLAGS = +C_FLAGS_DEBUG = +C_FLAGS_RELEASE = +CXX_FLAGS = +CXX_FLAGS_DEBUG = +CXX_FLAGS_RELEASE = +ASM_FLAGS = +ASM_FLAGS_DEBUG = +ASM_FLAGS_RELEASE = +LD_FLAGS = + +OBJS = + +#################################################################### +# Definitions of toolchain. # +# You might need to do changes to match your system setup # +#################################################################### + +AR = "$(ARM_GCC_DIR)/bin/arm-none-eabi-gcc-ar" +CC = "$(ARM_GCC_DIR)/bin/arm-none-eabi-gcc" +CXX = "$(ARM_GCC_DIR)/bin/arm-none-eabi-g++" +OBJCOPY = "$(ARM_GCC_DIR)/bin/arm-none-eabi-objcopy" +LD = "$(ARM_GCC_DIR)/bin/arm-none-eabi-gcc" + +#################################################################### +# Include sub-makefiles # +# Define a makefile here to add files/settings to the build. # +#################################################################### +-include device-creds.project.mak + + +#################################################################### +# Rules # +#################################################################### + +# -MMD : Don't generate dependencies on system header files. +# -MP : Add phony targets, useful when a h-file is removed from a project. +# -MF : Specify a file to write the dependencies to. +DEPFLAGS = -MMD -MP -MF $(@:.o=.d) + +CSOURCES = $(notdir $(C_SOURCE_FILES)) +CXXSOURCES = $(notdir $(filter %.cpp, $(CXX_SOURCE_FILES))) +CCSOURCES = $(notdir $(filter %.cc, $(CXX_SOURCE_FILES))) +ASMSOURCES_s = $(notdir $(filter %.s, $(ASM_SOURCE_FILES))) +ASMSOURCES_S = $(notdir $(filter %.S, $(ASM_SOURCE_FILES))) + +COBJS = $(addprefix $(OUTPUT_DIR)/,$(CSOURCES:.c=.o)) +CXXOBJS = $(addprefix $(OUTPUT_DIR)/,$(CXXSOURCES:.cpp=.o)) +CCOBJS = $(addprefix $(OUTPUT_DIR)/,$(CCSOURCES:.cc=.o)) +ASMOBJS_s = $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_s:.s=.o)) +ASMOBJS_S = $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_S:.S=.o)) +OBJS += $(COBJS) $(CXXOBJS) $(CCOBJS) $(ASMOBJS_s) $(ASMOBJS_S) + +CDEPS += $(addprefix $(OUTPUT_DIR)/,$(CSOURCES:.c=.d)) +CXXDEPS += $(addprefix $(OUTPUT_DIR)/,$(CXXSOURCES:.cpp=.d)) +CXXDEPS += $(addprefix $(OUTPUT_DIR)/,$(CCSOURCES:.cc=.d)) +ASMDEPS_s += $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_s:.s=.d)) +ASMDEPS_S += $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_S:.S=.d)) + +C_PATHS = $(subst \,/,$(sort $(dir $(C_SOURCE_FILES)))) +CXX_PATHS = $(subst \,/,$(sort $(dir $(CXX_SOURCE_FILES)))) +ASM_PATHS = $(subst \,/,$(sort $(dir $(ASM_SOURCE_FILES)))) + +vpath %.c $(C_PATHS) +vpath %.cpp $(CXX_PATHS) +vpath %.cc $(CXX_PATHS) +vpath %.s $(ASM_PATHS) +vpath %.S $(ASM_PATHS) + +override CFLAGS = $(C_FLAGS) $(C_DEFS) $(INCLUDES) $(DEPFLAGS) +override CXXFLAGS = $(CXX_FLAGS) $(C_DEFS) $(INCLUDES) $(DEPFLAGS) +override ASMFLAGS = $(ASM_FLAGS) $(ASM_DEFS) $(INCLUDES) $(DEPFLAGS) + +# Rule Definitions +debug: C_FLAGS += $(C_FLAGS_DEBUG) +debug: CXX_FLAGS += $(CXX_FLAGS_DEBUG) +debug: ASM_FLAGS += $(ASM_FLAGS_DEBUG) +debug: $(OUTPUT_DIR)/$(PROJECTNAME).out + +release: C_FLAGS += $(C_FLAGS_RELEASE) +release: CXX_FLAGS += $(CXX_FLAGS_RELEASE) +release: ASM_FLAGS += $(ASM_FLAGS_RELEASE) +release: $(OUTPUT_DIR)/$(PROJECTNAME).out + +# include auto-generated dependency files (explicit rules) +ifneq (clean,$(findstring clean, $(MAKECMDGOALS))) +-include $(CDEPS) +-include $(CXXDEPS) +-include $(ASMDEPS_s) +-include $(ASMDEPS_S) +endif + +$(OUTPUT_DIR)/$(PROJECTNAME).out: $(OBJS) $(LIB_FILES) + @echo 'Linking $(OUTPUT_DIR)/$(PROJECTNAME).out' + @echo $(OBJS) > $(OUTPUT_DIR)/linker_objs + $(ECHO)$(LD) $(LD_FLAGS) @$(OUTPUT_DIR)/linker_objs $(LIBS) -o $(OUTPUT_DIR)/$(PROJECTNAME).out + $(ECHO)$(OBJCOPY) $(OUTPUT_DIR)/$(PROJECTNAME).out -O binary $(OUTPUT_DIR)/$(PROJECTNAME).bin + $(ECHO)$(OBJCOPY) $(OUTPUT_DIR)/$(PROJECTNAME).out -O ihex $(OUTPUT_DIR)/$(PROJECTNAME).hex + $(ECHO)$(OBJCOPY) $(OUTPUT_DIR)/$(PROJECTNAME).out -O srec $(OUTPUT_DIR)/$(PROJECTNAME).s37 + @echo 'Done.' + +$(OBJS): + +$(OUTPUT_DIR)/%.o: %.c + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.cpp + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CXX) $(CXXFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.cc + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CXX) $(CXXFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.s + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.S + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $< + +clean: + $(RM) -rf $(BUILD_DIR) diff --git a/silabs_examples/credentials/device/brd4164a/device-creds.emProject b/silabs_examples/credentials/device/brd4164a/device-creds.emProject new file mode 100644 index 00000000000000..630782db1687e6 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/device-creds.emProject @@ -0,0 +1,1107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/silabs_examples/credentials/device/brd4164a/device-creds.ewd b/silabs_examples/credentials/device/brd4164a/device-creds.ewd new file mode 100644 index 00000000000000..0fb3317c402f7f --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/device-creds.ewd @@ -0,0 +1,1476 @@ + + + 3 + + Default + + ARM + + 1 + + C-SPY + 2 + + 30 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 5 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/silabs_examples/credentials/device/brd4164a/device-creds.ewp b/silabs_examples/credentials/device/brd4164a/device-creds.ewp new file mode 100644 index 00000000000000..5abf4ac79cc9c7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/device-creds.ewp @@ -0,0 +1,1241 @@ + + + + 3 + + Default + + ARM + + 1 + + General + 3 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 21 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + $PROJ_DIR$\device-creds.ipcf + + \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4164a/device-creds.eww b/silabs_examples/credentials/device/brd4164a/device-creds.eww new file mode 100644 index 00000000000000..57aaa4ba1bfcbb --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/device-creds.eww @@ -0,0 +1,8 @@ + + + + + $WS_DIR$\device-creds.ewp + + + diff --git a/silabs_examples/credentials/device/brd4164a/device-creds.ipcf b/silabs_examples/credentials/device/brd4164a/device-creds.ipcf new file mode 100644 index 00000000000000..c842a4535439c1 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/device-creds.ipcf @@ -0,0 +1,1073 @@ + + + + + config\sl_memory_config.h + config\sl_mx25_flash_shutdown_usart_config.h + config\SEGGER_RTT_Conf.h + config\psa_crypto_config.h + config\sl_device_init_dcdc_config.h + config\sl_zigbee_security_link_keys_config.h + config\sl_zigbee_binding_table_config.h + config\sl_legacy_hal_wdog_config.h + config\sl_board_control_config.h + config\sl_debug_swo_config.h + config\sl_zigbee_pro_stack_config.h + config\sl_token_manager_config.h + config\sl_custom_token_header.h + config\sl_custom_manufacturing_token_header.h + config\sl_zigbee_debug_print_config.h + config\sl_sleeptimer_config.h + config\sl_power_manager_config.h + config\sl_device_init_lfxo_config.h + config\sl_zigbee_green_power_config.h + config\sl_simple_led_led0_config.h + config\sl_rail_util_pti_config.h + config\nvm3_default_config.h + config\zigbee_sleep_config.h + config\app_properties_config.h + config\sl_iostream_usart_vcom_config.h + config\sl_device_init_emu_config.h + config\sl_zigbee_source_route_config.h + config\legacy_hal_config.h + config\sl_device_init_hfxo_config.h + config\sl_rail_util_pa_config.h + config\btl_interface_cfg.h + config\emlib_core_debug_config.h + config\mbedtls_config.h + config\sl_iostream_vuart_config.h + config\legacy_common_ash_config.h + + + autogen\sl_board_default_init.c + autogen\sl_application_type.h + autogen\RTE_Components.h + autogen\sl_component_catalog.h + autogen\sl_device_init_clocks.c + autogen\sl_event_handler.h + autogen\sl_event_handler.c + autogen\sl_iostream_handles.h + autogen\sl_iostream_handles.c + autogen\sl_iostream_init_instances.h + autogen\sl_iostream_init_usart_instances.c + autogen\sl_iostream_init_usart_instances.h + autogen\sl_legacy_bootloader_device_info.h + autogen\mbedtls_config_autogen.h + autogen\sl_mbedtls_config_transform_autogen.h + autogen\sl_power_manager_handler.c + autogen\psa_crypto_config_autogen.h + autogen\sl_rail_util_ieee802154_phy_select.c + autogen\sl_rail_util_ieee802154_stack_event.c + autogen\sl_simple_led_instances.c + autogen\sl_simple_led_instances.h + autogen\linkerfile_base.icf + autogen\zigbee_stack_callback_dispatcher.h + autogen\zigbee_stack_callback_dispatcher.c + autogen\zigbee_common_callback_dispatcher.h + autogen\zigbee_common_callback_dispatcher.c + autogen\zigbee_ncp_callback_dispatcher.h + autogen\zigbee_ncp_callback_dispatcher.c + autogen\zigbee_af_token_headers.h + autogen\.crc_config.crc + + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Source\system_efr32mg12p.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Source\startup_efr32mg12p.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p433f1024gl125.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_acmp.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_adc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_af_pins.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_af_ports.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_cmu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_cryotimer.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_crypto.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_csen.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_devinfo.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_dma_descriptor.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_dmareq.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_emu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_etm.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_fpueh.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_gpcrc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_gpio.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_gpio_p.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_i2c.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_idac.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_ldma.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_ldma_ch.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_lesense.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_lesense_buf.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_lesense_ch.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_lesense_st.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_letimer.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_leuart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_msc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_pcnt.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_prs.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_prs_ch.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_prs_signals.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_rmu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_romtable.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_rtcc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_rtcc_cc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_rtcc_ret.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_smu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_timer.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_timer_cc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_trng.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_usart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_vdac.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_vdac_opa.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_wdog.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\efr32mg12p_wdog_pch.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\em_device.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG12P\Include\system_efr32mg12p.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_atomic.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_endianness.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_enum.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_assert.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_slist.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_status.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\src\sl_assert.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\src\sl_slist.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\toolchain\src\sl_memory.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\toolchain\inc\sl_memory_region.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\toolchain\inc\sl_memory.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\app_properties\app_properties.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface_storage.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\application_properties.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_errorcode.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface_parser.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface_storage.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_reset_info.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\cmsis_compiler.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\cmsis_version.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\tz_context.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\cmsis_iccarm.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\core_cm4.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\mpu_armv7.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\debug\src\sl_debug_swo.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\debug\inc\sl_debug_swo.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\leddrv\src\sl_led.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\leddrv\src\sl_simple_led.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\leddrv\inc\sl_led.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\leddrv\inc\sl_simple_led.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_clocks.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_dcdc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_emu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_hfxo.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_lfxo.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_nvic.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_dcdc_s1.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_emu_s1.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_hfxo_s1.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_lfxo_s1.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_nvic.c + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_debug.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_swo_itm_8.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_retarget_stdio.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_uart.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_usart.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_vuart.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sli_iostream_swo_itm_8.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_swo_itm_8.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_uart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sli_iostream_uart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_usart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_vuart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_swo.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\bootloader-interface.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\bootloader-interface-app.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\bootloader-interface-standalone.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\bootloader-common.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\crc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\base-replacement.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\diagnostic.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\ember-phy.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\faults.s + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\random.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\token_legacy.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\serial\serial.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\cortexm3\diagnostic.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\hal\hal.h + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-interface.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-interface-app.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-interface-standalone.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-eeprom.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\asm.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\button.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\crc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\efm32_micro.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\em2xx-reset-defs.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\emlib_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\hal.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\interrupts-efm32.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\led.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\micro-common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\micro-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\micro.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\platform-header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\random.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\reset-def.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\serial.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\token-manufacturing-series-1.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\token-manufacturing-series-2.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\token-manufacturing.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\sl_legacy_hal_integration_hooks.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_common_ash\src\ash-common.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_common_ash\inc\ash-common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_common_ash\inc\ash-protocol.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal_wdog\src\sl_legacy_hal_wdog.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal_wdog\inc\sl_legacy_hal_wdog.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_ncp_ash\src\ash-ncp.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_ncp_ash\inc\ash-ncp.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_printf\src\sl_legacy_printf.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_printf\inc\sl_legacy_printf.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\src\sl_power_manager.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\src\sl_power_manager_debug.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\src\sl_power_manager_hal_s0_s1.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\src\sli_power_manager_private.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\inc\sl_power_manager.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\inc\sl_power_manager_debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\inc\sli_power_manager.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\system\src\sl_system_init.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\system\src\sl_system_process_action.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\system\inc\sl_system_init.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\system\inc\sl_system_process_action.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\src\sl_sleeptimer.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\src\sl_sleeptimer_hal_rtcc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\src\sli_sleeptimer_hal.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\inc\sl_sleeptimer.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\inc\sli_sleeptimer.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\src\sl_token_def.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\src\sl_token_manager.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\src\sl_token_manufacturing.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_api.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manager.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manager_af_token_header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manufacturing.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manufacturing_api.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manufacturing_series_1.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manufacturing_series_2.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\udelay\src\sl_udelay.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\udelay\src\sl_udelay_armv6m_iar.s + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\udelay\inc\sl_udelay.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\common\inc\ecode.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\src\nvm3_default_common_linker.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\src\nvm3_hal_flash.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\src\nvm3_lock.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3_default.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3_hal.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3_hal_flash.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3_lock.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\lib\libnvm3_CM4_iar.a + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_chip.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_cmu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_cmu_compat.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_assert.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_bus.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_ramfunc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_version.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_core.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_crypto.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_crypto_compat.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_emu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_gpio.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_msc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_msc_compat.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_prs.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_rmu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_rtcc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_system.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_usart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_wdog.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_cmu.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_core.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_crypto.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_emu.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_gpio.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_msc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_prs.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_rmu.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_rtcc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_system.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_usart.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_wdog.c + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail_mfm.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail_assert_error_codes.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail_types.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail_features.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\protocol\ble\rail_ble.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\protocol\ieee802154\rail_ieee802154.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\protocol\zwave\rail_zwave.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\chip\efr32\efr32xg1x\rail_chip_specific.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\autogen\librail_release\librail_efr32xg12_iar_release.a + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_ieee802154\sl_rail_util_ieee802154_stack_event.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_ieee802154\sl_rail_util_ieee802154_phy_select.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\efr32xg1x\sl_rail_util_pa_curves.h + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_conversions_efr32.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_curves_efr32.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_conversions_efr32.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_curve_types_efr32.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_curves_efr32.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_pti\sl_rail_util_pti.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_pti\sl_rail_util_pti.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_ant_div\sl_rail_util_ant_div.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_ant_div\sl_rail_util_ant_div.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\coexistence\protocol\ieee802154_uc\coexistence-802154.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\coexistence\protocol\ieee802154_uc\coexistence-802154.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\coexistence\common\coexistence.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\rail_mux\sl_rail_mux_rename.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\rail_mux\sl_rail_mux.h + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\indirect-queue.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\lower-mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\lower-mac-debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-child.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-command.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-flat-header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-packet-header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-phy.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\multi-mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-multi-network.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\scan.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\upper-mac.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\board\src\sl_board_init.c + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\board\src\sl_board_control_gpio.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\board\inc\sl_board_control.h + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\board\inc\sl_board_init.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\driver\configuration_over_swo\src\sl_cos.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\driver\configuration_over_swo\inc\sl_cos.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\driver\mx25_flash_shutdown\src\sl_mx25_flash_shutdown_usart\sl_mx25_flash_shutdown.c + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\driver\mx25_flash_shutdown\inc\sl_mx25_flash_shutdown_usart\sl_mx25_flash_shutdown.h + + + + + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\aes.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\padlock.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\asn1parse.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\asn1write.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\base64.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\cipher_wrap.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\cipher_wrap.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecp.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecp_curves.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecdh.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecdsa.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecp_internal_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\md.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\md_wrap.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\bignum.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\bn_mul.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pem.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pk.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pkparse.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pkwrite.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pk_wrap.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\entropy.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\entropy_poll.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ctr_drbg.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\hmac_drbg.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\entropy_poll.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\sha1.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\sha256.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\sha512.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\constant_time.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\threading.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\platform.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\platform_util.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\check_crypto_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\common.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\constant_time_internal.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\constant_time_invasive.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecdh_misc.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecp_invasive.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\mps_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\mps_error.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\mps_reader.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\mps_trace.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pk_wrap.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\rsa_alt_helpers.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ssl_debug_helpers_generated.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ssl_misc.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ssl_tls13_keys.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\oid.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509_create.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509_crl.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509_crt.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509_csr.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509write_crt.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509write_csr.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\des.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_client.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_aead.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_driver_wrappers.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_slot_management.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_storage.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_ecp.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_hash.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_mac.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_rsa.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_se.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_aead.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_cipher.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_core.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_driver_wrappers.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_ecp.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_hash.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_invasive.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_its.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_random_impl.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_rsa.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_se.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_slot_management.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_storage.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\aes.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\asn1.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\asn1write.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\base64.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\camellia.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\cipher.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ecp.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ecdh.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ecdsa.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\md.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\md5.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ripemd160.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\sha1.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\sha256.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\sha512.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\bignum.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\pem.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\des.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\entropy.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ctr_drbg.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\hmac_drbg.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\aria.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\build_info.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ccm.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\chacha20.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\chachapoly.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\check_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\cmac.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\compat-2.x.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\config_psa.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\constant_time.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\dhm.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ecjpake.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\error.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\gcm.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\hkdf.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\mbedtls_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\memory_buffer_alloc.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\net_sockets.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\nist_kw.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\oid.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\pk.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\pkcs12.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\pkcs5.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\platform.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\platform_time.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\platform_util.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\poly1305.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\private_access.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\psa_util.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\rsa.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl_cache.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl_ciphersuites.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl_cookie.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl_ticket.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\threading.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\timing.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\version.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\x509.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\x509_crl.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\x509_crt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\x509_csr.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_builtin_composites.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_builtin_primitives.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_compat.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_driver_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_driver_contexts_composites.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_driver_contexts_primitives.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_extra.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_platform.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_se_driver.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_sizes.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_struct.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_types.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_values.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\config\config-device-acceleration.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\config\config-sl-crypto-all-acceleration.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\sl_entropy_hardware.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\sl_mbedtls.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\crypto_aes.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\crypto_ecp.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\mbedtls_sha.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\aes_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\ccm_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\cmac_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\sha1_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\sha256_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\sha512_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\sl_mbedtls.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\threading_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\gcm_alt.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_psa_trng.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_crypto_trng_driver.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_psa_driver_init.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_psa_driver_common.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_version_dependencies.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\crypto_management.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_crypto_transparent_driver_cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_crypto_transparent_driver_hash.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_crypto_transparent_driver_mac.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_crypto_transparent_driver_aead.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sl_psa_its_nvm3.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\public\sl_psa_values.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\psa\internal_trusted_storage.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\psa\error.h + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_crypto_trng_driver.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_psa_driver_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_version_dependencies.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\crypto_management.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_crypto_transparent_functions.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_crypto_transparent_types.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\printf\src\iostream_printf.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\printf\inc\iostream_printf.h + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\printf\printf.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\printf\printf.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\segger\systemview\SEGGER\SEGGER_RTT.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\segger\systemview\SEGGER\SEGGER.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\segger\systemview\SEGGER\SEGGER_RTT.h + + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\memory_manager\sl_malloc.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\memory_manager\sl_malloc.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\buffer_manager\legacy-packet-buffer.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\buffer_manager\buffer-queue.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\buffer_manager\buffer-management.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\event_queue\event-queue.h + + + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\aes-ecb.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\ccm-star.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\zigbee_debug_channel.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\zigbee-debug-extended.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\zigbee-event-logger-stub-gen.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\strong-random-api.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\platform\micro\aes.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\security.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\binding-table.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ccm-star.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\gp-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\source-route.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\zll-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-types-internal.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\error-def.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\error.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\child.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-alternate-mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-duty-cycle.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-static-struct.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\message.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\multi-network.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\multi-phy.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\network-formation.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\stack-info.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\trust-center.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\zigbee-device-stack.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\raw-message.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\aes-mmo.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\byte-utilities.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-random-api.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\library.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\mac-layer.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\bootload.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\cbke-crypto-engine.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\zigbee-event-logger-gen.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\mfglib.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\zll-api.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\gp\gp-token-config.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\gp\gp-proxy-table.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\gp\gp-sink-table.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\ember-configuration.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\config.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\token-stack.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\token-phy.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\ember-configuration-defaults.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-163k1-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-283k1-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-dsa-verify-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-dsa-sign-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-dsa-verify-283k1-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\install-code-stub.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\ember-multi-network-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\multi-pan-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\multi-pan-common.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\ember-multi-network.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\multi-pan-token-config.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\multi-pan.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\zll\zll-stubs.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\zll\zll-token-config.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\zigbee\source-route-table-update.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\mac\multi-mac.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_common.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_stack_cb.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_sleep.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_event.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_callback.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_ncp_framework_cb.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\plugin\debug-print\sl_zigbee_debug_print.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\plugin\debug-print\sl_zigbee_debug_print.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\util\af-ncp-token.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\security\security-address-cache.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\security\security.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\secure-ezsp-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\ezsp-protocol.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\secure-ezsp-protocol.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\secure-ezsp-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\ezsp-enum.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\ezsp-frame-utilities.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-binding-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-binding.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-green-power-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\em260-common.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\serial-interface-uart.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\ncp-stack-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-secure-ezsp-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-context.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\serial-interface.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\em260-callbacks.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-cbke.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-mfglib.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-messaging-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-networking-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-security-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-trust-center-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-zll.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-security.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-zigbee-pro.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\xncp\xncp.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\xncp\xncp_cb.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\xncp\xncp-token.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\xncp\xncp-sample-custom-ezsp-protocol.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\ncp\plugin\xncp\xncp.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\binding-table-library-cortexm3-iar-efr32mg12p-rail-ember_multi_network_stripped\binding-table-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\ncp-binding-library-cortexm3-iar-efr32mg12p-rail-ember_multi_network_stripped\ncp-binding-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\debug-basic-library-cortexm3-iar-efr32mg12p-rail\debug-basic-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\debug-extended-library-cortexm3-iar-efr32mg12p-rail\debug-extended-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\end-device-bind-library-cortexm3-iar-efr32mg12p-rail-ember_multi_network_stripped\end-device-bind-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\gp-library-cortexm3-iar-efr32mg12p-rail-ember_multi_network_stripped\gp-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\ncp-gp-library-cortexm3-iar-efr32mg12p-rail\ncp-gp-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\em260-uart-util-library-cortexm3-iar-efr32mg12p-rail-ember_multi_network_stripped\em260-uart-util-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\packet-validate-library-cortexm3-iar-efr32mg12p-rail\packet-validate-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\zigbee-pro-stack-cortexm3-iar-efr32mg12p-rail-ember_multi_network_stripped\zigbee-pro-stack.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\ncp-pro-library-cortexm3-iar-efr32mg12p-rail-ember_multi_network_stripped\ncp-pro-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\zigbee-r22-support-library-cortexm3-iar-efr32mg12p-rail-ember_multi_network_stripped\zigbee-r22-support-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\security-library-link-keys-cortexm3-iar-efr32mg12p-rail-ember_multi_network_stripped\security-library-link-keys.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\source-route-library-cortexm3-iar-efr32mg12p-rail-ember_multi_network_stripped\source-route-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\ncp-source-route-library-cortexm3-iar-efr32mg12p-rail\ncp-source-route-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\em260-xncp-library-cortexm3-iar-efr32mg12p-rail\em260-xncp-library.a + + + + + + ..\main.c + ..\device_creds.c + ..\device_cert.c + ..\..\common\creds.h + ..\..\common\creds.c + ..\README.md + + + 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 + + diff --git a/silabs_examples/credentials/device/brd4164a/device-creds.project.mak b/silabs_examples/credentials/device/brd4164a/device-creds.project.mak new file mode 100644 index 00000000000000..2468fc32901986 --- /dev/null +++ b/silabs_examples/credentials/device/brd4164a/device-creds.project.mak @@ -0,0 +1,1624 @@ +#################################################################### +# Automatically-generated file. Do not edit! # +# Makefile Version 10 # +#################################################################### + +UNAME:=$(shell uname -s | sed -e 's/^\(CYGWIN\).*/\1/' | sed -e 's/^\(MINGW\).*/\1/') +ifeq ($(UNAME),MINGW) +# Translate "C:/super" into "/C/super" for MinGW make. +SDK_PATH := /$(shell echo $(BASE_SDK_PATH) | sed s/://) +endif +SDK_PATH ?= $(BASE_SDK_PATH) +COPIED_SDK_PATH = ../../common/gsdk + +# This uses the explicit build rules below +PROJECT_SOURCE_FILES = + +C_SOURCE_FILES += $(filter %.c, $(PROJECT_SOURCE_FILES)) +CXX_SOURCE_FILES += $(filter %.cpp, $(PROJECT_SOURCE_FILES)) +CXX_SOURCE_FILES += $(filter %.cc, $(PROJECT_SOURCE_FILES)) +ASM_SOURCE_FILES += $(filter %.s, $(PROJECT_SOURCE_FILES)) +ASM_SOURCE_FILES += $(filter %.S, $(PROJECT_SOURCE_FILES)) +LIB_FILES += $(filter %.a, $(PROJECT_SOURCE_FILES)) + +C_DEFS += \ + '-DMATTER_COMMON_NAME="Matter Dev DAC 0xFFF1/0x8005"' \ + '-DMATTER_PRODUCT_ID=0x8005' \ + '-DMATTER_VENDOR_ID=0xFFF1' \ + '-DMATTER_X509_EXTENSIONS=1' \ + '-DPSA_CRYPTO_PRINT=1' \ + '-DPSA_CRYPTO_PRINT_CERT=1' \ + '-DRESERVED_AVAILABLE_MEMORY=1000' \ + '-DEFR32MG12P433F1024GL125=1' \ + '-DSL_APP_PROPERTIES=1' \ + '-DSL_BOARD_NAME="BRD4164A"' \ + '-DSL_BOARD_REV="A03"' \ + '-DSL_COMPONENT_CATALOG_PRESENT=1' \ + '-DSEGGER_RTT_ALIGNMENT=1024' \ + '-DEMBER_AF_API_BOOTLOADER_INTERFACE=1' \ + '-DCORTEXM3=1' \ + '-DCORTEXM3_EFM32_MICRO=1' \ + '-DCORTEXM3_EFR32=1' \ + '-DPHY_RAIL=1' \ + '-DPLATFORM_HEADER="platform-header.h"' \ + '-DSL_LEGACY_HAL_ENABLE_WATCHDOG=1' \ + '-DMBEDTLS_CONFIG_FILE=' \ + '-DMBEDTLS_PSA_CRYPTO_CONFIG_FILE=' \ + '-DSL_RAIL_LIB_MULTIPROTOCOL_SUPPORT=0' \ + '-DSL_RAIL_UTIL_PA_CONFIG_HEADER=' \ + '-DRTT_USE_ASM=0' \ + '-DSEGGER_RTT_SECTION="SEGGER_RTT"' \ + '-DCUSTOM_TOKEN_HEADER="sl_token_manager_af_token_header.h"' \ + '-DUSE_NVM3=1' \ + '-DUC_BUILD=1' \ + '-DEMBER_AF_NCP=1' \ + '-DEMBER_SERIAL1_RTSCTS=1' \ + '-DEZSP_UART=1' \ + '-DNO_USB=1' \ + '-DEMBER_MULTI_NETWORK_STRIPPED=1' \ + '-DSL_ZIGBEE_PHY_SELECT_STACK_SUPPORT=1' + +ASM_DEFS += \ + '-DMATTER_COMMON_NAME="Matter Dev DAC 0xFFF1/0x8005"' \ + '-DMATTER_PRODUCT_ID=0x8005' \ + '-DMATTER_VENDOR_ID=0xFFF1' \ + '-DMATTER_X509_EXTENSIONS=1' \ + '-DPSA_CRYPTO_PRINT=1' \ + '-DPSA_CRYPTO_PRINT_CERT=1' \ + '-DRESERVED_AVAILABLE_MEMORY=1000' \ + '-DEFR32MG12P433F1024GL125=1' \ + '-DSL_APP_PROPERTIES=1' \ + '-DSL_BOARD_NAME="BRD4164A"' \ + '-DSL_BOARD_REV="A03"' \ + '-DSL_COMPONENT_CATALOG_PRESENT=1' \ + '-DSEGGER_RTT_ALIGNMENT=1024' \ + '-DEMBER_AF_API_BOOTLOADER_INTERFACE=1' \ + '-DCORTEXM3=1' \ + '-DCORTEXM3_EFM32_MICRO=1' \ + '-DCORTEXM3_EFR32=1' \ + '-DPHY_RAIL=1' \ + '-DPLATFORM_HEADER="platform-header.h"' \ + '-DSL_LEGACY_HAL_ENABLE_WATCHDOG=1' \ + '-DMBEDTLS_CONFIG_FILE=' \ + '-DMBEDTLS_PSA_CRYPTO_CONFIG_FILE=' \ + '-DSL_RAIL_LIB_MULTIPROTOCOL_SUPPORT=0' \ + '-DSL_RAIL_UTIL_PA_CONFIG_HEADER=' \ + '-DRTT_USE_ASM=0' \ + '-DSEGGER_RTT_SECTION="SEGGER_RTT"' \ + '-DCUSTOM_TOKEN_HEADER="sl_token_manager_af_token_header.h"' \ + '-DUSE_NVM3=1' \ + '-DUC_BUILD=1' \ + '-DEMBER_AF_NCP=1' \ + '-DEMBER_SERIAL1_RTSCTS=1' \ + '-DEZSP_UART=1' \ + '-DNO_USB=1' \ + '-DEMBER_MULTI_NETWORK_STRIPPED=1' \ + '-DSL_ZIGBEE_PHY_SELECT_STACK_SUPPORT=1' + +INCLUDES += \ + -Iconfig \ + -Iautogen \ + -I.. \ + -I../../common \ + -I$(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG12P/Include \ + -I$(SDK_PATH)/platform/common/inc \ + -I$(SDK_PATH)/hardware/board/inc \ + -I$(SDK_PATH)/platform/bootloader \ + -I$(SDK_PATH)/platform/bootloader/api \ + -I$(SDK_PATH)/platform/CMSIS/Core/Include \ + -I$(SDK_PATH)/hardware/driver/configuration_over_swo/inc \ + -I$(SDK_PATH)/platform/driver/debug/inc \ + -I$(SDK_PATH)/platform/service/device_init/inc \ + -I$(SDK_PATH)/platform/emdrv/common/inc \ + -I$(SDK_PATH)/platform/emlib/inc \ + -I$(SDK_PATH)/platform/service/iostream/inc \ + -I$(SDK_PATH)/platform/driver/leddrv/inc \ + -I$(SDK_PATH)/platform/service/legacy_hal/inc \ + -I$(SDK_PATH)/platform/service/legacy_common_ash/inc \ + -I$(SDK_PATH)/platform/service/legacy_hal_wdog/inc \ + -I$(SDK_PATH)/platform/service/legacy_ncp_ash/inc \ + -I$(SDK_PATH)/platform/service/legacy_printf/inc \ + -I$(COPIED_SDK_PATH)/util/third_party/crypto/mbedtls/include \ + -I$(SDK_PATH)/util/third_party/crypto/mbedtls/include \ + -I$(SDK_PATH)/util/third_party/crypto/mbedtls/library \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/config \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/inc \ + -I$(SDK_PATH)/hardware/driver/mx25_flash_shutdown/inc/sl_mx25_flash_shutdown_usart \ + -I$(SDK_PATH)/platform/emdrv/nvm3/inc \ + -I$(SDK_PATH)/platform/service/power_manager/inc \ + -I$(SDK_PATH)/util/third_party/printf \ + -I$(SDK_PATH)/util/third_party/printf/inc \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/inc \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/inc/public \ + -I$(SDK_PATH)/platform/radio/rail_lib/common \ + -I$(SDK_PATH)/platform/radio/rail_lib/protocol/ble \ + -I$(SDK_PATH)/platform/radio/rail_lib/protocol/ieee802154 \ + -I$(SDK_PATH)/platform/radio/rail_lib/protocol/zwave \ + -I$(SDK_PATH)/platform/radio/rail_lib/chip/efr32/efr32xg1x \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_ieee802154 \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/efr32xg1x \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_pti \ + -I$(SDK_PATH)/util/third_party/segger/systemview/SEGGER \ + -I$(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager \ + -I$(SDK_PATH)/platform/common/toolchain/inc \ + -I$(SDK_PATH)/platform/service/system/inc \ + -I$(SDK_PATH)/platform/service/sleeptimer/inc \ + -I$(SDK_PATH)/platform/service/token_manager/inc \ + -I$(SDK_PATH)/platform/service/udelay/inc \ + -I$(SDK_PATH)/protocol/zigbee/stack/platform/micro \ + -I$(SDK_PATH)/protocol/zigbee/stack/include \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/common \ + -I$(SDK_PATH)/protocol/zigbee/app/em260 \ + -I$(SDK_PATH)/protocol/zigbee/stack/framework \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print \ + -I$(SDK_PATH)/protocol/zigbee/stack/gp \ + -I$(SDK_PATH)/protocol/zigbee/app/xncp \ + -I$(SDK_PATH)/protocol/zigbee/app/util/ezsp \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/util \ + -I$(SDK_PATH)/protocol/zigbee/app/util/security \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin \ + -I$(SDK_PATH)/protocol/zigbee \ + -I$(SDK_PATH)/protocol/zigbee/stack \ + -I$(SDK_PATH)/protocol/zigbee/stack/zigbee \ + -I$(SDK_PATH)/platform/radio/mac/rail_mux \ + -I$(SDK_PATH)/platform/radio/mac \ + -I$(SDK_PATH)/util/silicon_labs/silabs_core \ + -I$(SDK_PATH)/protocol/zigbee/stack/core \ + -I$(SDK_PATH)/protocol/zigbee/stack/mac \ + -I$(SDK_PATH)/protocol/zigbee/app/ncp/plugin/xncp + +GROUP_START =-Wl,--start-group +GROUP_END =-Wl,--end-group + +PROJECT_LIBS = \ + -lgcc \ + -lc \ + -lm \ + -lnosys \ + $(SDK_PATH)/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a \ + $(SDK_PATH)/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg12_gcc_release.a \ + $(SDK_PATH)/protocol/zigbee/build/binding-table-library-cortexm3-gcc-efr32mg12p-rail-ember_multi_network_stripped/binding-table-library.a \ + $(SDK_PATH)/protocol/zigbee/build/ncp-binding-library-cortexm3-gcc-efr32mg12p-rail-ember_multi_network_stripped/ncp-binding-library.a \ + $(SDK_PATH)/protocol/zigbee/build/debug-basic-library-cortexm3-gcc-efr32mg12p-rail/debug-basic-library.a \ + $(SDK_PATH)/protocol/zigbee/build/debug-extended-library-cortexm3-gcc-efr32mg12p-rail/debug-extended-library.a \ + $(SDK_PATH)/protocol/zigbee/build/end-device-bind-library-cortexm3-gcc-efr32mg12p-rail-ember_multi_network_stripped/end-device-bind-library.a \ + $(SDK_PATH)/protocol/zigbee/build/gp-library-cortexm3-gcc-efr32mg12p-rail-ember_multi_network_stripped/gp-library.a \ + $(SDK_PATH)/protocol/zigbee/build/ncp-gp-library-cortexm3-gcc-efr32mg12p-rail/ncp-gp-library.a \ + $(SDK_PATH)/protocol/zigbee/build/em260-uart-util-library-cortexm3-gcc-efr32mg12p-rail-ember_multi_network_stripped/em260-uart-util-library.a \ + $(SDK_PATH)/protocol/zigbee/build/packet-validate-library-cortexm3-gcc-efr32mg12p-rail/packet-validate-library.a \ + $(SDK_PATH)/protocol/zigbee/build/zigbee-pro-stack-cortexm3-gcc-efr32mg12p-rail-ember_multi_network_stripped/zigbee-pro-stack.a \ + $(SDK_PATH)/protocol/zigbee/build/ncp-pro-library-cortexm3-gcc-efr32mg12p-rail-ember_multi_network_stripped/ncp-pro-library.a \ + $(SDK_PATH)/protocol/zigbee/build/zigbee-r22-support-library-cortexm3-gcc-efr32mg12p-rail-ember_multi_network_stripped/zigbee-r22-support-library.a \ + $(SDK_PATH)/protocol/zigbee/build/security-library-link-keys-cortexm3-gcc-efr32mg12p-rail-ember_multi_network_stripped/security-library-link-keys.a \ + $(SDK_PATH)/protocol/zigbee/build/source-route-library-cortexm3-gcc-efr32mg12p-rail-ember_multi_network_stripped/source-route-library.a \ + $(SDK_PATH)/protocol/zigbee/build/ncp-source-route-library-cortexm3-gcc-efr32mg12p-rail/ncp-source-route-library.a \ + $(SDK_PATH)/protocol/zigbee/build/em260-xncp-library-cortexm3-gcc-efr32mg12p-rail/em260-xncp-library.a + +LIBS += $(GROUP_START) $(PROJECT_LIBS) $(GROUP_END) + +LIB_FILES += $(filter %.a, $(PROJECT_LIBS)) + +C_FLAGS += \ + -mcpu=cortex-m4 \ + -mthumb \ + -mfpu=fpv4-sp-d16 \ + -mfloat-abi=softfp \ + -std=c99 \ + -Wall \ + -Wextra \ + -Os \ + -fdata-sections \ + -ffunction-sections \ + -fomit-frame-pointer \ + -imacros sl_gcc_preinclude.h \ + -fno-builtin-printf \ + -fno-builtin-sprintf \ + --specs=nano.specs \ + -Wno-unused-parameter \ + -Wno-missing-field-initializers \ + -Wno-missing-braces \ + -Wno-format \ + -g + +CXX_FLAGS += \ + -mcpu=cortex-m4 \ + -mthumb \ + -mfpu=fpv4-sp-d16 \ + -mfloat-abi=softfp \ + -std=c++11 \ + -fno-rtti \ + -fno-exceptions \ + -Wall \ + -Wextra \ + -Os \ + -fdata-sections \ + -ffunction-sections \ + -fomit-frame-pointer \ + -imacros sl_gcc_preinclude.h \ + -fno-builtin-printf \ + -fno-builtin-sprintf \ + --specs=nano.specs \ + -Wno-unused-parameter \ + -Wno-missing-field-initializers \ + -Wno-missing-braces \ + -Wno-format \ + -g + +ASM_FLAGS += \ + -mcpu=cortex-m4 \ + -mthumb \ + -mfpu=fpv4-sp-d16 \ + -mfloat-abi=softfp \ + -imacros sl_gcc_preinclude.h \ + -x assembler-with-cpp + +LD_FLAGS += \ + -mcpu=cortex-m4 \ + -mthumb \ + -mfpu=fpv4-sp-d16 \ + -mfloat-abi=softfp \ + -T"autogen/linkerfile_base.ld" \ + --specs=nano.specs \ + -Xlinker -Map=$(OUTPUT_DIR)/$(PROJECTNAME).map \ + -Wl,--gc-sections + + +#################################################################### +# SDK Build Rules # +#################################################################### +$(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_control_gpio.o: $(SDK_PATH)/hardware/board/src/sl_board_control_gpio.c + @echo 'Building $(SDK_PATH)/hardware/board/src/sl_board_control_gpio.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/hardware/board/src/sl_board_control_gpio.c +CDEPS += $(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_control_gpio.d +OBJS += $(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_control_gpio.o + +$(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_init.o: $(SDK_PATH)/hardware/board/src/sl_board_init.c + @echo 'Building $(SDK_PATH)/hardware/board/src/sl_board_init.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/hardware/board/src/sl_board_init.c +CDEPS += $(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_init.d +OBJS += $(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_init.o + +$(OUTPUT_DIR)/sdk/hardware/driver/configuration_over_swo/src/sl_cos.o: $(SDK_PATH)/hardware/driver/configuration_over_swo/src/sl_cos.c + @echo 'Building $(SDK_PATH)/hardware/driver/configuration_over_swo/src/sl_cos.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/hardware/driver/configuration_over_swo/src/sl_cos.c +CDEPS += $(OUTPUT_DIR)/sdk/hardware/driver/configuration_over_swo/src/sl_cos.d +OBJS += $(OUTPUT_DIR)/sdk/hardware/driver/configuration_over_swo/src/sl_cos.o + +$(OUTPUT_DIR)/sdk/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_usart/sl_mx25_flash_shutdown.o: $(SDK_PATH)/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_usart/sl_mx25_flash_shutdown.c + @echo 'Building $(SDK_PATH)/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_usart/sl_mx25_flash_shutdown.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_usart/sl_mx25_flash_shutdown.c +CDEPS += $(OUTPUT_DIR)/sdk/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_usart/sl_mx25_flash_shutdown.d +OBJS += $(OUTPUT_DIR)/sdk/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_usart/sl_mx25_flash_shutdown.o + +$(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface.o: $(SDK_PATH)/platform/bootloader/api/btl_interface.c + @echo 'Building $(SDK_PATH)/platform/bootloader/api/btl_interface.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/bootloader/api/btl_interface.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface.d +OBJS += $(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface.o + +$(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface_storage.o: $(SDK_PATH)/platform/bootloader/api/btl_interface_storage.c + @echo 'Building $(SDK_PATH)/platform/bootloader/api/btl_interface_storage.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/bootloader/api/btl_interface_storage.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface_storage.d +OBJS += $(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface_storage.o + +$(OUTPUT_DIR)/sdk/platform/bootloader/app_properties/app_properties.o: $(SDK_PATH)/platform/bootloader/app_properties/app_properties.c + @echo 'Building $(SDK_PATH)/platform/bootloader/app_properties/app_properties.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/bootloader/app_properties/app_properties.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/bootloader/app_properties/app_properties.d +OBJS += $(OUTPUT_DIR)/sdk/platform/bootloader/app_properties/app_properties.o + +$(OUTPUT_DIR)/sdk/platform/common/src/sl_assert.o: $(SDK_PATH)/platform/common/src/sl_assert.c + @echo 'Building $(SDK_PATH)/platform/common/src/sl_assert.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/common/src/sl_assert.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_assert.d +OBJS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_assert.o + +$(OUTPUT_DIR)/sdk/platform/common/src/sl_slist.o: $(SDK_PATH)/platform/common/src/sl_slist.c + @echo 'Building $(SDK_PATH)/platform/common/src/sl_slist.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/common/src/sl_slist.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_slist.d +OBJS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_slist.o + +$(OUTPUT_DIR)/sdk/platform/common/toolchain/src/sl_memory.o: $(SDK_PATH)/platform/common/toolchain/src/sl_memory.c + @echo 'Building $(SDK_PATH)/platform/common/toolchain/src/sl_memory.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/common/toolchain/src/sl_memory.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/common/toolchain/src/sl_memory.d +OBJS += $(OUTPUT_DIR)/sdk/platform/common/toolchain/src/sl_memory.o + +$(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG12P/Source/startup_efr32mg12p.o: $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG12P/Source/startup_efr32mg12p.c + @echo 'Building $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG12P/Source/startup_efr32mg12p.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG12P/Source/startup_efr32mg12p.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG12P/Source/startup_efr32mg12p.d +OBJS += $(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG12P/Source/startup_efr32mg12p.o + +$(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG12P/Source/system_efr32mg12p.o: $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG12P/Source/system_efr32mg12p.c + @echo 'Building $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG12P/Source/system_efr32mg12p.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG12P/Source/system_efr32mg12p.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG12P/Source/system_efr32mg12p.d +OBJS += $(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG12P/Source/system_efr32mg12p.o + +$(OUTPUT_DIR)/sdk/platform/driver/debug/src/sl_debug_swo.o: $(SDK_PATH)/platform/driver/debug/src/sl_debug_swo.c + @echo 'Building $(SDK_PATH)/platform/driver/debug/src/sl_debug_swo.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/driver/debug/src/sl_debug_swo.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/driver/debug/src/sl_debug_swo.d +OBJS += $(OUTPUT_DIR)/sdk/platform/driver/debug/src/sl_debug_swo.o + +$(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_led.o: $(SDK_PATH)/platform/driver/leddrv/src/sl_led.c + @echo 'Building $(SDK_PATH)/platform/driver/leddrv/src/sl_led.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/driver/leddrv/src/sl_led.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_led.d +OBJS += $(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_led.o + +$(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_simple_led.o: $(SDK_PATH)/platform/driver/leddrv/src/sl_simple_led.c + @echo 'Building $(SDK_PATH)/platform/driver/leddrv/src/sl_simple_led.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/driver/leddrv/src/sl_simple_led.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_simple_led.d +OBJS += $(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_simple_led.o + +$(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_default_common_linker.o: $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_default_common_linker.c + @echo 'Building $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_default_common_linker.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_default_common_linker.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_default_common_linker.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_default_common_linker.o + +$(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_hal_flash.o: $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_hal_flash.c + @echo 'Building $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_hal_flash.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_hal_flash.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_hal_flash.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_hal_flash.o + +$(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_lock.o: $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_lock.c + @echo 'Building $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_lock.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_lock.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_lock.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_lock.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_cmu.o: $(SDK_PATH)/platform/emlib/src/em_cmu.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_cmu.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_cmu.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_cmu.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_cmu.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_core.o: $(SDK_PATH)/platform/emlib/src/em_core.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_core.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_core.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_core.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_core.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_crypto.o: $(SDK_PATH)/platform/emlib/src/em_crypto.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_crypto.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_crypto.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_crypto.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_crypto.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_emu.o: $(SDK_PATH)/platform/emlib/src/em_emu.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_emu.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_emu.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_emu.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_emu.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_gpio.o: $(SDK_PATH)/platform/emlib/src/em_gpio.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_gpio.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_gpio.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_gpio.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_gpio.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_msc.o: $(SDK_PATH)/platform/emlib/src/em_msc.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_msc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_msc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_msc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_msc.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_prs.o: $(SDK_PATH)/platform/emlib/src/em_prs.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_prs.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_prs.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_prs.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_prs.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_rmu.o: $(SDK_PATH)/platform/emlib/src/em_rmu.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_rmu.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_rmu.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_rmu.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_rmu.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_rtcc.o: $(SDK_PATH)/platform/emlib/src/em_rtcc.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_rtcc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_rtcc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_rtcc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_rtcc.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_system.o: $(SDK_PATH)/platform/emlib/src/em_system.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_system.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_system.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_system.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_system.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_usart.o: $(SDK_PATH)/platform/emlib/src/em_usart.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_usart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_usart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_usart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_usart.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_wdog.o: $(SDK_PATH)/platform/emlib/src/em_wdog.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_wdog.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_wdog.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_wdog.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_wdog.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_dcdc_s1.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_dcdc_s1.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_dcdc_s1.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_dcdc_s1.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_dcdc_s1.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_dcdc_s1.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_emu_s1.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_emu_s1.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_emu_s1.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_emu_s1.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_emu_s1.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_emu_s1.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_hfxo_s1.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_hfxo_s1.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_hfxo_s1.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_hfxo_s1.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_hfxo_s1.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_hfxo_s1.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_lfxo_s1.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_lfxo_s1.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_lfxo_s1.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_lfxo_s1.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_lfxo_s1.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_lfxo_s1.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_nvic.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_nvic.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_nvic.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_nvic.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_nvic.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_nvic.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_debug.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_debug.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_debug.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_debug.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_debug.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_debug.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_retarget_stdio.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_retarget_stdio.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_retarget_stdio.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_retarget_stdio.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_retarget_stdio.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_retarget_stdio.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_swo_itm_8.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_swo_itm_8.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_swo_itm_8.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_swo_itm_8.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_swo_itm_8.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_swo_itm_8.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_uart.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_uart.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_uart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_uart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_uart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_uart.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_usart.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_usart.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_usart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_usart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_usart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_usart.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_vuart.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_vuart.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_vuart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_vuart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_vuart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_vuart.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_common_ash/src/ash-common.o: $(SDK_PATH)/platform/service/legacy_common_ash/src/ash-common.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_common_ash/src/ash-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_common_ash/src/ash-common.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_common_ash/src/ash-common.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_common_ash/src/ash-common.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/base-replacement.o: $(SDK_PATH)/platform/service/legacy_hal/src/base-replacement.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/base-replacement.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/base-replacement.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/base-replacement.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/base-replacement.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-common.o: $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-common.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-common.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-common.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-common.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-app.o: $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-app.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-app.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-app.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-app.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-app.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-standalone.o: $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-standalone.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-standalone.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-standalone.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-standalone.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-standalone.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface.o: $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/crc.o: $(SDK_PATH)/platform/service/legacy_hal/src/crc.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/crc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/crc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/crc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/crc.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/diagnostic.o: $(SDK_PATH)/platform/service/legacy_hal/src/diagnostic.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/diagnostic.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/diagnostic.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/diagnostic.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/diagnostic.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/ember-phy.o: $(SDK_PATH)/platform/service/legacy_hal/src/ember-phy.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/ember-phy.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/ember-phy.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/ember-phy.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/ember-phy.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/faults.o: $(SDK_PATH)/platform/service/legacy_hal/src/faults.s + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/faults.s' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/faults.s +ASMDEPS_s += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/faults.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/faults.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/random.o: $(SDK_PATH)/platform/service/legacy_hal/src/random.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/random.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/random.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/random.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/random.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/token_legacy.o: $(SDK_PATH)/platform/service/legacy_hal/src/token_legacy.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/token_legacy.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/token_legacy.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/token_legacy.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/token_legacy.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.o: $(SDK_PATH)/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_ncp_ash/src/ash-ncp.o: $(SDK_PATH)/platform/service/legacy_ncp_ash/src/ash-ncp.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_ncp_ash/src/ash-ncp.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_ncp_ash/src/ash-ncp.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_ncp_ash/src/ash-ncp.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_ncp_ash/src/ash-ncp.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_printf/src/sl_legacy_printf.o: $(SDK_PATH)/platform/service/legacy_printf/src/sl_legacy_printf.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_printf/src/sl_legacy_printf.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_printf/src/sl_legacy_printf.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_printf/src/sl_legacy_printf.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_printf/src/sl_legacy_printf.o + +$(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager.o: $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager.c + @echo 'Building $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager.o + +$(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_debug.o: $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_debug.c + @echo 'Building $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_debug.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_debug.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_debug.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_debug.o + +$(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_hal_s0_s1.o: $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_hal_s0_s1.c + @echo 'Building $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_hal_s0_s1.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_hal_s0_s1.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_hal_s0_s1.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_hal_s0_s1.o + +$(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer.o: $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer.c + @echo 'Building $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer.o + +$(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_rtcc.o: $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_rtcc.c + @echo 'Building $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_rtcc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_rtcc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_rtcc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_rtcc.o + +$(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_init.o: $(SDK_PATH)/platform/service/system/src/sl_system_init.c + @echo 'Building $(SDK_PATH)/platform/service/system/src/sl_system_init.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/system/src/sl_system_init.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_init.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_init.o + +$(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_process_action.o: $(SDK_PATH)/platform/service/system/src/sl_system_process_action.c + @echo 'Building $(SDK_PATH)/platform/service/system/src/sl_system_process_action.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/system/src/sl_system_process_action.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_process_action.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_process_action.o + +$(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_def.o: $(SDK_PATH)/platform/service/token_manager/src/sl_token_def.c + @echo 'Building $(SDK_PATH)/platform/service/token_manager/src/sl_token_def.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/token_manager/src/sl_token_def.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_def.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_def.o + +$(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manager.o: $(SDK_PATH)/platform/service/token_manager/src/sl_token_manager.c + @echo 'Building $(SDK_PATH)/platform/service/token_manager/src/sl_token_manager.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/token_manager/src/sl_token_manager.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manager.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manager.o + +$(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manufacturing.o: $(SDK_PATH)/platform/service/token_manager/src/sl_token_manufacturing.c + @echo 'Building $(SDK_PATH)/platform/service/token_manager/src/sl_token_manufacturing.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/token_manager/src/sl_token_manufacturing.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manufacturing.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manufacturing.o + +$(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay.o: $(SDK_PATH)/platform/service/udelay/src/sl_udelay.c + @echo 'Building $(SDK_PATH)/platform/service/udelay/src/sl_udelay.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/udelay/src/sl_udelay.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay.o + +$(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay_armv6m_gcc.o: $(SDK_PATH)/platform/service/udelay/src/sl_udelay_armv6m_gcc.S + @echo 'Building $(SDK_PATH)/platform/service/udelay/src/sl_udelay_armv6m_gcc.S' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $(SDK_PATH)/platform/service/udelay/src/sl_udelay_armv6m_gcc.S +ASMDEPS_S += $(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay_armv6m_gcc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay_armv6m_gcc.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-binding-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-binding-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-binding-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-binding-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-binding-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-binding-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-green-power-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-green-power-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-green-power-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-green-power-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-green-power-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-green-power-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-messaging-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-messaging-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-messaging-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-messaging-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-messaging-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-messaging-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-networking-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-networking-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-networking-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-networking-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-networking-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-networking-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-security-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-security-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-security-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-security-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-security-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-security-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-trust-center-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-trust-center-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-trust-center-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-trust-center-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-trust-center-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-trust-center-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/em260-common.o: $(SDK_PATH)/protocol/zigbee/app/em260/em260-common.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/em260-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/em260-common.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/em260-common.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/em260-common.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/ncp-stack-stub.o: $(SDK_PATH)/protocol/zigbee/app/em260/ncp-stack-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/ncp-stack-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/ncp-stack-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/ncp-stack-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/ncp-stack-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/serial-interface-uart.o: $(SDK_PATH)/protocol/zigbee/app/em260/serial-interface-uart.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/serial-interface-uart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/serial-interface-uart.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/serial-interface-uart.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/serial-interface-uart.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_common.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_common.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_common.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_common.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_common.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.o: $(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.o: $(SDK_PATH)/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/security/security-address-cache.o: $(SDK_PATH)/protocol/zigbee/app/util/security/security-address-cache.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/security/security-address-cache.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/security/security-address-cache.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/security/security-address-cache.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/security/security-address-cache.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/xncp/xncp_cb.o: $(SDK_PATH)/protocol/zigbee/app/xncp/xncp_cb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/xncp/xncp_cb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/xncp/xncp_cb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/xncp/xncp_cb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/xncp/xncp_cb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/config/ember-configuration.o: $(SDK_PATH)/protocol/zigbee/stack/config/ember-configuration.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/config/ember-configuration.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/config/ember-configuration.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/config/ember-configuration.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/config/ember-configuration.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/ember-multi-network-stub.o: $(SDK_PATH)/protocol/zigbee/stack/core/ember-multi-network-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/core/ember-multi-network-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/core/ember-multi-network-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/ember-multi-network-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/ember-multi-network-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-common.o: $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-common.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-common.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-common.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-common.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-stub.o: $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/aes-ecb.o: $(SDK_PATH)/protocol/zigbee/stack/framework/aes-ecb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/framework/aes-ecb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/framework/aes-ecb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/aes-ecb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/aes-ecb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/ccm-star.o: $(SDK_PATH)/protocol/zigbee/stack/framework/ccm-star.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/framework/ccm-star.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/framework/ccm-star.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/ccm-star.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/ccm-star.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/strong-random-api.o: $(SDK_PATH)/protocol/zigbee/stack/framework/strong-random-api.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/framework/strong-random-api.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/framework/strong-random-api.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/strong-random-api.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/strong-random-api.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.o: $(SDK_PATH)/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/install-code-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/install-code-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/install-code-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/install-code-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/install-code-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/install-code-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/zll/zll-stubs.o: $(SDK_PATH)/protocol/zigbee/stack/zll/zll-stubs.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/zll/zll-stubs.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/zll/zll-stubs.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/zll/zll-stubs.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/zll/zll-stubs.o + +$(OUTPUT_DIR)/sdk/util/silicon_labs/silabs_core/memory_manager/sl_malloc.o: $(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager/sl_malloc.c + @echo 'Building $(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager/sl_malloc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager/sl_malloc.c +CDEPS += $(OUTPUT_DIR)/sdk/util/silicon_labs/silabs_core/memory_manager/sl_malloc.d +OBJS += $(OUTPUT_DIR)/sdk/util/silicon_labs/silabs_core/memory_manager/sl_malloc.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/aes.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/aes.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/aes.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/aes.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/aes.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/aes.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1parse.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1parse.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1parse.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1parse.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1parse.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1parse.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1write.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1write.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1write.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1write.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1write.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1write.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/base64.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/base64.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/base64.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/base64.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/base64.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/base64.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/bignum.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/bignum.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/bignum.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/bignum.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/bignum.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/bignum.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher_wrap.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher_wrap.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher_wrap.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher_wrap.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher_wrap.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher_wrap.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/constant_time.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/constant_time.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/constant_time.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/constant_time.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/constant_time.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/constant_time.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ctr_drbg.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ctr_drbg.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ctr_drbg.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ctr_drbg.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ctr_drbg.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ctr_drbg.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/des.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/des.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/des.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/des.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/des.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/des.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdh.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdh.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdh.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdh.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdh.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdh.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdsa.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdsa.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdsa.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdsa.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdsa.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdsa.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp_curves.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp_curves.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp_curves.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp_curves.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp_curves.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp_curves.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy_poll.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy_poll.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy_poll.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy_poll.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy_poll.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy_poll.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/hmac_drbg.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/hmac_drbg.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/hmac_drbg.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/hmac_drbg.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/hmac_drbg.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/hmac_drbg.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/md.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/md.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/md.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/md.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/md.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/md.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/oid.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/oid.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/oid.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/oid.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/oid.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/oid.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pem.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pem.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pem.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pem.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pem.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pem.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk_wrap.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk_wrap.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk_wrap.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk_wrap.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk_wrap.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk_wrap.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkparse.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkparse.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkparse.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkparse.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkparse.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkparse.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkwrite.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkwrite.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkwrite.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkwrite.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkwrite.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkwrite.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform_util.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform_util.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform_util.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform_util.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform_util.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform_util.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_aead.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_aead.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_aead.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_aead.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_aead.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_aead.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_client.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_client.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_client.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_client.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_client.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_client.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_hash.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_hash.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_hash.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_hash.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_hash.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_hash.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_mac.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_mac.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_mac.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_mac.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_mac.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_mac.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_se.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_se.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_se.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_se.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_se.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_se.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_storage.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_storage.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_storage.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_storage.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_storage.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_storage.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha1.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha1.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha1.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha1.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha1.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha1.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha256.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha256.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha256.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha256.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha256.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha256.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha512.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha512.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha512.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha512.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha512.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha512.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/threading.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/threading.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/threading.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/threading.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/threading.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/threading.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509.o + +$(OUTPUT_DIR)/project/_/_/common/gsdk/util/third_party/crypto/mbedtls/library/x509_create.o: $(COPIED_SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_create.c + @echo 'Building $(COPIED_SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_create.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(COPIED_SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_create.c +CDEPS += $(OUTPUT_DIR)/project/_/_/common/gsdk/util/third_party/crypto/mbedtls/library/x509_create.d +OBJS += $(OUTPUT_DIR)/project/_/_/common/gsdk/util/third_party/crypto/mbedtls/library/x509_create.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crl.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crl.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crl.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crl.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crl.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crl.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crt.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crt.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crt.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crt.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crt.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crt.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_csr.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_csr.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_csr.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_csr.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_csr.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_csr.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_crt.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_crt.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_crt.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_crt.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_crt.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_crt.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_csr.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_csr.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_csr.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_csr.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_csr.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_csr.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_aes.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_aes.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_aes.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_aes.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_aes.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_aes.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_ecp.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_ecp.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_ecp.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_ecp.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_ecp.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/crypto_ecp.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/crypto_management.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/crypto_management.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/crypto_management.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/crypto_management.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/crypto_management.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/crypto_management.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_aead.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_aead.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_aead.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_aead.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_aead.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_aead.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_cipher.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_hash.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_hash.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_hash.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_hash.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_hash.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_hash.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_mac.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_mac.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_mac.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_mac.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_mac.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_transparent_driver_mac.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_trng_driver.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_trng_driver.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_trng_driver.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_trng_driver.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_trng_driver.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_crypto_trng_driver.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.o + +$(OUTPUT_DIR)/sdk/util/third_party/printf/printf.o: $(SDK_PATH)/util/third_party/printf/printf.c + @echo 'Building $(SDK_PATH)/util/third_party/printf/printf.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/printf/printf.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/printf/printf.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/printf/printf.o + +$(OUTPUT_DIR)/sdk/util/third_party/printf/src/iostream_printf.o: $(SDK_PATH)/util/third_party/printf/src/iostream_printf.c + @echo 'Building $(SDK_PATH)/util/third_party/printf/src/iostream_printf.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/printf/src/iostream_printf.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/printf/src/iostream_printf.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/printf/src/iostream_printf.o + +$(OUTPUT_DIR)/sdk/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.o: $(SDK_PATH)/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.c + @echo 'Building $(SDK_PATH)/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.o + +$(OUTPUT_DIR)/project/_/_/common/creds.o: ../../common/creds.c + @echo 'Building ../../common/creds.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../../common/creds.c +CDEPS += $(OUTPUT_DIR)/project/_/_/common/creds.d +OBJS += $(OUTPUT_DIR)/project/_/_/common/creds.o + +$(OUTPUT_DIR)/project/_/device_cert.o: ../device_cert.c + @echo 'Building ../device_cert.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../device_cert.c +CDEPS += $(OUTPUT_DIR)/project/_/device_cert.d +OBJS += $(OUTPUT_DIR)/project/_/device_cert.o + +$(OUTPUT_DIR)/project/_/device_creds.o: ../device_creds.c + @echo 'Building ../device_creds.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../device_creds.c +CDEPS += $(OUTPUT_DIR)/project/_/device_creds.d +OBJS += $(OUTPUT_DIR)/project/_/device_creds.o + +$(OUTPUT_DIR)/project/_/main.o: ../main.c + @echo 'Building ../main.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../main.c +CDEPS += $(OUTPUT_DIR)/project/_/main.d +OBJS += $(OUTPUT_DIR)/project/_/main.o + +$(OUTPUT_DIR)/project/autogen/sl_board_default_init.o: autogen/sl_board_default_init.c + @echo 'Building autogen/sl_board_default_init.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_board_default_init.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_board_default_init.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_board_default_init.o + +$(OUTPUT_DIR)/project/autogen/sl_device_init_clocks.o: autogen/sl_device_init_clocks.c + @echo 'Building autogen/sl_device_init_clocks.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_device_init_clocks.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_device_init_clocks.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_device_init_clocks.o + +$(OUTPUT_DIR)/project/autogen/sl_event_handler.o: autogen/sl_event_handler.c + @echo 'Building autogen/sl_event_handler.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_event_handler.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_event_handler.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_event_handler.o + +$(OUTPUT_DIR)/project/autogen/sl_iostream_handles.o: autogen/sl_iostream_handles.c + @echo 'Building autogen/sl_iostream_handles.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_iostream_handles.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_iostream_handles.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_iostream_handles.o + +$(OUTPUT_DIR)/project/autogen/sl_iostream_init_usart_instances.o: autogen/sl_iostream_init_usart_instances.c + @echo 'Building autogen/sl_iostream_init_usart_instances.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_iostream_init_usart_instances.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_iostream_init_usart_instances.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_iostream_init_usart_instances.o + +$(OUTPUT_DIR)/project/autogen/sl_power_manager_handler.o: autogen/sl_power_manager_handler.c + @echo 'Building autogen/sl_power_manager_handler.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_power_manager_handler.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_power_manager_handler.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_power_manager_handler.o + +$(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_phy_select.o: autogen/sl_rail_util_ieee802154_phy_select.c + @echo 'Building autogen/sl_rail_util_ieee802154_phy_select.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_rail_util_ieee802154_phy_select.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_phy_select.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_phy_select.o + +$(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_stack_event.o: autogen/sl_rail_util_ieee802154_stack_event.c + @echo 'Building autogen/sl_rail_util_ieee802154_stack_event.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_rail_util_ieee802154_stack_event.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_stack_event.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_stack_event.o + +$(OUTPUT_DIR)/project/autogen/sl_simple_led_instances.o: autogen/sl_simple_led_instances.c + @echo 'Building autogen/sl_simple_led_instances.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_simple_led_instances.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_simple_led_instances.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_simple_led_instances.o + +$(OUTPUT_DIR)/project/autogen/zigbee_common_callback_dispatcher.o: autogen/zigbee_common_callback_dispatcher.c + @echo 'Building autogen/zigbee_common_callback_dispatcher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/zigbee_common_callback_dispatcher.c +CDEPS += $(OUTPUT_DIR)/project/autogen/zigbee_common_callback_dispatcher.d +OBJS += $(OUTPUT_DIR)/project/autogen/zigbee_common_callback_dispatcher.o + +$(OUTPUT_DIR)/project/autogen/zigbee_ncp_callback_dispatcher.o: autogen/zigbee_ncp_callback_dispatcher.c + @echo 'Building autogen/zigbee_ncp_callback_dispatcher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/zigbee_ncp_callback_dispatcher.c +CDEPS += $(OUTPUT_DIR)/project/autogen/zigbee_ncp_callback_dispatcher.d +OBJS += $(OUTPUT_DIR)/project/autogen/zigbee_ncp_callback_dispatcher.o + +$(OUTPUT_DIR)/project/autogen/zigbee_stack_callback_dispatcher.o: autogen/zigbee_stack_callback_dispatcher.c + @echo 'Building autogen/zigbee_stack_callback_dispatcher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/zigbee_stack_callback_dispatcher.c +CDEPS += $(OUTPUT_DIR)/project/autogen/zigbee_stack_callback_dispatcher.d +OBJS += $(OUTPUT_DIR)/project/autogen/zigbee_stack_callback_dispatcher.o + +# Automatically-generated Simplicity Studio Metadata +# Please do not edit or delete these lines! +# SIMPLICITY_STUDIO_METADATA=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=END_SIMPLICITY_STUDIO_METADATA +# END OF METADATA \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4186a/autogen/RTE_Components.h b/silabs_examples/credentials/device/brd4186a/autogen/RTE_Components.h new file mode 100644 index 00000000000000..3b6ea30c43423f --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/RTE_Components.h @@ -0,0 +1,22 @@ +// This file is autogenerated by Silicon Labs SLC. +// The contents of this file will be replaced in their entirety upon regeneration. +// +// Source template file: RTE_Components.h.jinja + + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + +/* standard device header from emlib */ +#define CMSIS_device_header "em_device.h" + +/* components are auto-generated here */ + + +#endif /* RTE_COMPONENTS_H */ + +/* This file is autogenerated by Silicon Labs SLC. */ +/* The contents of this file will be replaced in their entirety upon regeneration. */ +/* */ +/* Source template file: RTE_Components.h.jinja */ + diff --git a/silabs_examples/credentials/device/brd4186a/autogen/linkerfile_base.icf b/silabs_examples/credentials/device/brd4186a/autogen/linkerfile_base.icf new file mode 100644 index 00000000000000..709d9fcc0f6e18 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/linkerfile_base.icf @@ -0,0 +1,85 @@ + + +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ +/* Version 4.1.1 */ + +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_ROM_start__ = 0x8006000; +define symbol __ICFEDIT_region_ROM_end__ = (0x8006000+0x178000-1); +define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; +define symbol __ICFEDIT_region_RAM_end__ = (0x20000000+0x40000-1); + +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; +define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; + +define block CSTACK with alignment = 8 +{ + section .stack +}; + +define block HEAP with alignment = 8 +{ + section .heap +}; + +define block header with alignment = 8 +{ + section AAT +}; + +define block nvm with alignment = 8192 +{ + section SIMEE, +}; +keep { block nvm }; + +define block storage with alignment = 8192 +{ + section INTERNAL_STORAGE, +}; +keep { block storage }; + +define block application with fixed order +{ + block header, + readonly section .intvec, + readonly +}; + +define block application_ram with fixed order +{ + block CSTACK, + readwrite, + block HEAP +}; + +initialize by copy { readwrite }; + +do not initialize +{ + section .noinit, + section .stack, + section .heap +}; + +keep { + section .intvec, + section AAT, + block header +}; +"application": +place at start of ROM_region { block application }; + +"storage_regions": +place at end of ROM_region { + block nvm, + block storage +}; + +"application_ram": +place at start of RAM_region { block application_ram }; diff --git a/silabs_examples/credentials/device/brd4186a/autogen/linkerfile_base.ld b/silabs_examples/credentials/device/brd4186a/autogen/linkerfile_base.ld new file mode 100644 index 00000000000000..4352b12975cbbd --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/linkerfile_base.ld @@ -0,0 +1,225 @@ +/***************************************************************************//** + * GCC Linker script for Silicon Labs devices + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + + + +MEMORY +{ + FLASH (rx) : ORIGIN = 0x8006000, LENGTH = 0x178000 + RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x40000 +} + +ENTRY(Reset_Handler) + +SECTIONS +{ + .aat : + { + KEEP(*(.aat*)); + . = ALIGN(512); + } > FLASH + + .text : + { + linker_vectors_begin = .; + KEEP(*(.vectors)) + linker_vectors_end = .; + + __Vectors_End = .; + __Vectors_Size = __Vectors_End - __Vectors; + + linker_code_begin = .; + *(.text*) + linker_code_end = .; + + KEEP(*(.init)) + KEEP(*(.fini)) + + /* .ctors */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + + /* .dtors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + + *(.rodata*) + *(.eh_frame*) + } > FLASH + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > FLASH + + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > FLASH + __exidx_end = .; + + .copy.table : + { + . = ALIGN(4); + __copy_table_start__ = .; + + LONG (__etext) + LONG (__data_start__) + LONG ((__data_end__ - __data_start__) / 4) + + /* Add each additional data section here */ +/* + LONG (__etext2) + LONG (__data2_start__) + LONG ((__data2_end__ - __data2_start__) / 4) +*/ + __copy_table_end__ = .; + } > FLASH + + .zero.table : + { + . = ALIGN(4); + __zero_table_start__ = .; + /* Add each additional bss section here */ +/* + LONG (__bss2_start__) + LONG ((__bss2_end__ - __bss2_start__) / 4) +*/ + __zero_table_end__ = .; + } > FLASH + + __etext = .; + + /* Start placing output sections which are loaded into RAM */ + . = ORIGIN(RAM); + + .stack ALIGN(8) (NOLOAD): + { + __StackLimit = .; + KEEP(*(.stack*)) + . = ALIGN(4); + __StackTop = .; + PROVIDE(__stack = __StackTop); + } > RAM + + .noinit . (NOLOAD): + { + PROVIDE(__NO_INIT__begin = .); + *(.noinit*); + PROVIDE(__NO_INIT__end = .); + } > RAM + PROVIDE(__NO_INIT_NEW__size = SIZEOF(.noinit)); + + .data . : AT (__etext) + { + . = ALIGN(4); + __data_start__ = .; + *(vtable) + *(.data*) + . = ALIGN (4); + + PROVIDE(__ram_func_section_start = .); + *(.ram) + PROVIDE(__ram_func_section_end = .); + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + + . = ALIGN(4); + /* init data */ + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + + . = ALIGN(4); + /* finit data */ + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + + . = ALIGN(4); + /* All data end */ + __data_end__ = .; + + } > RAM + + .bss . : + { + . = ALIGN(4); + __bss_start__ = .; + *(SEGGER_RTT) + *(.bss*) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + } > RAM + + .heap (COPY): + { + __HeapBase = .; + __end__ = .; + end = __end__; + _end = __end__; + KEEP(*(.heap*)) + . = ORIGIN(RAM) + LENGTH(RAM); + __HeapLimit = .; + } > RAM + + __heap_size = __HeapLimit - __HeapBase; + + /* This is where we handle flash storage blocks. We use dummy sections for finding the configured + * block sizes and then "place" them at the end of flash when the size is known. */ + .internal_storage (DSECT) : { + KEEP(*(.internal_storage*)) + } > FLASH + + .nvm (DSECT) : { + KEEP(*(.simee*)) + } > FLASH + + linker_storage_end = ORIGIN(FLASH) + LENGTH(FLASH); + linker_storage_begin = linker_storage_end - SIZEOF(.internal_storage); + linker_storage_size = SIZEOF(.internal_storage); + linker_nvm_end = linker_storage_begin; + linker_nvm_begin = linker_nvm_end - SIZEOF(.nvm); + linker_nvm_size = SIZEOF(.nvm); + __nvm3Base = linker_nvm_begin; +} diff --git a/silabs_examples/credentials/device/brd4186a/autogen/mbedtls_config_autogen.h b/silabs_examples/credentials/device/brd4186a/autogen/mbedtls_config_autogen.h new file mode 100644 index 00000000000000..1e6fc322a5a674 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/mbedtls_config_autogen.h @@ -0,0 +1,97 @@ +// This is an autogenerated config file, any changes to this file will be overwritten + +#ifndef MBEDTLS_CONFIG_AUTOGEN_H +#define MBEDTLS_CONFIG_AUTOGEN_H + + +#define MBEDTLS_MPI_MAX_SIZE 66 + + +#define MBEDTLS_AES_C +#define MBEDTLS_ASN1_PARSE_C +#define MBEDTLS_ASN1_WRITE_C +#define MBEDTLS_BASE64_C +#define MBEDTLS_CIPHER_C +#define MBEDTLS_ECP_C +#define MBEDTLS_ECP_DP_SECP192R1_ENABLED +#define MBEDTLS_ECP_DP_SECP256R1_ENABLED +#define MBEDTLS_ECP_DP_SECP384R1_ENABLED +#define MBEDTLS_ECP_DP_SECP521R1_ENABLED +#define MBEDTLS_ECDSA_C +#define MBEDTLS_ENTROPY_HARDWARE_ALT +#define MBEDTLS_ENTROPY_RAIL_PRESENT +#define MBEDTLS_MD_C +#define MBEDTLS_BIGNUM_C +#define MBEDTLS_PEM_PARSE_C +#define MBEDTLS_PEM_WRITE_C +#define MBEDTLS_PK_C +#define MBEDTLS_PK_PARSE_C +#define MBEDTLS_PK_WRITE_C +#define MBEDTLS_ENTROPY_C +#define MBEDTLS_ENTROPY_FORCE_SHA256 +#define MBEDTLS_ENTROPY_MAX_SOURCES 2 +#define MBEDTLS_NO_PLATFORM_ENTROPY +#define MBEDTLS_CTR_DRBG_C +#define MBEDTLS_SHA1_C +#define MBEDTLS_SHA256_C +#define MBEDTLS_SHA224_C +#define MBEDTLS_SHA384_C +#define MBEDTLS_SHA512_C +#define MBEDTLS_X509_USE_C +#define MBEDTLS_X509_CREATE_C +#define MBEDTLS_X509_CRT_PARSE_C +#define MBEDTLS_X509_CRT_WRITE_C +#define MBEDTLS_X509_CRL_PARSE_C +#define MBEDTLS_X509_CSR_PARSE_C +#define MBEDTLS_X509_CSR_WRITE_C +#define MBEDTLS_OID_C +#define MBEDTLS_PSA_CRYPTO_C +#define MBEDTLS_USE_PSA_CRYPTO +#define MBEDTLS_PSA_CRYPTO_CONFIG +#define MBEDTLS_PSA_CRYPTO_DRIVERS +#define MBEDTLS_PSA_CRYPTO_STORAGE_C + + +#include "config-device-acceleration.h" + +#if defined(SL_SE_ASSUME_FW_AT_LEAST_1_2_10) || defined(SL_SE_ASSUME_FW_AT_LEAST_2_1_7) + #undef MBEDTLS_ECP_DP_CURVE25519_ENABLED + #if !(defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)) + #undef MBEDTLS_ECDH_C + #undef MBEDTLS_ECP_C + #undef MBEDTLS_BIGNUM_C + #endif /* !MBEDTLS_ECP_DP_SECPxR1_ENABLED */ +#endif /* SL_SE_ASSUME_FW_AT_LEAST_x */ + +#if !defined(TEST_SUITE_MEMORY_BUFFER_ALLOC) +#if !defined(MBEDTLS_PLATFORM_FREE_MACRO) && !defined(MBEDTLS_PLATFORM_CALLOC_MACRO) +#if defined(CONFIG_MBEDTLS_USE_FREERTOS_PVCALLOC) + /* In FreeRTOS, use pvCalloc (and vPortFree) for dynamic memory allocation. + E.g. Amazon FreeRTOS implements pvCalloc for dynamic memory allocation. */ + #include + + extern void * pvCalloc( size_t xNumElements, + size_t xSize ) ; + extern void vPortFree( void *pv ); + #define MBEDTLS_PLATFORM_CALLOC_MACRO pvCalloc + #define MBEDTLS_PLATFORM_FREE_MACRO vPortFree +#else + /* No memory allocator override, supply the default for SL platforms */ + #include "sl_malloc.h" + + #define MBEDTLS_PLATFORM_FREE_MACRO sl_free + #define MBEDTLS_PLATFORM_CALLOC_MACRO sl_calloc +#endif +#endif /* No specific memory allocator override */ +#endif /* Not under test */ + +#define MBEDTLS_PLATFORM_MEMORY +#define MBEDTLS_PLATFORM_C + + + +#endif diff --git a/silabs_examples/credentials/device/brd4186a/autogen/psa_crypto_config_autogen.h b/silabs_examples/credentials/device/brd4186a/autogen/psa_crypto_config_autogen.h new file mode 100644 index 00000000000000..f311a12cd5acfd --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/psa_crypto_config_autogen.h @@ -0,0 +1,135 @@ +// This is an autogenerated config file, any changes to this file will be overwritten + +#ifndef PSA_CRYPTO_CONFIG_AUTOGEN_H +#define PSA_CRYPTO_CONFIG_AUTOGEN_H + +#define PSA_WANT_KEY_TYPE_AES +#define PSA_WANT_ALG_CCM +#define PSA_WANT_ALG_ECB_NO_PADDING +#define MBEDTLS_PSA_BUILTIN_ALG_ECB_NO_PADDING 1 +#define PSA_WANT_ALG_SHA_1 +#define PSA_WANT_ALG_SHA_224 +#define PSA_WANT_ALG_SHA_256 +#define PSA_WANT_ALG_SHA_384 +#define PSA_WANT_ALG_SHA_512 +#define PSA_WANT_ALG_ECDSA +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR +#define PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY +#define PSA_WANT_ECC_SECP_R1_192 +#define PSA_WANT_ECC_SECP_R1_256 +#define PSA_WANT_ECC_SECP_R1_384 +#define PSA_WANT_ECC_SECP_R1_521 +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY 1 +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR 1 +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_192 1 +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_256 1 +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_384 1 +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_521 1 +#define MBEDTLS_PSA_BUILTIN_ALG_ECDSA 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_1 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_224 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_256 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_384 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_512 1 +#define MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG +#define MBEDTLS_PSA_ACCEL_ALG_SHA_1 +#define MBEDTLS_PSA_ACCEL_ALG_SHA_224 +#define MBEDTLS_PSA_ACCEL_ALG_SHA_256 +#define MBEDTLS_PSA_ACCEL_KEY_TYPE_AES +#define MBEDTLS_PSA_ACCEL_ALG_ECB_NO_PADDING +#define MBEDTLS_PSA_ACCEL_ALG_CBC_NO_PADDING +#define MBEDTLS_PSA_ACCEL_ALG_CBC_PKCS7 +#define MBEDTLS_PSA_ACCEL_ALG_CTR +#define MBEDTLS_PSA_ACCEL_ALG_CFB +#define MBEDTLS_PSA_ACCEL_ALG_OFB +#define MBEDTLS_PSA_ACCEL_ALG_GCM +#define MBEDTLS_PSA_ACCEL_ALG_CCM +#define MBEDTLS_PSA_ACCEL_ALG_HMAC +#define MBEDTLS_PSA_BUILTIN_ALG_HMAC 1 +#define MBEDTLS_PSA_ACCEL_ALG_CMAC +#define MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR +#define MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY +#define MBEDTLS_PSA_ACCEL_ALG_ECDSA +#define MBEDTLS_PSA_ACCEL_ALG_ECDH +#define MBEDTLS_PSA_ACCEL_ECC_SECP_R1_192 +#define MBEDTLS_PSA_ACCEL_ECC_SECP_R1_224 +#define MBEDTLS_PSA_ACCEL_ECC_SECP_R1_256 + +#define MBEDTLS_PSA_KEY_SLOT_COUNT (1 + SL_PSA_KEY_USER_SLOT_COUNT) +#define SL_PSA_ITS_MAX_FILES (1 + SL_PSA_ITS_USER_MAX_FILES) + +#include "config-device-acceleration.h" +#if defined(SL_SE_ASSUME_FW_AT_LEAST_1_2_10) || defined(SL_SE_ASSUME_FW_AT_LEAST_2_1_7) + #define MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_255 + #undef MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_255 + #if !(defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)) + #undef MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR + #undef MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY + #undef MBEDTLS_PSA_BUILTIN_ALG_ECDH + #endif /* !MBEDTLS_ECP_DP_SECPxR1_ENABLED */ +#endif /* SL_SE_ASSUME_FW_AT_LEAST_x */ + +#if defined(TFM_CONFIG_SL_SECURE_LIBRARY) +// Asymmetric Crypt module (RSA is not supported) +#define TFM_CRYPTO_ASYM_ENCRYPT_MODULE_DISABLED + +// HASH module +#if !defined(PSA_WANT_ALG_SHA_1) \ + && !defined(PSA_WANT_ALG_SHA_224) \ + && !defined(PSA_WANT_ALG_SHA_256) \ + && !defined(PSA_WANT_ALG_SHA_384) \ + && !defined(PSA_WANT_ALG_SHA_512) \ + && !defined(PSA_WANT_ALG_MD5) +#define TFM_CRYPTO_HASH_MODULE_DISABLED +#endif + +// AEAD module +#if !defined(PSA_WANT_ALG_CCM) \ + && !defined(PSA_WANT_ALG_GCM) \ + && !defined(PSA_WANT_ALG_CHACHA20_POLY1305) +#define TFM_CRYPTO_AEAD_MODULE_DISABLED +#endif + +// Asymmetric Sign module +#if !defined(PSA_WANT_ALG_ECDSA) \ + && !defined(PSA_WANT_ALG_EDDSA) \ + && !defined(PSA_WANT_ALG_DETERMINISTIC_ECDSA) +#define TFM_CRYPTO_ASYM_SIGN_MODULE_DISABLED +#endif + +// Cipher module +#if !defined(PSA_WANT_ALG_CFB) \ + && !defined(PSA_WANT_ALG_CTR) \ + && !defined(PSA_WANT_ALG_CBC_NO_PADDING) \ + && !defined(PSA_WANT_ALG_CBC_PKCS7) \ + && !defined(PSA_WANT_ALG_ECB_NO_PADDING) \ + && !defined(PSA_WANT_ALG_XTS) \ + && !defined(PSA_WANT_ALG_OFB) \ + && !defined(PSA_WANT_ALG_STREAM_CIPHER) +#define TFM_CRYPTO_CIPHER_MODULE_DISABLED +#endif + +// MAC module +#if !defined(PSA_WANT_ALG_HMAC) \ + && !defined(PSA_WANT_ALG_CMAC) \ + && !defined(PSA_WANT_ALG_CBC_MAC) +#define TFM_CRYPTO_MAC_MODULE_DISABLED +#endif + +// Key derivation module +#if !defined(PSA_WANT_ALG_PBKDF2_HMAC) \ + && !defined(PSA_WANT_ALG_HKDF) \ + && !defined(PSA_WANT_ALG_PBKDF2_AES_CMAC_PRF_128) \ + && !defined(PSA_WANT_ALG_TLS12_PRF) \ + && !defined(PSA_WANT_ALG_TLS12_PSK_TO_MS) \ + && !defined(PSA_WANT_ALG_ECDH) +#define TFM_CRYPTO_KEY_DERIVATION_MODULE_DISABLED +#endif + +#endif // TFM_CONFIG_SL_SECURE_LIBRARY + +#endif diff --git a/silabs_examples/credentials/device/brd4186a/autogen/sl_application_type.h b/silabs_examples/credentials/device/brd4186a/autogen/sl_application_type.h new file mode 100644 index 00000000000000..8bc7f50103c1e2 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/sl_application_type.h @@ -0,0 +1,41 @@ +/***************************************************************************//** + * @file + * @brief Autogenerated configuration file for application properties + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_APPLICATION_TYPE_H +#define SL_APPLICATION_TYPE_H + +#include "api/application_properties.h" + +// Bitfield representing type of application +#define APPLICATION_TYPE APPLICATION_TYPE_ZIGBEE + + +#endif // SL_APPLICATION_TYPE_H + diff --git a/silabs_examples/credentials/device/brd4186a/autogen/sl_board_default_init.c b/silabs_examples/credentials/device/brd4186a/autogen/sl_board_default_init.c new file mode 100644 index 00000000000000..bd43db368b3c3a --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/sl_board_default_init.c @@ -0,0 +1,36 @@ +/***************************************************************************//** + * @file + * @brief Board Default Init + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ +#include "sl_board_control.h" + +void sl_board_default_init(void) +{ + sl_board_disable_vcom(); + +} diff --git a/silabs_examples/credentials/device/brd4186a/autogen/sl_component_catalog.h b/silabs_examples/credentials/device/brd4186a/autogen/sl_component_catalog.h new file mode 100644 index 00000000000000..f004418792b696 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/sl_component_catalog.h @@ -0,0 +1,55 @@ +#ifndef SL_COMPONENT_CATALOG_H +#define SL_COMPONENT_CATALOG_H + +// APIs present in project +#define SL_CATALOG_GECKO_BOOTLOADER_INTERFACE_PRESENT +#define SL_CATALOG_DEVICE_INIT_NVIC_PRESENT +#define SL_CATALOG_EMLIB_CORE_DEBUG_CONFIG_PRESENT +#define SL_CATALOG_RETARGET_STDIO_PRESENT +#define SL_CATALOG_IOSTREAM_UART_COMMON_PRESENT +#define SL_CATALOG_IOSTREAM_USART_PRESENT +#define SL_CATALOG_LEGACY_BOOTLOADER_INTERFACE_PRESENT +#define SL_CATALOG_LEGACY_COMMON_ASH_PRESENT +#define SL_CATALOG_LEGACY_HAL_PRESENT +#define SL_CATALOG_LEGACY_HAL_WDOG_PRESENT +#define SL_CATALOG_LEGACY_NCP_ASH_PRESENT +#define SL_CATALOG_LEGACY_PRINTF_PRESENT +#define SL_CATALOG_MX25_FLASH_SHUTDOWN_EUSART_PRESENT +#define SL_CATALOG_NVM3_PRESENT +#define SL_CATALOG_POWER_MANAGER_PRESENT +#define SL_CATALOG_PRINTF_PRESENT +#define SL_CATALOG_PSA_CRYPTO_PRESENT +#define SL_CATALOG_RAIL_LIB_PRESENT +#define SL_CATALOG_RAIL_UTIL_IEEE802154_PHY_SELECT_PRESENT +#define SL_CATALOG_RAIL_UTIL_IEEE802154_STACK_EVENT_PRESENT +#define SL_CATALOG_RAIL_UTIL_PTI_PRESENT +#define SL_CATALOG_SE_MANAGER_PRESENT +#define SL_CATALOG_LED0_PRESENT +#define SL_CATALOG_SIMPLE_LED_PRESENT +#define SL_CATALOG_SIMPLE_LED_LED0_PRESENT +#define SL_CATALOG_SLEEPTIMER_PRESENT +#define SL_CATALOG_TOKEN_MANAGER_PRESENT +#define SL_CATALOG_TOKEN_MANAGER_NVM3_PRESENT +#define SL_CATALOG_ZIGBEE_AES_PSA_PRESENT +#define SL_CATALOG_ZIGBEE_APP_FRAMEWORK_COMMON_PRESENT +#define SL_CATALOG_ZIGBEE_BINDING_TABLE_PRESENT +#define SL_CATALOG_ZIGBEE_CCM_PSA_PRESENT +#define SL_CATALOG_ZIGBEE_DEBUG_BASIC_PRESENT +#define SL_CATALOG_ZIGBEE_DEBUG_EXTENDED_PRESENT +#define SL_CATALOG_ZIGBEE_DEBUG_PRINT_PRESENT +#define SL_CATALOG_ZIGBEE_END_DEVICE_BIND_PRESENT +#define SL_CATALOG_ZIGBEE_GREEN_POWER_PRESENT +#define SL_CATALOG_ZIGBEE_NCP_FRAMEWORK_PRESENT +#define SL_CATALOG_ZIGBEE_NCP_PRESENT +#define SL_CATALOG_ZIGBEE_NCP_UART_HARDWARE_PRESENT +#define SL_CATALOG_ZIGBEE_PACKET_VALIDATE_PRESENT +#define SL_CATALOG_ZIGBEE_PHY_2_4_PRESENT +#define SL_CATALOG_ZIGBEE_PRO_STACK_PRESENT +#define SL_CATALOG_ZIGBEE_R22_SUPPORT_PRESENT +#define SL_CATALOG_ZIGBEE_SECURITY_LINK_KEYS_PRESENT +#define SL_CATALOG_ZIGBEE_SOURCE_ROUTE_PRESENT +#define SL_CATALOG_ZIGBEE_STACK_COMMON_PRESENT +#define SL_CATALOG_ZIGBEE_STRONG_RANDOM_API_RADIO_PRESENT +#define SL_CATALOG_ZIGBEE_XNCP_PRESENT + +#endif // SL_COMPONENT_CATALOG_H diff --git a/silabs_examples/credentials/device/brd4186a/autogen/sl_device_init_clocks.c b/silabs_examples/credentials/device/brd4186a/autogen/sl_device_init_clocks.c new file mode 100644 index 00000000000000..b7d9d919ed9c7a --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/sl_device_init_clocks.c @@ -0,0 +1,57 @@ +/***************************************************************************//** + * @file + * @brief Device initialization for clocks. + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ +#include "sl_device_init_clocks.h" + +#include "em_cmu.h" + +sl_status_t sl_device_init_clocks(void) +{ + CMU_ClockSelectSet(cmuClock_SYSCLK, cmuSelect_HFXO); +#if defined(_CMU_EM01GRPACLKCTRL_MASK) + CMU_ClockSelectSet(cmuClock_EM01GRPACLK, cmuSelect_HFXO); +#endif +#if defined(_CMU_EM01GRPBCLKCTRL_MASK) + CMU_ClockSelectSet(cmuClock_EM01GRPBCLK, cmuSelect_HFXO); +#endif + CMU_ClockSelectSet(cmuClock_EM23GRPACLK, cmuSelect_LFXO); + CMU_ClockSelectSet(cmuClock_EM4GRPACLK, cmuSelect_LFXO); +#if defined(RTCC_PRESENT) + CMU_ClockSelectSet(cmuClock_RTCC, cmuSelect_LFXO); +#endif +#if defined(SYSRTC_PRESENT) + CMU_ClockSelectSet(cmuClock_SYSRTC, cmuSelect_LFXO); +#endif + CMU_ClockSelectSet(cmuClock_WDOG0, cmuSelect_LFXO); +#if WDOG_COUNT > 1 + CMU_ClockSelectSet(cmuClock_WDOG1, cmuSelect_LFXO); +#endif + + return SL_STATUS_OK; +} diff --git a/silabs_examples/credentials/device/brd4186a/autogen/sl_event_handler.c b/silabs_examples/credentials/device/brd4186a/autogen/sl_event_handler.c new file mode 100644 index 00000000000000..93a3fbe50df918 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/sl_event_handler.c @@ -0,0 +1,105 @@ +#include "sl_event_handler.h" + +#include "em_chip.h" +#include "sl_device_init_nvic.h" +#include "sl_board_init.h" +#include "sl_device_init_dcdc.h" +#include "sl_hfxo_manager.h" +#include "sl_device_init_hfxo.h" +#include "sl_device_init_lfxo.h" +#include "sl_device_init_clocks.h" +#include "sl_device_init_emu.h" +#include "pa_conversions_efr32.h" +#include "sl_rail_util_pti.h" +#include "zigbee-debug-extended.h" +#include "zigbee_app_framework_common.h" +#include "btl_interface.h" +#include "sl_board_control.h" +#include "sl_sleeptimer.h" +#include "sl_debug_swo.h" +#include "sl_iostream_debug.h" +#include "sl_iostream_init_usart_instances.h" +#include "sl_iostream_vuart.h" +#include "hal.h" +#include "sl_mbedtls.h" +#include "nvm3_default.h" +#include "sl_simple_led_instances.h" +#include "sl_iostream_init_instances.h" +#include "sl_power_manager.h" +#include "sl_cos.h" + +void sl_platform_init(void) +{ + CHIP_Init(); + sl_device_init_nvic(); + sl_board_preinit(); + sl_device_init_dcdc(); + sl_hfxo_manager_init_hardware(); + sl_device_init_hfxo(); + sl_device_init_lfxo(); + sl_device_init_clocks(); + sl_device_init_emu(); + sl_board_init(); + bootloader_init(); + halInit(); + nvm3_initDefault(); + sl_power_manager_init(); +} + +void sl_driver_init(void) +{ + sl_debug_swo_init(); + sl_simple_led_init_instances(); + sl_cos_send_config(); +} + +void sl_service_init(void) +{ + sl_board_configure_vcom(); + sl_sleeptimer_init(); + sl_hfxo_manager_init(); + sl_mbedtls_init(); + sl_iostream_init_instances(); +} + +void sl_stack_init(void) +{ + sl_rail_util_pa_init(); + sl_rail_util_pti_init(); + sli_zigbee_debug_extended_init(); + sli_zigbee_stack_init_callback(); + sli_zigbee_app_framework_init_callback(); + sli_zigbee_app_framework_sleep_init(); + sli_zigbee_ncp_init_callback(); +} + +void sl_internal_app_init(void) +{ +} + +void sl_platform_process_action(void) +{ +} + +void sl_service_process_action(void) +{ +} + +void sl_stack_process_action(void) +{ + sli_zigbee_stack_tick_callback(); + sli_zigbee_app_framework_tick_callback(); + sli_zigbee_ncp_tick_callback(); +} + +void sl_internal_app_process_action(void) +{ +} + +void sl_iostream_init_instances(void) +{ + sl_iostream_debug_init(); + sl_iostream_usart_init_instances(); + sl_iostream_vuart_init(); +} + diff --git a/silabs_examples/credentials/device/brd4186a/autogen/sl_event_handler.h b/silabs_examples/credentials/device/brd4186a/autogen/sl_event_handler.h new file mode 100644 index 00000000000000..9ac6fcdb22b424 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/sl_event_handler.h @@ -0,0 +1,15 @@ +#ifndef SL_EVENT_HANDLER_H +#define SL_EVENT_HANDLER_H + +void sl_platform_init(void); +void sl_driver_init(void); +void sl_service_init(void); +void sl_stack_init(void); +void sl_internal_app_init(void); +void sl_platform_process_action(void); +void sl_service_process_action(void); +void sl_stack_process_action(void); +void sl_internal_app_process_action(void); +void sl_iostream_init_instances(void); + +#endif // SL_EVENT_HANDLER_H diff --git a/silabs_examples/credentials/device/brd4186a/autogen/sl_iostream_handles.c b/silabs_examples/credentials/device/brd4186a/autogen/sl_iostream_handles.c new file mode 100644 index 00000000000000..f59e9ca1e44fff --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/sl_iostream_handles.c @@ -0,0 +1,31 @@ +#include "sl_iostream.h" +#include "sl_iostream_handles.h" +#include "string.h" + +const sl_iostream_instance_info_t *sl_iostream_instances_info[] = { + + &sl_iostream_instance_debug_info, + + &sl_iostream_instance_vcom_info, + + &sl_iostream_instance_vuart_info, + +}; + +const uint32_t sl_iostream_instances_count = sizeof(sl_iostream_instances_info) / sizeof(sl_iostream_instances_info[0]); + +/***************************************************************************//** + * Get iostream instance handle for a given name + * + * @return Instance handle if it exist, NULL otherwise. + ******************************************************************************/ +sl_iostream_t *sl_iostream_get_handle(char *name) +{ + for (uint32_t i = 0; i < sl_iostream_instances_count; i++) { + if (strcmp(sl_iostream_instances_info[i]->name, name) == 0) { + return sl_iostream_instances_info[i]->handle; + } + } + + return NULL; +} \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4186a/autogen/sl_iostream_handles.h b/silabs_examples/credentials/device/brd4186a/autogen/sl_iostream_handles.h new file mode 100644 index 00000000000000..a26f04340f8671 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/sl_iostream_handles.h @@ -0,0 +1,22 @@ +#ifndef SL_IOSTREAM_HANDLES_H +#define SL_IOSTREAM_HANDLES_H +#include "sl_iostream.h" +#include "sl_iostream_debug.h" +#include "sl_iostream_init_usart_instances.h" +#include "sl_iostream_vuart.h" + + +#ifdef __cplusplus +extern "C" { +#endif + +extern const sl_iostream_instance_info_t *sl_iostream_instances_info[]; +extern const uint32_t sl_iostream_instances_count; + +sl_iostream_t *sl_iostream_get_handle(char *name); + +#ifdef __cplusplus +} +#endif + +#endif // SL_IOSTREAM_HANDLES_H diff --git a/silabs_examples/credentials/device/brd4186a/autogen/sl_iostream_init_instances.h b/silabs_examples/credentials/device/brd4186a/autogen/sl_iostream_init_instances.h new file mode 100644 index 00000000000000..c092c37eec59a0 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/sl_iostream_init_instances.h @@ -0,0 +1,16 @@ +#ifndef SL_IOSTREAM_INIT_INSTANCES_H +#define SL_IOSTREAM_INIT_INSTANCES_H + +#include "sl_iostream.h" +#ifdef __cplusplus +extern "C" { +#endif + +// Initialize iostream component(s) / instance(s) +void sl_iostream_init_instances(void); + +#ifdef __cplusplus +} +#endif + +#endif // SL_IOSTREAM_INIT_INSTANCES_H \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4186a/autogen/sl_iostream_init_usart_instances.c b/silabs_examples/credentials/device/brd4186a/autogen/sl_iostream_init_usart_instances.c new file mode 100644 index 00000000000000..ec04146afbe6dd --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/sl_iostream_init_usart_instances.c @@ -0,0 +1,203 @@ +#if defined(SL_COMPONENT_CATALOG_PRESENT) +#include "sl_component_catalog.h" +#endif +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) +#include "sl_power_manager.h" +#endif +#include "em_device.h" +#include "sl_iostream.h" +#include "sl_iostream_uart.h" +#include "sl_iostream_usart.h" +// Include instance config + #include "sl_iostream_usart_vcom_config.h" + +// MACROs for generating name and IRQ handler function +#define SL_IOSTREAM_USART_CONCAT_PASTER(first, second, third) first ## second ## third + + + + +#define SL_IOSTREAM_USART_TX_IRQ_NUMBER(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(USART, periph_nbr, _TX_IRQn) +#define SL_IOSTREAM_USART_RX_IRQ_NUMBER(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(USART, periph_nbr, _RX_IRQn) +#define SL_IOSTREAM_USART_TX_IRQ_HANDLER(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(USART, periph_nbr, _TX_IRQHandler) +#define SL_IOSTREAM_USART_RX_IRQ_HANDLER(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(USART, periph_nbr, _RX_IRQHandler) + +#define SL_IOSTREAM_USART_CLOCK_REF(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(cmuClock_, USART, periph_nbr) + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && defined(_SILICON_LABS_32B_SERIES_2) +// EM Events +#define SLEEP_EM_EVENT_MASK ( SL_POWER_MANAGER_EVENT_TRANSITION_ENTERING_EM2 \ + | SL_POWER_MANAGER_EVENT_TRANSITION_LEAVING_EM2 \ + | SL_POWER_MANAGER_EVENT_TRANSITION_ENTERING_EM3 \ + | SL_POWER_MANAGER_EVENT_TRANSITION_LEAVING_EM3) +#endif + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && defined(_SILICON_LABS_32B_SERIES_2) +static void events_handler(sl_power_manager_em_t from, + sl_power_manager_em_t to); +static sl_power_manager_em_transition_event_info_t events_info = +{ + .event_mask = SLEEP_EM_EVENT_MASK, + .on_event = events_handler, +}; +static sl_power_manager_em_transition_event_handle_t events_handle; +#endif + + +sl_status_t sl_iostream_usart_init_vcom(void); + + +// Instance(s) handle and context variable +static sl_iostream_uart_t sl_iostream_vcom; +sl_iostream_t *sl_iostream_vcom_handle = &sl_iostream_vcom.stream; +sl_iostream_uart_t *sl_iostream_uart_vcom_handle = &sl_iostream_vcom; +static sl_iostream_usart_context_t context_vcom; +static uint8_t rx_buffer_vcom[SL_IOSTREAM_USART_VCOM_RX_BUFFER_SIZE]; +sl_iostream_instance_info_t sl_iostream_instance_vcom_info = { + .handle = &sl_iostream_vcom.stream, + .name = "vcom", + .type = SL_IOSTREAM_TYPE_UART, + .periph_id = SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO, + .init = sl_iostream_usart_init_vcom, +}; + + + +sl_status_t sl_iostream_usart_init_vcom(void) +{ + sl_status_t status; + USART_InitAsync_TypeDef init_vcom = USART_INITASYNC_DEFAULT; + init_vcom.baudrate = SL_IOSTREAM_USART_VCOM_BAUDRATE; + init_vcom.parity = SL_IOSTREAM_USART_VCOM_PARITY; + init_vcom.stopbits = SL_IOSTREAM_USART_VCOM_STOP_BITS; +#if (_SILICON_LABS_32B_SERIES > 0) +#if (SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE != uartFlowControlSoftware) + init_vcom.hwFlowControl = SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE; +#else + init_vcom.hwFlowControl = usartHwFlowControlNone; +#endif +#endif + sl_iostream_usart_config_t config_vcom = { + .usart = SL_IOSTREAM_USART_VCOM_PERIPHERAL, + .clock = SL_IOSTREAM_USART_CLOCK_REF(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO), + .tx_port = SL_IOSTREAM_USART_VCOM_TX_PORT, + .tx_pin = SL_IOSTREAM_USART_VCOM_TX_PIN, + .rx_port = SL_IOSTREAM_USART_VCOM_RX_PORT, + .rx_pin = SL_IOSTREAM_USART_VCOM_RX_PIN, +#if (_SILICON_LABS_32B_SERIES > 0) +#if defined(SL_IOSTREAM_USART_VCOM_CTS_PORT) + .cts_port = SL_IOSTREAM_USART_VCOM_CTS_PORT, + .cts_pin = SL_IOSTREAM_USART_VCOM_CTS_PIN, +#endif +#if defined(SL_IOSTREAM_USART_VCOM_RTS_PORT) + .rts_port = SL_IOSTREAM_USART_VCOM_RTS_PORT, + .rts_pin = SL_IOSTREAM_USART_VCOM_RTS_PIN, +#endif +#endif +#if defined(GPIO_USART_ROUTEEN_TXPEN) + .usart_index = SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO, +#elif defined(USART_ROUTEPEN_RXPEN) + .usart_tx_location = SL_IOSTREAM_USART_VCOM_TX_LOC, + .usart_rx_location = SL_IOSTREAM_USART_VCOM_RX_LOC, +#if defined(SL_IOSTREAM_USART_VCOM_CTS_PORT) + .usart_cts_location = SL_IOSTREAM_USART_VCOM_CTS_LOC, +#endif +#if defined(SL_IOSTREAM_USART_VCOM_RTS_PORT) + .usart_rts_location = SL_IOSTREAM_USART_VCOM_RTS_LOC, +#endif +#else + .usart_location = SL_IOSTREAM_USART_VCOM_ROUTE_LOC, +#endif + }; + sl_iostream_uart_config_t uart_config_vcom = { + .tx_irq_number = SL_IOSTREAM_USART_TX_IRQ_NUMBER(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO), + .rx_irq_number = SL_IOSTREAM_USART_RX_IRQ_NUMBER(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO), + .rx_buffer = rx_buffer_vcom, + .rx_buffer_length = SL_IOSTREAM_USART_VCOM_RX_BUFFER_SIZE, + .lf_to_crlf = SL_IOSTREAM_USART_VCOM_CONVERT_BY_DEFAULT_LF_TO_CRLF, + .rx_when_sleeping = SL_IOSTREAM_USART_VCOM_RESTRICT_ENERGY_MODE_TO_ALLOW_RECEPTION, +#if defined(SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE) +#if (SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE == uartFlowControlSoftware) + .sw_flow_control = true, +#else + .sw_flow_control = false, +#endif +#else + .sw_flow_control = false, +#endif + }; + // Instantiate usart instance + status = sl_iostream_usart_init(&sl_iostream_vcom, + &uart_config_vcom, + &init_vcom, + &config_vcom, + &context_vcom); + EFM_ASSERT(status == SL_STATUS_OK); + + return status; +} + + + +void sl_iostream_usart_init_instances(void) +{ +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && defined(_SILICON_LABS_32B_SERIES_2) + // Enable power manager notifications + sl_power_manager_subscribe_em_transition_event(&events_handle, &events_info); +#endif + + // Instantiate usart instance(s) + + sl_iostream_usart_init_vcom(); + +} + + +// VCOM IRQ Handler +void SL_IOSTREAM_USART_TX_IRQ_HANDLER(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO)(void) +{ + sl_iostream_usart_irq_handler(sl_iostream_vcom.stream.context); +} + +void SL_IOSTREAM_USART_RX_IRQ_HANDLER(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO)(void) +{ + sl_iostream_usart_irq_handler(sl_iostream_vcom.stream.context); +} + + + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && !defined(SL_CATALOG_KERNEL_PRESENT) + +sl_power_manager_on_isr_exit_t sl_iostream_usart_vcom_sleep_on_isr_exit(void) +{ + return sl_iostream_uart_sleep_on_isr_exit(&sl_iostream_vcom); +} + +#endif + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && defined(_SILICON_LABS_32B_SERIES_2) +static void events_handler(sl_power_manager_em_t from, + sl_power_manager_em_t to) +{ + uint32_t out; + if (((from == SL_POWER_MANAGER_EM2) + || (from == SL_POWER_MANAGER_EM3)) + && ((to == SL_POWER_MANAGER_EM1) + || (to == SL_POWER_MANAGER_EM0))) { + + // Wake the USART Tx pin back up + out = GPIO_PinOutGet(SL_IOSTREAM_USART_VCOM_TX_PORT, SL_IOSTREAM_USART_VCOM_TX_PIN); + GPIO_PinModeSet(SL_IOSTREAM_USART_VCOM_TX_PORT, SL_IOSTREAM_USART_VCOM_TX_PIN, gpioModePushPull, out); + + } else if (((to == SL_POWER_MANAGER_EM2) + || (to == SL_POWER_MANAGER_EM3)) + && ((from == SL_POWER_MANAGER_EM1) + || (from == SL_POWER_MANAGER_EM0))) { + + // Sleep the USART Tx pin on series 2 devices to save energy + out = GPIO_PinOutGet(SL_IOSTREAM_USART_VCOM_TX_PORT, SL_IOSTREAM_USART_VCOM_TX_PIN); + GPIO_PinModeSet(SL_IOSTREAM_USART_VCOM_TX_PORT, SL_IOSTREAM_USART_VCOM_TX_PIN, gpioModeDisabled, out); + + } +} +#endif \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4186a/autogen/sl_iostream_init_usart_instances.h b/silabs_examples/credentials/device/brd4186a/autogen/sl_iostream_init_usart_instances.h new file mode 100644 index 00000000000000..2301dbe600fab7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/sl_iostream_init_usart_instances.h @@ -0,0 +1,34 @@ +#ifndef SL_IOSTREAM_INIT_USART_INSTANCES_H +#define SL_IOSTREAM_INIT_USART_INSTANCES_H +#if defined(SL_COMPONENT_CATALOG_PRESENT) +#include "sl_component_catalog.h" +#endif +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) +#include "sl_power_manager.h" +#endif +#include "sl_iostream.h" +#include "sl_iostream_uart.h" +#ifdef __cplusplus +extern "C" { +#endif + + +extern sl_iostream_t *sl_iostream_vcom_handle; +extern sl_iostream_uart_t *sl_iostream_uart_vcom_handle; +extern sl_iostream_instance_info_t sl_iostream_instance_vcom_info; + + +// Initialize only iostream usart instance(s) +void sl_iostream_usart_init_instances(void); + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) + +sl_power_manager_on_isr_exit_t sl_iostream_usart_vcom_sleep_on_isr_exit(void); + +#endif + +#ifdef __cplusplus +} +#endif + +#endif // SL_IOSTREAM_INIT_USART_INSTANCES_H \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4186a/autogen/sl_legacy_bootloader_device_info.h b/silabs_examples/credentials/device/brd4186a/autogen/sl_legacy_bootloader_device_info.h new file mode 100644 index 00000000000000..db917a78b849ac --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/sl_legacy_bootloader_device_info.h @@ -0,0 +1,41 @@ +/***************************************************************************//** + * @file + * @brief Legacy Bootloader Interface Device Info + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +enum { + SL_FAMILY_UNKNOWN = 0, + SL_FAMILY_MGM1 = 1, + SL_FAMILY_BGM1 = 1, + SL_FAMILY_EFR32MG1P = 16, + SL_FAMILY_EFR32MG1B = 17, + SL_FAMILY_EFR32MG1V = 18, + SL_FAMILY_EFR32BG1P = 19, + SL_FAMILY_EFR32BG1B = 20, + SL_FAMILY_EFR32BG1V = 21, + SL_FAMILY_EFR32FG1P = 25, + SL_FAMILY_EFR32FG1V = 27, +}; + +// CORTEXM3 +#define SL_PLAT 4U + +// CORTEXM3_EFR32 +#define SL_MICRO 24U + +#define SL_FAMILY SL_FAMILY_EFR32MG24 + +// PHY_RAIL +#define SL_PHY 15U diff --git a/silabs_examples/credentials/device/brd4186a/autogen/sl_mbedtls_config_transform_autogen.h b/silabs_examples/credentials/device/brd4186a/autogen/sl_mbedtls_config_transform_autogen.h new file mode 100644 index 00000000000000..2e0dcae5c15f29 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/sl_mbedtls_config_transform_autogen.h @@ -0,0 +1,44 @@ +// This is an autogenerated config file, any changes to this file will be overwritten + +#ifndef SL_MBEDTLS_CONFIG_TRANSFORM_AUTOGEN_H +#define SL_MBEDTLS_CONFIG_TRANSFORM_AUTOGEN_H + +// Convert CMSIS Markup config defines to mbedTLS specific config defines + +// Allow undefining the specified cipher suites +#if defined(SLI_MBEDTLS_AUTODETECT_CIPHERSUITES) +#undef MBEDTLS_SSL_CIPHERSUITES +#endif + +#if SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH + #define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH +#endif +#if SL_MBEDTLS_SSL_EXPORT_KEYS + #define MBEDTLS_SSL_EXPORT_KEYS +#endif +#if SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED + #define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED +#endif +#if SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED + #define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED +#endif +#if SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED + #define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED +#endif +#if SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED + #define MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED +#endif + +#if !defined(MBEDTLS_SSL_IN_CONTENT_LEN) + #define MBEDTLS_SSL_IN_CONTENT_LEN SL_MBEDTLS_SSL_IN_CONTENT_LEN +#endif + +#if !defined(MBEDTLS_SSL_OUT_CONTENT_LEN) + #define MBEDTLS_SSL_OUT_CONTENT_LEN SL_MBEDTLS_SSL_OUT_CONTENT_LEN +#endif + + + + + +#endif // SL_MBEDTLS_CONFIG_TRANSFORM_AUTOGEN_H diff --git a/silabs_examples/credentials/device/brd4186a/autogen/sl_power_manager_handler.c b/silabs_examples/credentials/device/brd4186a/autogen/sl_power_manager_handler.c new file mode 100644 index 00000000000000..6f5254fbcf984e --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/sl_power_manager_handler.c @@ -0,0 +1,126 @@ +#include +#include "em_core.h" +#include "sl_power_manager.h" +#include "sl_sleeptimer.h" +#include "sl_iostream_init_usart_instances.h" +#include "sl_legacy_hal_integration_hooks.h" +#include "zigbee_app_framework_common.h" +#include "serial-interface.h" + +/***************************************************************************//** + * Check if the MCU can sleep at that time. This function is called when the system + * is about to go sleeping, with the interrupts disabled. It allows the software to + * cancel going to sleep in case of a last-minute event occurred (window between the + * function call and interrupt disable). + * + * @return True, if the system can go to sleep. + * False, otherwise. + * + * @note This function is called with the interrupt disabled and it MUST NOT be + * re-enabled. + ******************************************************************************/ +__WEAK bool app_is_ok_to_sleep(void) +{ + return true; +} + +/***************************************************************************//** + * Check if the MCU can sleep after an interrupt. This function is called after an + * interrupt occured and was processed. It allows the power manger to know if it must + * go back to sleep or wakeup. + * + * @return SL_POWER_MANAGER_IGNORE, if the module did not trigger an ISR and it + * won't to contribute to the decision. + * + * SL_POWER_MANAGER_SLEEP, The module was the one that caused the system + * wakeup and the system SHOULD go back to sleep. + * + * SL_POWER_MANAGER_WAKEUP, The module was the one that caused the system + * wakeup and the system MUST NOT go back to sleep. + * + * @note This function must not have any side effects. It is not guaranteed to be + * called for every ISR. If a prior hook function requires to wakeup, such + * as a wireless stack, the application hook function won't be called. + ******************************************************************************/ +__WEAK sl_power_manager_on_isr_exit_t app_sleep_on_isr_exit(void) +{ + return SL_POWER_MANAGER_IGNORE; +} + +/***************************************************************************//** + * Mandatory callback that allows to cancel sleeping action. This function is called + * when the system is about to go sleeping, with the interrupts disabled. It allows + * the software to cancel going to sleep in case of a last-minute event occurred + * (window between the function call and interrupt disable). + ******************************************************************************/ +bool sl_power_manager_is_ok_to_sleep(void) +{ + bool ok_to_sleep = true; + if (sl_legacy_hal_is_ok_to_sleep() == false) { + ok_to_sleep = false; + } + if (sli_zigbee_app_framework_is_ok_to_sleep() == false) { + ok_to_sleep = false; + } + if (serialOkToSleep() == false) { + ok_to_sleep = false; + } + // Application hook + if (app_is_ok_to_sleep() == false) { + ok_to_sleep = false; + } + + return ok_to_sleep; +} + +/***************************************************************************//** + * Mandatory callback that must validate if the MCU can sleep after having + * processed an interrupt when the system was sleeping. + ******************************************************************************/ +bool sl_power_manager_sleep_on_isr_exit(void) +{ + sl_power_manager_on_isr_exit_t answer; + bool sleep = false; + bool force_wakeup = false; + + // This function allow the power manager to return into sleep, if the latest timer + // to expire was power manager's internal one used to restore HFXO on time or + // the HFXO interrupt. + // Most of the time we want to get back to sleep until the next event occurs. + sleep = sl_power_manager_is_latest_wakeup_internal(); + + answer = sl_iostream_usart_vcom_sleep_on_isr_exit(); + if (answer == SL_POWER_MANAGER_WAKEUP) { + force_wakeup = true; + } else if (answer == SL_POWER_MANAGER_SLEEP) { + sleep = true; + } + + answer = sl_legacy_hal_sleep_on_isr_exit(); + if (answer == SL_POWER_MANAGER_WAKEUP) { + force_wakeup = true; + } else if (answer == SL_POWER_MANAGER_SLEEP) { + sleep = true; + } + + answer = sli_zigbee_sleep_on_isr_exit(); + if (answer == SL_POWER_MANAGER_WAKEUP) { + force_wakeup = true; + } else if (answer == SL_POWER_MANAGER_SLEEP) { + sleep = true; + } + + // Application hook + answer = app_sleep_on_isr_exit(); + if (answer == SL_POWER_MANAGER_WAKEUP) { + force_wakeup = true; + } else if (answer == SL_POWER_MANAGER_SLEEP) { + sleep = true; + } + + if (force_wakeup) { + sleep = false; + } + + return sleep; +} \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4186a/autogen/sl_rail_util_ieee802154_phy_select.c b/silabs_examples/credentials/device/brd4186a/autogen/sl_rail_util_ieee802154_phy_select.c new file mode 100644 index 00000000000000..a7632d665dbdfa --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/sl_rail_util_ieee802154_phy_select.c @@ -0,0 +1,261 @@ +/***************************************************************************//** + * @file + * @brief + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#if defined(SL_COMPONENT_CATALOG_PRESENT) + #include "sl_component_catalog.h" +#endif + +#ifdef SL_CATALOG_RAIL_MULTIPLEXER_PRESENT +#include "sl_rail_mux_rename.h" +#endif + +#include "rail.h" +#include "rail_ieee802154.h" +#include "sl_rail_util_ieee802154_phy_select.h" +#include "sl_status.h" +#include "em_assert.h" +extern void sl_mac_lower_mac_update_active_radio_config(void); + +extern RAIL_Handle_t emPhyRailHandle; + +#define RUNTIME_PHY_SELECT (0) + +#define RUNTIME_PHY_SELECT_STACK_SUPPORT (0 || SL_ZIGBEE_PHY_SELECT_STACK_SUPPORT) + +static sl_rail_util_ieee802154_radio_config_t active_radio_config = SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT; + + +static sl_rail_util_ieee802154_radio_config_t sl_rail_util_get_desired_radio_config(void) +{ + return (SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT + ); +} + +#if RUNTIME_PHY_SELECT +#if !RUNTIME_PHY_SELECT_STACK_SUPPORT +#error "Run time PHY select is currently unsupported on the selected stack." +#endif + +static bool stackInitialized = false; + +static uint8_t blockPhySwitch = 0U; +#define BLOCK_SWITCH_RX 0x01u +#define BLOCK_SWITCH_TX 0x02u +#define setBlockPhySwitch(dir, boolval) \ + do { \ + if (boolval) { \ + blockPhySwitch |= (dir); \ + } else { \ + blockPhySwitch &= (uint8_t) ~(dir); \ + } \ + } while (false) + +static bool checkPhySwitch(void) +{ + sl_rail_util_ieee802154_radio_config_t desired_radio_config = sl_rail_util_get_desired_radio_config(); + if ((active_radio_config != desired_radio_config) + && (blockPhySwitch == 0U) + && stackInitialized + && (emPhyRailHandle != NULL)) { + //@TODO: Ascertain radio is OFF, RXWARM, or RXSEARCH only. + active_radio_config = desired_radio_config; + sl_mac_lower_mac_update_active_radio_config(); + return true; + } + return false; +} + +#else//!RUNTIME_PHY_SELECT + +#define setBlockPhySwitch(dir, boolval) /*no-op*/ +#define checkPhySwitch() (false) + +#endif//RUNTIME_PHY_SELECT + +sl_rail_util_ieee802154_radio_config_t sl_rail_util_ieee802154_get_active_radio_config(void) +{ + return active_radio_config; +} + +#define ANT_DIV_PHY_DEFAULT_ENABLED (SL_RAIL_UTIL_ANTENNA_RX_DEFAULT_MODE != SL_RAIL_UTIL_ANTENNA_MODE_DISABLED) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || !ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || !SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || !SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || !SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || !SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || !ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || !SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || !SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) + +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_FEM_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || !ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || !SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_FEM_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || !SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_FEM_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || !ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_FEM_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) + +RAIL_Status_t sl_rail_util_ieee802154_config_radio(RAIL_Handle_t railHandle) +{ + // Establish the proper radio config + RAIL_Status_t status = RAIL_STATUS_INVALID_STATE; + sl_rail_util_ieee802154_radio_config_t desired_radio_config = sl_rail_util_get_desired_radio_config(); + switch (desired_radio_config) { +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT: + status = RAIL_IEEE802154_Config2p4GHzRadio(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV: + status = RAIL_IEEE802154_Config2p4GHzRadioAntDiv(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX: + status = RAIL_IEEE802154_Config2p4GHzRadioCoex(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX: + status = RAIL_IEEE802154_Config2p4GHzRadioAntDivCoex(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_FEM_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_FEM: + status = RAIL_IEEE802154_Config2p4GHzRadioFem(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_FEM_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_FEM_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_FEM: + status = RAIL_IEEE802154_Config2p4GHzRadioAntDivFem(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_FEM_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_FEM_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_FEM: + status = RAIL_IEEE802154_Config2p4GHzRadioCoexFem(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_FEM_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_FEM_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_FEM: + status = RAIL_IEEE802154_Config2p4GHzRadioAntDivCoexFem(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_FEM_SUPPORTED + default: + break; + } + EFM_ASSERT(status == RAIL_STATUS_NO_ERROR); + active_radio_config = desired_radio_config; + + return status; +} + +#if RUNTIME_PHY_SELECT +sl_rail_util_ieee802154_stack_status_t sl_rail_util_ieee802154_phy_select_on_event( + sl_rail_util_ieee802154_stack_event_t stack_event, + uint32_t supplement) +{ + bool isReceivingFrame = false; + + switch (stack_event) { + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TICK: + stackInitialized = true; + (void) checkPhySwitch(); + break; + + // RX events: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_STARTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACCEPTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACKING: + setBlockPhySwitch(BLOCK_SWITCH_RX, true); + break; + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_CORRUPTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACK_BLOCKED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACK_ABORTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_FILTERED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ENDED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACK_SENT: + isReceivingFrame = (bool) supplement; + // FALLTHROUGH + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_IDLED: + setBlockPhySwitch(BLOCK_SWITCH_RX, isReceivingFrame); + break; + + // TX events: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_PENDED_MAC: + break; + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_PENDED_PHY: + setBlockPhySwitch(BLOCK_SWITCH_TX, true); + break; + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_CCA_SOON: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_CCA_BUSY: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_STARTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ACK_WAITING: + break; + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ACK_RECEIVED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ACK_TIMEDOUT: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_BLOCKED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ABORTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ENDED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_IDLED: + setBlockPhySwitch(BLOCK_SWITCH_TX, false); + break; + default: + break; + } + return SL_RAIL_UTIL_IEEE802154_STACK_STATUS_SUCCESS; +} +#else +sl_rail_util_ieee802154_stack_status_t sl_rail_util_ieee802154_phy_select_on_event( + sl_rail_util_ieee802154_stack_event_t stack_event, + uint32_t supplement) +{ + (void)stack_event; + (void)supplement; + return SL_RAIL_UTIL_IEEE802154_STACK_STATUS_UNSUPPORTED; +} +#endif //RUNTIME_PHY_SELECT diff --git a/silabs_examples/credentials/device/brd4186a/autogen/sl_rail_util_ieee802154_stack_event.c b/silabs_examples/credentials/device/brd4186a/autogen/sl_rail_util_ieee802154_stack_event.c new file mode 100644 index 00000000000000..4d98c10bee1fc5 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/sl_rail_util_ieee802154_stack_event.c @@ -0,0 +1,44 @@ +/***************************************************************************//** + * @file + * @brief + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#include "rail.h" +#include "rail_ieee802154.h" +#include "sl_status.h" +#include "sl_rail_util_ieee802154_stack_event.h" +#include "em_assert.h" +#include "sl_rail_util_ieee802154_phy_select.h" + +sl_rail_util_ieee802154_stack_status_t sl_rail_util_ieee802154_on_event( + sl_rail_util_ieee802154_stack_event_t stack_event, + uint32_t supplement) +{ + sl_rail_util_ieee802154_phy_select_on_event(stack_event, supplement); + return SL_RAIL_UTIL_IEEE802154_STACK_STATUS_SUCCESS; +} diff --git a/silabs_examples/credentials/device/brd4186a/autogen/sl_simple_led_instances.c b/silabs_examples/credentials/device/brd4186a/autogen/sl_simple_led_instances.c new file mode 100644 index 00000000000000..a194fc048f3e4f --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/sl_simple_led_instances.c @@ -0,0 +1,44 @@ +/***************************************************************************//** + * @file + * @brief LED Driver Instances + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include "sl_simple_led.h" +#include "em_gpio.h" +#include "sl_simple_led_led0_config.h" + +sl_simple_led_context_t simple_led0_context = { + .port = SL_SIMPLE_LED_LED0_PORT, + .pin = SL_SIMPLE_LED_LED0_PIN, + .polarity = SL_SIMPLE_LED_LED0_POLARITY, +}; + +const sl_led_t sl_led_led0 = { + .context = &simple_led0_context, + .init = sl_simple_led_init, + .turn_on = sl_simple_led_turn_on, + .turn_off = sl_simple_led_turn_off, + .toggle = sl_simple_led_toggle, + .get_state = sl_simple_led_get_state, +}; + +const sl_led_t *sl_simple_led_array[] = { + &sl_led_led0 +}; + +void sl_simple_led_init_instances(void) +{ + sl_led_init(&sl_led_led0); +} diff --git a/silabs_examples/credentials/device/brd4186a/autogen/sl_simple_led_instances.h b/silabs_examples/credentials/device/brd4186a/autogen/sl_simple_led_instances.h new file mode 100644 index 00000000000000..61f19773c9b2ed --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/sl_simple_led_instances.h @@ -0,0 +1,32 @@ +/***************************************************************************//** + * @file + * @brief LED Driver Instances + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_SIMPLE_LED_INSTANCES_H +#define SL_SIMPLE_LED_INSTANCES_H + +#include "sl_simple_led.h" + +extern const sl_led_t sl_led_led0; + +extern const sl_led_t *sl_simple_led_array[]; + +#define SL_SIMPLE_LED_COUNT 1 +#define SL_SIMPLE_LED_INSTANCE(n) (sl_simple_led_array[n]) + +void sl_simple_led_init_instances(void); + +#endif // SL_SIMPLE_LED_INIT_H diff --git a/silabs_examples/credentials/device/brd4186a/autogen/zigbee_af_token_headers.h b/silabs_examples/credentials/device/brd4186a/autogen/zigbee_af_token_headers.h new file mode 100644 index 00000000000000..fcc5d6e16da805 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/zigbee_af_token_headers.h @@ -0,0 +1,25 @@ +/***************************************************************************//** + * @file zigbee_af_token_headers.h + * @brief ZCL callback dispatcher declarations. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +/* + * This file includes token headers for the components selected in the project + */ +// +// *** Generated file. Do not edit! *** +// + +#include "app/xncp/xncp-token.h" + diff --git a/silabs_examples/credentials/device/brd4186a/autogen/zigbee_common_callback_dispatcher.c b/silabs_examples/credentials/device/brd4186a/autogen/zigbee_common_callback_dispatcher.c new file mode 100644 index 00000000000000..7aebdfc9d5db83 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/zigbee_common_callback_dispatcher.c @@ -0,0 +1,38 @@ +/***************************************************************************//** + * @file zigbee_common_callback_dispatcher.c + * @brief ZigBee common dispatcher definitions. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "zigbee_app_framework_common.h" +#include "zigbee_common_callback_dispatcher.h" + +void emAfEventInit(void) +{ +} + +void emAfLocalDataInit(void) +{ +} + +void emAfInitDone(void) +{ +} + + +void emAfTick(void) +{ +} diff --git a/silabs_examples/credentials/device/brd4186a/autogen/zigbee_common_callback_dispatcher.h b/silabs_examples/credentials/device/brd4186a/autogen/zigbee_common_callback_dispatcher.h new file mode 100644 index 00000000000000..f6872e2aa7e0f4 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/zigbee_common_callback_dispatcher.h @@ -0,0 +1,34 @@ +/***************************************************************************//** + * @file zigbee_common_callback_dispatcher.h + * @brief ZigBee common dispatcher declarations. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_ZIGBEE_COMMON_CALLBACK_DISPATCHER_H +#define SL_ZIGBEE_COMMON_CALLBACK_DISPATCHER_H + +#include PLATFORM_HEADER +#include "stack/include/ember.h" + +// Event Init +void emAfEventInit(void); +// Local data Init +void emAfLocalDataInit(void); +// Init done +void emAfInitDone(void); + +// Tick +void emAfTick(void); + +#endif // SL_ZIGBEE_COMMON_CALLBACK_DISPATCHER_H \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4186a/autogen/zigbee_ncp_callback_dispatcher.c b/silabs_examples/credentials/device/brd4186a/autogen/zigbee_ncp_callback_dispatcher.c new file mode 100644 index 00000000000000..3c7a890eff4610 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/zigbee_ncp_callback_dispatcher.c @@ -0,0 +1,93 @@ +/***************************************************************************//** + * @file zigbee_ncp_callback_dispatcher.c + * @brief ZigBee ncp dispatcher definitions. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "zigbee_ncp_callback_dispatcher.h" + + +void emberAfEzspGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context) +{ + emberAfPluginEzspGetValueCommandCallback(context); + emberAfPluginEzspZigbeeProGetValueCommandCallback(context); + emberAfPluginEzspSecurityGetValueCommandCallback(context); +} + + +void emberAfEzspGetExtendedValueCommandCallback(EmberAfPluginEzspValueCommandContext* context) +{ + emberAfPluginEzspZigbeeProGetExtendedValueCommandCallback(context); +} + + +void emberAfEzspSetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context) +{ + emberAfPluginEzspSetValueCommandCallback(context); + emberAfPluginEzspZigbeeProSetValueCommandCallback(context); + emberAfPluginEzspSecuritySetValueCommandCallback(context); +} + + +void emberAfEzspGetPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context) +{ + emberAfPluginEzspBindingPolicyCommandCallback(context); + emberAfPluginEzspPolicyCommandCallback(context); + emberAfPluginEzspZigbeeProPolicyCommandCallback(context); + emberAfPluginEzspSecurityPolicyCommandCallback(context); +} + + +void emberAfEzspSetPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context) +{ + emberAfPluginEzspBindingPolicyCommandCallback(context); + emberAfPluginEzspPolicyCommandCallback(context); + emberAfPluginEzspZigbeeProPolicyCommandCallback(context); + emberAfPluginEzspSecurityPolicyCommandCallback(context); +} + + +void emberAfEzspGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context) +{ + emberAfPluginEzspBindingConfigurationValueCommandCallback(context); + emberAfPluginEzspGetConfigurationValueCommandCallback(context); + emberAfPluginEzspSourceRouteGetConfigurationValueCommandCallback(context); + emberAfPluginEzspZigbeeProGetConfigurationValueCommandCallback(context); + emberAfPluginEzspSecurityGetConfigurationValueCommandCallback(context); +} + + +void emberAfEzspSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context) +{ + emberAfPluginEzspBindingConfigurationValueCommandCallback(context); + emberAfPluginEzspSetConfigurationValueCommandCallback(context); + emberAfPluginEzspSourceRouteSetConfigurationValueCommandCallback(context); + emberAfPluginEzspZigbeeProSetConfigurationValueCommandCallback(context); + emberAfPluginEzspSecuritySetConfigurationValueCommandCallback(context); +} + + +void emberAfPluginEzspModifyMemoryAllocationCallback(void) +{ + emInitializeBindingTable(); + emberAfPluginEzspZigbeeProModifyMemoryAllocationCallback(); +} + + +void emberAfPluginEzspPermitHostToNcpFrameCallback(bool* permit) +{ + emberAfPluginEzspBindingPermitHostToNcpFrameCallback(permit); +} diff --git a/silabs_examples/credentials/device/brd4186a/autogen/zigbee_ncp_callback_dispatcher.h b/silabs_examples/credentials/device/brd4186a/autogen/zigbee_ncp_callback_dispatcher.h new file mode 100644 index 00000000000000..753af5d201f7e1 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/zigbee_ncp_callback_dispatcher.h @@ -0,0 +1,88 @@ +/***************************************************************************//** + * @file zigbee_ncp_callback_dispatcher.h + * @brief ZigBee ncp dispatcher declarations. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_ZIGBEE_NCP_CALLBACK_DISPATCHER_H +#define SL_ZIGBEE_NCP_CALLBACK_DISPATCHER_H + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "app/em260/command-context.h" // EmberAfPluginEzspValueCommandContext + + +// get_value +void emberAfEzspGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspZigbeeProGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspSecurityGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); + + + + +void emberAfEzspGetExtendedValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspZigbeeProGetExtendedValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); + + + +void emberAfEzspSetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspSetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspZigbeeProSetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspSecuritySetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); + + + +void emberAfEzspGetPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspBindingPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspZigbeeProPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspSecurityPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); + + + +void emberAfEzspSetPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspBindingPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspZigbeeProPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspSecurityPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); + + +void emberAfEzspGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspBindingConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSourceRouteGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspZigbeeProGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSecurityGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); + + + +void emberAfEzspSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspBindingConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSourceRouteSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspZigbeeProSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSecuritySetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); + + +void emberAfPluginEzspModifyMemoryAllocationCallback(void); +void emInitializeBindingTable(void); +void emberAfPluginEzspZigbeeProModifyMemoryAllocationCallback(void); + + + +void emberAfPluginEzspPermitHostToNcpFrameCallback(bool* permit); +void emberAfPluginEzspBindingPermitHostToNcpFrameCallback(bool* permit); + +#endif // SL_ZIGBEE_NCP_CALLBACK_DISPATCHER_H \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4186a/autogen/zigbee_stack_callback_dispatcher.c b/silabs_examples/credentials/device/brd4186a/autogen/zigbee_stack_callback_dispatcher.c new file mode 100644 index 00000000000000..2b9b8483a566ec --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/zigbee_stack_callback_dispatcher.c @@ -0,0 +1,993 @@ +/*****************************************************************************/ +/** + * Copyright 2020 Silicon Laboratories, Inc. + * + *****************************************************************************/ +// +// *** Generated file. Do not edit! *** +// + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "zigbee_stack_callback_dispatcher.h" + + + +#ifdef EZSP_HOST +// Incoming Message +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // The link quality + uint8_t lastHopLqi, + // The energy level + int8_t lastHopRssi, + // The sender of the message. + EmberNodeId sender, + // The index of a binding that matches the message + // matching binding. + uint8_t bindingIndex, + // The index of the entry in the address table + uint8_t addressIndex, + // The message length + uint8_t messageLength, + // message + uint8_t *messageContents) +{ +(void) type; +(void) apsFrame; +(void) lastHopLqi; +(void) lastHopRssi; +(void) sender; +(void) bindingIndex; +(void) addressIndex; +(void) messageLength; +(void) messageContents; + +emAfIncomingMessageCallback(type, apsFrame, lastHopLqi, lastHopRssi, sender, bindingIndex, addressIndex, messageLength, messageContents); +} +#else // !EZSP_HOST +// Incoming Message +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message) +{ +(void)type; +(void)apsFrame; +(void)message; + +emAfIncomingMessageCallback(type, apsFrame, message); +} +#endif // EZSP_HOST + + +// Message Sent +#ifdef EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // Message tag + uint8_t messageTag, + // Message delivery status + EmberStatus status, + // The length of the messageContents + uint8_t messageLength, + // Message data + uint8_t *messageContents) +{ +(void)type; +(void)indexOrDestination; +(void)apsFrame; +(void)messageTag; +(void)status; +(void) messageLength; +(void) messageContents; + +emAfMessageSentCallback(type, indexOrDestination, apsFrame, messageTag, status, messageLength, messageContents); +} +#else // !EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message, + // Message delivery status + EmberStatus status) +{ +(void)type; +(void)indexOrDestination; +(void)apsFrame; +(void)message; +(void)status; + +emAfMessageSentCallback(type, indexOrDestination, apsFrame, message, status); +} +#endif // EZSP_HOST + + + +// Trust Center Join +void emAfTrustCenterJoin( + // Joining node's id + EmberNodeId newNodeId, + // Joining node's Eui64 + EmberEUI64 newNodeEui64, + // Status + EmberDeviceUpdate status, + // Parent Id of the joining node + EmberNodeId parentOfNewNode) +{ +(void)newNodeId; +(void)newNodeEui64; +(void)status; +(void)parentOfNewNode; + +} + + + +// Mark Buffers +void emAfMarkBuffers(void) +{ + +emAfMarkBuffersCallback(); +} + + + +// Packet Handoff Incoming +void emAfPacketHandoffIncoming( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +{ +(void)packetType; +(void)packetBuffer; +(void)index; +(void)data; + +} + + + +// Packet Handoff Outgoing +void emAfPacketHandoffOutgoing( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +{ +(void)packetType; +(void)packetBuffer; +(void)index; +(void)data; + +} + + + +// Incoming Mfg Test Message +void emAfIncomingMfgTestMessage( + uint8_t messageType, + uint8_t dataLength, + // Return: + uint8_t *data) +{ +(void)messageType; +(void)dataLength; +(void)data; + +} + + + +// Override Incoming Route Record +void emAfOverrideIncomingRouteRecord( + EmberNodeId source, + EmberEUI64 sourceEui, + uint8_t relayCount, + EmberMessageBuffer header, + uint8_t relayListIndex, + // Return: + bool *consumed) +{ +(void)source; +(void)sourceEui; +(void)relayCount; +(void)header; +(void)relayListIndex; +(void)consumed; + +emAfOverrideIncomingRouteRecordCallback(source, sourceEui, relayCount, header, relayListIndex, consumed); +} + + + +// Override Append Source Route +// Return: Added bytes +void emAfOverrideAppendSourceRoute( + EmberNodeId destination, + // Return: + EmberMessageBuffer *header, + // Return: + bool *consumed) +{ +(void)destination; +(void)header; +(void)consumed; + +} + + + +// Override Furthur Index For Source Route Add Entry +void emAfOverrideFurthurIndexForSourceRouteAddEntry( + EmberNodeId id, + // Return: + uint8_t *furtherIndex) +{ +(void)id; +(void)furtherIndex; + +emAfOverrideFurthurIndexForSourceRouteAddEntryCallback(id, furtherIndex); +} + + + +// Stack Status +void emAfStackStatus( + // Stack status + EmberStatus status) +{ +(void)status; + +emAfStackStatusCallback(status); +} + + + +// Energy Scan Result +void emAfEnergyScanResult( + // The 802.15.4 channel number that was scanned. + uint8_t channel, + // The maximum RSSI value found on the channel. + int8_t maxRssiValue) +{ +(void)channel; +(void)maxRssiValue; + +emAfEnergyScanResultCallback(channel, maxRssiValue); +} + + + +// Network Found +void emAfNetworkFound( + // The parameters associated with the network found. + EmberZigbeeNetwork *networkFound, + // The link quality indication of the network found. + uint8_t lqi, + // The received signal strength indication of the network found. + int8_t rssi) +{ +(void)networkFound; +(void)lqi; +(void)rssi; + +emAfNetworkFoundCallback(networkFound, lqi, rssi); +} + + + +// Scan Complete +void emAfScanComplete( + // The channel on which the current error occurred. Undefined for the case + // of EMBER_SUCCESS. + uint8_t channel, + // The error condition that occurred on the current channel. Value will be + // EMBER_SUCCESS when the scan has completed. + EmberStatus status) +{ +(void)channel; +(void)status; + +emAfScanCompleteCallback(channel, status); +} + + + +// Unused Pan Id Found +void emAfUnusedPanIdFound( + // The unused panID which has been found. + EmberPanId panId, + // The channel that the unused panID was found on. + uint8_t channel) +{ +(void)panId; +(void)channel; + +emAfUnusedPanIdFoundCallback(panId, channel); +} + + + +// Child Join +#ifdef EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining, + // The node ID of the child. + EmberNodeId childId, + // The EUI64 of the child. + EmberEUI64 childEui64, + // The node type of the child. + EmberNodeType childType) +{ +(void)index; +(void)joining; +(void)childId; +(void)childEui64; +(void)childType; + +emAfChildJoinCallback(index, joining, childId, childEui64, childType); +} +#else // !EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining) +{ +(void)index; +(void)joining; + +emAfChildJoinCallback(index, joining); +} +#endif // EZSP_HOST + + + +// Duty Cycle +#ifdef EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state, + // The total number of connected end devices that are being monitored for + // duty cycle. + uint8_t totalDevices, + // Consumed duty cycles of end devices that are being monitored. The first + // entry always be the local stack's nodeId, and thus the total aggregate + // duty cycle for the device. + EmberPerDeviceDutyCycle *arrayOfDeviceDutyCycles) +{ +(void)channelPage; +(void)channel; +(void)state; +(void)totalDevices; +(void)arrayOfDeviceDutyCycles; + +emAfDutyCycleCallback(channelPage, channel, state, totalDevices, arrayOfDeviceDutyCycles); +} +#else // !EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state) +{ +(void)channelPage; +(void)channel; +(void)state; + +emAfDutyCycleCallback(channelPage, channel, state); +} +#endif // EZSP_HOST + + + +// Remote Set Binding +// Return: ZDO response status. +void emAfRemoteSetBinding( + // Return: The contents of the binding entry. + EmberBindingTableEntry *entry) +{ +(void)entry; + +} + + + +// Remote Delete Binding +// Return: ZDO response status +void emAfRemoteDeleteBinding( + // The index of the binding whose deletion was requested. + uint8_t index) +{ +(void)index; + +} + + + +// Poll Complete +void emAfPollComplete( + // An EmberStatus value: EMBER_SUCCESS - Data was received in response to + // the poll. EMBER_MAC_NO_DATA - No data was pending. + // EMBER_DELIVERY_FAILED - The poll message could not be sent. + // EMBER_MAC_NO_ACK_RECEIVED - The poll message was sent but not + // acknowledged by the parent. + EmberStatus status) +{ +(void)status; + +emAfPollCompleteCallback(status); +} + + + +// Poll +void emAfPoll( + // The node ID of the child that is requesting data. + EmberNodeId childId, + // True if transmit expected, false otherwise. + bool transmitExpected) +{ +(void)childId; +(void)transmitExpected; + +emAfPollCallback(childId, transmitExpected); +} + + + +// Debug +void emAfDebug( + // debug message + EmberMessageBuffer message) +{ +(void)message; + +} + + + +// Incoming Many To One Route Request +void emAfIncomingManyToOneRouteRequest( + // The short id of the concentrator. + EmberNodeId source, + // The EUI64 of the concentrator. + EmberEUI64 longId, + // The path cost to the concentrator. The cost may decrease as additional + // route request packets for this discovery arrive, but the callback is + // made only once. + uint8_t cost) +{ +(void)source; +(void)longId; +(void)cost; + +emAfIncomingManyToOneRouteRequestCallback(source, longId, cost); +} + + + +// Incoming Route Error +void emAfIncomingRouteError( + // EMBER_SOURCE_ROUTE_FAILURE or EMBER_MANY_TO_ONE_ROUTE_FAILURE. + EmberStatus status, + // The short id of the remote node. + EmberNodeId target) +{ +(void)status; +(void)target; + +emAfIncomingRouteErrorCallback(status, target); +} + + + +// Incoming Network Status +void emAfIncomingNetworkStatus( + // One byte over-the-air error code from network status message + uint8_t errorCode, + // The short ID of the remote node + EmberNodeId target) +{ +(void)errorCode; +(void)target; + +emAfIncomingNetworkStatusCallback(errorCode, target); +} + + + +// Incoming Route Record +void emAfIncomingRouteRecord( + // The source of the route record. + EmberNodeId source, + // The EUI64 of the source. + EmberEUI64 sourceEui, + // The number of relays in relayList. + uint8_t relayCount, + // Header. + EmberMessageBuffer header, + // The relay List Index. + uint8_t relayListIndex) +{ +(void)source; +(void)sourceEui; +(void)relayCount; +(void)header; +(void)relayListIndex; + +emAfIncomingRouteRecordCallback(source, sourceEui, relayCount, header, relayListIndex); +} + + + +// Id Conflict +void emAfIdConflict( + // The short id for which a conflict was detected + EmberNodeId conflictingId) +{ +(void)conflictingId; + +emAfIdConflictCallback(conflictingId); +} + + + +// Mac Passthrough Message +void emAfMacPassthroughMessage( + // The type of MAC passthrough message received. + EmberMacPassthroughType messageType, + // The raw message that was received. + EmberMessageBuffer message) +{ +(void)messageType; +(void)message; + +emAfMacPassthroughMessageCallback(messageType, message); +} + + + +// Stack Token Changed +void emAfStackTokenChanged( + // The address of the stack token that has changed. + uint16_t tokenAddress) +{ +(void)tokenAddress; + +emAfStackTokenChangedCallback(tokenAddress); +} + + + +// Timer +void emAfTimer( + // Which timer generated the callback (0 or 1). + uint8_t timerId) +{ +(void)timerId; + +} + + + +// Counter Rollover +void emAfCounterRollover( + // Type of Counter + EmberCounterType type) +{ +(void)type; + +emAfCounterRolloverCallback(type); +} + + + +// Raw Transmit Complete +void emAfRawTransmitComplete( + // message + EmberMessageBuffer message, + // EMBER_SUCCESS if the transmission was successful, or + // EMBER_DELIVERY_FAILED if not + EmberStatus status) +{ +(void)message; +(void)status; + +emAfRawTransmitCompleteCallback(message, status); +} + + + +// Switch Network Key +void emAfSwitchNetworkKey( + // The sequence number of the new network key. + uint8_t sequenceNumber) +{ +(void)sequenceNumber; + +emAfSwitchNetworkKeyCallback(sequenceNumber); +} + + + +// Zigbee Key Establishment +void emAfZigbeeKeyEstablishment( + // This is the IEEE address of the partner that the device successfully + // established a key with. This value is all zeros on a failure. + EmberEUI64 partner, + // This is the status indicating what was established or why the key + // establishment failed. + EmberKeyStatus status) +{ +(void)partner; +(void)status; + +emAfZigbeeKeyEstablishmentCallback(partner, status); +} + + + +// Generate Cbke Keys +void emAfGenerateCbkeKeys( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKeyData *ephemeralPublicKey) +{ +(void)status; +(void)ephemeralPublicKey; + +} + + + +// Calculate Smacs +void emAfCalculateSmacs( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +{ +(void)status; +(void)initiatorSmac; +(void)responderSmac; + +} + + + +// Dsa Sign +void emAfDsaSign( + // The result of the DSA signing operation. + EmberStatus status, + // The message and attached which includes the original message and the + // appended signature. + EmberMessageBuffer signedMessage) +{ +(void)status; +(void)signedMessage; + +} + + + +// Dsa Verify +void emAfDsaVerify( + // The result of the DSA verification operation. + EmberStatus status) +{ +(void)status; + +} + + + +// Incoming Bootload Message +void emAfIncomingBootloadMessage( + // The EUI64 of the sending node. + EmberEUI64 longId, + // The bootload message that was sent. + EmberMessageBuffer message) +{ +(void)longId; +(void)message; + +emAfIncomingBootloadMessageCallback(longId, message); +} + + + +// Bootload Transmit Complete +void emAfBootloadTransmitComplete( + // The bootload message that was sent. + EmberMessageBuffer message, + // An EmberStatus value of EMBER_SUCCESS if an ACK was received from the + // destination or EMBER_DELIVERY_FAILED if no ACK was received. + EmberStatus status) +{ +(void)message; +(void)status; + +emAfBootloadTransmitCompleteCallback(message, status); +} + + + +// Zll Network Found +void emAfZllNetworkFound( + // Return: Information about the network. + const EmberZllNetwork *networkInfo, + // Return: Device specific information. + const EmberZllDeviceInfoRecord *deviceInfo) +{ +(void)networkInfo; +(void)deviceInfo; + +} + + + +// Zll Scan Complete +void emAfZllScanComplete( + // Status of the operation. + EmberStatus status) +{ +(void)status; + +} + + + +// Zll Address Assignment +void emAfZllAddressAssignment( + // Return: Address assignment information. + const EmberZllAddressAssignment *addressInfo) +{ +(void)addressInfo; + +} + + + +// Zll Touch Link Target +void emAfZllTouchLinkTarget( + // Return: Information about the network. + const EmberZllNetwork *networkInfo) +{ +(void)networkInfo; + +} + + + +// Mac Filter Match Message +void emAfMacFilterMatchMessage( + // Return: macFilterMatchStruct. + const EmberMacFilterMatchStruct *macFilterMatchStruct) +{ +(void)macFilterMatchStruct; + +emAfMacFilterMatchMessageCallback(macFilterMatchStruct); +} + + + +// D Gp Sent +void emAfDGpSent( + // An EmberStatus value indicating success or the reason for failure. + EmberStatus status, + // The handle of the GPDF. + uint8_t gpepHandle) +{ +(void)status; +(void)gpepHandle; + +emAfDGpSentCallback(status, gpepHandle); +} + + + +// Pan Id Conflict +// Return: An EmberStatus value indicating success or the reason for failure. +void emAfPanIdConflict( + // Number of conflict reports + int8_t conflictCount) +{ +(void)conflictCount; + +} + + + +// Orphan Notification +void emAfOrphanNotification( + // The 8 byte EUI64 of the sender. + EmberEUI64 longId) +{ +(void)longId; + +} + + + +// Counter +void emAfCounter( + // Type of Counter + EmberCounterType type, + // Counter Info and value + EmberCounterInfo Info) +{ +(void)type; +(void)Info; + +emAfCounterCallback(type, Info); +} + + + +// Mac Passthrough Filter +// Return: True if mac passthrough filter was matched. False otherwise. +void emAfMacPassthroughFilter( + // Return: Mac Header of the matched messgae + uint8_t *macHeader) +{ +(void)macHeader; + +} + + + +// Generate Cbke Keys Handler283k1 +void emAfGenerateCbkeKeysHandler283k1( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKey283k1Data *ephemeralPublicKey) +{ +(void)status; +(void)ephemeralPublicKey; + +} + + + +// Calculate Smacs Handler283k1 +void emAfCalculateSmacsHandler283k1( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +{ +(void)status; +(void)initiatorSmac; +(void)responderSmac; + +} + + + +// Gpep Incoming Message +void emAfGpepIncomingMessage( + // The status of the GPDF receive. + EmberStatus status, + // The gpdLink value of the received GPDF. + uint8_t gpdLink, + // The GPDF sequence number. + uint8_t sequenceNumber, + // The address of the source GPD. + EmberGpAddress *addr, + // The security level of the received GPDF. + EmberGpSecurityLevel gpdfSecurityLevel, + // The securityKeyType used to decrypt/authenticate the incoming GPDF. + EmberGpKeyType gpdfSecurityKeyType, + // Whether the incoming GPDF had the auto-commissioning bit set. + bool autoCommissioning, + // Bidirectional information represented in bitfields, where bit0 holds + // the rxAfterTx of incoming gpdf and bit1 holds if tx queue is available + // for outgoing gpdf. + uint8_t bidirectionalInfo, + // The security frame counter of the incoming GDPF. + uint32_t gpdSecurityFrameCounter, + // The gpdCommandId of the incoming GPDF. + uint8_t gpdCommandId, + // The received MIC of the GPDF. + uint32_t mic, + // The proxy table index of the corresponding proxy table entry to the + // incoming GPDF. + uint8_t proxyTableIndex, + // The length of the GPD command payload. + uint8_t gpdCommandPayloadLength, + // The GPD command payload. + uint8_t *gpdCommandPayload) +{ +(void)status; +(void)gpdLink; +(void)sequenceNumber; +(void)addr; +(void)gpdfSecurityLevel; +(void)gpdfSecurityKeyType; +(void)autoCommissioning; +(void)bidirectionalInfo; +(void)gpdSecurityFrameCounter; +(void)gpdCommandId; +(void)mic; +(void)proxyTableIndex; +(void)gpdCommandPayloadLength; +(void)gpdCommandPayload; + +emAfGpepIncomingMessageCallback(status, gpdLink, sequenceNumber, addr, gpdfSecurityLevel, gpdfSecurityKeyType, autoCommissioning, bidirectionalInfo, gpdSecurityFrameCounter, gpdCommandId, mic, proxyTableIndex, gpdCommandPayloadLength, gpdCommandPayload); +} + + + +// Rtos Idle +// Return: True or False. +void emAfRtosIdle( + // Return: Idle time duration + uint32_t *idleTimeMs) +{ +(void)idleTimeMs; + +} + + + +// Rtos Stack Wakeup Isr +void emAfRtosStackWakeupIsr(void) +{ + +} + + + +// Radio Needs Calibrating +void emAfRadioNeedsCalibrating(void) +{ + +} + + + +// Scan Error +void emAfScanError( + // The error status of a scan + EmberStatus status) +{ +(void)status; + +} + diff --git a/silabs_examples/credentials/device/brd4186a/autogen/zigbee_stack_callback_dispatcher.h b/silabs_examples/credentials/device/brd4186a/autogen/zigbee_stack_callback_dispatcher.h new file mode 100644 index 00000000000000..cf2d271a277f10 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/autogen/zigbee_stack_callback_dispatcher.h @@ -0,0 +1,876 @@ +/*****************************************************************************/ +/** + * Copyright 2020 Silicon Laboratories, Inc. + * + *****************************************************************************/ +// +// *** Generated file. Do not edit! *** +// + +#include PLATFORM_HEADER +#ifdef EZSP_HOST +#include "stack/include/ember-types.h" +#else +#include "stack/include/ember.h" +#endif // EZSP_HOST + + + +// Incoming Message +#ifdef EZSP_HOST +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // The link quality + uint8_t lastHopLqi, + // The energy level + int8_t lastHopRssi, + // The sender of the message. + EmberNodeId sender, + // The index of a binding that matches the message + // matching binding. + uint8_t bindingIndex, + // The index of the entry in the address table + uint8_t addressIndex, + // The message length + uint8_t messageLength, + // message + uint8_t *messageContents) +; +void emAfIncomingMessageCallback( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // The link quality + uint8_t lastHopLqi, + // The energy level + int8_t lastHopRssi, + // The sender of the message. + EmberNodeId sender, + // The index of a binding that matches the message + // matching binding. + uint8_t bindingIndex, + // The index of the entry in the address table + uint8_t addressIndex, + // The message length + uint8_t messageLength, + // message + uint8_t *messageContents) +; +#else // !EZSP_HOST +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message) +; +void emAfIncomingMessageCallback( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message) +; +#endif // EZSP_HOST + + +// Message Sent +#ifdef EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // Message tag + uint8_t messageTag, + // Message delivery status + EmberStatus status, + // The length of the messageContents + uint8_t messageLength, + // Message data + uint8_t *messageContents) +; +void emAfMessageSentCallback( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // Message tag + uint8_t messageTag, + // Message delivery status + EmberStatus status, + // The length of the messageContents + uint8_t messageLength, + // Message data + uint8_t *messageContents) +; +#else // !EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message, + // Message delivery status + EmberStatus status) +; +void emAfMessageSentCallback( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message, + // Message delivery status + EmberStatus status) +; +#endif // EZSP_HOST + + + +// Trust Center Join +void emAfTrustCenterJoin( + // Joining node's id + EmberNodeId newNodeId, + // Joining node's Eui64 + EmberEUI64 newNodeEui64, + // Status + EmberDeviceUpdate status, + // Parent Id of the joining node + EmberNodeId parentOfNewNode) +; + +// Mark Buffers +void emAfMarkBuffers(void) +; +void emAfMarkBuffersCallback(void) +; + +// Packet Handoff Incoming +void emAfPacketHandoffIncoming( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +; + +// Packet Handoff Outgoing +void emAfPacketHandoffOutgoing( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +; + +// Incoming Mfg Test Message +void emAfIncomingMfgTestMessage( + uint8_t messageType, + uint8_t dataLength, + // Return: + uint8_t *data) +; + +// Override Incoming Route Record +void emAfOverrideIncomingRouteRecord( + EmberNodeId source, + EmberEUI64 sourceEui, + uint8_t relayCount, + EmberMessageBuffer header, + uint8_t relayListIndex, + // Return: + bool *consumed) +; +void emAfOverrideIncomingRouteRecordCallback( + EmberNodeId source, + EmberEUI64 sourceEui, + uint8_t relayCount, + EmberMessageBuffer header, + uint8_t relayListIndex, + // Return: + bool *consumed) +; + +// Override Append Source Route +// Return: Added bytes +void emAfOverrideAppendSourceRoute( + EmberNodeId destination, + // Return: + EmberMessageBuffer *header, + // Return: + bool *consumed) +; + +// Override Furthur Index For Source Route Add Entry +void emAfOverrideFurthurIndexForSourceRouteAddEntry( + EmberNodeId id, + // Return: + uint8_t *furtherIndex) +; +void emAfOverrideFurthurIndexForSourceRouteAddEntryCallback( + EmberNodeId id, + // Return: + uint8_t *furtherIndex) +; + +// Stack Status +void emAfStackStatus( + // Stack status + EmberStatus status) +; +void emAfStackStatusCallback( + // Stack status + EmberStatus status) +; + +// Energy Scan Result +void emAfEnergyScanResult( + // The 802.15.4 channel number that was scanned. + uint8_t channel, + // The maximum RSSI value found on the channel. + int8_t maxRssiValue) +; +void emAfEnergyScanResultCallback( + // The 802.15.4 channel number that was scanned. + uint8_t channel, + // The maximum RSSI value found on the channel. + int8_t maxRssiValue) +; + +// Network Found +void emAfNetworkFound( + // The parameters associated with the network found. + EmberZigbeeNetwork *networkFound, + // The link quality indication of the network found. + uint8_t lqi, + // The received signal strength indication of the network found. + int8_t rssi) +; +void emAfNetworkFoundCallback( + // The parameters associated with the network found. + EmberZigbeeNetwork *networkFound, + // The link quality indication of the network found. + uint8_t lqi, + // The received signal strength indication of the network found. + int8_t rssi) +; + +// Scan Complete +void emAfScanComplete( + // The channel on which the current error occurred. Undefined for the case + // of EMBER_SUCCESS. + uint8_t channel, + // The error condition that occurred on the current channel. Value will be + // EMBER_SUCCESS when the scan has completed. + EmberStatus status) +; +void emAfScanCompleteCallback( + // The channel on which the current error occurred. Undefined for the case + // of EMBER_SUCCESS. + uint8_t channel, + // The error condition that occurred on the current channel. Value will be + // EMBER_SUCCESS when the scan has completed. + EmberStatus status) +; + +// Unused Pan Id Found +void emAfUnusedPanIdFound( + // The unused panID which has been found. + EmberPanId panId, + // The channel that the unused panID was found on. + uint8_t channel) +; +void emAfUnusedPanIdFoundCallback( + // The unused panID which has been found. + EmberPanId panId, + // The channel that the unused panID was found on. + uint8_t channel) +; + +// Child Join +#ifdef EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining, + // The node ID of the child. + EmberNodeId childId, + // The EUI64 of the child. + EmberEUI64 childEui64, + // The node type of the child. + EmberNodeType childType) +; +void emAfChildJoinCallback( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining, + // The node ID of the child. + EmberNodeId childId, + // The EUI64 of the child. + EmberEUI64 childEui64, + // The node type of the child. + EmberNodeType childType) +; +#else // !EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining) +; +void emAfChildJoinCallback( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining) +; +#endif // EZSP_HOST + + + +// Duty Cycle +#ifdef EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state, + // The total number of connected end devices that are being monitored for + // duty cycle. + uint8_t totalDevices, + // Consumed duty cycles of end devices that are being monitored. The first + // entry always be the local stack's nodeId, and thus the total aggregate + // duty cycle for the device. + EmberPerDeviceDutyCycle *arrayOfDeviceDutyCycles) +; +void emAfDutyCycleCallback( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state, + // The total number of connected end devices that are being monitored for + // duty cycle. + uint8_t totalDevices, + // Consumed duty cycles of end devices that are being monitored. The first + // entry always be the local stack's nodeId, and thus the total aggregate + // duty cycle for the device. + EmberPerDeviceDutyCycle *arrayOfDeviceDutyCycles) +; +#else // !EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state) +; +void emAfDutyCycleCallback( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state) +; +#endif // EZSP_HOST + + + +// Remote Set Binding +// Return: ZDO response status. +void emAfRemoteSetBinding( + // Return: The contents of the binding entry. + EmberBindingTableEntry *entry) +; + +// Remote Delete Binding +// Return: ZDO response status +void emAfRemoteDeleteBinding( + // The index of the binding whose deletion was requested. + uint8_t index) +; + +// Poll Complete +void emAfPollComplete( + // An EmberStatus value: EMBER_SUCCESS - Data was received in response to + // the poll. EMBER_MAC_NO_DATA - No data was pending. + // EMBER_DELIVERY_FAILED - The poll message could not be sent. + // EMBER_MAC_NO_ACK_RECEIVED - The poll message was sent but not + // acknowledged by the parent. + EmberStatus status) +; +void emAfPollCompleteCallback( + // An EmberStatus value: EMBER_SUCCESS - Data was received in response to + // the poll. EMBER_MAC_NO_DATA - No data was pending. + // EMBER_DELIVERY_FAILED - The poll message could not be sent. + // EMBER_MAC_NO_ACK_RECEIVED - The poll message was sent but not + // acknowledged by the parent. + EmberStatus status) +; + +// Poll +void emAfPoll( + // The node ID of the child that is requesting data. + EmberNodeId childId, + // True if transmit expected, false otherwise. + bool transmitExpected) +; +void emAfPollCallback( + // The node ID of the child that is requesting data. + EmberNodeId childId, + // True if transmit expected, false otherwise. + bool transmitExpected) +; + +// Debug +void emAfDebug( + // debug message + EmberMessageBuffer message) +; + +// Incoming Many To One Route Request +void emAfIncomingManyToOneRouteRequest( + // The short id of the concentrator. + EmberNodeId source, + // The EUI64 of the concentrator. + EmberEUI64 longId, + // The path cost to the concentrator. The cost may decrease as additional + // route request packets for this discovery arrive, but the callback is + // made only once. + uint8_t cost) +; +void emAfIncomingManyToOneRouteRequestCallback( + // The short id of the concentrator. + EmberNodeId source, + // The EUI64 of the concentrator. + EmberEUI64 longId, + // The path cost to the concentrator. The cost may decrease as additional + // route request packets for this discovery arrive, but the callback is + // made only once. + uint8_t cost) +; + +// Incoming Route Error +void emAfIncomingRouteError( + // EMBER_SOURCE_ROUTE_FAILURE or EMBER_MANY_TO_ONE_ROUTE_FAILURE. + EmberStatus status, + // The short id of the remote node. + EmberNodeId target) +; +void emAfIncomingRouteErrorCallback( + // EMBER_SOURCE_ROUTE_FAILURE or EMBER_MANY_TO_ONE_ROUTE_FAILURE. + EmberStatus status, + // The short id of the remote node. + EmberNodeId target) +; + +// Incoming Network Status +void emAfIncomingNetworkStatus( + // One byte over-the-air error code from network status message + uint8_t errorCode, + // The short ID of the remote node + EmberNodeId target) +; +void emAfIncomingNetworkStatusCallback( + // One byte over-the-air error code from network status message + uint8_t errorCode, + // The short ID of the remote node + EmberNodeId target) +; + +// Incoming Route Record +void emAfIncomingRouteRecord( + // The source of the route record. + EmberNodeId source, + // The EUI64 of the source. + EmberEUI64 sourceEui, + // The number of relays in relayList. + uint8_t relayCount, + // Header. + EmberMessageBuffer header, + // The relay List Index. + uint8_t relayListIndex) +; +void emAfIncomingRouteRecordCallback( + // The source of the route record. + EmberNodeId source, + // The EUI64 of the source. + EmberEUI64 sourceEui, + // The number of relays in relayList. + uint8_t relayCount, + // Header. + EmberMessageBuffer header, + // The relay List Index. + uint8_t relayListIndex) +; + +// Id Conflict +void emAfIdConflict( + // The short id for which a conflict was detected + EmberNodeId conflictingId) +; +void emAfIdConflictCallback( + // The short id for which a conflict was detected + EmberNodeId conflictingId) +; + +// Mac Passthrough Message +void emAfMacPassthroughMessage( + // The type of MAC passthrough message received. + EmberMacPassthroughType messageType, + // The raw message that was received. + EmberMessageBuffer message) +; +void emAfMacPassthroughMessageCallback( + // The type of MAC passthrough message received. + EmberMacPassthroughType messageType, + // The raw message that was received. + EmberMessageBuffer message) +; + +// Stack Token Changed +void emAfStackTokenChanged( + // The address of the stack token that has changed. + uint16_t tokenAddress) +; +void emAfStackTokenChangedCallback( + // The address of the stack token that has changed. + uint16_t tokenAddress) +; + +// Timer +void emAfTimer( + // Which timer generated the callback (0 or 1). + uint8_t timerId) +; + +// Counter Rollover +void emAfCounterRollover( + // Type of Counter + EmberCounterType type) +; +void emAfCounterRolloverCallback( + // Type of Counter + EmberCounterType type) +; + +// Raw Transmit Complete +void emAfRawTransmitComplete( + // message + EmberMessageBuffer message, + // EMBER_SUCCESS if the transmission was successful, or + // EMBER_DELIVERY_FAILED if not + EmberStatus status) +; +void emAfRawTransmitCompleteCallback( + // message + EmberMessageBuffer message, + // EMBER_SUCCESS if the transmission was successful, or + // EMBER_DELIVERY_FAILED if not + EmberStatus status) +; + +// Switch Network Key +void emAfSwitchNetworkKey( + // The sequence number of the new network key. + uint8_t sequenceNumber) +; +void emAfSwitchNetworkKeyCallback( + // The sequence number of the new network key. + uint8_t sequenceNumber) +; + +// Zigbee Key Establishment +void emAfZigbeeKeyEstablishment( + // This is the IEEE address of the partner that the device successfully + // established a key with. This value is all zeros on a failure. + EmberEUI64 partner, + // This is the status indicating what was established or why the key + // establishment failed. + EmberKeyStatus status) +; +void emAfZigbeeKeyEstablishmentCallback( + // This is the IEEE address of the partner that the device successfully + // established a key with. This value is all zeros on a failure. + EmberEUI64 partner, + // This is the status indicating what was established or why the key + // establishment failed. + EmberKeyStatus status) +; + +// Generate Cbke Keys +void emAfGenerateCbkeKeys( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKeyData *ephemeralPublicKey) +; + +// Calculate Smacs +void emAfCalculateSmacs( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +; + +// Dsa Sign +void emAfDsaSign( + // The result of the DSA signing operation. + EmberStatus status, + // The message and attached which includes the original message and the + // appended signature. + EmberMessageBuffer signedMessage) +; + +// Dsa Verify +void emAfDsaVerify( + // The result of the DSA verification operation. + EmberStatus status) +; + +// Incoming Bootload Message +void emAfIncomingBootloadMessage( + // The EUI64 of the sending node. + EmberEUI64 longId, + // The bootload message that was sent. + EmberMessageBuffer message) +; +void emAfIncomingBootloadMessageCallback( + // The EUI64 of the sending node. + EmberEUI64 longId, + // The bootload message that was sent. + EmberMessageBuffer message) +; + +// Bootload Transmit Complete +void emAfBootloadTransmitComplete( + // The bootload message that was sent. + EmberMessageBuffer message, + // An EmberStatus value of EMBER_SUCCESS if an ACK was received from the + // destination or EMBER_DELIVERY_FAILED if no ACK was received. + EmberStatus status) +; +void emAfBootloadTransmitCompleteCallback( + // The bootload message that was sent. + EmberMessageBuffer message, + // An EmberStatus value of EMBER_SUCCESS if an ACK was received from the + // destination or EMBER_DELIVERY_FAILED if no ACK was received. + EmberStatus status) +; + +// Zll Network Found +void emAfZllNetworkFound( + // Return: Information about the network. + const EmberZllNetwork *networkInfo, + // Return: Device specific information. + const EmberZllDeviceInfoRecord *deviceInfo) +; + +// Zll Scan Complete +void emAfZllScanComplete( + // Status of the operation. + EmberStatus status) +; + +// Zll Address Assignment +void emAfZllAddressAssignment( + // Return: Address assignment information. + const EmberZllAddressAssignment *addressInfo) +; + +// Zll Touch Link Target +void emAfZllTouchLinkTarget( + // Return: Information about the network. + const EmberZllNetwork *networkInfo) +; + +// Mac Filter Match Message +void emAfMacFilterMatchMessage( + // Return: macFilterMatchStruct. + const EmberMacFilterMatchStruct *macFilterMatchStruct) +; +void emAfMacFilterMatchMessageCallback( + // Return: macFilterMatchStruct. + const EmberMacFilterMatchStruct *macFilterMatchStruct) +; + +// D Gp Sent +void emAfDGpSent( + // An EmberStatus value indicating success or the reason for failure. + EmberStatus status, + // The handle of the GPDF. + uint8_t gpepHandle) +; +void emAfDGpSentCallback( + // An EmberStatus value indicating success or the reason for failure. + EmberStatus status, + // The handle of the GPDF. + uint8_t gpepHandle) +; + +// Pan Id Conflict +// Return: An EmberStatus value indicating success or the reason for failure. +void emAfPanIdConflict( + // Number of conflict reports + int8_t conflictCount) +; + +// Orphan Notification +void emAfOrphanNotification( + // The 8 byte EUI64 of the sender. + EmberEUI64 longId) +; + +// Counter +void emAfCounter( + // Type of Counter + EmberCounterType type, + // Counter Info and value + EmberCounterInfo Info) +; +void emAfCounterCallback( + // Type of Counter + EmberCounterType type, + // Counter Info and value + EmberCounterInfo Info) +; + +// Mac Passthrough Filter +// Return: True if mac passthrough filter was matched. False otherwise. +void emAfMacPassthroughFilter( + // Return: Mac Header of the matched messgae + uint8_t *macHeader) +; + +// Generate Cbke Keys Handler283k1 +void emAfGenerateCbkeKeysHandler283k1( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKey283k1Data *ephemeralPublicKey) +; + +// Calculate Smacs Handler283k1 +void emAfCalculateSmacsHandler283k1( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +; + +// Gpep Incoming Message +void emAfGpepIncomingMessage( + // The status of the GPDF receive. + EmberStatus status, + // The gpdLink value of the received GPDF. + uint8_t gpdLink, + // The GPDF sequence number. + uint8_t sequenceNumber, + // The address of the source GPD. + EmberGpAddress *addr, + // The security level of the received GPDF. + EmberGpSecurityLevel gpdfSecurityLevel, + // The securityKeyType used to decrypt/authenticate the incoming GPDF. + EmberGpKeyType gpdfSecurityKeyType, + // Whether the incoming GPDF had the auto-commissioning bit set. + bool autoCommissioning, + // Bidirectional information represented in bitfields, where bit0 holds + // the rxAfterTx of incoming gpdf and bit1 holds if tx queue is available + // for outgoing gpdf. + uint8_t bidirectionalInfo, + // The security frame counter of the incoming GDPF. + uint32_t gpdSecurityFrameCounter, + // The gpdCommandId of the incoming GPDF. + uint8_t gpdCommandId, + // The received MIC of the GPDF. + uint32_t mic, + // The proxy table index of the corresponding proxy table entry to the + // incoming GPDF. + uint8_t proxyTableIndex, + // The length of the GPD command payload. + uint8_t gpdCommandPayloadLength, + // The GPD command payload. + uint8_t *gpdCommandPayload) +; +void emAfGpepIncomingMessageCallback( + // The status of the GPDF receive. + EmberStatus status, + // The gpdLink value of the received GPDF. + uint8_t gpdLink, + // The GPDF sequence number. + uint8_t sequenceNumber, + // The address of the source GPD. + EmberGpAddress *addr, + // The security level of the received GPDF. + EmberGpSecurityLevel gpdfSecurityLevel, + // The securityKeyType used to decrypt/authenticate the incoming GPDF. + EmberGpKeyType gpdfSecurityKeyType, + // Whether the incoming GPDF had the auto-commissioning bit set. + bool autoCommissioning, + // Bidirectional information represented in bitfields, where bit0 holds + // the rxAfterTx of incoming gpdf and bit1 holds if tx queue is available + // for outgoing gpdf. + uint8_t bidirectionalInfo, + // The security frame counter of the incoming GDPF. + uint32_t gpdSecurityFrameCounter, + // The gpdCommandId of the incoming GPDF. + uint8_t gpdCommandId, + // The received MIC of the GPDF. + uint32_t mic, + // The proxy table index of the corresponding proxy table entry to the + // incoming GPDF. + uint8_t proxyTableIndex, + // The length of the GPD command payload. + uint8_t gpdCommandPayloadLength, + // The GPD command payload. + uint8_t *gpdCommandPayload) +; + +// Rtos Idle +// Return: True or False. +void emAfRtosIdle( + // Return: Idle time duration + uint32_t *idleTimeMs) +; + +// Rtos Stack Wakeup Isr +void emAfRtosStackWakeupIsr(void) +; + +// Radio Needs Calibrating +void emAfRadioNeedsCalibrating(void) +; + +// Scan Error +void emAfScanError( + // The error status of a scan + EmberStatus status) +; diff --git a/silabs_examples/credentials/device/brd4186a/config/SEGGER_RTT_Conf.h b/silabs_examples/credentials/device/brd4186a/config/SEGGER_RTT_Conf.h new file mode 100644 index 00000000000000..ca8df42d9c73a7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/SEGGER_RTT_Conf.h @@ -0,0 +1,417 @@ +/********************************************************************* +* SEGGER Microcontroller GmbH * +* The Embedded Experts * +********************************************************************** +* * +* (c) 1995 - 2021 SEGGER Microcontroller GmbH * +* * +* www.segger.com Support: support@segger.com * +* * +********************************************************************** +* * +* SEGGER SystemView * Real-time application analysis * +* * +********************************************************************** +* * +* All rights reserved. * +* * +* SEGGER strongly recommends to not make any changes * +* to or modify the source code of this software in order to stay * +* compatible with the SystemView and RTT protocol, and J-Link. * +* * +* Redistribution and use in source and binary forms, with or * +* without modification, are permitted provided that the following * +* condition is met: * +* * +* o Redistributions of source code must retain the above copyright * +* notice, this condition and the following disclaimer. * +* * +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND * +* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, * +* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * +* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * +* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR * +* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * +* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * +* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * +* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * +* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * +* DAMAGE. * +* * +********************************************************************** +* * +* SystemView version: 3.30 * +* * +********************************************************************** +---------------------------END-OF-HEADER------------------------------ +File : SEGGER_RTT_Conf.h +Purpose : Implementation of SEGGER real-time transfer (RTT) which + allows real-time communication on targets which support + debugger memory accesses while the CPU is running. +Revision: $Rev: 21386 $ + +*/ + +#ifndef SEGGER_RTT_CONF_H +#define SEGGER_RTT_CONF_H + +#ifdef __IAR_SYSTEMS_ICC__ + #include +#endif + +/********************************************************************* + * + * Defines, configurable + * + ********************************************************************** + */ +#ifndef SEGGER_RTT_MAX_NUM_UP_BUFFERS + #define SEGGER_RTT_MAX_NUM_UP_BUFFERS (3) // Max. number of up-buffers (T->H) available on this target (Default: 3) +#endif + +#ifndef SEGGER_RTT_MAX_NUM_DOWN_BUFFERS + #define SEGGER_RTT_MAX_NUM_DOWN_BUFFERS (3) // Max. number of down-buffers (H->T) available on this target (Default: 3) +#endif + +#ifndef BUFFER_SIZE_UP + #define BUFFER_SIZE_UP (1024) // Size of the buffer for terminal output of target, up to host (Default: 1k) +#endif + +#ifndef BUFFER_SIZE_DOWN + #define BUFFER_SIZE_DOWN (1024) // Size of the buffer for terminal input to target from host (Usually keyboard input) (Default: 16) +#endif + +#ifndef SEGGER_RTT_PRINTF_BUFFER_SIZE + #define SEGGER_RTT_PRINTF_BUFFER_SIZE (64u) // Size of buffer for RTT printf to bulk-send chars via RTT (Default: 64) +#endif + +#ifndef SEGGER_RTT_MODE_DEFAULT + #define SEGGER_RTT_MODE_DEFAULT SEGGER_RTT_MODE_NO_BLOCK_SKIP // Mode for pre-initialized terminal channel (buffer 0) +#endif + +/********************************************************************* + * + * RTT memcpy configuration + * + * memcpy() is good for large amounts of data, + * but the overhead is big for small amounts, which are usually stored via RTT. + * With SEGGER_RTT_MEMCPY_USE_BYTELOOP a simple byte loop can be used instead. + * + * SEGGER_RTT_MEMCPY() can be used to replace standard memcpy() in RTT functions. + * This is may be required with memory access restrictions, + * such as on Cortex-A devices with MMU. + */ +#ifndef SEGGER_RTT_MEMCPY_USE_BYTELOOP + #define SEGGER_RTT_MEMCPY_USE_BYTELOOP 0 // 0: Use memcpy/SEGGER_RTT_MEMCPY, 1: Use a simple byte-loop +#endif +// +// Example definition of SEGGER_RTT_MEMCPY to external memcpy with GCC toolchains and Cortex-A targets +// +//#if ((defined __SES_ARM) || (defined __CROSSWORKS_ARM) || (defined __GNUC__)) && (defined (__ARM_ARCH_7A__)) +// #define SEGGER_RTT_MEMCPY(pDest, pSrc, NumBytes) SEGGER_memcpy((pDest), (pSrc), (NumBytes)) +//#endif + +// +// Target is not allowed to perform other RTT operations while string still has not been stored completely. +// Otherwise we would probably end up with a mixed string in the buffer. +// If using RTT from within interrupts, multiple tasks or multi processors, define the SEGGER_RTT_LOCK() and SEGGER_RTT_UNLOCK() function here. +// +// SEGGER_RTT_MAX_INTERRUPT_PRIORITY can be used in the sample lock routines on Cortex-M3/4. +// Make sure to mask all interrupts which can send RTT data, i.e. generate SystemView events, or cause task switches. +// When high-priority interrupts must not be masked while sending RTT data, SEGGER_RTT_MAX_INTERRUPT_PRIORITY needs to be adjusted accordingly. +// (Higher priority = lower priority number) +// Default value for embOS: 128u +// Default configuration in FreeRTOS: configMAX_SYSCALL_INTERRUPT_PRIORITY: ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) +// In case of doubt mask all interrupts: 1 << (8 - BASEPRI_PRIO_BITS) i.e. 1 << 5 when 3 bits are implemented in NVIC +// or define SEGGER_RTT_LOCK() to completely disable interrupts. +// +#ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) // Interrupt priority to lock on SEGGER_RTT_LOCK on Cortex-M3/4 (Default: 0x20) +#endif + +/********************************************************************* + * + * RTT lock configuration for SEGGER Embedded Studio, + * Rowley CrossStudio and GCC + */ +#if ((defined(__SES_ARM) || defined(__SES_RISCV) || defined(__CROSSWORKS_ARM) || defined(__GNUC__) || defined(__clang__)) && !defined (__CC_ARM) && !defined(WIN32)) + #if (defined(__ARM_ARCH_6M__) || defined(__ARM_ARCH_8M_BASE__)) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("mrs %0, primask \n\t" \ + "movs r1, #1 \n\t" \ + "msr primask, r1 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : \ + : "r1", "cc" \ + ); + + #define SEGGER_RTT_UNLOCK() __asm volatile ("msr primask, %0 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : \ + ); \ + } + #elif (defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_8M_MAIN__)) + #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) + #endif + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("mrs %0, basepri \n\t" \ + "mov r1, %1 \n\t" \ + "msr basepri, r1 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : "i" (SEGGER_RTT_MAX_INTERRUPT_PRIORITY) \ + : "r1", "cc" \ + ); + + #define SEGGER_RTT_UNLOCK() __asm volatile ("msr basepri, %0 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : \ + ); \ + } + + #elif defined(__ARM_ARCH_7A__) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("mrs r1, CPSR \n\t" \ + "mov %0, r1 \n\t" \ + "orr r1, r1, #0xC0 \n\t" \ + "msr CPSR_c, r1 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : \ + : "r1", "cc" \ + ); + + #define SEGGER_RTT_UNLOCK() __asm volatile ("mov r0, %0 \n\t" \ + "mrs r1, CPSR \n\t" \ + "bic r1, r1, #0xC0 \n\t" \ + "and r0, r0, #0xC0 \n\t" \ + "orr r1, r1, r0 \n\t" \ + "msr CPSR_c, r1 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : "r0", "r1", "cc" \ + ); \ + } + #elif defined(__riscv) || defined(__riscv_xlen) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("csrr %0, mstatus \n\t" \ + "csrci mstatus, 8 \n\t" \ + "andi %0, %0, 8 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : \ + : \ + ); + #define SEGGER_RTT_UNLOCK() __asm volatile ("csrr a1, mstatus \n\t" \ + "or %0, %0, a1 \n\t" \ + "csrs mstatus, %0 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : "a1" \ + ); \ + } + #else + #define SEGGER_RTT_LOCK() + #define SEGGER_RTT_UNLOCK() + #endif +#endif + +/********************************************************************* + * + * RTT lock configuration for IAR EWARM + */ +#ifdef __ICCARM__ + #if (defined (__ARM6M__) && (__CORE__ == __ARM6M__)) || \ + (defined (__ARM8M_BASELINE__) && (__CORE__ == __ARM8M_BASELINE__)) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_PRIMASK(); \ + __set_PRIMASK(1); + + #define SEGGER_RTT_UNLOCK() __set_PRIMASK(_SEGGER_RTT__LockState); \ + } + #elif (defined (__ARM7EM__) && (__CORE__ == __ARM7EM__)) || \ + (defined (__ARM7M__) && (__CORE__ == __ARM7M__)) || \ + (defined (__ARM8M_MAINLINE__) && (__CORE__ == __ARM8M_MAINLINE__)) || \ + (defined (__ARM8M_MAINLINE__) && (__CORE__ == __ARM8M_MAINLINE__)) + #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) + #endif + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_BASEPRI(); \ + __set_BASEPRI(SEGGER_RTT_MAX_INTERRUPT_PRIORITY); + + #define SEGGER_RTT_UNLOCK() __set_BASEPRI(_SEGGER_RTT__LockState); \ + } + #elif (defined (__ARM7A__) && (__CORE__ == __ARM7A__)) || \ + (defined (__ARM7R__) && (__CORE__ == __ARM7R__)) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("mrs r1, CPSR \n\t" \ + "mov %0, r1 \n\t" \ + "orr r1, r1, #0xC0 \n\t" \ + "msr CPSR_c, r1 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : \ + : "r1", "cc" \ + ); + #define SEGGER_RTT_UNLOCK() __asm volatile ("mov r0, %0 \n\t" \ + "mrs r1, CPSR \n\t" \ + "bic r1, r1, #0xC0 \n\t" \ + "and r0, r0, #0xC0 \n\t" \ + "orr r1, r1, r0 \n\t" \ + "msr CPSR_c, r1 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : "r0", "r1", "cc" \ + ); \ + } + #endif +#endif + +/********************************************************************* + * + * RTT lock configuration for IAR RX + */ +#ifdef __ICCRX__ + #define SEGGER_RTT_LOCK() { \ + unsigned long _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_interrupt_state(); \ + __disable_interrupt(); + + #define SEGGER_RTT_UNLOCK() __set_interrupt_state(_SEGGER_RTT__LockState); \ + } +#endif + +/********************************************************************* + * + * RTT lock configuration for IAR RL78 + */ +#ifdef __ICCRL78__ + #define SEGGER_RTT_LOCK() { \ + __istate_t _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_interrupt_state(); \ + __disable_interrupt(); + + #define SEGGER_RTT_UNLOCK() __set_interrupt_state(_SEGGER_RTT__LockState); \ + } +#endif + +/********************************************************************* + * + * RTT lock configuration for KEIL ARM + */ +#ifdef __CC_ARM + #if (defined __TARGET_ARCH_6S_M) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + register unsigned char _SEGGER_RTT__PRIMASK __asm( "primask"); \ + _SEGGER_RTT__LockState = _SEGGER_RTT__PRIMASK; \ + _SEGGER_RTT__PRIMASK = 1u; \ + __schedule_barrier(); + + #define SEGGER_RTT_UNLOCK() _SEGGER_RTT__PRIMASK = _SEGGER_RTT__LockState; \ + __schedule_barrier(); \ + } + #elif (defined(__TARGET_ARCH_7_M) || defined(__TARGET_ARCH_7E_M)) + #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) + #endif + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + register unsigned char BASEPRI __asm("basepri"); \ + _SEGGER_RTT__LockState = BASEPRI; \ + BASEPRI = SEGGER_RTT_MAX_INTERRUPT_PRIORITY; \ + __schedule_barrier(); + + #define SEGGER_RTT_UNLOCK() BASEPRI = _SEGGER_RTT__LockState; \ + __schedule_barrier(); \ + } + #endif +#endif + +/********************************************************************* + * + * RTT lock configuration for TI ARM + */ +#ifdef __TI_ARM__ + #if defined (__TI_ARM_V6M0__) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_PRIMASK(); \ + __set_PRIMASK(1); + + #define SEGGER_RTT_UNLOCK() __set_PRIMASK(_SEGGER_RTT__LockState); \ + } + #elif (defined (__TI_ARM_V7M3__) || defined (__TI_ARM_V7M4__)) + #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) + #endif + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = _set_interrupt_priority(SEGGER_RTT_MAX_INTERRUPT_PRIORITY); + + #define SEGGER_RTT_UNLOCK() _set_interrupt_priority(_SEGGER_RTT__LockState); \ + } + #endif +#endif + +/********************************************************************* + * + * RTT lock configuration for CCRX + */ +#ifdef __RX + #include + #define SEGGER_RTT_LOCK() { \ + unsigned long _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = get_psw() & 0x010000; \ + clrpsw_i(); + + #define SEGGER_RTT_UNLOCK() set_psw(get_psw() | _SEGGER_RTT__LockState); \ + } +#endif + +/********************************************************************* + * + * RTT lock configuration for embOS Simulation on Windows + * (Can also be used for generic RTT locking with embOS) + */ +#if defined(WIN32) || defined(SEGGER_RTT_LOCK_EMBOS) + +void OS_SIM_EnterCriticalSection(void); +void OS_SIM_LeaveCriticalSection(void); + +#define SEGGER_RTT_LOCK() { \ + OS_SIM_EnterCriticalSection(); + +#define SEGGER_RTT_UNLOCK() OS_SIM_LeaveCriticalSection(); \ + } +#endif + +/********************************************************************* + * + * RTT lock configuration fallback + */ +#ifndef SEGGER_RTT_LOCK + #define SEGGER_RTT_LOCK() // Lock RTT (nestable) (i.e. disable interrupts) +#endif + +#ifndef SEGGER_RTT_UNLOCK + #define SEGGER_RTT_UNLOCK() // Unlock RTT (nestable) (i.e. enable previous interrupt lock state) +#endif + +/********************************************************************* + * + * RTT control block configuration + */ +#define SEGGER_RTT_ALIGNMENT 1024 + +#endif +/*************************** End of file ****************************/ diff --git a/silabs_examples/credentials/device/brd4186a/config/app_properties_config.h b/silabs_examples/credentials/device/brd4186a/config/app_properties_config.h new file mode 100644 index 00000000000000..6a6b976666a554 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/app_properties_config.h @@ -0,0 +1,65 @@ +/***************************************************************************//** + * @file + * @brief Application Properties Header File + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef APP_PROPERTIES_CONFIG_H +#define APP_PROPERTIES_CONFIG_H + +#include "sl_application_type.h" + +// <<< Use Configuration Wizard in Context Menu >>> + +// App Properties settings + +// Type of signature this application is signed with +// Default: APPLICATION_SIGNATURE_NONE(0) +#define SL_APPLICATION_SIGNATURE 0 + +// Location of the signature +// Default: 0xFFFFFFFF +#define SL_APPLICATION_SIGNATURE_LOCATION 0xFFFFFFFF + +// Bitfield representing type of application +#define SL_APPLICATION_TYPE APPLICATION_TYPE + +// Version number for this application +// <0-4294967295:1> +// Default: 1 [0-4294967295] +#define SL_APPLICATION_VERSION 1 + +// Capabilities of this application +// Default: 0 +#define SL_APPLICATION_CAPABILITIES 0 + +//Product ID of the device for which the application is built +#define SL_APPLICATION_PRODUCT_ID { 0 } + +// + +#endif // APP_PROPERTIES_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186a/config/btl_interface_cfg.h b/silabs_examples/credentials/device/brd4186a/config/btl_interface_cfg.h new file mode 100644 index 00000000000000..eca01575f6cda2 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/btl_interface_cfg.h @@ -0,0 +1,44 @@ +/***************************************************************************//** + * @file + * @brief Configuration header of Bootloader Interface + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +#ifndef BTL_INTERFACE_CFG_H +#define BTL_INTERFACE_CFG_H + +#if !defined(BOOTLOADER_APPLOADER) + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_1) +#include "btl_interface_cfg_s2c1.h" +#endif + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_2) +#include "btl_interface_cfg_s2c2.h" +#endif + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_3) +#include "btl_interface_cfg_s2c3.h" +#endif + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_4) +#include "btl_interface_cfg_s2c4.h" +#endif + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_5) +#define BOOTLOADER_DISABLE_OLD_BOOTLOADER_MITIGATION 1 +#endif + +#endif // !BOOTLOADER_APPLOADER + +#endif // BTL_INTERFACE_CFG_H diff --git a/silabs_examples/credentials/device/brd4186a/config/btl_interface_cfg_s2c4.h b/silabs_examples/credentials/device/brd4186a/config/btl_interface_cfg_s2c4.h new file mode 100644 index 00000000000000..4c80d86f858e9d --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/btl_interface_cfg_s2c4.h @@ -0,0 +1,321 @@ +/***************************************************************************//** + * @file + * @brief Configuration header of Bootloader Interface + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +#ifndef BTL_INTERFACE_CFG_S2C4_H +#define BTL_INTERFACE_CFG_S2C4_H + +// <<< Use Configuration Wizard in Context Menu >>> +// Bootloader Interface Trust Zone Security State Configuration + +// Disable multi tiered fallback logic +// The fault handling logic as well as the USART auto-detection logic will be disabled. +// The re-configuration of SMU will be handled by querying the running bootloader +// for the peripheral list. Querying the peripheral list is supported from the bootloader +// version 2.0.0. Check for the BOOTLOADER_CAPABILITY_PERIPHERAL_LIST capability to +// see if the running bootloader supports querying the peripheral list. +#define BOOTLOADER_DISABLE_OLD_BOOTLOADER_MITIGATION 0 + +// Disable peripheral access fault handling +// The fault handling triggered by an erroneous access of peripherals will be disabled. +// +// This should be disabled iff all the peripherals that are in use by the bootloader +// have been properly configured by the "Manually override security state of peripherals" option. +#define BOOTLOADER_DISABLE_NVM3_FAULT_HANDLING 0 + +// Manually override the security state of peripherals in use by the bootloader +// Default: 0. +// Manually override the security state of peripherals. Choose the peripherals touched +// by the customized code to have a valid secure access state before interacting with the bootloader +// In practice, this means that the chosen peripherals will be available at the secure address, +// which is accessible by the bootloader. Once the application is entered back the secure access state +// is changed back to the original state. +// +// The USART auto-detection logic that detects which, if any, USART is in use by the bootloader +// will be disabled. Make sure to choose the correct USART used by the bootloader. +#define BOOTLOADER_MANUAL_OVERRIDE_SECURITY_STATE 0 +// EMU +// Update secure access state of EMU before calling into bootloader +#define BOOTLOADER_PPUSATD0_EMU 0 + +// CMU +// Update secure access state of CMU before calling into bootloader +#define BOOTLOADER_PPUSATD0_CMU 0 + +// HFRCO0 +// Update secure access state of HFRCO0 before calling into bootloader +#define BOOTLOADER_PPUSATD0_HFRCO0 0 + +// FSRCO +// Update secure access state of FSRCO before calling into bootloader +#define BOOTLOADER_PPUSATD0_FSRCO 0 + +// DPLL0 +// Update secure access state of DPLL0 before calling into bootloader +#define BOOTLOADER_PPUSATD0_DPLL0 0 + +// LFXO +// Update secure access state of LFXO before calling into bootloader +#define BOOTLOADER_PPUSATD0_LFXO 0 + +// LFRCO +// Update secure access state of LFRCO before calling into bootloader +#define BOOTLOADER_PPUSATD0_LFRCO 0 + +// ULFRCO +// Update secure access state of ULFRCO before calling into bootloader +#define BOOTLOADER_PPUSATD0_ULFRCO 0 + +// MSC +// Update secure access state of MSC before calling into bootloader +#define BOOTLOADER_PPUSATD0_MSC 0 + +// ICACHE0 +// Update secure access state of ICACHE0 before calling into bootloader +#define BOOTLOADER_PPUSATD0_ICACHE0 0 + +// PRS +// Update secure access state of PRS before calling into bootloader +#define BOOTLOADER_PPUSATD0_PRS 0 + +// GPIO +// Update secure access state of GPIO before calling into bootloader +#define BOOTLOADER_PPUSATD0_GPIO 0 + +// LDMA +// Update secure access state of LDMA before calling into bootloader +#define BOOTLOADER_PPUSATD0_LDMA 0 + +// LDMAXBAR +// Update secure access state of LDMAXBAR before calling into bootloader +#define BOOTLOADER_PPUSATD0_LDMAXBAR 0 + +// TIMER0 +// Update secure access state of TIMER0 before calling into bootloader +#define BOOTLOADER_PPUSATD0_TIMER0 0 + +// TIMER1 +// Update secure access state of TIMER1 before calling into bootloader +#define BOOTLOADER_PPUSATD0_TIMER1 0 + +// TIMER2 +// Update secure access state of TIMER2 before calling into bootloader +#define BOOTLOADER_PPUSATD0_TIMER2 0 + +// TIMER3 +// Update secure access state of TIMER3 before calling into bootloader +#define BOOTLOADER_PPUSATD0_TIMER3 0 + +// TIMER4 +// Update secure access state of TIMER4 before calling into bootloader +#define BOOTLOADER_PPUSATD0_TIMER4 0 + +// USART0 +// Update secure access state of USART0 before calling into bootloader +#define BOOTLOADER_PPUSATD0_USART0 0 + +// BURTC +// Update secure access state of BURTC before calling into bootloader +#define BOOTLOADER_PPUSATD0_BURTC 0 + +// I2C1 +// Update secure access state of I2C1 before calling into bootloader +#define BOOTLOADER_PPUSATD0_I2C1 0 + +// CHIPTESTCTRL +// Update secure access state of CHIPTESTCTRL before calling into bootloader +#define BOOTLOADER_PPUSATD0_CHIPTESTCTRL 0 + +// SYSCFGCFGNS +// Update secure access state of SYSCFGCFGNS before calling into bootloader +#define BOOTLOADER_PPUSATD0_SYSCFGCFGNS 0 + +// SYSCFG +// Update secure access state of SYSCFG before calling into bootloader +#define BOOTLOADER_PPUSATD0_SYSCFG 0 + +// BURAM +// Update secure access state of BURAM before calling into bootloader +#define BOOTLOADER_PPUSATD0_BURAM 0 + +// GPCRC +// Update secure access state of GPCRC before calling into bootloader +#define BOOTLOADER_PPUSATD0_GPCRC 0 + +// DCDC +// Update secure access state of DCDC before calling into bootloader +#define BOOTLOADER_PPUSATD0_DCDC 0 + +// HOSTMAILBOX +// Update secure access state of HOSTMAILBOX before calling into bootloader +#define BOOTLOADER_PPUSATD0_HOSTMAILBOX 0 + +// EUSART1 +// Update secure access state of EUSART1 before calling into bootloader +#define BOOTLOADER_PPUSATD0_EUSART1 0 + +// SYSRTC +// Update secure access state of SYSRTC before calling into bootloader +#define BOOTLOADER_PPUSATD0_SYSRTC 0 + +// KEYSCAN +// Update secure access state of KEYSCAN before calling into bootloader +#define BOOTLOADER_PPUSATD1_KEYSCAN 0 + +// DMEM +// Update secure access state of DMEM before calling into bootloader +#define BOOTLOADER_PPUSATD1_DMEM 0 + +// RADIOAES +// Update secure access state of RADIOAES before calling into bootloader +#define BOOTLOADER_PPUSATD1_RADIOAES 0 + +// SMU +// Update secure access state of SMU before calling into bootloader +#define BOOTLOADER_PPUSATD1_SMU 0 + +// SMUCFGNS +// Update secure access state of SMUCFGNS before calling into bootloader +#define BOOTLOADER_PPUSATD1_SMUCFGNS 0 + +// LETIMER0 +// Update secure access state of LETIMER0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_LETIMER0 0 + +// IADC0 +// Update secure access state of IADC0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_IADC0 0 + +// ACMP0 +// Update secure access state of ACMP0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_ACMP0 0 + +// ACMP1 +// Update secure access state of ACMP1 before calling into bootloader +#define BOOTLOADER_PPUSATD1_ACMP1 0 + +// AMUXCP0 +// Update secure access state of AMUXCP0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_AMUXCP0 0 + +// VDAC0 +// Update secure access state of VDAC0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_VDAC0 0 + +// VDAC1 +// Update secure access state of VDAC1 before calling into bootloader +#define BOOTLOADER_PPUSATD1_VDAC1 0 + +// PCNT +// Update secure access state of PCNT before calling into bootloader +#define BOOTLOADER_PPUSATD1_PCNT 0 + +// HFRCO1 +// Update secure access state of HFRCO1 before calling into bootloader +#define BOOTLOADER_PPUSATD1_HFRCO1 0 + +// HFXO0 +// Update secure access state of HFXO0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_HFXO0 0 + +// I2C0 +// Update secure access state of I2C0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_I2C0 0 + +// WDOG0 +// Update secure access state of WDOG0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_WDOG0 0 + +// WDOG1 +// Update secure access state of WDOG1 before calling into bootloader +#define BOOTLOADER_PPUSATD1_WDOG1 0 + +// EUSART0 +// Update secure access state of EUSART0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_EUSART0 0 + +// SEMAILBOX +// Update secure access state of SEMAILBOX before calling into bootloader +#define BOOTLOADER_PPUSATD1_SEMAILBOX 0 + +// MVP +// Update secure access state of MVP before calling into bootloader +#define BOOTLOADER_PPUSATD1_MVP 0 + +// AHBRADIO +// Update secure access state of AHBRADIO before calling into bootloader +#define BOOTLOADER_PPUSATD1_AHBRADIO 0 +// + +// +// <<< end of configuration section >>> + +#if BOOTLOADER_MANUAL_OVERRIDE_SECURITY_STATE == 1 +#define BOOTLOADER_PPUSATD0_MASK ((BOOTLOADER_PPUSATD0_EMU << _SMU_PPUSATD0_EMU_SHIFT) \ + | (BOOTLOADER_PPUSATD0_CMU << _SMU_PPUSATD0_CMU_SHIFT) \ + | (BOOTLOADER_PPUSATD0_HFRCO0 << _SMU_PPUSATD0_HFRCO0_SHIFT) \ + | (BOOTLOADER_PPUSATD0_FSRCO << _SMU_PPUSATD0_FSRCO_SHIFT) \ + | (BOOTLOADER_PPUSATD0_DPLL0 << _SMU_PPUSATD0_DPLL0_SHIFT) \ + | (BOOTLOADER_PPUSATD0_LFXO << _SMU_PPUSATD0_LFXO_SHIFT) \ + | (BOOTLOADER_PPUSATD0_LFRCO << _SMU_PPUSATD0_LFRCO_SHIFT) \ + | (BOOTLOADER_PPUSATD0_ULFRCO << _SMU_PPUSATD0_ULFRCO_SHIFT) \ + | (BOOTLOADER_PPUSATD0_MSC << _SMU_PPUSATD0_MSC_SHIFT) \ + | (BOOTLOADER_PPUSATD0_ICACHE0 << _SMU_PPUSATD0_ICACHE0_SHIFT) \ + | (BOOTLOADER_PPUSATD0_PRS << _SMU_PPUSATD0_PRS_SHIFT) \ + | (BOOTLOADER_PPUSATD0_GPIO << _SMU_PPUSATD0_GPIO_SHIFT) \ + | (BOOTLOADER_PPUSATD0_LDMA << _SMU_PPUSATD0_LDMA_SHIFT) \ + | (BOOTLOADER_PPUSATD0_LDMAXBAR << _SMU_PPUSATD0_LDMAXBAR_SHIFT) \ + | (BOOTLOADER_PPUSATD0_TIMER0 << _SMU_PPUSATD0_TIMER0_SHIFT) \ + | (BOOTLOADER_PPUSATD0_TIMER1 << _SMU_PPUSATD0_TIMER1_SHIFT) \ + | (BOOTLOADER_PPUSATD0_TIMER2 << _SMU_PPUSATD0_TIMER2_SHIFT) \ + | (BOOTLOADER_PPUSATD0_TIMER3 << _SMU_PPUSATD0_TIMER3_SHIFT) \ + | (BOOTLOADER_PPUSATD0_TIMER4 << _SMU_PPUSATD0_TIMER4_SHIFT) \ + | (BOOTLOADER_PPUSATD0_USART0 << _SMU_PPUSATD0_USART0_SHIFT) \ + | (BOOTLOADER_PPUSATD0_BURTC << _SMU_PPUSATD0_BURTC_SHIFT) \ + | (BOOTLOADER_PPUSATD0_I2C1 << _SMU_PPUSATD0_I2C1_SHIFT) \ + | (BOOTLOADER_PPUSATD0_CHIPTESTCTRL << _SMU_PPUSATD0_CHIPTESTCTRL_SHIFT) \ + | (BOOTLOADER_PPUSATD0_SYSCFGCFGNS << _SMU_PPUSATD0_SYSCFGCFGNS_SHIFT) \ + | (BOOTLOADER_PPUSATD0_SYSCFG << _SMU_PPUSATD0_SYSCFG_SHIFT) \ + | (BOOTLOADER_PPUSATD0_BURAM << _SMU_PPUSATD0_BURAM_SHIFT) \ + | (BOOTLOADER_PPUSATD0_GPCRC << _SMU_PPUSATD0_GPCRC_SHIFT) \ + | (BOOTLOADER_PPUSATD0_DCDC << _SMU_PPUSATD0_DCDC_SHIFT) \ + | (BOOTLOADER_PPUSATD0_HOSTMAILBOX << _SMU_PPUSATD0_HOSTMAILBOX_SHIFT) \ + | (BOOTLOADER_PPUSATD0_EUSART1 << _SMU_PPUSATD0_EUSART1_SHIFT) \ + | (BOOTLOADER_PPUSATD0_SYSRTC << _SMU_PPUSATD0_SYSRTC_SHIFT)) +#define BOOTLOADER_PPUSATD1_MASK ((BOOTLOADER_PPUSATD1_KEYSCAN << _SMU_PPUSATD1_KEYSCAN_SHIFT) \ + | (BOOTLOADER_PPUSATD1_DMEM << _SMU_PPUSATD1_DMEM_SHIFT) \ + | (BOOTLOADER_PPUSATD1_RADIOAES << _SMU_PPUSATD1_RADIOAES_SHIFT) \ + | (BOOTLOADER_PPUSATD1_SMU << _SMU_PPUSATD1_SMU_SHIFT) \ + | (BOOTLOADER_PPUSATD1_SMUCFGNS << _SMU_PPUSATD1_SMUCFGNS_SHIFT) \ + | (BOOTLOADER_PPUSATD1_LETIMER0 << _SMU_PPUSATD1_LETIMER0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_IADC0 << _SMU_PPUSATD1_IADC0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_ACMP0 << _SMU_PPUSATD1_ACMP0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_ACMP1 << _SMU_PPUSATD1_ACMP1_SHIFT) \ + | (BOOTLOADER_PPUSATD1_AMUXCP0 << _SMU_PPUSATD1_AMUXCP0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_VDAC0 << _SMU_PPUSATD1_VDAC0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_VDAC1 << _SMU_PPUSATD1_VDAC1_SHIFT) \ + | (BOOTLOADER_PPUSATD1_PCNT << _SMU_PPUSATD1_PCNT_SHIFT) \ + | (BOOTLOADER_PPUSATD1_HFRCO1 << _SMU_PPUSATD1_HFRCO1_SHIFT) \ + | (BOOTLOADER_PPUSATD1_HFXO0 << _SMU_PPUSATD1_HFXO0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_I2C0 << _SMU_PPUSATD1_I2C0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_WDOG0 << _SMU_PPUSATD1_WDOG0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_WDOG1 << _SMU_PPUSATD1_WDOG1_SHIFT) \ + | (BOOTLOADER_PPUSATD1_EUSART0 << _SMU_PPUSATD1_EUSART0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_SEMAILBOX << _SMU_PPUSATD1_SEMAILBOX_SHIFT) \ + | (BOOTLOADER_PPUSATD1_MVP << _SMU_PPUSATD1_MVP_SHIFT) \ + | (BOOTLOADER_PPUSATD1_AHBRADIO << _SMU_PPUSATD1_AHBRADIO_SHIFT)) +#endif // BOOTLOADER_MANUAL_OVERRIDE_SECURITY_STATE + +#endif // BTL_INTERFACE_CFG_S2C4_H diff --git a/silabs_examples/credentials/device/brd4186a/config/emlib_core_debug_config.h b/silabs_examples/credentials/device/brd4186a/config/emlib_core_debug_config.h new file mode 100644 index 00000000000000..50dbbed9bc4f59 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/emlib_core_debug_config.h @@ -0,0 +1,46 @@ +/***************************************************************************//** + * @file + * @brief emlib_core Configuration + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef EM_CORE_DEBUG_CONFIG_H +#define EM_CORE_DEBUG_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Core Configuration + +// Enables measuring of interrupt disable time for debugging purposes. +// Default: 0 +// If Enabled, either cycle_counter or systemview component must be added to project. +#define SL_EMLIB_CORE_ENABLE_INTERRUPT_DISABLED_TIMING 0 + +// + +// <<< end of configuration section >>> +#endif // EM_CORE_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186a/config/legacy_common_ash_config.h b/silabs_examples/credentials/device/brd4186a/config/legacy_common_ash_config.h new file mode 100644 index 00000000000000..ce1ad5d7ad4eb4 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/legacy_common_ash_config.h @@ -0,0 +1,43 @@ +/***************************************************************************//** + * @file + * @brief Legacy Host ASH configuration file. + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef LEGACY_NCP_ASH_CONFIG_H +#define LEGACY_NCP_ASH_CONFIG_H + +// The USART used for ASH communications in COM_Port_t format, as defined in platform/service/legacy_hal/inc/serial.h (see defined names for USART ports) <-1..3:1> +// Default: (-1) +// The default value of -1 causes the ASH code to try to use the USART assigned to the "VCOM" instance of SL_IOSTREAM_USART. Otherwise the value is passed to Legacy HAL, which attempts to find an instance of SL_IOSTREAM_USART which uses that USART. +#define LEGACY_NCP_ASH_SERIAL_PORT (-1) + +#endif /* LEGACY_NCP_ASH_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186a/config/legacy_hal_config.h b/silabs_examples/credentials/device/brd4186a/config/legacy_hal_config.h new file mode 100644 index 00000000000000..e3386e94094dc0 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/legacy_hal_config.h @@ -0,0 +1,47 @@ +/***************************************************************************//** + * @file + * @brief Legacy HAL configuration file. + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef LEGACY_HAL_CONFIG_H +#define LEGACY_HAL_CONFIG_H + +// Translate button interrupt callback +// When the Simple Button component is included, it provides a callback for +// buttons configured in interrupt mode. When this option is 1, Legacy HAL +// will try to consume that callback and translate it to "halButtonIsr", +// the legacy callback. If anything else in the application consumes the +// Simple button callback, it will override Legacy HAL's version. +// Default: 1 +#define LEGACY_HAL_TRANSLATE_BUTTON_INTERRUPT (1) + +#endif /* LEGACY_HAL_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186a/config/mbedtls_config.h b/silabs_examples/credentials/device/brd4186a/config/mbedtls_config.h new file mode 100644 index 00000000000000..44ce8ed553755a --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/mbedtls_config.h @@ -0,0 +1,72 @@ +#ifndef MBEDTLS_CONFIG_H +#define MBEDTLS_CONFIG_H + +// Include the autogenerated mbedtls configuration file +#include "mbedtls_config_autogen.h" + +// <<< Use Configuration Wizard in Context Menu >>> +// TLS/DTLS configuration + +// Complete list of ciphersuites to use, in order of preference. +// Default: MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8 +// Complete list of ciphersuites to use, in order of preference. +// The value of this configuration should be updated for the application needs. +#define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8 + +// Maximum TLS/DTLS fragment length in bytes (input). +// Default: 768 +// The size configured here determines the size of the internal I/O +// buffer used in mbedTLS when receiving data. +#define SL_MBEDTLS_SSL_IN_CONTENT_LEN 768 + +// Maximum TLS/DTLS fragment length in bytes (output). +// Default: 768 +// The size configured here determines the size of the internal I/O +// buffer used in mbedTLS when sending data. +#define SL_MBEDTLS_SSL_OUT_CONTENT_LEN 768 + +// Enable support for RFC 6066 max_fragment_length extension in SSL. +// Default: 1 +// Enable support for RFC 6066 max_fragment_length extension in SSL. +#define SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH 1 + +// Enable support for exporting key block and master secret. +// Default: 1 +// Enable support for exporting key block and master secret. +// This is required for certain users of TLS, e.g. EAP-TLS. +#define SL_MBEDTLS_SSL_EXPORT_KEYS 1 + +// Enable the PSK based ciphersuite modes in SSL / TLS. +// Default: 0 +// Enable the PSK based ciphersuite modes in SSL / TLS. +#define SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED 0 + +// Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS. +// Default: 0 +// Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS. +#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED 0 + +// Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS. +// Default: 0 +// Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS. +#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED 0 + +// Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS. +// Default: 0 +// Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS. +#define SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED 0 + +// +// <<< end of configuration section >>> + +// Include transformation logic to apply CMSIS-config configuration options to +// the correct Mbed TLS / PSA Crypto options. +#include "sl_mbedtls_config_transform_autogen.h" + +// Custom defines can be placed here before check_config.h is included. + +#include "mbedtls/config_psa.h" + +#include "mbedtls/check_config.h" + +#endif diff --git a/silabs_examples/credentials/device/brd4186a/config/nvm3_default_config.h b/silabs_examples/credentials/device/brd4186a/config/nvm3_default_config.h new file mode 100644 index 00000000000000..5f12735813dc50 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/nvm3_default_config.h @@ -0,0 +1,45 @@ +#ifndef NVM3_DEFAULT_CONFIG_H +#define NVM3_DEFAULT_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// NVM3 Default Instance Configuration + +#ifndef NVM3_DEFAULT_CACHE_SIZE +// NVM3 Default Instance Cache Size +// Number of NVM3 objects to cache. To reduce access times this number +// should be equal to or higher than the number of NVM3 objects in the +// default NVM3 instance. +// Default: 200 +#define NVM3_DEFAULT_CACHE_SIZE 200 +#endif + +#ifndef NVM3_DEFAULT_MAX_OBJECT_SIZE +// NVM3 Default Instance Max Object Size +// Max NVM3 object size that can be stored. +// Default: 254 +#define NVM3_DEFAULT_MAX_OBJECT_SIZE 254 +#endif + +#ifndef NVM3_DEFAULT_REPACK_HEADROOM +// NVM3 Default Instance User Repack Headroom +// Headroom determining how many bytes below the forced repack limit the user +// repack limit should be placed. The default is 0, which means the user and +// forced repack limits are equal. +// Default: 0 +#define NVM3_DEFAULT_REPACK_HEADROOM 0 +#endif + +#ifndef NVM3_DEFAULT_NVM_SIZE +// NVM3 Default Instance Size +// Size of the NVM3 storage region in flash. This size should be aligned with +// the flash page size of the device. +// Default: 40960 +#define NVM3_DEFAULT_NVM_SIZE 32768 +#endif + +// + +// <<< end of configuration section >>> + +#endif // NVM3_DEFAULT_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186a/config/psa_crypto_config.h b/silabs_examples/credentials/device/brd4186a/config/psa_crypto_config.h new file mode 100644 index 00000000000000..557606d10b524d --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/psa_crypto_config.h @@ -0,0 +1,47 @@ +#ifndef PSA_CRYPTO_CONFIG_H +#define PSA_CRYPTO_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// PSA User Maximum Open Keys Count <0-128> +// Maximum amount of keys that the user application will have open +// simultaneously. In context of PSA Crypto, an open key means any key +// either stored in RAM (lifetime set to PSA_KEY_LIFETIME_VOLATILE), or +// used as part of a cryptographic operation. +// When using a key for a multi-part (setup/update/finish) operation, a key +// is considered to be open from the moment the operation is successfully +// setup, until it finishes or aborts. +// When an application tries to open more keys than this value accounts for, +// the PSA API may return PSA_ERROR_INSUFFICIENT_MEMORY. Keep in mind that +// other software included in the application (e.g. wireless protocol stacks) +// also can have a need to have open keys in PSA Crypto. This could lead to +// a race condition when the application key slot count is set too low for +// the actual usage of the application, as a software stack may not fail +// gracefully in case an application opens more than its declared amount of +// keys, thereby precluding the stack from functioning. +// Default: 4 +#define SL_PSA_KEY_USER_SLOT_COUNT (4) + +// PSA Maximum User Persistent Keys Count <0-1024> +// Maximum amount of keys (or other files) that can be stored persistently +// by the application through the PSA interface, when persistent storage +// support for PSA Crypto is included in the project. +// Due to caching logic, this setting does have an impact on static RAM usage. +// Note that this number is added to the potential requirements from other +// software components in the project, such that the total amount of keys +// which can be stored through the ITS backend can be higher than what is +// configured here. +// +// WARNING: When changing this setting on an application that is already +// deployed, and thus will get the change through an application upgrade, +// care should be taken to ensure that the setting is only ever increased, +// and never decreased. Decreasing this setting might cause previously +// stored keys/files to become inaccessible. +// Default: 128 +#define SL_PSA_ITS_USER_MAX_FILES (128) +// <<< end of configuration section >>> + +// Include the autogenerated PSA Crypto configuration file +#include "psa_crypto_config_autogen.h" + +#endif // PSA_CRYPTO_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_board_control_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_board_control_config.h new file mode 100644 index 00000000000000..63bf462277aad7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_board_control_config.h @@ -0,0 +1,76 @@ +/***************************************************************************//** + * @file + * @brief Board Control + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_BOARD_CONTROL_CONFIG_H +#define SL_BOARD_CONTROL_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Enable Virtual COM UART +// Default: 0 +#define SL_BOARD_ENABLE_VCOM 1 + +// Enable Display +// Default: 0 +#define SL_BOARD_ENABLE_DISPLAY 0 + +// Enable Relative Humidity and Temperature sensor +// Default: 0 +#define SL_BOARD_ENABLE_SENSOR_RHT 0 + +// Disable SPI Flash +// Default: 1 +#define SL_BOARD_DISABLE_MEMORY_SPI 1 + +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> + +// SL_BOARD_ENABLE_VCOM +// $[GPIO_SL_BOARD_ENABLE_VCOM] +#define SL_BOARD_ENABLE_VCOM_PORT gpioPortB +#define SL_BOARD_ENABLE_VCOM_PIN 0 +// [GPIO_SL_BOARD_ENABLE_VCOM]$ + +// SL_BOARD_ENABLE_DISPLAY +// $[GPIO_SL_BOARD_ENABLE_DISPLAY] +#define SL_BOARD_ENABLE_DISPLAY_PORT gpioPortC +#define SL_BOARD_ENABLE_DISPLAY_PIN 9 +// [GPIO_SL_BOARD_ENABLE_DISPLAY]$ + +// SL_BOARD_ENABLE_SENSOR_RHT +// $[GPIO_SL_BOARD_ENABLE_SENSOR_RHT] +#define SL_BOARD_ENABLE_SENSOR_RHT_PORT gpioPortD +#define SL_BOARD_ENABLE_SENSOR_RHT_PIN 3 +// [GPIO_SL_BOARD_ENABLE_SENSOR_RHT]$ + +// <<< sl:end pin_tool >>> + +#endif // SL_BOARD_CONTROL_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_custom_manufacturing_token_header.h b/silabs_examples/credentials/device/brd4186a/config/sl_custom_manufacturing_token_header.h new file mode 100644 index 00000000000000..08b66580998c71 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_custom_manufacturing_token_header.h @@ -0,0 +1,84 @@ +/***************************************************************************//** + * @file + * @brief Custom manufacturing token header + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +/***************************************************************************//** + * Custom Manufacturing Token Usage Examples + * + * The macro DEFINE_MFG_TOKEN() should be used when instantiating a + * manufacturing token. Refer to the list of *_LOCATION defines to + * see what memory is allocated and what memory is unused/available. + * + * The _LOCATION is or'ed with either USERDATA_TOKENS or LOCKBITSDATA_TOKENS + * to control which segment of memory the token is placed in. + * + * REMEMBER: By definition, manufacturing tokens exist at fixed addresses. + * Tokens should not overlap. + * + * Here is a basic example of a manufacturing token header file: + * + * Note that the address used here is just an example. It places the 8 bytes + * in the middle of the USERDATA space on an EFR32MG12P433F1024GM68. + * To review addresses of existing tokens when choosing a new address, refer + * to an961-custom-nodes-efr32.pdf and the files + * platform/service/token_manager/inc/sl_token_manufacturing_series_1.h + * platform/service/token_manager/inc/sl_token_manufacturing_series_2.h + * + * @code + * #define CREATOR_MFG_EXAMPLE 0x4242 + * #ifdef DEFINETYPES + * typedef uint8_t tokTypeMfgExample[8]; + * #endif + * #ifdef DEFINETOKENS + * #define MFG_EXAMPLE_LOCATION (USERDATA_TOKENS | 0x2000) + * DEFINE_MFG_TOKEN(MFG_EXAMPLE, + * tokTypeMfgExample, + * MFG_EXAMPLE_LOCATION, + * {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}) + * #endif + * @endcode + * + * Since this file contains both the typedefs and the token defs, there are + * two \#defines used to select which one is needed when this file is included. + * \#define DEFINETYPES is used to select the type definitions and + * \#define DEFINETOKENS is used to select the token definitions. + * + * To use this example: + * Ensure the Token Manager's configuration in Studio + * has enabled Custom Manufacuturing Tokens. + * + * Ensure your application has: + * #include "sl_token_api.h" + * #include "sl_token_manager.h" + * + * This code will read the token data: + * uint8_t data[8]; + * sl_token_get_data(TOKEN_MFG_EXAMPLE, 0, &data, sizeof(data)); + ******************************************************************************/ + +/* + #define CREATOR_MFG_EXAMPLE 0x4242 + #ifdef DEFINETYPES + typedef uint8_t tokTypeMfgExample[8]; + #endif + #ifdef DEFINETOKENS + #define MFG_EXAMPLE_LOCATION (USERDATA_TOKENS | 0x2000) + DEFINE_MFG_TOKEN(MFG_EXAMPLE, + tokTypeMfgExample, + MFG_EXAMPLE_LOCATION, + {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}) + #endif + */ diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_custom_token_header.h b/silabs_examples/credentials/device/brd4186a/config/sl_custom_token_header.h new file mode 100644 index 00000000000000..abfe057a05ee5b --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_custom_token_header.h @@ -0,0 +1,86 @@ +/***************************************************************************//** + * @file + * @brief Custom token header + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +/***************************************************************************//** + * Custom Tokens Usage Examples + * + * #define BASICTOKEN1_DEFAULT 0xA5F0 + * #define BASICTOKEN2_DEFAULT { { 0xAA, 0xBB, 0xCC }, 0xDDDD } + * #define BASICTOKEN3_DEFAULT { { 0 } } + * #define COUNTERTOKEN1_DEFAULT 0 + * #define COUNTERTOKEN2_DEFAULT 0xCCCCCCCC + * #define INDEXEDTOKEN1_DEFAULT 0 + * #define INDEXEDTOKEN2_DEFAULT { 0xDDDD } + * #define INDEXEDTOKEN3_DEFAULT { 0xAA, 0xBBBB, { 0x00, 0x11, 0x22 }, 0xCC } + * + * #ifdef DEFINETYPES + * typedef uint16_t tokTypeBasicToken1; + * typedef struct { + * uint8_t basicToken2Array[3]; + * uint16_t basicToken2VarA; + * } tokTypeBasicToken2; + * + * typedef struct { + * uint8_t basicToken3Array[254]; + * } tokTypeBasicToken3; + * + * typedef uint32_t tokTypeCounterToken1; + * typedef uint32_t tokTypeCounterToken2; + * + * typedef uint8_t tokTypeIndexedToken1Element; + * typedef uint16_t tokTypeIndexedToken2Element; + * + * typedef struct { + * uint8_t indexedToken3VarA; + * uint16_t indexedToken3VarB; + * uint8_t indexedToken3Array[3]; + * int8_t indexedToken3VarC; + * } tokTypeIndexedToken3Element; + * + * #endif + * + * #ifdef DEFINETOKENS + * DEFINE_BASIC_TOKEN(BASICTOKEN1, + * tokTypeBasicToken1, + * BASICTOKEN1_DEFAULT) + * DEFINE_BASIC_TOKEN(BASICTOKEN2, + * tokTypeBasicToken2, + * BASICTOKEN2_DEFAULT) + * DEFINE_BASIC_TOKEN(BASICTOKEN3, + * tokTypeBasicToken3, + * BASICTOKEN3_DEFAULT) + * DEFINE_COUNTER_TOKEN(COUNTERTOKEN1, + * tokTypeCounterToken1, + * COUNTERTOKEN1_DEFAULT) + * DEFINE_COUNTER_TOKEN(COUNTERTOKEN2, + * tokTypeCounterToken2, + * COUNTERTOKEN2_DEFAULT) + * DEFINE_INDEXED_TOKEN(INDEXEDTOKEN1, + * tokTypeIndexedToken1Element, + * INDEXEDTOKEN1_ELEMENTS, + * INDEXEDTOKEN1_DEFAULT) + * DEFINE_INDEXED_TOKEN(INDEXEDTOKEN2, + * tokTypeIndexedToken2Element, + * INDEXEDTOKEN2_ELEMENTS, + * INDEXEDTOKEN2_DEFAULT) + * DEFINE_INDEXED_TOKEN(INDEXEDTOKEN3, + * tokTypeIndexedToken3Element, + * INDEXEDTOKEN3_ELEMENTS, + * INDEXEDTOKEN3_DEFAULT) + * #endif + * + ******************************************************************************/ diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_debug_swo_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_debug_swo_config.h new file mode 100644 index 00000000000000..34761be5087c82 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_debug_swo_config.h @@ -0,0 +1,99 @@ +/***************************************************************************//** + * @file + * @brief SWO configuration + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEBUG_SWO_CONFIG_H +#define SL_DEBUG_SWO_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// SWO Configuration + +// SWO Frequency +// Must be 875 kHz for communication with Silicon Labs debuggers +// Default: 875000 +#define SL_DEBUG_SWO_FREQ 875000 + +// Enable interrupt event trace +// Default: 0 +#define SL_DEBUG_SWO_SAMPLE_IRQ 0 + +// Enable Program Counter samples +// Default: 0 +#define SL_DEBUG_SWO_SAMPLE_PC 0 + +// SWO debug sample intervals +// <64=> 64 +// <128=> 128 +// <192=> 192 +// <256=> 256 +// <320=> 320 +// <384=> 384 +// <448=> 448 +// <512=> 512 +// <576=> 576 +// <640=> 640 +// <704=> 704 +// <768=> 768 +// <832=> 832 +// <896=> 896 +// <960=> 960 +// <1024=> 1024 +// <2048=> 2048 +// <3072=> 3072 +// <4096=> 4096 +// <5102=> 5102 +// <6144=> 6144 +// <7168=> 7168 +// <8192=> 8192 +// <9216=> 9216 +// <10240=> 10240 +// <11264=> 11264 +// <12288=> 12288 +// <13312=> 13312 +// <14336=> 14336 +// <15360=> 15360 +// Must be 64, 128, 192, [ n * 64 ], 1024, 2048, 3072, [ n * 1024 ] , 15360 +// Default: 15360 +#define SL_DEBUG_SWO_SAMPLE_INTERVAL 15360 +// + +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> +// SL_DEBUG +// $[GPIO_SL_DEBUG] +#define SL_DEBUG_PERIPHERAL GPIO + +#define SL_DEBUG_SWV_PORT gpioPortA +#define SL_DEBUG_SWV_PIN 3 +// [GPIO_SL_DEBUG]$ +// <<< sl:end pin_tool >>> + +#endif // SL_DEBUG_SWO_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_device_init_dcdc_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_device_init_dcdc_config.h new file mode 100644 index 00000000000000..4fb88397d2e8d7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_device_init_dcdc_config.h @@ -0,0 +1,58 @@ +/***************************************************************************//** + * @file + * @brief DEVICE_INIT_DCDC Config + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEVICE_INIT_DCDC_CONFIG_H +#define SL_DEVICE_INIT_DCDC_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Enable DC/DC Converter +// +// Default: 1 +#define SL_DEVICE_INIT_DCDC_ENABLE 1 + +// Set DC/DC Converter in Bypass Mode +// +// Default: 0 +#define SL_DEVICE_INIT_DCDC_BYPASS 0 + +// Override for DCDC PFMX Mode Peak Current Setting +// +// Default: 1 +#define SL_DEVICE_INIT_DCDC_PFMX_IPKVAL_OVERRIDE 1 + +// DCDC PFMX Mode Peak Current Setting <0-15> +// +// Default: DCDC_PFMXCTRL_IPKVAL_DEFAULT +#define SL_DEVICE_INIT_DCDC_PFMX_IPKVAL 12 + +// <<< end of configuration section >>> + +#endif // SL_DEVICE_INIT_DCDC_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_device_init_emu_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_device_init_emu_config.h new file mode 100644 index 00000000000000..4ac96bac233c3a --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_device_init_emu_config.h @@ -0,0 +1,53 @@ +/***************************************************************************//** + * @file + * @brief DEVICE_INIT_EMU Config + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEVICE_INIT_EMU_CONFIG_H +#define SL_DEVICE_INIT_EMU_CONFIG_H + +#include "em_emu.h" + +// <<< Use Configuration Wizard in Context Menu >>> + +// Allow debugger to remain connected in EM2 +// Force PD0B to stay on on EM2 entry. This allows the debugger to remain connected in EM2 and EM3. +// Enabling debug connectivity results in an increased power consumption in EM2/EM3. +// Default: 1 +#define SL_DEVICE_INIT_EMU_EM2_DEBUG_ENABLE 1 + +// EM4 pin retention mode +// No Retention: Pads enter reset state when entering EM4. +// Retention through EM4: Pads enter reset state when exiting EM4. +// Retention through EM4 and wakeup. +// Default: emuPinRetentionDisable +#define SL_DEVICE_INIT_EMU_EM4_PIN_RETENTION_MODE emuPinRetentionDisable + +// <<< end of configuration section >>> + +#endif // SL_DEVICE_INIT_EMU_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_device_init_hfxo_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_device_init_hfxo_config.h new file mode 100644 index 00000000000000..9e7d255d06ada8 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_device_init_hfxo_config.h @@ -0,0 +1,53 @@ +/***************************************************************************//** + * @file + * @brief DEVICE_INIT_HFXO Config + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEVICE_INIT_HFXO_CONFIG_H +#define SL_DEVICE_INIT_HFXO_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Mode +// +// Crystal oscillator +// External sine wave +// Default: cmuHfxoOscMode_Crystal +#define SL_DEVICE_INIT_HFXO_MODE cmuHfxoOscMode_Crystal + +// Frequency <38000000-40000000> +// Default: 39000000 +#define SL_DEVICE_INIT_HFXO_FREQ 39000000 + +// CTUNE <0-255> +// Default: 140 +#define SL_DEVICE_INIT_HFXO_CTUNE 87 + +// <<< end of configuration section >>> + +#endif // SL_DEVICE_INIT_HFXO_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_device_init_lfxo_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_device_init_lfxo_config.h new file mode 100644 index 00000000000000..5d2cee4142978a --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_device_init_lfxo_config.h @@ -0,0 +1,66 @@ +/***************************************************************************//** + * @file + * @brief DEVICE_INIT_LFXO Config + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEVICE_INIT_LFXO_CONFIG_H +#define SL_DEVICE_INIT_LFXO_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Mode +// +// Crystal oscillator +// AC-coupled buffer +// External digital clock +// Default: cmuLfxoOscMode_Crystal +#define SL_DEVICE_INIT_LFXO_MODE cmuLfxoOscMode_Crystal + +// CTUNE <0-127> +// Default: 63 +#define SL_DEVICE_INIT_LFXO_CTUNE 36 + +// LFXO precision in PPM <0-65535> +// Default: 500 +#define SL_DEVICE_INIT_LFXO_PRECISION 100 + +// Startup Timeout Delay +// +// 2 cycles +// 256 cycles +// 1K cycles +// 2K cycles +// 4K cycles +// 8K cycles +// 16K cycles +// 32K cycles +// Default: cmuLfxoStartupDelay_4KCycles +#define SL_DEVICE_INIT_LFXO_TIMEOUT cmuLfxoStartupDelay_4KCycles +// <<< end of configuration section >>> + +#endif // SL_DEVICE_INIT_LFXO_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_hfxo_manager_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_hfxo_manager_config.h new file mode 100644 index 00000000000000..240f890da2a7dc --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_hfxo_manager_config.h @@ -0,0 +1,56 @@ +/***************************************************************************//** + * @file + * @brief HFXO Manager configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_HFXO_MANAGER_CONFIG_H +#define SL_HFXO_MANAGER_CONFIG_H + +// Power Manager Configuration + +// Enable custom IRQ handler for crystal HF oscillator. +// Enable if HFXO0_IRQHandler is needed from your application. +// The HFXO IRQ priority must not be changed as the HFXO Manager module needs it to be high priority +// and to stay enabled through atomic sections. +// The function sl_hfxo_manager_irq_handler() will have to be called from you custom handler if this is enabled. +// Default: 0 +#define SL_HFXO_MANAGER_CUSTOM_HFXO_IRQ_HANDLER 0 + +// Enable support for Sleepy Crystals. +// If Enabled and if HFXO fails to startup due to a sleepy crystal, HFXO Manager will retry the startup with more aggressive settings +// before falling back to the configured settings. +// Default: 0 +#define SL_HFXO_MANAGER_SLEEPY_CRYSTAL_SUPPORT 0 + +// + +#endif /* SL_HFXO_MANAGER_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_iostream_usart_vcom_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_iostream_usart_vcom_config.h new file mode 100644 index 00000000000000..34f54ceb3f55e5 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_iostream_usart_vcom_config.h @@ -0,0 +1,109 @@ +/***************************************************************************//** + * @file + * @brief IOSTREAM_USART Config. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_IOSTREAM_USART_VCOM_CONFIG_H +#define SL_IOSTREAM_USART_VCOM_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// USART settings + +// Baud rate +// Default: 115200 +#define SL_IOSTREAM_USART_VCOM_BAUDRATE 115200 + +// Parity mode to use +// No Parity +// Even parity +// Odd parity +// Default: usartNoParity +#define SL_IOSTREAM_USART_VCOM_PARITY usartNoParity + +// Number of stop bits to use. +// 0.5 stop bits +// 1 stop bits +// 1.5 stop bits +// 2 stop bits +// Default: usartStopbits1 +#define SL_IOSTREAM_USART_VCOM_STOP_BITS usartStopbits1 + +// Flow control +// None +// CTS +// RTS +// CTS/RTS +// Software Flow control (XON/XOFF) +// Default: usartHwFlowControlNone +#define SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE usartHwFlowControlCtsAndRts + +// Receive buffer size +// Default: 32 +#define SL_IOSTREAM_USART_VCOM_RX_BUFFER_SIZE 32 + +// Convert \n to \r\n +// It can be changed at runtime using the C API. +// Default: 0 +#define SL_IOSTREAM_USART_VCOM_CONVERT_BY_DEFAULT_LF_TO_CRLF 0 + +// Restrict the energy mode to allow the reception. +// Default: 1 +// Limits the lowest energy mode the system can sleep to in order to keep the reception on. May cause higher power consumption. +#define SL_IOSTREAM_USART_VCOM_RESTRICT_ENERGY_MODE_TO_ALLOW_RECEPTION 1 + +// + +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> +// SL_IOSTREAM_USART_VCOM +// $[USART_SL_IOSTREAM_USART_VCOM] +#define SL_IOSTREAM_USART_VCOM_PERIPHERAL USART0 +#define SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO 0 + +// USART0 TX on PA08 +#define SL_IOSTREAM_USART_VCOM_TX_PORT gpioPortA +#define SL_IOSTREAM_USART_VCOM_TX_PIN 8 + +// USART0 RX on PA09 +#define SL_IOSTREAM_USART_VCOM_RX_PORT gpioPortA +#define SL_IOSTREAM_USART_VCOM_RX_PIN 9 + +// USART0 CTS on PB05 +#define SL_IOSTREAM_USART_VCOM_CTS_PORT gpioPortB +#define SL_IOSTREAM_USART_VCOM_CTS_PIN 5 + +// USART0 RTS on PA00 +#define SL_IOSTREAM_USART_VCOM_RTS_PORT gpioPortA +#define SL_IOSTREAM_USART_VCOM_RTS_PIN 0 + +// [USART_SL_IOSTREAM_USART_VCOM]$ +// <<< sl:end pin_tool >>> + +#endif diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_iostream_vuart_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_iostream_vuart_config.h new file mode 100644 index 00000000000000..82889008b77e1b --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_iostream_vuart_config.h @@ -0,0 +1,42 @@ +/***************************************************************************//** + * @file + * @brief SL_IOSTREAM_VUART Config. + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ +#ifndef SL_IOSTREAM_VUART_CONFIG_H +#define SL_IOSTREAM_VUART_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// VUART settings +// Receive buffer size +// Default: 32 +#define SL_IOSTREAM_VUART_RX_BUFFER_SIZE 32 + +// +// <<< end of configuration section >>> +#endif diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_legacy_hal_wdog_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_legacy_hal_wdog_config.h new file mode 100644 index 00000000000000..83b67575534e1f --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_legacy_hal_wdog_config.h @@ -0,0 +1,53 @@ +/***************************************************************************//** + * @file sl_legacy_hal_wdog_config.h + * @brief Legacy HAL watchdog configuration file. + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_LEGACY_HAL_WDOG_CONFIG_H +#define SL_LEGACY_HAL_WDOG_CONFIG_H + +// Legacy HAL WDOG Configurations + +// Disable calling halInternalEnableWatchDog in base-replacement.c's halInit(). +// Default: 0 +#define SL_LEGACY_HAL_DISABLE_WATCHDOG 0 +// + +// WDOG to use for SL_LEGACY_HAL_WDOGn. +// Default: 0 +// <0=> WDOG0 +// <1=> WDOD1 +#define SL_LEGACY_HAL_WDOGn 0 + +// + +#endif /* SL_LEGACY_HAL_WDOG_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_memory_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_memory_config.h new file mode 100644 index 00000000000000..b43ebcba024b94 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_memory_config.h @@ -0,0 +1,28 @@ +#ifndef SL_MEMORY_CONFIG_H +#define SL_MEMORY_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> +// Memory configuration + +// Stack size for the application. +// Default: 4096 +// The stack size configured here will be used by the stack that the +// application uses when coming out of a reset. +#ifndef SL_STACK_SIZE + #define SL_STACK_SIZE 4096 +#endif + +// Minimum heap size for the application. +// Default: 2048 +// Note that this value will configure the c heap which is normally used by +// malloc() and free() from the c library. The value defines a minimum heap +// size that is guaranteed to be available. The available heap may be larger +// to make use of any memory that would otherwise remain unused. +#ifndef SL_HEAP_SIZE + #define SL_HEAP_SIZE 2048 +#endif + +// +// <<< end of configuration section >>> + +#endif diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_mx25_flash_shutdown_eusart_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_mx25_flash_shutdown_eusart_config.h new file mode 100644 index 00000000000000..cdb0809710416c --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_mx25_flash_shutdown_eusart_config.h @@ -0,0 +1,51 @@ +/***************************************************************************//** + * @file + * @brief SL_MX25_FLASH_SHUTDOWN_USART Config + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_MX25_FLASH_SHUTDOWN_CONFIG_H +#define SL_MX25_FLASH_SHUTDOWN_CONFIG_H + +// <<< sl:start pin_tool >>> +// {eusart signal=TX,RX,SCLK} SL_MX25_FLASH_SHUTDOWN +// [EUSART_SL_MX25_FLASH_SHUTDOWN] +#define SL_MX25_FLASH_SHUTDOWN_PERIPHERAL EUSART1 +#define SL_MX25_FLASH_SHUTDOWN_PERIPHERAL_NO 1 + +// EUSART1 TX on PC01 +#define SL_MX25_FLASH_SHUTDOWN_TX_PORT gpioPortC +#define SL_MX25_FLASH_SHUTDOWN_TX_PIN 1 + +// EUSART1 RX on PC02 +#define SL_MX25_FLASH_SHUTDOWN_RX_PORT gpioPortC +#define SL_MX25_FLASH_SHUTDOWN_RX_PIN 2 + +// EUSART1 SCLK on PC03 +#define SL_MX25_FLASH_SHUTDOWN_SCLK_PORT gpioPortC +#define SL_MX25_FLASH_SHUTDOWN_SCLK_PIN 3 + +// [EUSART_SL_MX25_FLASH_SHUTDOWN] + +// SL_MX25_FLASH_SHUTDOWN_CS + +// $[GPIO_SL_MX25_FLASH_SHUTDOWN_CS] +#define SL_MX25_FLASH_SHUTDOWN_CS_PORT gpioPortC +#define SL_MX25_FLASH_SHUTDOWN_CS_PIN 4 + +// [GPIO_SL_MX25_FLASH_SHUTDOWN_CS]$ + +// <<< sl:end pin_tool >>> + +#endif // SL_MX25_FLASH_SHUTDOWN_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_power_manager_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_power_manager_config.h new file mode 100644 index 00000000000000..fa5c557a4f85fc --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_power_manager_config.h @@ -0,0 +1,71 @@ +/***************************************************************************//** + * @file + * @brief Power Manager configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_POWER_MANAGER_CONFIG_H +#define SL_POWER_MANAGER_CONFIG_H + +// Power Manager Configuration + +// Enable custom IRQ handler for external HF oscillator. +// Enable if CMU_IRQHandler/HFXO0_IRQHandler is needed from your application. +// The function sl_power_manager_irq_handler() will have to be called from you custom handler if this is enabled. +// Default: 0 +#define SL_POWER_MANAGER_CUSTOM_HF_OSCILLATOR_IRQ_HANDLER 0 + +// Lowest Energy mode allowed +// <1=> EM1 +// <2=> EM2 +// <3=> EM3 +// Default: 2 +#define SL_POWER_MANAGER_LOWEST_EM_ALLOWED 2 + +// Enable fast wakeup (disable voltage scaling in EM2/3 mode) +// Enable or disable voltage scaling in EM2/3 modes (when available). This decreases wakeup time by about 30 us. +// Deprecated. It is replaced by the function sl_power_manager_em23_voltage_scaling_enable_fast_wakeup() +// Default: 0 +#define SL_POWER_MANAGER_CONFIG_VOLTAGE_SCALING_FAST_WAKEUP 0 + +// Enable debugging feature +// Enable or disable debugging features (trace the different modules that have requirements). +// Default: 0 +#define SL_POWER_MANAGER_DEBUG 0 + +// Maximum numbers of requirements that can be logged +// Default: 10 +#define SL_POWER_MANAGER_DEBUG_POOL_SIZE 10 +// + +// + +#endif /* SL_POWER_MANAGER_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_rail_util_pa_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_rail_util_pa_config.h new file mode 100644 index 00000000000000..9dcab3f9667d89 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_rail_util_pa_config.h @@ -0,0 +1,81 @@ +/***************************************************************************//** + * @file + * @brief Power Amplifier configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_RAIL_UTIL_PA_CONFIG_H +#define SL_RAIL_UTIL_PA_CONFIG_H + +#include "rail_types.h" + +// <<< Use Configuration Wizard in Context Menu >>> +// PA configuration + +// Initial PA Power (deci-dBm, 100 = 10.0 dBm) +// Default: 100 +#define SL_RAIL_UTIL_PA_POWER_DECI_DBM 100 + +// PA Ramp Time (microseconds) +// <0-65535:1> +// Default: 10 +#define SL_RAIL_UTIL_PA_RAMP_TIME_US 10 + +// Milli-volts on PA supply pin (PA_VDD) +// <0-65535:1> +// Default: 3300 +#define SL_RAIL_UTIL_PA_VOLTAGE_MV 1800 + +// 2.4 GHz PA Selection +// Highest Possible +// High Power (chip-specific) +// Low Power +// Disable +// Default: RAIL_TX_POWER_MODE_2P4GIG_HIGHEST +#define SL_RAIL_UTIL_PA_SELECTION_2P4GHZ RAIL_TX_POWER_MODE_2P4GIG_HIGHEST + +// Sub-1 GHz PA Selection +// Disable +// Default: RAIL_TX_POWER_MODE_NONE +#define SL_RAIL_UTIL_PA_SELECTION_SUBGHZ RAIL_TX_POWER_MODE_NONE + +// Header file containing custom PA curves +// Default: "pa_curves_efr32.h" +#define SL_RAIL_UTIL_PA_CURVE_HEADER "pa_curves_efr32.h" + +// Header file containing PA curve types +// Default: "pa_curve_types_efr32.h" +#define SL_RAIL_UTIL_PA_CURVE_TYPES "pa_curve_types_efr32.h" + +// Enable PA Calibration +// Default: 0 +#define SL_RAIL_UTIL_PA_CALIBRATION_ENABLE 0 + +// +// <<< end of configuration section >>> + +#endif // SL_RAIL_UTIL_PA_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_rail_util_pti_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_rail_util_pti_config.h new file mode 100644 index 00000000000000..5165fc4204f699 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_rail_util_pti_config.h @@ -0,0 +1,73 @@ +/***************************************************************************//** + * @file + * @brief Packet Trace Information configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_RAIL_UTIL_PTI_CONFIG_H +#define SL_RAIL_UTIL_PTI_CONFIG_H + +#include "rail_types.h" + +// <<< Use Configuration Wizard in Context Menu >>> +// PTI Configuration + +// PTI mode +// UART +// UART onewire +// SPI +// Disabled +// Default: RAIL_PTI_MODE_UART +#define SL_RAIL_UTIL_PTI_MODE RAIL_PTI_MODE_UART + +// PTI Baud Rate (Hertz) +// <147800-20000000:1> +// Default: 1600000 +#define SL_RAIL_UTIL_PTI_BAUD_RATE_HZ 1600000 + +// +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> +// SL_RAIL_UTIL_PTI +// $[PTI_SL_RAIL_UTIL_PTI] +#define SL_RAIL_UTIL_PTI_PERIPHERAL PTI + +// PTI DOUT on PD04 +#define SL_RAIL_UTIL_PTI_DOUT_PORT gpioPortD +#define SL_RAIL_UTIL_PTI_DOUT_PIN 4 + +// PTI DFRAME on PD05 +#define SL_RAIL_UTIL_PTI_DFRAME_PORT gpioPortD +#define SL_RAIL_UTIL_PTI_DFRAME_PIN 5 + + +// [PTI_SL_RAIL_UTIL_PTI]$ + +// <<< sl:end pin_tool >>> + +#endif // SL_RAIL_UTIL_PTI_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_simple_led_led0_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_simple_led_led0_config.h new file mode 100644 index 00000000000000..09ba3c48b4becc --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_simple_led_led0_config.h @@ -0,0 +1,44 @@ +/***************************************************************************//** + * @file + * @brief Simple Led Driver Configuration + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_SIMPLE_LED_LED0_CONFIG_H +#define SL_SIMPLE_LED_LED0_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Simple LED configuration +// +// Active low +// Active high +// Default: SL_SIMPLE_LED_POLARITY_ACTIVE_HIGH +#define SL_SIMPLE_LED_LED0_POLARITY SL_SIMPLE_LED_POLARITY_ACTIVE_HIGH +// end led configuration + +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> + +// SL_SIMPLE_LED_LED0 +// $[GPIO_SL_SIMPLE_LED_LED0] +#define SL_SIMPLE_LED_LED0_PORT gpioPortB +#define SL_SIMPLE_LED_LED0_PIN 2 + +// [GPIO_SL_SIMPLE_LED_LED0]$ + +// <<< sl:end pin_tool >>> + +#endif // SL_SIMPLE_LED_LED0_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_sleeptimer_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_sleeptimer_config.h new file mode 100644 index 00000000000000..846d37d60828b7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_sleeptimer_config.h @@ -0,0 +1,72 @@ +/***************************************************************************//** + * @file + * @brief Sleep Timer configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_SLEEPTIMER_CONFIG_H +#define SL_SLEEPTIMER_CONFIG_H + +#define SL_SLEEPTIMER_PERIPHERAL_DEFAULT 0 +#define SL_SLEEPTIMER_PERIPHERAL_RTCC 1 +#define SL_SLEEPTIMER_PERIPHERAL_PRORTC 2 +#define SL_SLEEPTIMER_PERIPHERAL_RTC 3 +#define SL_SLEEPTIMER_PERIPHERAL_SYSRTC 4 +#define SL_SLEEPTIMER_PERIPHERAL_BURTC 5 + +// Timer Peripheral Used by Sleeptimer +// Default (auto select) +// RTCC +// Radio internal RTC (PRORTC) +// RTC +// SYSRTC +// Back-Up RTC (BURTC) +// Selection of the Timer Peripheral Used by the Sleeptimer +#define SL_SLEEPTIMER_PERIPHERAL SL_SLEEPTIMER_PERIPHERAL_DEFAULT + +// Enable wallclock functionality +// Enable or disable wallclock functionalities (get_time, get_date, etc). +// Default: 0 +#define SL_SLEEPTIMER_WALLCLOCK_CONFIG 0 + +// Timer frequency divider +// Default: 1 +#define SL_SLEEPTIMER_FREQ_DIVIDER 1 + +// If Radio internal RTC (PRORTC) HAL is used, determines if it owns the IRQ handler. Enable, if no wireless stack is used. +// Default: 0 +#define SL_SLEEPTIMER_PRORTC_HAL_OWNS_IRQ_HANDLER 0 + +// Enable DEBUGRUN functionality on hardware RTC. +// Default: 0 +#define SL_SLEEPTIMER_DEBUGRUN 0 + +#endif /* SLEEPTIMER_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_token_manager_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_token_manager_config.h new file mode 100644 index 00000000000000..d99e78e083594e --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_token_manager_config.h @@ -0,0 +1,54 @@ +/***************************************************************************//** + * @file + * @brief Token Manager Configurations + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_TOKEN_MANAGER_CONFIG_H +#define SL_TOKEN_MANAGER_CONFIG_H + +// TOKEN MANAGER Configurations + +// Enable Custom Tokens +// Default: 0 +#define SL_TOKEN_MANAGER_CUSTOM_TOKENS_PRESENT 0 + +// File containing custom tokens +// Default: "sl_custom_token_header.h" +// Header file containing custom tokens located at project_root/config +#define SL_TOKEN_MANAGER_CUSTOM_TOKEN_HEADER "sl_custom_token_header.h" + +// + +// Enable Custom Manufacturing Tokens +// Default: 0 +#define SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKENS_PRESENT 0 + +// File containing custom manufacturing tokens +// Default: "sl_custom_manufacturing_token_header.h" +// Header file containing custom tokens located at project_root/config +#define SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKEN_HEADER "sl_custom_manufacturing_token_header.h" + +// +// + +#if (SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKENS_PRESENT) +#define APPLICATION_MFG_TOKEN_HEADER SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKEN_HEADER +#endif // SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKENS_PRESENT + +#endif // SL_TOKEN_MANAGER_CONFIG_H + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_zigbee_binding_table_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_zigbee_binding_table_config.h new file mode 100644 index 00000000000000..ef4b92fbc30681 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_zigbee_binding_table_config.h @@ -0,0 +1,28 @@ +/***************************************************************************//** + * @brief Zigbee Binding Table component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Binding Table configuration + +// Binding Table Size <1-127> +// Default: 3 +// The number of entries that the binding table can hold. +#define EMBER_BINDING_TABLE_SIZE 32 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_zigbee_debug_print_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_zigbee_debug_print_config.h new file mode 100644 index 00000000000000..9c901f40481767 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_zigbee_debug_print_config.h @@ -0,0 +1,74 @@ +/***************************************************************************//** + * @brief ZigBee Debug Print component configuration header. + * + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// ZigBee Debug Print configuration + +// Stack group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "stack" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_STACK_GROUP_ENABLED (1) + +// Stack group runtime default +// Default: 1 +// If this option is enabled, prints belonging to the "stack" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_STACK_GROUP_RUNTIME_DEFAULT (1) + +// Core group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "core" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_CORE_GROUP_ENABLED (1) + +// Core group runtime default +// Default: 1 +// If this option is enabled, prints belonging to the "core" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_CORE_GROUP_RUNTIME_DEFAULT (1) + +// App group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "app" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_APP_GROUP_ENABLED (1) + +// App group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "app" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_APP_GROUP_RUNTIME_DEFAULT (1) + +// ZCL group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "zcl" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_ZCL_GROUP_ENABLED (1) + +// ZCL group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "zcl" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_ZCL_GROUP_RUNTIME_DEFAULT (1) + +// Legacy App Framework Debug group enabled +// Default: 0 +// If both this option and ZIGBEE_DEBUG_ZCL_GROUP_ENABLED are enabled, prints belonging to the "legacy app framework debug" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_PRINTS_ZCL_LEGACY_AF_DEBUG_ENABLED (0) + +// Legacy App Framework Debug runtime default +// Default: 0 +// If both this option and ZIGBEE_DEBUG_ZCL_GROUP_ENABLED are enabled, prints belonging to the "legacy app framework debug" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_PRINTS_ZCL_LEGACY_AF_DEBUG_RUNTIME_DEFAULT (0) + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_zigbee_green_power_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_zigbee_green_power_config.h new file mode 100644 index 00000000000000..75a81eec322a24 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_zigbee_green_power_config.h @@ -0,0 +1,63 @@ +/***************************************************************************//** + * @brief Zigbee Green Power component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Green Power Library configuration + +// Green Power Proxy Table Size <1-126> +// Default: 5 +// The maximum number of Green Power proxy table entries supported by the stack. +#define EMBER_GP_PROXY_TABLE_SIZE 5 + +// Green Power Proxy Table Token Size <1-126> +// Default: 5 +// The maximum number of pairings stored in proxy table non-volatile memory,between 0 and EMBER_GP_PROXY_TABLE_SIZE. +#define EMBER_GP_PROXY_TABLE_TOKEN_SIZE 5 + +// Green Power Sink Table Size <0-126> +// Default: 0 +// The maximum number of Green Power sink table entries supported by the stack. +#define EMBER_GP_SINK_TABLE_SIZE 0 + +// Green Power Sink Table Token Size <0-126> +// Default: 0 +// The maximum number of pairings stored in sink table non-volatile memory,between 0 and EMBER_GP_SINK_TABLE_SIZE. +#define EMBER_GP_SINK_TABLE_TOKEN_SIZE 0 + +// Green Power incoming FC (as part of proxy table) Token timeout <0-60> +// Default: 0 +// The timeout (seconds) to restore the GPD incoming security frame counter in the Flash (0 being never). +#define EMBER_GP_INCOMING_FC_TOKEN_TIMEOUT 7 + +// Green Power incoming FC (as part of proxy table) table token table size <0-126> +// Default: 0 +// The maximum table size to restore the GPD incoming security frame counter in the Flash (being either 0 or EMBER_GP_PROXY_TABLE_SIZE). +#define EMBER_GP_INCOMING_FC_TOKEN_TABLE_SIZE 0 + +// Green Power incoming FC (as part of sink table) token table token timeout <0-60> +// Default: 0 +// The timeout (seconds) to restore the GPD incoming security frame counter in the Flash (0 being never). +#define EMBER_GP_INCOMING_FC_IN_SINK_TOKEN_TIMEOUT 7 + +// Green Power incoming FC (as part of sink table)Token table size <0-126> +// Default: 0 +// The maximum table size to restore the GPD incoming security frame counter in the Flash (being either 0 or EMBER_GP_SINK_TABLE_SIZE). +#define EMBER_GP_INCOMING_FC_IN_SINK_TOKEN_TABLE_SIZE 0 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_zigbee_pro_stack_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_zigbee_pro_stack_config.h new file mode 100644 index 00000000000000..e035ce1f9c9388 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_zigbee_pro_stack_config.h @@ -0,0 +1,89 @@ +/***************************************************************************//** + * @brief ZigBee PRO Full Stack component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee PRO Stack Library configuration + +// Child Table Size <0-64> +// Default: 6 +// The maximum number of ZigBee PRO End Devices that can be supported by a single device. +#define EMBER_MAX_END_DEVICE_CHILDREN 32 + +// Packet Buffer Count <20-254> +// Default: 75 +// The maximum number of packet buffers supported by the system. This is limited by the amount of available RAM. +#define EMBER_PACKET_BUFFER_COUNT 75 + +// End Device keep alive support mode +// End Device keep alive support mode +// MAC Data Poll Keep Alive +// End Device Timeout Keep Alive +// Keep Alive Support All +// Default: EMBER_KEEP_ALIVE_SUPPORT_ALL +// End Device keep alive support mode on the coordinator/router could be set here. +#define EMBER_END_DEVICE_KEEP_ALIVE_SUPPORT_MODE EMBER_KEEP_ALIVE_SUPPORT_ALL + +// End Device Poll Timeout Value +// End Device Poll Timeout Value +// Seconds-10 +// Minutes-2 +// Minutes-4 +// Minutes-8 +// Minutes-16 +// Minutes-32 +// Minutes-64 +// Minutes-128 +// Minutes-256 +// Minutes-512 +// Minutes-1024 +// Minutes-2048 +// Minutes-4096 +// Minutes-8192 +// Minutes-16384 +// Default: MINUTES_256 +// The amount of time that must pass without hearing a MAC data poll from the device before the end device is removed from the child table. For a router device this applies to its children. For an end device, this is the amount of time before it automatically times itself out. +#define EMBER_END_DEVICE_POLL_TIMEOUT MINUTES_256 + +// Link Power Delta Request Interval <1-65535> +// Default: 300 +// The amount of time in seconds that pass between link power delta requests. +#define EMBER_LINK_POWER_DELTA_INTERVAL 300 + +// APS Unicast Message Queue Size <1-255> +// Default: 10 +// The maximum number of APS unicast messages that can be queued up by the stack. A message is considered queued when emberSendUnicast() is called and is de-queued when the emberMessageSentHandler() is called. +#define EMBER_APS_UNICAST_MESSAGE_COUNT 10 + +// Broadcast Table Size <15-254> +// Default: 15 +// The size of the broadcast table. +#define EMBER_BROADCAST_TABLE_SIZE 15 + +// Neighbor Table Size +// Neighbor Table Size +// <16=> 16 +// <26=> 26 +// Default: 16 +// The size of the neighbor table. +#define EMBER_NEIGHBOR_TABLE_SIZE 16 + +// Transient key timeout (in seconds) <0-65535> +// Default: 300 +// The amount of time a device will store a transient link key that can be used to join a network. +#define EMBER_TRANSIENT_KEY_TIMEOUT_S 300 +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_zigbee_security_link_keys_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_zigbee_security_link_keys_config.h new file mode 100644 index 00000000000000..9a0c84883944c6 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_zigbee_security_link_keys_config.h @@ -0,0 +1,33 @@ +/***************************************************************************//** + * @brief Zigbee Security Link Keys component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Security Link Keys Library configuration + +// Link Key Table Size <1-127> +// Default: 6 +// The maximum number of link key table entries supported by the stack. +#define EMBER_KEY_TABLE_SIZE 12 + +// Request Key Timeout <0-10> +// Default: 0 +// The length of time that a node will wait for a trust center to answer its Application Link Key request. +#define EMBER_REQUEST_KEY_TIMEOUT 0 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186a/config/sl_zigbee_source_route_config.h b/silabs_examples/credentials/device/brd4186a/config/sl_zigbee_source_route_config.h new file mode 100644 index 00000000000000..41b5e4bb2155ef --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/sl_zigbee_source_route_config.h @@ -0,0 +1,33 @@ +/***************************************************************************//** + * @brief Zigbee Source Route component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Source Route Library configuration + +// Source route table Size (SoC or NCP) <2-255> +// Default: 7 +// The size of the source route table for storing source routes on the SOC or NCP. +#define EMBER_SOURCE_ROUTE_TABLE_SIZE 7 + +// Max source route relay counts <11-40> +// Default: 11 +// Max source route hops accepted or/and inserted in the source route table/header. +#define EMBER_MAX_SOURCE_ROUTE_RELAY_COUNT 11 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186a/config/zigbee_sleep_config.h b/silabs_examples/credentials/device/brd4186a/config/zigbee_sleep_config.h new file mode 100644 index 00000000000000..fa4efd14070497 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/config/zigbee_sleep_config.h @@ -0,0 +1,42 @@ +/***************************************************************************//** + * @brief Zigbee Application Framework common component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Sleep configuration + +// Minimum Sleep Duration <5-1000> +// Default: 5 +// The minimum duration in milliseconds that the application will attempt to sleep for. If the sleep duration would be less than this amount, the application will not sleep. +#define SL_ZIGBEE_APP_FRAMEWORK_MINIMUM_SLEEP_DURATION_MS 5 + +// Sleep Backoff time <0-10000> +// Default: 0 +// This setting will keep a device from going back to sleep immediately upon waking up +#define SL_ZIGBEE_APP_FRAMEWORK_BACKOFF_SLEEP_MS 0 + +// Stay awake when NOT joined +// Default: TRUE +// This will force a device to stay awake even when not joined to the network. This is often used for debugging and is not recommended for production devices since it cause the device to consume battery power even when not joined to a ZigBee network. +#define SL_ZIGBEE_APP_FRAMEWORK_STAY_AWAKE_WHEN_NOT_JOINED 1 + +// Use button to force wakeup or allow sleep +// Default: FALSE +// This will setup the hardware buttons to wake-up or allow the device to go to sleep. Button 0 will force the device to wake up and stay awake. Button 1 will turn off this behavior to allow the device to sleep normally. Please note that in order for this option to be fully functional, button 0 and button 1 have to be configured to wake the device from sleep. +#define SL_ZIGBEE_APP_FRAMEWORK_USE_BUTTON_TO_STAY_AWAKE 0 +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186a/device-creds.Makefile b/silabs_examples/credentials/device/brd4186a/device-creds.Makefile new file mode 100644 index 00000000000000..ea4140191048d6 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/device-creds.Makefile @@ -0,0 +1,190 @@ +#################################################################### +# User Makefile # +# This will not be overwritten. Edit as desired. # +#################################################################### +.SUFFIXES: # ignore builtin rules +.PHONY: all debug release clean + +# Default goal +all: debug + +#################################################################### +# Definitions # +#################################################################### + +# Values set by the initial generation +PROJECTNAME = device-creds +ARM_GCC_DIR_WIN = +ARM_GCC_DIR_OSX = +ARM_GCC_DIR_LINUX = + +# Pre-defined definitions in this file +ifeq ($(OS),Windows_NT) + ARM_GCC_DIR ?= $(ARM_GCC_DIR_WIN) +else + UNAME_S := $(shell uname -s) + ifeq ($(UNAME_S),Darwin) + ARM_GCC_DIR ?= $(ARM_GCC_DIR_OSX) + else + ARM_GCC_DIR ?= $(ARM_GCC_DIR_LINUX) + endif +endif + +# Command output is hidden by default, it can be enabled by +# setting VERBOSE=true on the commandline. +ifeq ($(VERBOSE),) + ECHO = @ +endif + +# Build Directories +BUILD_DIR = build +LST_DIR = lst + +ifneq ($(filter $(MAKECMDGOALS),release),) + OUTPUT_DIR = $(BUILD_DIR)/release +else + OUTPUT_DIR = $(BUILD_DIR)/debug +endif + +# Values that should be appended by the sub-makefiles +C_SOURCE_FILES = +CXX_SOURCE_FILES = +ASM_SOURCE_FILES = + +LIBS = + +C_DEFS = +ASM_DEFS = + +INCLUDES = + +C_FLAGS = +C_FLAGS_DEBUG = +C_FLAGS_RELEASE = +CXX_FLAGS = +CXX_FLAGS_DEBUG = +CXX_FLAGS_RELEASE = +ASM_FLAGS = +ASM_FLAGS_DEBUG = +ASM_FLAGS_RELEASE = +LD_FLAGS = + +OBJS = + +#################################################################### +# Definitions of toolchain. # +# You might need to do changes to match your system setup # +#################################################################### + +AR = "$(ARM_GCC_DIR)/bin/arm-none-eabi-gcc-ar" +CC = "$(ARM_GCC_DIR)/bin/arm-none-eabi-gcc" +CXX = "$(ARM_GCC_DIR)/bin/arm-none-eabi-g++" +OBJCOPY = "$(ARM_GCC_DIR)/bin/arm-none-eabi-objcopy" +LD = "$(ARM_GCC_DIR)/bin/arm-none-eabi-gcc" + +#################################################################### +# Include sub-makefiles # +# Define a makefile here to add files/settings to the build. # +#################################################################### +-include device-creds.project.mak + + +#################################################################### +# Rules # +#################################################################### + +# -MMD : Don't generate dependencies on system header files. +# -MP : Add phony targets, useful when a h-file is removed from a project. +# -MF : Specify a file to write the dependencies to. +DEPFLAGS = -MMD -MP -MF $(@:.o=.d) + +CSOURCES = $(notdir $(C_SOURCE_FILES)) +CXXSOURCES = $(notdir $(filter %.cpp, $(CXX_SOURCE_FILES))) +CCSOURCES = $(notdir $(filter %.cc, $(CXX_SOURCE_FILES))) +ASMSOURCES_s = $(notdir $(filter %.s, $(ASM_SOURCE_FILES))) +ASMSOURCES_S = $(notdir $(filter %.S, $(ASM_SOURCE_FILES))) + +COBJS = $(addprefix $(OUTPUT_DIR)/,$(CSOURCES:.c=.o)) +CXXOBJS = $(addprefix $(OUTPUT_DIR)/,$(CXXSOURCES:.cpp=.o)) +CCOBJS = $(addprefix $(OUTPUT_DIR)/,$(CCSOURCES:.cc=.o)) +ASMOBJS_s = $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_s:.s=.o)) +ASMOBJS_S = $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_S:.S=.o)) +OBJS += $(COBJS) $(CXXOBJS) $(CCOBJS) $(ASMOBJS_s) $(ASMOBJS_S) + +CDEPS += $(addprefix $(OUTPUT_DIR)/,$(CSOURCES:.c=.d)) +CXXDEPS += $(addprefix $(OUTPUT_DIR)/,$(CXXSOURCES:.cpp=.d)) +CXXDEPS += $(addprefix $(OUTPUT_DIR)/,$(CCSOURCES:.cc=.d)) +ASMDEPS_s += $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_s:.s=.d)) +ASMDEPS_S += $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_S:.S=.d)) + +C_PATHS = $(subst \,/,$(sort $(dir $(C_SOURCE_FILES)))) +CXX_PATHS = $(subst \,/,$(sort $(dir $(CXX_SOURCE_FILES)))) +ASM_PATHS = $(subst \,/,$(sort $(dir $(ASM_SOURCE_FILES)))) + +vpath %.c $(C_PATHS) +vpath %.cpp $(CXX_PATHS) +vpath %.cc $(CXX_PATHS) +vpath %.s $(ASM_PATHS) +vpath %.S $(ASM_PATHS) + +override CFLAGS = $(C_FLAGS) $(C_DEFS) $(INCLUDES) $(DEPFLAGS) +override CXXFLAGS = $(CXX_FLAGS) $(C_DEFS) $(INCLUDES) $(DEPFLAGS) +override ASMFLAGS = $(ASM_FLAGS) $(ASM_DEFS) $(INCLUDES) $(DEPFLAGS) + +# Rule Definitions +debug: C_FLAGS += $(C_FLAGS_DEBUG) +debug: CXX_FLAGS += $(CXX_FLAGS_DEBUG) +debug: ASM_FLAGS += $(ASM_FLAGS_DEBUG) +debug: $(OUTPUT_DIR)/$(PROJECTNAME).out + +release: C_FLAGS += $(C_FLAGS_RELEASE) +release: CXX_FLAGS += $(CXX_FLAGS_RELEASE) +release: ASM_FLAGS += $(ASM_FLAGS_RELEASE) +release: $(OUTPUT_DIR)/$(PROJECTNAME).out + +# include auto-generated dependency files (explicit rules) +ifneq (clean,$(findstring clean, $(MAKECMDGOALS))) +-include $(CDEPS) +-include $(CXXDEPS) +-include $(ASMDEPS_s) +-include $(ASMDEPS_S) +endif + +$(OUTPUT_DIR)/$(PROJECTNAME).out: $(OBJS) $(LIB_FILES) + @echo 'Linking $(OUTPUT_DIR)/$(PROJECTNAME).out' + @echo $(OBJS) > $(OUTPUT_DIR)/linker_objs + $(ECHO)$(LD) $(LD_FLAGS) @$(OUTPUT_DIR)/linker_objs $(LIBS) -o $(OUTPUT_DIR)/$(PROJECTNAME).out + $(ECHO)$(OBJCOPY) $(OUTPUT_DIR)/$(PROJECTNAME).out -O binary $(OUTPUT_DIR)/$(PROJECTNAME).bin + $(ECHO)$(OBJCOPY) $(OUTPUT_DIR)/$(PROJECTNAME).out -O ihex $(OUTPUT_DIR)/$(PROJECTNAME).hex + $(ECHO)$(OBJCOPY) $(OUTPUT_DIR)/$(PROJECTNAME).out -O srec $(OUTPUT_DIR)/$(PROJECTNAME).s37 + @echo 'Done.' + +$(OBJS): + +$(OUTPUT_DIR)/%.o: %.c + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.cpp + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CXX) $(CXXFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.cc + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CXX) $(CXXFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.s + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.S + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $< + +clean: + $(RM) -rf $(BUILD_DIR) diff --git a/silabs_examples/credentials/device/brd4186a/device-creds.emProject b/silabs_examples/credentials/device/brd4186a/device-creds.emProject new file mode 100644 index 00000000000000..fcbdb487ca7fad --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/device-creds.emProject @@ -0,0 +1,1181 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/silabs_examples/credentials/device/brd4186a/device-creds.ewd b/silabs_examples/credentials/device/brd4186a/device-creds.ewd new file mode 100644 index 00000000000000..c3c30071df9809 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/device-creds.ewd @@ -0,0 +1,1476 @@ + + + 3 + + Default + + ARM + + 1 + + C-SPY + 2 + + 30 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 5 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/silabs_examples/credentials/device/brd4186a/device-creds.ewp b/silabs_examples/credentials/device/brd4186a/device-creds.ewp new file mode 100644 index 00000000000000..67eb940c60149b --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/device-creds.ewp @@ -0,0 +1,1249 @@ + + + + 3 + + Default + + ARM + + 1 + + General + 3 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 21 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + $PROJ_DIR$\device-creds.ipcf + + \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4186a/device-creds.eww b/silabs_examples/credentials/device/brd4186a/device-creds.eww new file mode 100644 index 00000000000000..57aaa4ba1bfcbb --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/device-creds.eww @@ -0,0 +1,8 @@ + + + + + $WS_DIR$\device-creds.ewp + + + diff --git a/silabs_examples/credentials/device/brd4186a/device-creds.ipcf b/silabs_examples/credentials/device/brd4186a/device-creds.ipcf new file mode 100644 index 00000000000000..a05dc0f4772893 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/device-creds.ipcf @@ -0,0 +1,1147 @@ + + + + + config\sl_memory_config.h + config\psa_crypto_config.h + config\sl_mx25_flash_shutdown_eusart_config.h + config\sl_device_init_dcdc_config.h + config\sl_legacy_hal_wdog_config.h + config\sl_hfxo_manager_config.h + config\sl_zigbee_debug_print_config.h + config\sl_sleeptimer_config.h + config\sl_power_manager_config.h + config\sl_device_init_lfxo_config.h + config\sl_rail_util_pti_config.h + config\nvm3_default_config.h + config\zigbee_sleep_config.h + config\app_properties_config.h + config\sl_device_init_emu_config.h + config\emlib_core_debug_config.h + config\legacy_common_ash_config.h + config\SEGGER_RTT_Conf.h + config\sl_zigbee_security_link_keys_config.h + config\sl_zigbee_binding_table_config.h + config\sl_board_control_config.h + config\sl_debug_swo_config.h + config\sl_zigbee_pro_stack_config.h + config\sl_token_manager_config.h + config\sl_custom_token_header.h + config\sl_custom_manufacturing_token_header.h + config\sl_zigbee_green_power_config.h + config\sl_simple_led_led0_config.h + config\sl_iostream_usart_vcom_config.h + config\sl_zigbee_source_route_config.h + config\legacy_hal_config.h + config\sl_device_init_hfxo_config.h + config\sl_rail_util_pa_config.h + config\btl_interface_cfg.h + config\btl_interface_cfg_s2c4.h + config\mbedtls_config.h + config\sl_iostream_vuart_config.h + + + autogen\sl_board_default_init.c + autogen\sl_application_type.h + autogen\RTE_Components.h + autogen\sl_component_catalog.h + autogen\sl_device_init_clocks.c + autogen\sl_event_handler.h + autogen\sl_event_handler.c + autogen\sl_iostream_handles.h + autogen\sl_iostream_handles.c + autogen\sl_iostream_init_instances.h + autogen\sl_iostream_init_usart_instances.c + autogen\sl_iostream_init_usart_instances.h + autogen\sl_legacy_bootloader_device_info.h + autogen\mbedtls_config_autogen.h + autogen\sl_mbedtls_config_transform_autogen.h + autogen\sl_power_manager_handler.c + autogen\psa_crypto_config_autogen.h + autogen\sl_rail_util_ieee802154_phy_select.c + autogen\sl_rail_util_ieee802154_stack_event.c + autogen\sl_simple_led_instances.c + autogen\sl_simple_led_instances.h + autogen\linkerfile_base.icf + autogen\zigbee_stack_callback_dispatcher.h + autogen\zigbee_stack_callback_dispatcher.c + autogen\zigbee_common_callback_dispatcher.h + autogen\zigbee_common_callback_dispatcher.c + autogen\zigbee_ncp_callback_dispatcher.h + autogen\zigbee_ncp_callback_dispatcher.c + autogen\zigbee_af_token_headers.h + autogen\.crc_config.crc + + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Source\system_efr32mg24.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Source\startup_efr32mg24.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24a010f1536gm48.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_acmp.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_aes.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_amuxcp.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_buram.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_burtc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_cmu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_dcdc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_devinfo.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_dma_descriptor.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_dpll.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_emu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_eusart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_fsrco.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_gpcrc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_gpio.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_gpio_port.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_hfrco.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_hfxo.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_i2c.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_iadc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_icache.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_keyscan.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_ldma.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_ldmaxbar.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_ldmaxbar_defines.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_letimer.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_lfrco.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_lfxo.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_mailbox.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_mpahbram.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_msc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_mvp.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_pcnt.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_prs.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_prs_signals.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_scratchpad.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_semailbox.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_smu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_syscfg.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_sysrtc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_timer.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_ulfrco.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_usart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_vdac.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_wdog.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\em_device.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\system_efr32mg24.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_atomic.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_endianness.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_enum.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_assert.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_slist.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_status.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\src\sl_assert.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\src\sl_slist.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\toolchain\src\sl_memory.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\toolchain\inc\sl_memory_region.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\toolchain\inc\sl_memory.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\app_properties\app_properties.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface_storage.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\application_properties.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_errorcode.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface_parser.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface_storage.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_reset_info.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\cmsis_compiler.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\cmsis_version.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\tz_context.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\cmsis_iccarm.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\core_cm33.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\mpu_armv8.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\debug\src\sl_debug_swo.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\debug\inc\sl_debug_swo.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\leddrv\src\sl_led.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\leddrv\src\sl_simple_led.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\leddrv\inc\sl_led.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\leddrv\inc\sl_simple_led.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_clocks.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_dcdc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_emu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_hfxo.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_lfxo.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_nvic.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_dcdc_s2.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_emu_s2.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_hfxo_s2.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_lfxo_s2.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_nvic.c + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\hfxo_manager\src\sl_hfxo_manager.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\hfxo_manager\src\sl_hfxo_manager_hal_s2.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\hfxo_manager\src\sli_hfxo_manager_internal.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\hfxo_manager\inc\sl_hfxo_manager.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\hfxo_manager\inc\sli_hfxo_manager.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_debug.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_swo_itm_8.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_retarget_stdio.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_uart.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_usart.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_vuart.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sli_iostream_swo_itm_8.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_swo_itm_8.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_uart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sli_iostream_uart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_usart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_vuart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_swo.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\bootloader-interface.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\bootloader-interface-app.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\bootloader-interface-standalone.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\bootloader-common.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\crc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\base-replacement.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\diagnostic.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\ember-phy.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\faults.s + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\random.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\token_legacy.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\serial\serial.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\cortexm3\diagnostic.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\hal\hal.h + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-interface.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-interface-app.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-interface-standalone.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-eeprom.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\asm.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\button.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\crc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\efm32_micro.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\em2xx-reset-defs.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\emlib_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\hal.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\interrupts-efm32.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\led.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\micro-common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\micro-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\micro.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\platform-header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\random.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\reset-def.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\serial.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\token-manufacturing-series-1.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\token-manufacturing-series-2.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\token-manufacturing.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\sl_legacy_hal_integration_hooks.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_common_ash\src\ash-common.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_common_ash\inc\ash-common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_common_ash\inc\ash-protocol.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal_wdog\src\sl_legacy_hal_wdog.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal_wdog\inc\sl_legacy_hal_wdog.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_ncp_ash\src\ash-ncp.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_ncp_ash\inc\ash-ncp.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_printf\src\sl_legacy_printf.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_printf\inc\sl_legacy_printf.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\src\sl_power_manager.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\src\sl_power_manager_debug.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\src\sl_power_manager_hal_s2.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\src\sli_power_manager_private.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\inc\sl_power_manager.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\inc\sl_power_manager_debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\inc\sli_power_manager.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\system\src\sl_system_init.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\system\src\sl_system_process_action.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\system\inc\sl_system_init.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\system\inc\sl_system_process_action.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\src\sl_sleeptimer.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\src\sl_sleeptimer_hal_sysrtc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\src\sl_sleeptimer_hal_burtc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\src\sli_sleeptimer_hal.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\inc\sl_sleeptimer.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\inc\sli_sleeptimer.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\src\sl_token_def.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\src\sl_token_manager.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\src\sl_token_manufacturing.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_api.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manager.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manager_af_token_header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manufacturing.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manufacturing_api.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manufacturing_series_1.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manufacturing_series_2.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\udelay\src\sl_udelay.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\udelay\src\sl_udelay_armv6m_iar.s + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\udelay\inc\sl_udelay.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\common\inc\ecode.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\src\nvm3_default_common_linker.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\src\nvm3_hal_flash.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\src\nvm3_lock.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3_default.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3_hal.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3_hal_flash.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3_lock.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\lib\libnvm3_CM33_iar.a + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_burtc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_cmu.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_core.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_emu.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_eusart.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_gpio.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_msc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_prs.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_rmu.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_se.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_system.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_usart.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_wdog.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_burtc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_chip.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_cmu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_cmu_compat.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_assert.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_bus.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_ramfunc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_version.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_core.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_emu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_eusart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_eusart_compat.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_gpio.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_msc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_msc_compat.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_prs.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_rmu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_se.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_syscfg.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_system.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_usart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_wdog.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\peripheral\src\peripheral_sysrtc.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\peripheral\inc\peripheral_sysrtc.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail_mfm.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail_assert_error_codes.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail_types.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail_features.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\protocol\ble\rail_ble.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\protocol\ieee802154\rail_ieee802154.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\protocol\zwave\rail_zwave.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\chip\efr32\efr32xg2x\rail_chip_specific.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\autogen\librail_release\librail_efr32xg24_iar_release.a + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_ieee802154\sl_rail_util_ieee802154_stack_event.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_ieee802154\sl_rail_util_ieee802154_phy_select.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\efr32xg24\sl_rail_util_pa_curves_10dbm.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\efr32xg24\sl_rail_util_pa_curves_20dbm.h + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_conversions_efr32.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_curves_efr32.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_conversions_efr32.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_curve_types_efr32.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_curves_efr32.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_pti\sl_rail_util_pti.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_pti\sl_rail_util_pti.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_ant_div\sl_rail_util_ant_div.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_ant_div\sl_rail_util_ant_div.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\coexistence\protocol\ieee802154_uc\coexistence-802154.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\coexistence\protocol\ieee802154_uc\coexistence-802154.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\coexistence\common\coexistence.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\rail_mux\sl_rail_mux_rename.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\rail_mux\sl_rail_mux.h + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\indirect-queue.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\lower-mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\lower-mac-debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-child.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-command.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-flat-header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-packet-header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-phy.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\multi-mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-multi-network.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\scan.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\upper-mac.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\board\src\sl_board_init.c + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\board\src\sl_board_control_gpio.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\board\inc\sl_board_control.h + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\board\inc\sl_board_init.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\driver\configuration_over_swo\src\sl_cos.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\driver\configuration_over_swo\inc\sl_cos.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\driver\mx25_flash_shutdown\src\sl_mx25_flash_shutdown_eusart\sl_mx25_flash_shutdown.c + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\driver\mx25_flash_shutdown\inc\sl_mx25_flash_shutdown_eusart\sl_mx25_flash_shutdown.h + + + + + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\aes.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\padlock.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\asn1parse.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\asn1write.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\base64.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\cipher_wrap.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\cipher_wrap.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecp.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecp_curves.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecdh.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecdsa.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecp_internal_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\md.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\md_wrap.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\bignum.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\bn_mul.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pem.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pk.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pkparse.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pkwrite.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pk_wrap.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\entropy.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\entropy_poll.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ctr_drbg.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\hmac_drbg.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\entropy_poll.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\sha1.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\sha256.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\sha512.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\constant_time.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\threading.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\platform.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\platform_util.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\check_crypto_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\common.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\constant_time_internal.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\constant_time_invasive.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecdh_misc.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecp_invasive.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\mps_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\mps_error.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\mps_reader.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\mps_trace.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pk_wrap.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\rsa_alt_helpers.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ssl_debug_helpers_generated.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ssl_misc.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ssl_tls13_keys.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\oid.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509_create.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509_crl.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509_crt.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509_csr.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509write_crt.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509write_csr.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\des.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_client.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_aead.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_driver_wrappers.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_slot_management.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_storage.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_ecp.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_hash.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_mac.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_rsa.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_se.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_aead.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_cipher.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_core.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_driver_wrappers.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_ecp.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_hash.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_invasive.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_its.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_random_impl.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_rsa.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_se.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_slot_management.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_storage.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\aes.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\asn1.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\asn1write.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\base64.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\camellia.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\cipher.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ecp.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ecdh.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ecdsa.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\md.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\md5.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ripemd160.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\sha1.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\sha256.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\sha512.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\bignum.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\pem.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\des.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\entropy.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ctr_drbg.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\hmac_drbg.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\aria.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\build_info.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ccm.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\chacha20.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\chachapoly.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\check_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\cmac.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\compat-2.x.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\config_psa.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\constant_time.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\dhm.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ecjpake.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\error.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\gcm.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\hkdf.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\mbedtls_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\memory_buffer_alloc.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\net_sockets.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\nist_kw.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\oid.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\pk.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\pkcs12.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\pkcs5.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\platform.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\platform_time.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\platform_util.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\poly1305.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\private_access.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\psa_util.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\rsa.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl_cache.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl_ciphersuites.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl_cookie.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl_ticket.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\threading.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\timing.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\version.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\x509.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\x509_crl.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\x509_crt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\x509_csr.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_builtin_composites.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_builtin_primitives.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_compat.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_driver_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_driver_contexts_composites.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_driver_contexts_primitives.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_extra.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_platform.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_se_driver.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_sizes.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_struct.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_types.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_values.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\config\config-device-acceleration.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\config\config-sl-crypto-all-acceleration.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\sl_entropy_hardware.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\sl_mbedtls.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\se_aes.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\mbedtls_ecdsa_ecdh.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\mbedtls_sha.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\aes_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\ccm_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\cmac_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\se_management.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\sha1_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\sha256_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\sha512_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\sl_mbedtls.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\threading_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\gcm_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\ecjpake_alt.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_psa_trng.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_psa_driver_init.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_psa_driver_common.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_version_dependencies.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_driver_builtin_keys.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_driver_key_management.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_driver_key_derivation.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_driver_aead.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_driver_mac.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_driver_signature.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_driver_cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_transparent_driver_cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_transparent_driver_hash.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_transparent_driver_aead.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_transparent_driver_mac.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_transparent_key_derivation.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_opaque_driver_mac.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_opaque_key_derivation.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_opaque_driver_cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_opaque_driver_aead.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sl_psa_its_nvm3.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\public\sl_psa_values.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\psa\internal_trusted_storage.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\psa\error.h + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_psa_driver_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_version_dependencies.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_driver_aead.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_driver_cipher.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_driver_key_derivation.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_driver_key_management.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_driver_mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_opaque_functions.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_opaque_types.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_transparent_functions.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_transparent_types.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_util.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_entropy.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_hash.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_key_derivation.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_key_handling.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_signature.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_attestation.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sli_se_manager_osal.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sli_se_manager_osal_baremetal.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_defines.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_types.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_util.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_internal_keys.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sli_se_manager_internal.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_check_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_cipher.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_entropy.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_hash.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_key_derivation.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_key_handling.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_signature.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_attestation.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\printf\src\iostream_printf.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\printf\inc\iostream_printf.h + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\printf\printf.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\printf\printf.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\segger\systemview\SEGGER\SEGGER_RTT.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\segger\systemview\SEGGER\SEGGER.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\segger\systemview\SEGGER\SEGGER_RTT.h + + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\memory_manager\sl_malloc.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\memory_manager\sl_malloc.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\buffer_manager\legacy-packet-buffer.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\buffer_manager\buffer-queue.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\buffer_manager\buffer-management.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\event_queue\event-queue.h + + + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\aes-ecb.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\ccm-star.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\zigbee_debug_channel.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\zigbee-debug-extended.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\zigbee-event-logger-stub-gen.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\strong-random-api.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\platform\micro\aes.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\security.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\binding-table.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ccm-star.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\gp-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\source-route.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\zll-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-types-internal.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\error-def.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\error.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\child.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-alternate-mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-duty-cycle.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-static-struct.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\message.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\multi-network.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\multi-phy.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\network-formation.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\stack-info.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\trust-center.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\zigbee-device-stack.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\raw-message.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\aes-mmo.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\byte-utilities.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-random-api.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\library.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\mac-layer.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\bootload.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\cbke-crypto-engine.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\zigbee-event-logger-gen.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\mfglib.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\zll-api.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\gp\gp-token-config.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\gp\gp-proxy-table.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\gp\gp-sink-table.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\ember-configuration.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\config.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\token-stack.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\token-phy.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\ember-configuration-defaults.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-163k1-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-283k1-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-dsa-verify-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-dsa-sign-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-dsa-verify-283k1-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\install-code-stub.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\ember-multi-network-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\multi-pan-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\multi-pan-common.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\ember-multi-network.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\multi-pan-token-config.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\multi-pan.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\zll\zll-stubs.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\zll\zll-token-config.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\zigbee\source-route-table-update.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\mac\multi-mac.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_common.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_stack_cb.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_sleep.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_event.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_callback.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_ncp_framework_cb.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\plugin\debug-print\sl_zigbee_debug_print.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\plugin\debug-print\sl_zigbee_debug_print.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\util\af-ncp-token.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\security\security-address-cache.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\security\security.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\secure-ezsp-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\ezsp-protocol.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\secure-ezsp-protocol.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\secure-ezsp-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\ezsp-enum.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\ezsp-frame-utilities.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-binding-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-binding.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-green-power-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\em260-common.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\serial-interface-uart.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\ncp-stack-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-secure-ezsp-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-context.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\serial-interface.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\em260-callbacks.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-cbke.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-mfglib.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-messaging-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-networking-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-security-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-trust-center-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-zll.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-security.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-zigbee-pro.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\xncp\xncp.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\xncp\xncp_cb.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\xncp\xncp-token.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\xncp\xncp-sample-custom-ezsp-protocol.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\ncp\plugin\xncp\xncp.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\binding-table-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\binding-table-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\ncp-binding-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\ncp-binding-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\debug-basic-library-cortexm3-iar-efr32mg24-rail\debug-basic-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\debug-extended-library-cortexm3-iar-efr32mg24-rail\debug-extended-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\end-device-bind-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\end-device-bind-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\gp-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\gp-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\ncp-gp-library-cortexm3-iar-efr32mg24-rail\ncp-gp-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\em260-uart-util-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\em260-uart-util-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\packet-validate-library-cortexm3-iar-efr32mg24-rail\packet-validate-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\zigbee-pro-stack-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\zigbee-pro-stack.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\ncp-pro-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\ncp-pro-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\zigbee-r22-support-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\zigbee-r22-support-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\security-library-link-keys-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\security-library-link-keys.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\source-route-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\source-route-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\ncp-source-route-library-cortexm3-iar-efr32mg24-rail\ncp-source-route-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\em260-xncp-library-cortexm3-iar-efr32mg24-rail\em260-xncp-library.a + + + + + + ..\main.c + ..\device_creds.c + ..\device_cert.c + ..\..\common\creds.h + ..\..\common\creds.c + ..\README.md + + + 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 + + diff --git a/silabs_examples/credentials/device/brd4186a/device-creds.project.mak b/silabs_examples/credentials/device/brd4186a/device-creds.project.mak new file mode 100644 index 00000000000000..e71d6b91780a86 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186a/device-creds.project.mak @@ -0,0 +1,1798 @@ +#################################################################### +# Automatically-generated file. Do not edit! # +# Makefile Version 10 # +#################################################################### + +UNAME:=$(shell uname -s | sed -e 's/^\(CYGWIN\).*/\1/' | sed -e 's/^\(MINGW\).*/\1/') +ifeq ($(UNAME),MINGW) +# Translate "C:/super" into "/C/super" for MinGW make. +SDK_PATH := /$(shell echo $(BASE_SDK_PATH) | sed s/://) +endif +SDK_PATH ?= $(BASE_SDK_PATH) +COPIED_SDK_PATH = ../../common/gsdk + +# This uses the explicit build rules below +PROJECT_SOURCE_FILES = + +C_SOURCE_FILES += $(filter %.c, $(PROJECT_SOURCE_FILES)) +CXX_SOURCE_FILES += $(filter %.cpp, $(PROJECT_SOURCE_FILES)) +CXX_SOURCE_FILES += $(filter %.cc, $(PROJECT_SOURCE_FILES)) +ASM_SOURCE_FILES += $(filter %.s, $(PROJECT_SOURCE_FILES)) +ASM_SOURCE_FILES += $(filter %.S, $(PROJECT_SOURCE_FILES)) +LIB_FILES += $(filter %.a, $(PROJECT_SOURCE_FILES)) + +C_DEFS += \ + '-DMATTER_COMMON_NAME="Matter Dev DAC 0xFFF1/0x8005"' \ + '-DMATTER_PRODUCT_ID=0x8005' \ + '-DMATTER_VENDOR_ID=0xFFF1' \ + '-DMATTER_X509_EXTENSIONS=1' \ + '-DPSA_CRYPTO_PRINT=1' \ + '-DPSA_CRYPTO_PRINT_CERT=1' \ + '-DRESERVED_AVAILABLE_MEMORY=1000' \ + '-DEFR32MG24A010F1536GM48=1' \ + '-DSL_APP_PROPERTIES=1' \ + '-DSL_BOARD_NAME="BRD4186A"' \ + '-DSL_BOARD_REV="A04"' \ + '-DSL_COMPONENT_CATALOG_PRESENT=1' \ + '-DSEGGER_RTT_ALIGNMENT=1024' \ + '-DEMBER_AF_API_BOOTLOADER_INTERFACE=1' \ + '-DCORTEXM3=1' \ + '-DCORTEXM3_EFM32_MICRO=1' \ + '-DCORTEXM3_EFR32=1' \ + '-DPHY_RAIL=1' \ + '-DPLATFORM_HEADER="platform-header.h"' \ + '-DSL_LEGACY_HAL_ENABLE_WATCHDOG=1' \ + '-DMBEDTLS_CONFIG_FILE=' \ + '-DMBEDTLS_PSA_CRYPTO_CONFIG_FILE=' \ + '-DSL_RAIL_LIB_MULTIPROTOCOL_SUPPORT=0' \ + '-DSL_RAIL_UTIL_PA_CONFIG_HEADER=' \ + '-DRTT_USE_ASM=0' \ + '-DSEGGER_RTT_SECTION="SEGGER_RTT"' \ + '-DCUSTOM_TOKEN_HEADER="sl_token_manager_af_token_header.h"' \ + '-DUSE_NVM3=1' \ + '-DUC_BUILD=1' \ + '-DEMBER_AF_NCP=1' \ + '-DEMBER_SERIAL1_RTSCTS=1' \ + '-DEZSP_UART=1' \ + '-DNO_USB=1' \ + '-DEMBER_MULTI_NETWORK_STRIPPED=1' \ + '-DSL_ZIGBEE_PHY_SELECT_STACK_SUPPORT=1' + +ASM_DEFS += \ + '-DMATTER_COMMON_NAME="Matter Dev DAC 0xFFF1/0x8005"' \ + '-DMATTER_PRODUCT_ID=0x8005' \ + '-DMATTER_VENDOR_ID=0xFFF1' \ + '-DMATTER_X509_EXTENSIONS=1' \ + '-DPSA_CRYPTO_PRINT=1' \ + '-DPSA_CRYPTO_PRINT_CERT=1' \ + '-DRESERVED_AVAILABLE_MEMORY=1000' \ + '-DEFR32MG24A010F1536GM48=1' \ + '-DSL_APP_PROPERTIES=1' \ + '-DSL_BOARD_NAME="BRD4186A"' \ + '-DSL_BOARD_REV="A04"' \ + '-DSL_COMPONENT_CATALOG_PRESENT=1' \ + '-DSEGGER_RTT_ALIGNMENT=1024' \ + '-DEMBER_AF_API_BOOTLOADER_INTERFACE=1' \ + '-DCORTEXM3=1' \ + '-DCORTEXM3_EFM32_MICRO=1' \ + '-DCORTEXM3_EFR32=1' \ + '-DPHY_RAIL=1' \ + '-DPLATFORM_HEADER="platform-header.h"' \ + '-DSL_LEGACY_HAL_ENABLE_WATCHDOG=1' \ + '-DMBEDTLS_CONFIG_FILE=' \ + '-DMBEDTLS_PSA_CRYPTO_CONFIG_FILE=' \ + '-DSL_RAIL_LIB_MULTIPROTOCOL_SUPPORT=0' \ + '-DSL_RAIL_UTIL_PA_CONFIG_HEADER=' \ + '-DRTT_USE_ASM=0' \ + '-DSEGGER_RTT_SECTION="SEGGER_RTT"' \ + '-DCUSTOM_TOKEN_HEADER="sl_token_manager_af_token_header.h"' \ + '-DUSE_NVM3=1' \ + '-DUC_BUILD=1' \ + '-DEMBER_AF_NCP=1' \ + '-DEMBER_SERIAL1_RTSCTS=1' \ + '-DEZSP_UART=1' \ + '-DNO_USB=1' \ + '-DEMBER_MULTI_NETWORK_STRIPPED=1' \ + '-DSL_ZIGBEE_PHY_SELECT_STACK_SUPPORT=1' + +INCLUDES += \ + -Iconfig \ + -Iautogen \ + -I.. \ + -I../../common \ + -I$(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG24/Include \ + -I$(SDK_PATH)/platform/common/inc \ + -I$(SDK_PATH)/hardware/board/inc \ + -I$(SDK_PATH)/platform/bootloader \ + -I$(SDK_PATH)/platform/bootloader/api \ + -I$(SDK_PATH)/platform/CMSIS/Core/Include \ + -I$(SDK_PATH)/hardware/driver/configuration_over_swo/inc \ + -I$(SDK_PATH)/platform/driver/debug/inc \ + -I$(SDK_PATH)/platform/service/device_init/inc \ + -I$(SDK_PATH)/platform/emdrv/common/inc \ + -I$(SDK_PATH)/platform/emlib/inc \ + -I$(SDK_PATH)/platform/service/hfxo_manager/inc \ + -I$(SDK_PATH)/platform/service/iostream/inc \ + -I$(SDK_PATH)/platform/driver/leddrv/inc \ + -I$(SDK_PATH)/platform/service/legacy_hal/inc \ + -I$(SDK_PATH)/platform/service/legacy_common_ash/inc \ + -I$(SDK_PATH)/platform/service/legacy_hal_wdog/inc \ + -I$(SDK_PATH)/platform/service/legacy_ncp_ash/inc \ + -I$(SDK_PATH)/platform/service/legacy_printf/inc \ + -I$(COPIED_SDK_PATH)/util/third_party/crypto/mbedtls/include \ + -I$(SDK_PATH)/util/third_party/crypto/mbedtls/include \ + -I$(SDK_PATH)/util/third_party/crypto/mbedtls/library \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/config \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/inc \ + -I$(SDK_PATH)/hardware/driver/mx25_flash_shutdown/inc/sl_mx25_flash_shutdown_eusart \ + -I$(SDK_PATH)/platform/emdrv/nvm3/inc \ + -I$(SDK_PATH)/platform/peripheral/inc \ + -I$(SDK_PATH)/platform/service/power_manager/inc \ + -I$(SDK_PATH)/util/third_party/printf \ + -I$(SDK_PATH)/util/third_party/printf/inc \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/inc \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/inc/public \ + -I$(SDK_PATH)/platform/radio/rail_lib/common \ + -I$(SDK_PATH)/platform/radio/rail_lib/protocol/ble \ + -I$(SDK_PATH)/platform/radio/rail_lib/protocol/ieee802154 \ + -I$(SDK_PATH)/platform/radio/rail_lib/protocol/zwave \ + -I$(SDK_PATH)/platform/radio/rail_lib/chip/efr32/efr32xg2x \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_ieee802154 \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/efr32xg24 \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_pti \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/inc \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src \ + -I$(SDK_PATH)/util/third_party/segger/systemview/SEGGER \ + -I$(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager \ + -I$(SDK_PATH)/platform/common/toolchain/inc \ + -I$(SDK_PATH)/platform/service/system/inc \ + -I$(SDK_PATH)/platform/service/sleeptimer/inc \ + -I$(SDK_PATH)/platform/service/token_manager/inc \ + -I$(SDK_PATH)/platform/service/udelay/inc \ + -I$(SDK_PATH)/protocol/zigbee/stack/platform/micro \ + -I$(SDK_PATH)/protocol/zigbee/stack/include \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/common \ + -I$(SDK_PATH)/protocol/zigbee/app/em260 \ + -I$(SDK_PATH)/protocol/zigbee/stack/framework \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print \ + -I$(SDK_PATH)/protocol/zigbee/stack/gp \ + -I$(SDK_PATH)/protocol/zigbee/app/xncp \ + -I$(SDK_PATH)/protocol/zigbee/app/util/ezsp \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/util \ + -I$(SDK_PATH)/protocol/zigbee/app/util/security \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin \ + -I$(SDK_PATH)/protocol/zigbee \ + -I$(SDK_PATH)/protocol/zigbee/stack \ + -I$(SDK_PATH)/protocol/zigbee/stack/zigbee \ + -I$(SDK_PATH)/platform/radio/mac/rail_mux \ + -I$(SDK_PATH)/platform/radio/mac \ + -I$(SDK_PATH)/util/silicon_labs/silabs_core \ + -I$(SDK_PATH)/protocol/zigbee/stack/core \ + -I$(SDK_PATH)/protocol/zigbee/stack/mac \ + -I$(SDK_PATH)/protocol/zigbee/app/ncp/plugin/xncp + +GROUP_START =-Wl,--start-group +GROUP_END =-Wl,--end-group + +PROJECT_LIBS = \ + -lgcc \ + -lc \ + -lm \ + -lnosys \ + $(SDK_PATH)/platform/emdrv/nvm3/lib/libnvm3_CM33_gcc.a \ + $(SDK_PATH)/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg24_gcc_release.a \ + $(SDK_PATH)/protocol/zigbee/build/binding-table-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/binding-table-library.a \ + $(SDK_PATH)/protocol/zigbee/build/ncp-binding-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/ncp-binding-library.a \ + $(SDK_PATH)/protocol/zigbee/build/debug-basic-library-cortexm3-gcc-efr32mg24-rail/debug-basic-library.a \ + $(SDK_PATH)/protocol/zigbee/build/debug-extended-library-cortexm3-gcc-efr32mg24-rail/debug-extended-library.a \ + $(SDK_PATH)/protocol/zigbee/build/end-device-bind-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/end-device-bind-library.a \ + $(SDK_PATH)/protocol/zigbee/build/gp-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/gp-library.a \ + $(SDK_PATH)/protocol/zigbee/build/ncp-gp-library-cortexm3-gcc-efr32mg24-rail/ncp-gp-library.a \ + $(SDK_PATH)/protocol/zigbee/build/em260-uart-util-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/em260-uart-util-library.a \ + $(SDK_PATH)/protocol/zigbee/build/packet-validate-library-cortexm3-gcc-efr32mg24-rail/packet-validate-library.a \ + $(SDK_PATH)/protocol/zigbee/build/zigbee-pro-stack-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/zigbee-pro-stack.a \ + $(SDK_PATH)/protocol/zigbee/build/ncp-pro-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/ncp-pro-library.a \ + $(SDK_PATH)/protocol/zigbee/build/zigbee-r22-support-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/zigbee-r22-support-library.a \ + $(SDK_PATH)/protocol/zigbee/build/security-library-link-keys-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/security-library-link-keys.a \ + $(SDK_PATH)/protocol/zigbee/build/source-route-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/source-route-library.a \ + $(SDK_PATH)/protocol/zigbee/build/ncp-source-route-library-cortexm3-gcc-efr32mg24-rail/ncp-source-route-library.a \ + $(SDK_PATH)/protocol/zigbee/build/em260-xncp-library-cortexm3-gcc-efr32mg24-rail/em260-xncp-library.a + +LIBS += $(GROUP_START) $(PROJECT_LIBS) $(GROUP_END) + +LIB_FILES += $(filter %.a, $(PROJECT_LIBS)) + +C_FLAGS += \ + -mcpu=cortex-m33 \ + -mthumb \ + -mfpu=fpv5-sp-d16 \ + -mfloat-abi=hard \ + -std=c99 \ + -Wall \ + -Wextra \ + -Os \ + -fdata-sections \ + -ffunction-sections \ + -fomit-frame-pointer \ + -imacros sl_gcc_preinclude.h \ + -mcmse \ + -fno-builtin-printf \ + -fno-builtin-sprintf \ + --specs=nano.specs \ + -Wno-unused-parameter \ + -Wno-missing-field-initializers \ + -Wno-missing-braces \ + -Wno-format \ + -g + +CXX_FLAGS += \ + -mcpu=cortex-m33 \ + -mthumb \ + -mfpu=fpv5-sp-d16 \ + -mfloat-abi=hard \ + -std=c++11 \ + -fno-rtti \ + -fno-exceptions \ + -Wall \ + -Wextra \ + -Os \ + -fdata-sections \ + -ffunction-sections \ + -fomit-frame-pointer \ + -imacros sl_gcc_preinclude.h \ + -mcmse \ + -fno-builtin-printf \ + -fno-builtin-sprintf \ + --specs=nano.specs \ + -Wno-unused-parameter \ + -Wno-missing-field-initializers \ + -Wno-missing-braces \ + -Wno-format \ + -g + +ASM_FLAGS += \ + -mcpu=cortex-m33 \ + -mthumb \ + -mfpu=fpv5-sp-d16 \ + -mfloat-abi=hard \ + -imacros sl_gcc_preinclude.h \ + -x assembler-with-cpp + +LD_FLAGS += \ + -mcpu=cortex-m33 \ + -mthumb \ + -mfpu=fpv5-sp-d16 \ + -mfloat-abi=hard \ + -T"autogen/linkerfile_base.ld" \ + --specs=nano.specs \ + -Xlinker -Map=$(OUTPUT_DIR)/$(PROJECTNAME).map \ + -Wl,--gc-sections + + +#################################################################### +# SDK Build Rules # +#################################################################### +$(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_control_gpio.o: $(SDK_PATH)/hardware/board/src/sl_board_control_gpio.c + @echo 'Building $(SDK_PATH)/hardware/board/src/sl_board_control_gpio.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/hardware/board/src/sl_board_control_gpio.c +CDEPS += $(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_control_gpio.d +OBJS += $(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_control_gpio.o + +$(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_init.o: $(SDK_PATH)/hardware/board/src/sl_board_init.c + @echo 'Building $(SDK_PATH)/hardware/board/src/sl_board_init.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/hardware/board/src/sl_board_init.c +CDEPS += $(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_init.d +OBJS += $(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_init.o + +$(OUTPUT_DIR)/sdk/hardware/driver/configuration_over_swo/src/sl_cos.o: $(SDK_PATH)/hardware/driver/configuration_over_swo/src/sl_cos.c + @echo 'Building $(SDK_PATH)/hardware/driver/configuration_over_swo/src/sl_cos.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/hardware/driver/configuration_over_swo/src/sl_cos.c +CDEPS += $(OUTPUT_DIR)/sdk/hardware/driver/configuration_over_swo/src/sl_cos.d +OBJS += $(OUTPUT_DIR)/sdk/hardware/driver/configuration_over_swo/src/sl_cos.o + +$(OUTPUT_DIR)/sdk/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_eusart/sl_mx25_flash_shutdown.o: $(SDK_PATH)/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_eusart/sl_mx25_flash_shutdown.c + @echo 'Building $(SDK_PATH)/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_eusart/sl_mx25_flash_shutdown.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_eusart/sl_mx25_flash_shutdown.c +CDEPS += $(OUTPUT_DIR)/sdk/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_eusart/sl_mx25_flash_shutdown.d +OBJS += $(OUTPUT_DIR)/sdk/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_eusart/sl_mx25_flash_shutdown.o + +$(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface.o: $(SDK_PATH)/platform/bootloader/api/btl_interface.c + @echo 'Building $(SDK_PATH)/platform/bootloader/api/btl_interface.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/bootloader/api/btl_interface.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface.d +OBJS += $(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface.o + +$(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface_storage.o: $(SDK_PATH)/platform/bootloader/api/btl_interface_storage.c + @echo 'Building $(SDK_PATH)/platform/bootloader/api/btl_interface_storage.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/bootloader/api/btl_interface_storage.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface_storage.d +OBJS += $(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface_storage.o + +$(OUTPUT_DIR)/sdk/platform/bootloader/app_properties/app_properties.o: $(SDK_PATH)/platform/bootloader/app_properties/app_properties.c + @echo 'Building $(SDK_PATH)/platform/bootloader/app_properties/app_properties.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/bootloader/app_properties/app_properties.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/bootloader/app_properties/app_properties.d +OBJS += $(OUTPUT_DIR)/sdk/platform/bootloader/app_properties/app_properties.o + +$(OUTPUT_DIR)/sdk/platform/common/src/sl_assert.o: $(SDK_PATH)/platform/common/src/sl_assert.c + @echo 'Building $(SDK_PATH)/platform/common/src/sl_assert.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/common/src/sl_assert.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_assert.d +OBJS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_assert.o + +$(OUTPUT_DIR)/sdk/platform/common/src/sl_slist.o: $(SDK_PATH)/platform/common/src/sl_slist.c + @echo 'Building $(SDK_PATH)/platform/common/src/sl_slist.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/common/src/sl_slist.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_slist.d +OBJS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_slist.o + +$(OUTPUT_DIR)/sdk/platform/common/toolchain/src/sl_memory.o: $(SDK_PATH)/platform/common/toolchain/src/sl_memory.c + @echo 'Building $(SDK_PATH)/platform/common/toolchain/src/sl_memory.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/common/toolchain/src/sl_memory.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/common/toolchain/src/sl_memory.d +OBJS += $(OUTPUT_DIR)/sdk/platform/common/toolchain/src/sl_memory.o + +$(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG24/Source/startup_efr32mg24.o: $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG24/Source/startup_efr32mg24.c + @echo 'Building $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG24/Source/startup_efr32mg24.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG24/Source/startup_efr32mg24.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG24/Source/startup_efr32mg24.d +OBJS += $(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG24/Source/startup_efr32mg24.o + +$(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG24/Source/system_efr32mg24.o: $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG24/Source/system_efr32mg24.c + @echo 'Building $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG24/Source/system_efr32mg24.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG24/Source/system_efr32mg24.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG24/Source/system_efr32mg24.d +OBJS += $(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG24/Source/system_efr32mg24.o + +$(OUTPUT_DIR)/sdk/platform/driver/debug/src/sl_debug_swo.o: $(SDK_PATH)/platform/driver/debug/src/sl_debug_swo.c + @echo 'Building $(SDK_PATH)/platform/driver/debug/src/sl_debug_swo.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/driver/debug/src/sl_debug_swo.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/driver/debug/src/sl_debug_swo.d +OBJS += $(OUTPUT_DIR)/sdk/platform/driver/debug/src/sl_debug_swo.o + +$(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_led.o: $(SDK_PATH)/platform/driver/leddrv/src/sl_led.c + @echo 'Building $(SDK_PATH)/platform/driver/leddrv/src/sl_led.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/driver/leddrv/src/sl_led.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_led.d +OBJS += $(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_led.o + +$(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_simple_led.o: $(SDK_PATH)/platform/driver/leddrv/src/sl_simple_led.c + @echo 'Building $(SDK_PATH)/platform/driver/leddrv/src/sl_simple_led.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/driver/leddrv/src/sl_simple_led.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_simple_led.d +OBJS += $(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_simple_led.o + +$(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_default_common_linker.o: $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_default_common_linker.c + @echo 'Building $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_default_common_linker.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_default_common_linker.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_default_common_linker.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_default_common_linker.o + +$(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_hal_flash.o: $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_hal_flash.c + @echo 'Building $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_hal_flash.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_hal_flash.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_hal_flash.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_hal_flash.o + +$(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_lock.o: $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_lock.c + @echo 'Building $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_lock.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_lock.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_lock.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_lock.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_burtc.o: $(SDK_PATH)/platform/emlib/src/em_burtc.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_burtc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_burtc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_burtc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_burtc.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_cmu.o: $(SDK_PATH)/platform/emlib/src/em_cmu.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_cmu.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_cmu.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_cmu.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_cmu.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_core.o: $(SDK_PATH)/platform/emlib/src/em_core.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_core.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_core.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_core.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_core.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_emu.o: $(SDK_PATH)/platform/emlib/src/em_emu.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_emu.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_emu.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_emu.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_emu.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_eusart.o: $(SDK_PATH)/platform/emlib/src/em_eusart.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_eusart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_eusart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_eusart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_eusart.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_gpio.o: $(SDK_PATH)/platform/emlib/src/em_gpio.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_gpio.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_gpio.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_gpio.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_gpio.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_msc.o: $(SDK_PATH)/platform/emlib/src/em_msc.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_msc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_msc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_msc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_msc.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_prs.o: $(SDK_PATH)/platform/emlib/src/em_prs.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_prs.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_prs.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_prs.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_prs.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_rmu.o: $(SDK_PATH)/platform/emlib/src/em_rmu.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_rmu.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_rmu.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_rmu.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_rmu.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_se.o: $(SDK_PATH)/platform/emlib/src/em_se.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_se.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_se.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_se.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_se.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_system.o: $(SDK_PATH)/platform/emlib/src/em_system.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_system.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_system.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_system.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_system.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_usart.o: $(SDK_PATH)/platform/emlib/src/em_usart.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_usart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_usart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_usart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_usart.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_wdog.o: $(SDK_PATH)/platform/emlib/src/em_wdog.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_wdog.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_wdog.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_wdog.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_wdog.o + +$(OUTPUT_DIR)/sdk/platform/peripheral/src/peripheral_sysrtc.o: $(SDK_PATH)/platform/peripheral/src/peripheral_sysrtc.c + @echo 'Building $(SDK_PATH)/platform/peripheral/src/peripheral_sysrtc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/peripheral/src/peripheral_sysrtc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/peripheral/src/peripheral_sysrtc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/peripheral/src/peripheral_sysrtc.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_dcdc_s2.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_dcdc_s2.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_dcdc_s2.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_dcdc_s2.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_dcdc_s2.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_dcdc_s2.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_emu_s2.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_emu_s2.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_emu_s2.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_emu_s2.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_emu_s2.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_emu_s2.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_hfxo_s2.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_hfxo_s2.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_hfxo_s2.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_hfxo_s2.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_hfxo_s2.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_hfxo_s2.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_lfxo_s2.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_lfxo_s2.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_lfxo_s2.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_lfxo_s2.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_lfxo_s2.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_lfxo_s2.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_nvic.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_nvic.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_nvic.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_nvic.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_nvic.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_nvic.o + +$(OUTPUT_DIR)/sdk/platform/service/hfxo_manager/src/sl_hfxo_manager.o: $(SDK_PATH)/platform/service/hfxo_manager/src/sl_hfxo_manager.c + @echo 'Building $(SDK_PATH)/platform/service/hfxo_manager/src/sl_hfxo_manager.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/hfxo_manager/src/sl_hfxo_manager.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/hfxo_manager/src/sl_hfxo_manager.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/hfxo_manager/src/sl_hfxo_manager.o + +$(OUTPUT_DIR)/sdk/platform/service/hfxo_manager/src/sl_hfxo_manager_hal_s2.o: $(SDK_PATH)/platform/service/hfxo_manager/src/sl_hfxo_manager_hal_s2.c + @echo 'Building $(SDK_PATH)/platform/service/hfxo_manager/src/sl_hfxo_manager_hal_s2.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/hfxo_manager/src/sl_hfxo_manager_hal_s2.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/hfxo_manager/src/sl_hfxo_manager_hal_s2.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/hfxo_manager/src/sl_hfxo_manager_hal_s2.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_debug.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_debug.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_debug.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_debug.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_debug.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_debug.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_retarget_stdio.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_retarget_stdio.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_retarget_stdio.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_retarget_stdio.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_retarget_stdio.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_retarget_stdio.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_swo_itm_8.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_swo_itm_8.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_swo_itm_8.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_swo_itm_8.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_swo_itm_8.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_swo_itm_8.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_uart.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_uart.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_uart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_uart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_uart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_uart.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_usart.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_usart.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_usart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_usart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_usart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_usart.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_vuart.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_vuart.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_vuart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_vuart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_vuart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_vuart.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_common_ash/src/ash-common.o: $(SDK_PATH)/platform/service/legacy_common_ash/src/ash-common.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_common_ash/src/ash-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_common_ash/src/ash-common.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_common_ash/src/ash-common.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_common_ash/src/ash-common.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/base-replacement.o: $(SDK_PATH)/platform/service/legacy_hal/src/base-replacement.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/base-replacement.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/base-replacement.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/base-replacement.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/base-replacement.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-common.o: $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-common.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-common.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-common.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-common.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-app.o: $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-app.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-app.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-app.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-app.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-app.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-standalone.o: $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-standalone.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-standalone.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-standalone.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-standalone.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-standalone.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface.o: $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/crc.o: $(SDK_PATH)/platform/service/legacy_hal/src/crc.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/crc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/crc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/crc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/crc.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/diagnostic.o: $(SDK_PATH)/platform/service/legacy_hal/src/diagnostic.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/diagnostic.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/diagnostic.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/diagnostic.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/diagnostic.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/ember-phy.o: $(SDK_PATH)/platform/service/legacy_hal/src/ember-phy.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/ember-phy.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/ember-phy.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/ember-phy.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/ember-phy.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/faults.o: $(SDK_PATH)/platform/service/legacy_hal/src/faults.s + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/faults.s' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/faults.s +ASMDEPS_s += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/faults.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/faults.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/random.o: $(SDK_PATH)/platform/service/legacy_hal/src/random.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/random.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/random.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/random.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/random.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/token_legacy.o: $(SDK_PATH)/platform/service/legacy_hal/src/token_legacy.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/token_legacy.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/token_legacy.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/token_legacy.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/token_legacy.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.o: $(SDK_PATH)/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_ncp_ash/src/ash-ncp.o: $(SDK_PATH)/platform/service/legacy_ncp_ash/src/ash-ncp.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_ncp_ash/src/ash-ncp.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_ncp_ash/src/ash-ncp.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_ncp_ash/src/ash-ncp.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_ncp_ash/src/ash-ncp.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_printf/src/sl_legacy_printf.o: $(SDK_PATH)/platform/service/legacy_printf/src/sl_legacy_printf.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_printf/src/sl_legacy_printf.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_printf/src/sl_legacy_printf.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_printf/src/sl_legacy_printf.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_printf/src/sl_legacy_printf.o + +$(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager.o: $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager.c + @echo 'Building $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager.o + +$(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_debug.o: $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_debug.c + @echo 'Building $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_debug.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_debug.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_debug.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_debug.o + +$(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_hal_s2.o: $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_hal_s2.c + @echo 'Building $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_hal_s2.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_hal_s2.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_hal_s2.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_hal_s2.o + +$(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer.o: $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer.c + @echo 'Building $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer.o + +$(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_burtc.o: $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_burtc.c + @echo 'Building $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_burtc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_burtc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_burtc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_burtc.o + +$(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_sysrtc.o: $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_sysrtc.c + @echo 'Building $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_sysrtc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_sysrtc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_sysrtc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_sysrtc.o + +$(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_init.o: $(SDK_PATH)/platform/service/system/src/sl_system_init.c + @echo 'Building $(SDK_PATH)/platform/service/system/src/sl_system_init.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/system/src/sl_system_init.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_init.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_init.o + +$(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_process_action.o: $(SDK_PATH)/platform/service/system/src/sl_system_process_action.c + @echo 'Building $(SDK_PATH)/platform/service/system/src/sl_system_process_action.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/system/src/sl_system_process_action.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_process_action.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_process_action.o + +$(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_def.o: $(SDK_PATH)/platform/service/token_manager/src/sl_token_def.c + @echo 'Building $(SDK_PATH)/platform/service/token_manager/src/sl_token_def.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/token_manager/src/sl_token_def.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_def.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_def.o + +$(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manager.o: $(SDK_PATH)/platform/service/token_manager/src/sl_token_manager.c + @echo 'Building $(SDK_PATH)/platform/service/token_manager/src/sl_token_manager.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/token_manager/src/sl_token_manager.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manager.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manager.o + +$(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manufacturing.o: $(SDK_PATH)/platform/service/token_manager/src/sl_token_manufacturing.c + @echo 'Building $(SDK_PATH)/platform/service/token_manager/src/sl_token_manufacturing.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/token_manager/src/sl_token_manufacturing.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manufacturing.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manufacturing.o + +$(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay.o: $(SDK_PATH)/platform/service/udelay/src/sl_udelay.c + @echo 'Building $(SDK_PATH)/platform/service/udelay/src/sl_udelay.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/udelay/src/sl_udelay.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay.o + +$(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay_armv6m_gcc.o: $(SDK_PATH)/platform/service/udelay/src/sl_udelay_armv6m_gcc.S + @echo 'Building $(SDK_PATH)/platform/service/udelay/src/sl_udelay_armv6m_gcc.S' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $(SDK_PATH)/platform/service/udelay/src/sl_udelay_armv6m_gcc.S +ASMDEPS_S += $(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay_armv6m_gcc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay_armv6m_gcc.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-binding-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-binding-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-binding-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-binding-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-binding-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-binding-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-green-power-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-green-power-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-green-power-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-green-power-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-green-power-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-green-power-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-messaging-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-messaging-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-messaging-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-messaging-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-messaging-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-messaging-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-networking-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-networking-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-networking-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-networking-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-networking-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-networking-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-security-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-security-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-security-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-security-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-security-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-security-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-trust-center-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-trust-center-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-trust-center-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-trust-center-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-trust-center-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-trust-center-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/em260-common.o: $(SDK_PATH)/protocol/zigbee/app/em260/em260-common.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/em260-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/em260-common.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/em260-common.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/em260-common.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/ncp-stack-stub.o: $(SDK_PATH)/protocol/zigbee/app/em260/ncp-stack-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/ncp-stack-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/ncp-stack-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/ncp-stack-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/ncp-stack-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/serial-interface-uart.o: $(SDK_PATH)/protocol/zigbee/app/em260/serial-interface-uart.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/serial-interface-uart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/serial-interface-uart.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/serial-interface-uart.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/serial-interface-uart.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_common.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_common.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_common.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_common.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_common.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.o: $(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.o: $(SDK_PATH)/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/security/security-address-cache.o: $(SDK_PATH)/protocol/zigbee/app/util/security/security-address-cache.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/security/security-address-cache.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/security/security-address-cache.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/security/security-address-cache.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/security/security-address-cache.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/xncp/xncp_cb.o: $(SDK_PATH)/protocol/zigbee/app/xncp/xncp_cb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/xncp/xncp_cb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/xncp/xncp_cb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/xncp/xncp_cb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/xncp/xncp_cb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/config/ember-configuration.o: $(SDK_PATH)/protocol/zigbee/stack/config/ember-configuration.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/config/ember-configuration.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/config/ember-configuration.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/config/ember-configuration.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/config/ember-configuration.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/ember-multi-network-stub.o: $(SDK_PATH)/protocol/zigbee/stack/core/ember-multi-network-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/core/ember-multi-network-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/core/ember-multi-network-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/ember-multi-network-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/ember-multi-network-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-common.o: $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-common.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-common.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-common.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-common.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-stub.o: $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/aes-ecb.o: $(SDK_PATH)/protocol/zigbee/stack/framework/aes-ecb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/framework/aes-ecb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/framework/aes-ecb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/aes-ecb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/aes-ecb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/ccm-star.o: $(SDK_PATH)/protocol/zigbee/stack/framework/ccm-star.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/framework/ccm-star.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/framework/ccm-star.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/ccm-star.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/ccm-star.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/strong-random-api.o: $(SDK_PATH)/protocol/zigbee/stack/framework/strong-random-api.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/framework/strong-random-api.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/framework/strong-random-api.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/strong-random-api.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/strong-random-api.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.o: $(SDK_PATH)/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/install-code-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/install-code-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/install-code-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/install-code-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/install-code-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/install-code-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/zll/zll-stubs.o: $(SDK_PATH)/protocol/zigbee/stack/zll/zll-stubs.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/zll/zll-stubs.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/zll/zll-stubs.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/zll/zll-stubs.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/zll/zll-stubs.o + +$(OUTPUT_DIR)/sdk/util/silicon_labs/silabs_core/memory_manager/sl_malloc.o: $(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager/sl_malloc.c + @echo 'Building $(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager/sl_malloc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager/sl_malloc.c +CDEPS += $(OUTPUT_DIR)/sdk/util/silicon_labs/silabs_core/memory_manager/sl_malloc.d +OBJS += $(OUTPUT_DIR)/sdk/util/silicon_labs/silabs_core/memory_manager/sl_malloc.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/aes.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/aes.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/aes.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/aes.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/aes.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/aes.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1parse.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1parse.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1parse.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1parse.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1parse.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1parse.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1write.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1write.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1write.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1write.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1write.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1write.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/base64.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/base64.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/base64.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/base64.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/base64.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/base64.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/bignum.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/bignum.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/bignum.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/bignum.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/bignum.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/bignum.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher_wrap.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher_wrap.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher_wrap.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher_wrap.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher_wrap.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher_wrap.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/constant_time.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/constant_time.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/constant_time.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/constant_time.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/constant_time.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/constant_time.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ctr_drbg.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ctr_drbg.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ctr_drbg.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ctr_drbg.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ctr_drbg.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ctr_drbg.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/des.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/des.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/des.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/des.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/des.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/des.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdh.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdh.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdh.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdh.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdh.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdh.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdsa.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdsa.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdsa.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdsa.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdsa.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdsa.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp_curves.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp_curves.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp_curves.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp_curves.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp_curves.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp_curves.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy_poll.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy_poll.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy_poll.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy_poll.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy_poll.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy_poll.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/hmac_drbg.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/hmac_drbg.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/hmac_drbg.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/hmac_drbg.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/hmac_drbg.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/hmac_drbg.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/md.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/md.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/md.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/md.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/md.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/md.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/oid.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/oid.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/oid.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/oid.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/oid.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/oid.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pem.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pem.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pem.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pem.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pem.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pem.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk_wrap.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk_wrap.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk_wrap.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk_wrap.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk_wrap.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk_wrap.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkparse.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkparse.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkparse.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkparse.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkparse.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkparse.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkwrite.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkwrite.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkwrite.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkwrite.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkwrite.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkwrite.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform_util.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform_util.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform_util.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform_util.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform_util.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform_util.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_aead.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_aead.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_aead.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_aead.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_aead.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_aead.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_client.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_client.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_client.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_client.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_client.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_client.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_hash.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_hash.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_hash.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_hash.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_hash.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_hash.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_mac.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_mac.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_mac.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_mac.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_mac.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_mac.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_se.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_se.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_se.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_se.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_se.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_se.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_storage.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_storage.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_storage.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_storage.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_storage.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_storage.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha1.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha1.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha1.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha1.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha1.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha1.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha256.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha256.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha256.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha256.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha256.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha256.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha512.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha512.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha512.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha512.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha512.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha512.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/threading.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/threading.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/threading.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/threading.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/threading.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/threading.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509.o + +$(OUTPUT_DIR)/project/_/_/common/gsdk/util/third_party/crypto/mbedtls/library/x509_create.o: $(COPIED_SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_create.c + @echo 'Building $(COPIED_SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_create.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(COPIED_SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_create.c +CDEPS += $(OUTPUT_DIR)/project/_/_/common/gsdk/util/third_party/crypto/mbedtls/library/x509_create.d +OBJS += $(OUTPUT_DIR)/project/_/_/common/gsdk/util/third_party/crypto/mbedtls/library/x509_create.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crl.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crl.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crl.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crl.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crl.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crl.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crt.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crt.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crt.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crt.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crt.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crt.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_csr.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_csr.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_csr.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_csr.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_csr.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_csr.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_crt.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_crt.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_crt.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_crt.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_crt.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_crt.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_csr.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_csr.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_csr.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_csr.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_csr.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_csr.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_attestation.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_attestation.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_attestation.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_attestation.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_attestation.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_attestation.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_cipher.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_entropy.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_entropy.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_entropy.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_entropy.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_entropy.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_entropy.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_hash.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_hash.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_hash.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_hash.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_hash.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_hash.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_derivation.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_derivation.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_derivation.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_derivation.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_derivation.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_derivation.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_handling.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_handling.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_handling.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_handling.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_handling.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_handling.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_signature.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_signature.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_signature.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_signature.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_signature.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_signature.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_util.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_util.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_util.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_util.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_util.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_util.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_ecdsa_ecdh.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_ecdsa_ecdh.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_ecdsa_ecdh.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_ecdsa_ecdh.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_ecdsa_ecdh.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_ecdsa_ecdh.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/se_aes.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/se_aes.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/se_aes.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/se_aes.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/se_aes.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/se_aes.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_aead.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_aead.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_aead.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_aead.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_aead.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_aead.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_builtin_keys.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_builtin_keys.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_builtin_keys.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_builtin_keys.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_builtin_keys.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_builtin_keys.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_cipher.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_derivation.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_derivation.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_derivation.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_derivation.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_derivation.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_derivation.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_management.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_management.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_management.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_management.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_management.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_management.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_mac.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_mac.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_mac.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_mac.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_mac.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_mac.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_signature.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_signature.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_signature.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_signature.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_signature.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_signature.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_aead.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_aead.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_aead.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_aead.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_aead.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_aead.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_cipher.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_mac.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_mac.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_mac.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_mac.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_mac.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_mac.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_key_derivation.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_key_derivation.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_key_derivation.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_key_derivation.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_key_derivation.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_key_derivation.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_aead.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_aead.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_aead.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_aead.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_aead.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_aead.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_cipher.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_hash.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_hash.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_hash.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_hash.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_hash.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_hash.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_mac.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_mac.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_mac.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_mac.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_mac.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_mac.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_key_derivation.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_key_derivation.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_key_derivation.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_key_derivation.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_key_derivation.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_key_derivation.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.o + +$(OUTPUT_DIR)/sdk/util/third_party/printf/printf.o: $(SDK_PATH)/util/third_party/printf/printf.c + @echo 'Building $(SDK_PATH)/util/third_party/printf/printf.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/printf/printf.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/printf/printf.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/printf/printf.o + +$(OUTPUT_DIR)/sdk/util/third_party/printf/src/iostream_printf.o: $(SDK_PATH)/util/third_party/printf/src/iostream_printf.c + @echo 'Building $(SDK_PATH)/util/third_party/printf/src/iostream_printf.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/printf/src/iostream_printf.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/printf/src/iostream_printf.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/printf/src/iostream_printf.o + +$(OUTPUT_DIR)/sdk/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.o: $(SDK_PATH)/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.c + @echo 'Building $(SDK_PATH)/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.o + +$(OUTPUT_DIR)/project/_/_/common/creds.o: ../../common/creds.c + @echo 'Building ../../common/creds.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../../common/creds.c +CDEPS += $(OUTPUT_DIR)/project/_/_/common/creds.d +OBJS += $(OUTPUT_DIR)/project/_/_/common/creds.o + +$(OUTPUT_DIR)/project/_/device_cert.o: ../device_cert.c + @echo 'Building ../device_cert.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../device_cert.c +CDEPS += $(OUTPUT_DIR)/project/_/device_cert.d +OBJS += $(OUTPUT_DIR)/project/_/device_cert.o + +$(OUTPUT_DIR)/project/_/device_creds.o: ../device_creds.c + @echo 'Building ../device_creds.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../device_creds.c +CDEPS += $(OUTPUT_DIR)/project/_/device_creds.d +OBJS += $(OUTPUT_DIR)/project/_/device_creds.o + +$(OUTPUT_DIR)/project/_/main.o: ../main.c + @echo 'Building ../main.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../main.c +CDEPS += $(OUTPUT_DIR)/project/_/main.d +OBJS += $(OUTPUT_DIR)/project/_/main.o + +$(OUTPUT_DIR)/project/autogen/sl_board_default_init.o: autogen/sl_board_default_init.c + @echo 'Building autogen/sl_board_default_init.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_board_default_init.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_board_default_init.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_board_default_init.o + +$(OUTPUT_DIR)/project/autogen/sl_device_init_clocks.o: autogen/sl_device_init_clocks.c + @echo 'Building autogen/sl_device_init_clocks.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_device_init_clocks.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_device_init_clocks.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_device_init_clocks.o + +$(OUTPUT_DIR)/project/autogen/sl_event_handler.o: autogen/sl_event_handler.c + @echo 'Building autogen/sl_event_handler.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_event_handler.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_event_handler.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_event_handler.o + +$(OUTPUT_DIR)/project/autogen/sl_iostream_handles.o: autogen/sl_iostream_handles.c + @echo 'Building autogen/sl_iostream_handles.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_iostream_handles.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_iostream_handles.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_iostream_handles.o + +$(OUTPUT_DIR)/project/autogen/sl_iostream_init_usart_instances.o: autogen/sl_iostream_init_usart_instances.c + @echo 'Building autogen/sl_iostream_init_usart_instances.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_iostream_init_usart_instances.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_iostream_init_usart_instances.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_iostream_init_usart_instances.o + +$(OUTPUT_DIR)/project/autogen/sl_power_manager_handler.o: autogen/sl_power_manager_handler.c + @echo 'Building autogen/sl_power_manager_handler.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_power_manager_handler.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_power_manager_handler.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_power_manager_handler.o + +$(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_phy_select.o: autogen/sl_rail_util_ieee802154_phy_select.c + @echo 'Building autogen/sl_rail_util_ieee802154_phy_select.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_rail_util_ieee802154_phy_select.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_phy_select.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_phy_select.o + +$(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_stack_event.o: autogen/sl_rail_util_ieee802154_stack_event.c + @echo 'Building autogen/sl_rail_util_ieee802154_stack_event.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_rail_util_ieee802154_stack_event.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_stack_event.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_stack_event.o + +$(OUTPUT_DIR)/project/autogen/sl_simple_led_instances.o: autogen/sl_simple_led_instances.c + @echo 'Building autogen/sl_simple_led_instances.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_simple_led_instances.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_simple_led_instances.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_simple_led_instances.o + +$(OUTPUT_DIR)/project/autogen/zigbee_common_callback_dispatcher.o: autogen/zigbee_common_callback_dispatcher.c + @echo 'Building autogen/zigbee_common_callback_dispatcher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/zigbee_common_callback_dispatcher.c +CDEPS += $(OUTPUT_DIR)/project/autogen/zigbee_common_callback_dispatcher.d +OBJS += $(OUTPUT_DIR)/project/autogen/zigbee_common_callback_dispatcher.o + +$(OUTPUT_DIR)/project/autogen/zigbee_ncp_callback_dispatcher.o: autogen/zigbee_ncp_callback_dispatcher.c + @echo 'Building autogen/zigbee_ncp_callback_dispatcher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/zigbee_ncp_callback_dispatcher.c +CDEPS += $(OUTPUT_DIR)/project/autogen/zigbee_ncp_callback_dispatcher.d +OBJS += $(OUTPUT_DIR)/project/autogen/zigbee_ncp_callback_dispatcher.o + +$(OUTPUT_DIR)/project/autogen/zigbee_stack_callback_dispatcher.o: autogen/zigbee_stack_callback_dispatcher.c + @echo 'Building autogen/zigbee_stack_callback_dispatcher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/zigbee_stack_callback_dispatcher.c +CDEPS += $(OUTPUT_DIR)/project/autogen/zigbee_stack_callback_dispatcher.d +OBJS += $(OUTPUT_DIR)/project/autogen/zigbee_stack_callback_dispatcher.o + +# Automatically-generated Simplicity Studio Metadata +# Please do not edit or delete these lines! +# SIMPLICITY_STUDIO_METADATA=eJzsvQuT3TaSJfxXHIqJL3Z3zGI9JK1aa3eHLJU92pEsharcPb2jCQaKxL2XXXw1H/XwxPz3DwDBN0Dikbiljt3dadtVRZw8SCSABJBI/Oezz18+/e/Lt9fB1affvry9vHr2+tkPf3pIk+/ucFnFefbj12dnJ6dfn32HszCP4mxPfvHb9c/eq6/P/vTHr9kPRZn/DYf1d6RIVr1O8wgn5ItDXRevff/+/v6kihN0U52EeepXlX9VN1Gcn+AwLzEBJaULXNaPVyH5NynH0b4+I9DffffDLk8iXH6XoZT+McyzXbznf6N/jRPc/a1KghSnefkYtF+dHAh6U8bkT/Sz1/6f86RJceX/lDTYr2pUHfwyDlEZ5X6K6hqXfljiqPIjfBeH2L8po+dnr16if/ZbPF8kwBcxKSoUhOVjUeeuqAglCLlQ0g/nL4JdQoQE1aGpo/w+C3BTobJ2qSkVoTLGLW4QZ3EdRGEUOuS5IkrGLsF7FD4GB5QE91G+d0hOLknG7bB7yIMUZWiPS4fEJGJkrH6P9zcYE13fNPugKOPMpeWtCpMxrBKMizpOnWpNKETGqMjvyXfum1ImR6VvJtQMjtM3Z6Jk7EoUJ0FTk38QRTukJpMj5JXdpRekMjvUJM4MXyJDyIf3EGaOrvhIZAj5oKIIuBsQ48oVI6kUFUvHaXMkQ59KEnLDaRLfBNR/4qOcI2YrcoS8+HRF/Lw0zwI69TsitiZIyOzq8pdfLr8EX66vg7fkS3BCAvyNubDCISFQPwZJnN0Gt/jRmd0rytzgexNn1PUPanSTYPdUZeJkLG9yIoV+V5d54pCeTI58DKH9prp3O00uZWy0JhkHAyIsvHXfkiJRMnZ1fouzI/g8MjkyXmFT1XnKix0wIitSF7QkYjZYkWo0OxTWhAztMMfhuC50w/r2JSaft46nc/sTC5OuA+K0IANOgiP6v1OXiwGpJBm3OK/qEqM0aJfRd2T6c8hvXdrW7JY3JXFoyrypjzBZSKSt+Sh0Se3WOZlKUPExD8dbTR20V1PoOIsptMXqpiammRFYMvqQxt7BExJKUOMSVOfhc/eEejFCVukNjurEmTu5hN8cr+4at3uNUkEtsx/8dhNZtKGMmjrf40y6o9z6e926mvadkxCqAly2LxUjUyxZySZEQh2TxU/9WGA4nY4oiYQICX25viSLnrTIM5zVFTyXJb7UIeq+CghvlOSAxjZSjFCKyvgeJnl4WzmxH7EYGSl8R9kfUBYlkE7iiM9CghoVF6pZSNgcrtpvHViyRIgyIRfqEQnZJMTsLM6IyCx0railLDV6rds6FHSqPJlEM6ru9SmQuHHadZPndZLTBd4w2OxyJ1Q3JSq4PQHHgycolyM9f52WqEuUVbu8TN1xVBSqdvTkcnCWSlI7V3enwVVR28ulGGP86vT87MXzoDg8BhVOcOjGc1SQqUW33apjk+bx+M6EKmzOuB3XZYK0iLno1TJB4q2OOLsli0bym+AGVfgkiaAZiSSsnji2+8AoSW7of0RxVaA6PLhwQlUkmlEFNzgViWtU+THYMdW6LtKQrCvFrotcI5uFxVHVuiLPhKYrha7IW6OJdpODAgcj5IogIbGTsOwDvsh/QtNZwG/vR+1xeJsHVXQbPD85Ozkb7UtNPisSVFNvrv/74ot3jNTo74svruIkJuQ+oJtq8tniw8ufv1ycf/zl/PnssyUi24dffDWfLx+rGqcB3pUX5+n+/LnUTH+hJzf+Pq79PVGI39XZb6vmj/j7PUW/5eCLhPgbvGqyJmoK18REUubMJhYiVff7LEyaaFPfvSR0ena6O3tx8XKfPn8l7XxGleNUfLmsDeX3BQMUpoVjcr0MdVIr/hwUp6knt00pbR5C95rqpSgTu2lKlLrm1QvRoVWHR6DVClGmFaaNa1JchDIlGgbtmlMnQ50UwV/bcILiNYhRp5YiUq4Ky7ioc7lzCMVwIU2daJEkzulxGcqksPsOgDU7QHtPwTmrXooysV1Vhs67QC9Emda+IN6ta1q9EA1asXNldTK0SAVF7t68JoKU6R12R7CwXogGrYcjsHrQIxWfOzd6LkKdEnI/dXcy1EmFKDzIgxSgaPVSlInRCOgQyU8PgJiNxChTS8g075pXJ0OL1MMNcu7ijOVok6NRNHHmfr0mkqdOFrNrYM45DmLUqR1jBki0Z4DkCDNAojsDpChObvIH17xGYtSpFehwc4SF+FiOOrnK+SzFRahTunO+l8JFKFMqwsy5l9jJUCe1sm8PxanUG0zJ90EV7zOUHIPaWJQyRbJcp2ckBYpcM5xKUieIjzSWTQSp03O/SVBpbhJUxKlbiT6HYtVL0SF2hJ3OQYoysaO4PPoOT3MUj6fRd3mOsgulvwl1FyHn1tXJUCZF02O4JtXJ2CKV8nhFR3zG8FtHmvNTUCeMRFKUTjQFv1z8avmLeUYgGtyxds4dZ+HifHsavoXqPI31bboV7RN8fwLirwrDWRSjjCwY9Z2VqcAp0JbQRn8lMBfXCJz8hSqrChsMWjNV9iDrwtpSlsIGkHVhVRJXthXrMTZE1ahubM1jAPHX+teiu1TlZndpm0c3OoLTI/j+BERF7Xayegw9TdR5noQHFGfr4TFLhQlCwFneMNNq9ES6Cg1w/taAqjAcyugGJd7H5v1rYM0tcoG6mCTEWoOVryJ4H4ZkqYfjdoIDI7CE3Ww+7flwuDWxNidOc+Gs9ffpl9oWPNCZ5d/xl8B6vRMV8RrvyaVZO9qxvwBbGbOmt3WrOi/RHpbAGHSFyPgC50jRusY8YyJH3dAJLsucrIAMupNAFxMw1caAEDwBU7aCApWVwdJ31QgGTG1jBOUxAt0gUuIK1+vXxjQYTNFWx46tMfPtx6v3V2vD5VuWqnRtVpXFYk6UEKZVXLH7w/HaxVuZEhhNn3Lpl15LxNWprf2cp3WFkz8CXBVf/84yJ+EHfT9aIHuKplBvMv3C1ZmDrYulmdPC9OICROwYbFVsWjQBKtM7/RhfgdgJGLy7EpXx3bqrwrJb2XvgfZIs7am4pegzgM4Bn6C58cEHEbqtOCHMXc8Jmn4zLmqQ4Cgq7+ybheCYNkhLoWsRDrTl2Q8X6GDETvHcWAIFN7QBTpYbAQfS0BGI2Cke/BhC3KCtuy6j/BjrNqvWMxfJNnT1xCn7I6ihp4rQt9psXMoofluRkSxue42PSYSvIh1JZO9Wli1XdGQhhGt8jAJbFPnIAlrW+GR3Blvhinw6bP1xUm2Kn9ppUJ1rD/KiivRzvhBesyc4JDWg6/YHh6RG8Lq9wiGrxIwVs19HlDpsAOdsnJ3f3kUboxlXfgzS1X4OvNUSk0cHaHpFC/vY4jPC36AVT8uxjZEM6d+zWWG2IsKNxzlpGZCK8MlgDqylW0gmS2SAftflWLLvcx2SsX13AJ1tjwG3+lmfKootGsEpDLDKRGhu67hOg1fwZCbQyoRKXKNyj+ugqulbRuCslvjK1GgKTHhCHao6jcoNj0qXyJ0bhdyJNQI1Avf91XTM64nzkXcMqDkAQFMYYDeHf0E3BWIjwzYYk8D1Y0aoMYkW3OTSSMID5U0FyUMAqzkCwStEFjC5MQKBE7nT1ojJZrKKsYLtKXeJ0y0dqOG00DMPAegqPrBic4AMe7URRIU8VBQuSXX4+sRoXrkIJXnmVGkzMao0ebgePLEBeP1MrzTfAZgJ51DrNUcV9kpMoEKcruVk1K24AHeVSBSjfUb6vMUGyIzCFHFVOE5vSAsVB/0IOonsCeCqaJaRvTqpYOQOaKtCS9IzcvPF30zogLZ+Os9SprVloUTPMaGc5fn5T7yYMxbVa78ynv9GFWMzIEPzB1CzFF5hXtb4Ib3YIj/qK0AV6CT7U2izaiyn7EUNDnC6p/8+aGp9yzsAoibDNvMOHJLq8K28A5f8pmI0vQN4YrJbAnIqGBdlbr5+l1MZgFepoApMOIdar3lT14Ca79E2nTGo8VCcXGh23Sy9OA/SOCzN11EzsTPIDS/o/OHBY3GPXoR35lEHcw4C3A0i7bugq+/5aJOYYq4SgJ1MNsWxUalsirryWHtByRbhrhIxCcmRyFaJBWJmCTymzjEVCNDXh8CMfQa5LR5U8KbIDsXbeMFRU7gAVmUBAiR9QFsX2o1AYHLHgOu7ZA4WB9vh0HRx5E1e0vRoUVx5Z1BUtmSYEgQbA7dk6BJ0yEtlr3X0+CMd3fdle1PmkOcWUYJz89oWA7cbO7yxbbkpSxCANu8GSmyPYQrs4DhuJMCyBUfMW7/6oDoT0k+J21/nYW49TAlYjKFBd/JZ0gSIMPEJIMD2FMMZgscX8K5CuaeC7EeEth7LYUGcrMKmNemrDzDDAEGybUFOph8AOKSj3p8ZJFqXEO56XCbKqm7TPAWZouodWFdr4WybqUWZdbMB2mkn42Is243XYNrBBmiA9pu8gWbffhM44/aboHTtt4De8oamz7vZhZNtM1IPLJs/O2cVSqpATCOYdFqQGNodqs13WkXcVmS46Y9Ts4GpCu+PC2gTi3THSCPSyZ2SBNgAo1ab9Ml+uOLJo1Zf1t6qdYvRX8mbIm7edms/Jx5wiKsqIIu92GKJIqSyxHbT0cY1N7UgXoHu6t4U0UyXoFSW2BDGnGBcsMyBAAbdY5kbUQ8xZDAag242Q/91O/O0qRpdsJnhaxJrX8txxquH3xx8pwXNDXbOSITsqOsPBgLAvk9XNgbV0CIchzkqQGdvY1LA/O0Wjm4ymxryhFBnyxPYrX41QXDBQ8Pn7wuMNk7dMJoKcNOvWmGoiI1NeloH3rMmsHqt64CHhv88KTB/aNMhN5EoE0t0w1DvjEBQzJWFCYWY8GuPZALzcyllkmNJFkzND6h0mQqOqYzmpSbCCXq0n5BaHOMxty3eDbYD2FZbtF+yXEEvU5Ye6QqQwQzXzWDPK2tqOJw3t5gBDD7jCU7nyXe2syLrawQbZetj3Ma5aLEkT59JH8nuFrGyuj2EQlC/ikZid0dh7Tv22l2mrSoFZMa6jrzaf1hRumbZJag6gBCZoG0Lp5lmQOR2QA666FjBhnbJuFKrnGNtaghCoJIgoyWoqHYqoW0zUwESO6ApGh6E3A5I3/CS+Gbd8MgHTMTbjxcXbApC5nwJli/CczFLzCuml+obp4Y7NEwwv2cj24WZS6KPFFvJ4QAbUvJS/1LbVAxHWJeDbWuDVWqDzS7ZTwVJbtTPZbGHTq0kdQjrcui7XVZiOMC6FPrElJUUDrAupbS1glLFCipLi64U7LndfLeU02OsywIwakWbNgolmggSRQsp5IlZODricVd/VqTU2mh62VP0ixHxEOvHtkwEdQjb47udGFGqP4EUlg0ZmfiHU2EjnHWZhk+eTOQpvXjCGlU/inRmFVu52tkcZxTsONWgyrMqdIhD6a7JLG19BLIuzTT19USaNN210Nuw1GK5lVmdOwtWYoRpNCXehp0gSfYMsSyQrryAUvBzrASKn4QX+TlWYoQPnAqkgChxirPtW1kJE77/KfKt7MYMFZuvLPtvpdB7DR+SnMqRPBMp8eNsZXEMFT/OSpTiaGEUSj0RJIqW1l5vF7iMiwMuZ5fh9RbdA4hp3MaAwLxUISCov7qUoNsWI8rstpoI0KppShTF+VqrlChOguU+kMq2+kwbFElbAYyf35Hods87qI2reqRQutPv1HKZHdy23NZvbZ/jCeg+v/7Qv0JDjL7NyuzC6AoRteui7NMdRnVTwoofY+rvbnZ3e7bSqNwky+drRDUk39lWrqPkEyx/DGqWfiTGGL86PT978VypAsPnYPUYIH2BCLNa/X6P7tRahH0JVheG5k+BlWqgYox0s2DLENlDssKKLz972J8/CD4VaYmKDqoCh/HOII3OvHsSsPZpYL/n4YvFzHUnb39TpaKmzvdYNC/NjzkYwxInGFWbptV93tXvOXu/kBfWPgGZ6Y9T9mec/E2hYJZYJM1+8bSn2C9o6kmX3sw0RaojKEZfZA1vA3xH063ZdlZG3heJ8RXFC8xSpRLF4ZGsahIcPkkdptLNxtUCeWGe8U2c+duXgu97U9weZya0CxSETXlHY5lOoxtr/4yra8q+H3xmKhPIXra3GvnzJyR/Licvaev50gQFI4HtqKK9oFKqi0zSRjcb6uqY20yIAq1FbZzYgEySot5a19w1QZEkzYZ1ym2FltqYOOp89fxZ3Y2Boo6BjHaC6YuE6ExZtAj0BCXkBaBzlNVBFM9f01uvHy8DrnuO68uE6bRBVwy6HVY5GrdHmOOHuKpxFopdY7VFteDbkf/SLCPcBEocMfH4KhKmmUfAorUroeeLZYuch23SMO1uRlrm8UjdBrk/obIFuKYOB3rgu0MzIeArze2t4RQtt4aXo1zaLBfpwmGDfEgWe/SXhkojfPwOyRejbgWyd0WAGShv3o3YxFkUl2Sx4/29wY2NSpZAKycqCb0u7pFiFgInGCqyPLO7+AKJnuTS/TS1H/kuPMSJfj7FQeIEY0sW6bAos5Y2oGzI2xEA0xyCU5kzpA25ICKVpRUovMVA9Vxgbck+6N8UmUk8iK6HzOXYHGZ0kiTnF1NZTVLHlr1+grFRr/bbDNf3eakfAD6t3wJrRXYVIv34n0FcV3xFQlMU1uPnBEPn6HP+43Q2PqAyukfl2MGdnwLl5BOL82sy4zEIrYweHS2fFe1ufk1x1pq0+5asjesyT7SClddkz/FAj83nUlStZUaYXzdbQKnoSydTyJpYUX4Q7TP69u3w9VttNDt0w5Nd5uRr+vqQ/Y3JMFeOBu+1wF86F1PqrIgDu7mtSMF1226dNW9TDgxwXS99OH/R3gUKqkNTR/n9xp1EcWvNcrUEAlge5qewhSIobNr4Aqiu5eUUJX8V3tIzPdtSeTTFgRoNrVGkRm6K+mq0OKy2m1rpJpR8Wq0PMRknC0L8cXWEKx+LemNES29wVCfLgyvRaW85v0++aEqElcc+WkN/VBG/ZetzQj6X6HPIzQ3ySOfqn6rwEewGAVRlZwRK/fqMcv3HwAok7su4dkKiB94gQR8De6m8x6jKYEDdEB+yYD9o8QOqkvjgvkTKWWn1OPTQGkSAe8UMeoMIVs/Pq0oAi/LzigTzAy0H8kfImzQi5Tv46gQi4U38pegKOZDdgiqov3tcPkDqd+x1GmGOv0EpjaCV0SJuinXSDUewW0NyvM8a5QuXykNyj7olPgvSRnlFqiy+R93yDdTvmir7BaKrp0vByjkwlOUKkmEIxDpxREawmwScOCEj2E0CTibgEezW2Ec3TgrltEnKQ94Aq0YgKPIkccSix95yROoyiMob5bvRyl7ICHeDwiFFoRMOE2CdJoGeC2fYW3EVB3QGrYoOc1v0+YuXDoRz1G3xL86UA+M0xHPUrb6QZ/QpyjqgKUjBO8QcfINMfSgxijQyaqoSmQBvDdX8tAJ8rB7hKlJgkT+uePTgWxZywOFt0IJpPoqobCdiEZumq3ONX91mZQ8WrfWc3u+HpyOToknvDlWx+i0aU3qDFIU1aJDG6rfEdRaiPbDSgtCNZubYWyuyotLMS6G8KJsgK9Bg9xFdsOiBFUiUWjEPOixKaYJdAY261Hg9W4dFD6y4cIDeRr5VXamXFaJ7GcEBJwVWT32gSkQAv+UwVUn77khXJtjjDJeoVn88VtmLWhelQNTFCDfGVaBAip5dBLf4EbztlugbdPIYfLuLQ24Ifnhx+gdoyR2mgmji2mAEv/0wg1YjAu5PjnHVKCjHzWhSEL6HI6RQgR/HjHEVKLB9I1eqmICrk3GjlAn4BpkI/mAkUjusJbNQt/xIYnqDFHrRJRKgTModGz3dIOI6OdRMB6/RWE6OVoUC1Em1YR/Mv2IujTt2AknqNKskr/kzAKlbixdI0qBZ5yUp6JLeIEGdloMz5CW6Op2DRlp1Az4HSZ51OSEa2uuOD0dXp1PCnzov0TWM2qk9a5oyG3ah15dLeO1R3R2lQYAGKY1klyaUhJkw1wjNB3933ASS9AZKd9Sw6JnpzYHSHZ+D5F0AOSFX+48SERrEapc2xdH1JhR3dIR3etbolCiL8jSI0wJ8y18uRW++c0irRdea79yxESUhXSUzc0cdMltK0nd8HdIbJBgmpsvCpIkU0gnIYroX9UfqdwG3KszJ9T8jcYrDJYUqU34GTpsDx1Yi0cYWOWTSC9ikw2OdHXEZ0DeJhORfSRKDDW5zKmP8bTKgfuqCyoqTKghodsRC6mCJYoqdcYgkTpUwutgdC9m0twzqdcQhlaykFgReuGPwQolCGRc4jc5enroiMhGwSYfFgjli0mGrkKAxYe5ocHQVIjQ6zB0Rjr49r7QB267mlR59k0ihnjVel0UhSiYvoKCRXFqXgiSz9IJCF83ragQd4Lfn1i6W1tXsOsLfJDME1TpiMxGw7RyW7hygDnu76zZxQm/G75SfE9HuvhMJ2xYTOuvCHHqbwgGR/zt3NueN8RXJFHnirD9PJSgQYlGeoBGkS0pTGdukAPeVFmSku0rLSNYC1d75iXJSLm0qEwkKhKgCg8KdNz2VoEJoFEnujtNUiMKcrZHUS3/WFub5EtE4OBv6OLTC0utvBbp11jQj+G0qkPGrCyLyGNYZjb27+WivOB8dbqOdM5eFY28vRtsCjgf+pZRtYjjNy8fgptntcBmgJMmdzQQSUZsUM1wHVU4TtzlbG8xEbFOKqzq4vXdGZ4DfpEJjPx3R4NDb60awBB+LZaMkx8eCQFi5W8oP6EpEnO069eDbNLpbVq6YjPCVyTj1WhZC1GmxG2CuaXVCtmmRhcTZxak7Ixrhb5Mp4ztU4wCFIa6cDb5LKdvEKuS23Ub427u87hYI0jPm5RUHZxuZlZoW6D2IkCyFnXXxiQA1OuzwqGri2t2uokiOGrk8v43dKquXoESojqn/45LQIGGT0HBX2RGfiYBtOnHqkkuPvklE821rXSbSV68FVNjVH0c8OmwlEuzejUMiHb4qGWd9aIyvSKZytgcwxhfE8yi+tEAmWoVnFhgT6IoQ0f6AvL351oYL0f34Os7YQ9l55WJmGXhJhOlSJf5VGtfx3VGoToWpUtV7vtyAnuxd8zVKLnZqJpTU9+cnIciwN+QFzBZytAlmNX6oq+N0knWhptSP0mnWhapSJ0VL8BXIiGWPr0rI1fbDiJPWDkQfIssV7pDXRIYysfh3p2bW4ysTqstG/e1PE0a9AFVKWi9kGDCSvv4tI3SHksYpo0GAsntlnEucrRbJsJnhbJkXXJBUnJ8zVE1R5JJM4oKk/ioPatHvvAjfxSH26IZQgtsE9raKHtfQX1aBH8X66wQUj4y9KvFasR5KkiesxjoPc69dlMF/oQvCrst/1yWDt73vt1V7npdfJHZ7C6SHOxLLkbRtcjgAyOGuRKyXpHymyWKCA4h8yioExVKVyVYH6zuwOiy5OPOuJnrlYVE50mIQqZy3KkbfaxiJUglGOxatkSilaKej8RrJUunlcDeyVNgtBCqFkB9Ld2NZimHlR6Q2kqYYan5EciNpOhPfMchNpKmfAxxLeQuBKiFOxyK31xjleLDYsajNxNktWURrDnokK3g9TPy5mn8aM9C6tE+1O9fQQJZ7e1NRCn0yHmFoPbNnSXEmUZcp3zM8KtdBphJbMunxY64gwgXOIpyFMbxzLeC8IlmVOa9yt9vOUg4ehbhEsCZvUgww25IW86VoA+5kjKGxKvFRTHxNtCZ3iJxlWozlWcxWeQIkTNKiKU2htMqyivcZqhv4/YxVrhOpmoxhUsRp0V1LGifmWpcoq4hAgv4UvFfFW9QBIiuZcQ3kOcuU+R9v7FgRbsH/aGOKXLYJ+6eYbtblq9YiL9Dfm+MP6UKxmpyfQulS0Wb6PuaQKZNsxvx4A41YrspOCcWL6yrI7tIL51wX0lxsI0/DsZqbJBZ/KdYFzCnoiibo3kLLyl+IFDaYTCHKoWezivZvGdZlU9U4gkpJtVXnCvlrokV1d3EFUIHm+m3AtfbY3EdwS14q02ofwT3nFckm68KjEJ4JNFu/HJOpRuap1cX6MTkvRdvtzxybu+5h1GItf0zCqnkNpj7HrslC2jhHGidEUjUZg0ReabFVj8USrFuOrGCpaBPuR1S1UCz0qU13vAx3ZBMMmLDudw/b+d5TQSprg6EEyJOFyvxW3jBcJelipbhGU2t9OC4I9GyvOtPVB31XqcJv9q3x1NjdGxdzucuxRtdoi2MOcEBZlAC8jqpHeyxVk7Sj04I1xrpHBeOyqK5xVR/ZMmZCVefOrnhe2b85uk5WKM6EZnBD5twU10cnPBXsOCBxOn86qigPJ5oK0rT2CO/iDNrnWqE4FqhJ1YFzuEZUxwlfOCNHY6mcpGFarN9Zg3gRUp3tQqzuCAL1wPI6ZalIXQcTMNehupK1sx/Oih+brjFRB3tiq0R1NsRE3vTRmOqk2BU41EfjKX8nR8d9Pxpdo91FqSN9VNpjqcbu+9EYT0RauO9HIzwTCn5fUfSr2WFeSeap3cwxVdhimh715VVdYpQGLZrx8qctzhxxAaS/VVsll3uVuGnDc+K0gQWQSsRHrGC0KFWcQJRlvcVV3Ta+Cu+Xe5zzbx6rGqd3Mb7ful97dfnLL5dfhDumoxq3XwVfrq+NFdzS9gdmfgvqT7EFvXlJxFj1GyQkw4lEE45IdNhzIsbD1/IXM2OJk5j4hUGCbqbPRS2/I1+wZxPXrY+nXpXtxi/uA7XJWXUMa0zZH/Hyp6L9CfpCoWIeOs2qz0N1ZJsolCexVVJogvcofPQKRLOfeW1JmDpNWfgyQatqbj/z/t7gRs/FUWU1F6DCxvAMWpPS2nGzihHgO3p6xiq2bgHsQ0gVjyT7M/DNamyNRvMf545WXudhnowqPPvi93h/g/HqsFUTC10fsHYl+fd9Xs4/mykW4crD4Y3qSNWR91uOPiPi97L8EdyqlYZh6pGyymdnW3LHeKuC2/IBS4ofhGRVk2HlvaAtEjJsBUIeK+Thh5oGIylHFKkxEoCrUGq7RZLTmZ0ot7nx9lj5REORmVTG+sRWl3m299pnTT1UxFCshMD6w1qXW2nLUU3jsMy3/FSNtyzF1evY+Eyc7AFL48w3stc7ZxfzQ8K/Vt7CEteky/EzRlufDOOM3kT2anSTKE8c67IXkGrjHIjsMdqq2H3haR12rIsdo633y7wpQ+yVeaP+4uhGS88QV8Xj9IaMIoAVnwGuD5pJAil6Aqdaa0/3dEO5+t7aIcaSDqB8xfprPaGjUm3psznLCHHyrfLOyYboMdy2YECh2yPZIU4s/ZJ+GOugFNoVJczuauxpRKeqtO8CWMXImvrRCx9DqLlEhKpAg20Uh55ejkEVJgvgVTJESKVxjWOdwAhsXWiT1LGX4Zr6a0Ci55AKBIoDkCszgVsVzAl61JXTOp1YJyCE3fC+SXlP58nGjTl+grcqml3j8UJMJyMY4XNEtbUay23IgIBmezHwKpkS3XugXXAGuCqcrvPTFMgARmDr3vwjGa3ptk5ca1wT2nDnF5gKA/BofQg4+k5RV2kk8U2JSqAhaAS2PvKh0EvQI1TPm8Ctt3ue10mufs9qo8VHaOsez80t7rJ/4mwfZ0D9TIyrvSNDN0ogBx8R+Lo97PbEdICMocfaXGSB9boRmP4Wz75Y3/Cga+b8FmeeXjSUmPG+8AV4WzsABOvhEWLroxU/g9uSXsXZLZzwKZp+c0nSJwvG9vbLptSK3xZT56mEJbjrYw+A1UwyGW+7Vsy6AHwaLnaGpyDb2qeeSFZxqQUtQxffiPjklu6FvOknAvQNudv6XDfl5RTDNtftzLkTLZjAenTNCdU7e3lxe+aY21SGLsPzV+4ZTmXoMowq5N3hMt49OqYpEGTClQbnHYHpRIyFTo9hAFJxq7xj+s44cWLCPALt30Jckzl3EVQjHH8n+y8A9WjP91egVfZ3EISJtmEzC0BF+XqZQJUYyBN9brWL7XQobhLV3TZCHc6bnulEy63ui0FSMPMEyPJlvXfR9Q01OeX8pmKuBMafQG0fg4E1VSd7vY2UtLWMqVlwHx82tosNrykiZHuW2f2whq5foRRthDS35mV9akIA/AmUfnjUgjsq5qtnjeCl2RxDB7StEAoemEPEBj2yZqLluXII1jj8iGH5G3I2wnCFpVkjBOYBWuo8x5KMmCYYF0eg2Ykx4aiXFMu6zbdDr4Wl2U6ce5K9GCNNEgfxxmKvQEOXI0lqTLNwUt5J3xHJUAqpEgSLNWQNsJ3fpQ3iYzcslK6PT6IRWTEYPbR8/REdXypN5eqVoCSITSnztL5vtWgqep60Gda384gNtZ4NTIVZwPMcFizMT1gn1c0pSTSgh6KoxFXlta/SW5hnG+zdLWDl+BsDiG2YopyKclssY+R/r5ZnDSLe2KOfWi1be/4UyRehbiiQfduhWmuRsVhAqrQhZw3LRIasQcgqQlDOZi3/2KJ5cNYoPyyr0DQdnIpoNljZH+ELWAiQwYY+nJ6/PN3YcCfOAcoij12TxmXldWHCe5zRByOxcl5mUV0ZAV9NxsaxkhjCpiHWyW2fss8L7qlIr8jv22NoZ9qTytnYGiNglltzA6k52nrcFS5jlLSRuDsUEmtHpZVP13KQwq5Ho4VFe7hnPd+0LJZ4elYDOQNKDEZlOhSS5K+Tw3WyEaCWxdgzECGq9Be+hrMa8SddZgyoZyn0+MXBeNfB6pGxi6FZoaMYULMsxwIAXc9cEil6VPkZgmuuMjEG4xNdkrikKhaiR3QcEOuUrFyQHuHfEyv3XsKOo5o1sgM+ylfeljVpw/uILBdqmoDrn2I8kHl/3bOmX9gQp+X9DmRVc/Qjy93CXphsR3Auz37/pxe5suezkFqhtEiwF5IemKdwS+WBy4YAfUMR24nRRqrQ5sDtjqqCb0GumqDeVqPRcRt9cjJaP3Cb3Gr1eEQ48TNL4memF94+DD28Ky/O0/35c69EceKx0/yAnQwGfIoMqrqMiwLPZc3DuUWyTpCZqlndfFj6YjjK0Mhu+3W6W7UKJNkpFZK6CMxMoe1+/g2q4lCF1brOBGB2OtNkJ/reRi1digcozczxIJSjw1FSxExFBKK7YUUt0XF3lEiz0yB0FWSAZgreF451OgiwUyMAUX/KxWxiUOOxPexD6UWdk78Ua9Ah2VYO3W5kG/euO6RYmmWHBK6CDNBMwTyP2R1KYhpoZm9sEkA7HRqwlJUxU9OwiOVb0G4McC7GTmtgpBdI5uMZhXDv5I6k2A93EJTnQFZWWJ6fe1VTFISLY13KBYJYJmRFVjDNlN3vlHbMEnrBkD4q4EjZcoF2ynZQkRVMQ2WPI5/d2rRIlKWCIckL0czHW11u22MrvP5MeEoL2fiZbF/SWklLLAgHUpWb4HMllWhlLJ3+MLlSgGJ50MNPScPuDFQHv4xDVEa5n9K09qUfljiq/HaZ6XcY/hK+/SJgn9uKmWOtiMMrURSa0vA4cmJ6LMOIyPaTt8Tw2OMeRCrAtB4TAeIafLl88+7j5Uka2alqBMOFTK5Hd9LetbekiawE3eBk8pubnKC/zdOClLihAV+PdFe5jJ6fnp6j16cn9P+/Ob34jv7q7NXL4VfPSWGar3xetu9k6PTsdHf24uLlPn3+inxc53kSHojFzkuQv5E+Pf8t0eJJm2T4hPz1pPWmib+Cy9fPT87I/w8InT+8OH/54vnzfpj5Ic0jnLyOcBWSSYLq4I8/+MvftT1zoivyux/osPI3HNbkv599/+zq/cfPH96/fX/91+Dq+rd37z8FHz+9++3D5dWz18/+/T/bk4A6zi4fWAaM6uuz1//+H99/fVbiNL+jU+vrHUoq/H3/4RUbg9l3XU6CUUb34C35DTXH7/s/0tB9wojUmEbhjZ7mGT65qZOgjx8Jwt3Wn4PqPHw+/QanZPBjeZy7ZLsCOW0ub34VIyBmufbVASXCP5O5PKoTcUWyu/Qi4Lf5hR/Qd2Pbe77CP1dJwCyZ/rEuczEB+oQIO0SjqbcbopOa9L1sH7DDvuCAUdQm0BGVWP2mVVx1L+XGx7Q4i+sgCqNQ5TucNiqfHXYPSmKTle8YxvIJqMk3/RMcTUV6fXBHbGHz0zu69yL7amQt91EutjuaF7/NlC/768P5i2CXUIusDk0d5fdZgFuGkhIsSHGrstQ/YK+5BQVS+IZ4p5KPqpie3ZK6RvR/p9LP6EWsOk7ljFr726DNL2Tws6GAHbltfDu6vLHxJYvx5Opb/5IMWt0NuNXvurVRQNdE7BW6rQJsCA2YGyv8tPuOqnP0AR2XySzQJJiMvl+f/cDH+dcfP7JffveQJln1mv/2x69fvz471HXx2vfv7++7SYjYu19V/uf2oxPMbuR/pTNoO7yzYnXZtL+MI/ZzE560ck8qXDfFSRO+bUnxc4LWRyC+KStUROkE5Y9f2UTFcixV9CVvMuFSJ6CVdfI/6D99+lE/c3U1+iNTCmdG6kwR/+t7u0nrm1EinyaucE1K7Kt/RF1+fYaaOt+TJc1JWPazQUifhPpm1NyEXfl/aAV/ub4M3nYPh1V8uOj+SAce4h0R3zu4QRU+oaEdoz9PPZaA/3qGsfBMJN+RYYx4dAlx56m/yV40XX7ROjGdI0QnbrqCmH7TP4MWECiU5PslzHjiD5OcxvYuYNpXO3j02dafFxL6Ob79QoC/+EKOwXiyTClZuP1hO70Pn8slCz9foHNHpMtlyJ7F5epr06hOP58ZRV2irKIJX+XNPnU5pBofHIoYY/zq9PzsxfOgODySeTKh3VCtQDvxtveRFyVG7siK/oRfTWvV3S7eTRxjyVd82dDFmQdRXJGxITwslLD9vRCfxQiqgss+FiJzL0YVW/75t+WEXOOUPmSB/zFH9tGux/ejvZr+v9uWnG0jfb/cEiO/2uPwlviq0W3A9hT8Axl97xF9oomOw93bkpOVJYfXKcmGcaVi/C366VJ2X8S5Gt9J8dHkIS0WlfEd3VQa74QEpAlKupjtKhHm1Rb7dRxOi+Ko8RGs6joy8gWf5K+K1EUiOW99keJa9m/HvP149f7Kf0vzFr3v8timVVyxmT0eplt9ANKFjcsSLVQ8Zbluebp5FKYXFwZl06IJUJnevTIoW/8ejG5vrRV+1+6XXrUvmH2gD5hd/vzl4vzjL+fPe7h+5zJAYVpAQ2JZJzJGTJuHEJrmDem8KTxmvWmWmphh2gAj0m05aEjy+eBCgqGmKOg2s/PNoUIXvEhkM5wpJAZvqnbwBQbdkdEeuqn2BVnSg2PG8DTjPKBxIMC4hx28SulWNTBkfA7dRjECH0viNu0KLCjdcg3R5pSviZqQEcoB5MMNgh7tOli64RJn4DN0gtmWPjSqg16VwPeqFMXJTf4AjVqgww28i5JW0P01vYN2zYowgx6gixLa5AliQJNFk+U7MDJxeOheStE+NgIJjN2YagXu91RktO6P+AFB4d1zF+Ne42Lgc+FJ3kUIWp/0gBwWchKdAwOd8n1zEDRiljVB7PlagbbbhzSgqqybYgS6sVGjBDonuoE5HDP4qIj98ZHQEOyzVdsZCI3zYS9P0izzBmWHFDR65KdlLeQGBSqr7RFjFaIiq2H63JpFFXoMfR4lrnAdqCz3J4XHEV6zH7cqwsMM+b4oqiq8PZLNytR5Gm8OVdMyQzZe9TI4i2L6gHu1adfzcs2mozctUSVxpakE+k5no0qM7whzZas1EC/TUlMr0odKdiT3YUgsA/PXthTJLlDaUCq70sTQ9wq7xAuQbi+9pbChBr4nz2KTOvF9jN2W6ElhLnYorCY5wVFU3nWiyU+KQqflhnNUveKcdNJm8NEuNxK7URyntNioP2CVCaQtRSM2WRn6HwZFuiAHk6IHtLlJKSnWntSYFKZRFBrlkviG/o8Vffvx4oIdzSDl4rQpZzGx7Ey8DVhRa9cp0FB5g8Ks8pvlaJ2ZFaWK09GkiNIxwazE5rg9+T48xJuL8mmB7SXc/Ht2hof0aq42p86KlAr9dFRAYRd++r3SykhQxEQBKnvakwIK+zXz7014KeyPTL4vUbprMj1qpWbDVHrtrrZnMC9CVjRaRfSNRfG0eVJGZRXcFqADVz+kKI1bvATt8Vrf036oUwBrCuD9UKfISryIuADtTTrf026h832pWedKT6XcXnWK6CuV2d5GAbJwi4sDLlHCLHb4UXGTbVSeSl2W35BfoijO2SND9AJAicPa+3uDm80BYyiXsAzO9DVp5jEbFFQvQqWQGTnZdI5nRdq0iXqFiONTe5PLO4oFTcosXmVTL8pTcZhI5W+0qhfo89wrFhm/W6VWhMWnps1DH6tK/tuuNFl90juN6iAqx5vD101R6FgxY0XHiCGc/Ib9rsQJRhXuf2abgw/sqJ0s5Plft1YDMxnUeW23b/0O7qH9K/1LUBU4jHfbuzlz1HbtR382L8m9/XYLMqBLSEW7EoLtMKqb0goi3W26LyulNTpGX55npwxz/BCT2SgLcX8NePiVPWZ/730U8N2E40+89rdqUwWMKKNaFYhmXudeYNWb9PPl7bumvMNVcHYa3eg2qqGoczBR7eXB7sd2GDBrGRVgKMZUC20ncAAMrYUxphHPwQJQVgdRfDc1C/5LM76K2Ja8hw6qcovEvbDxDRRLaUUdL67a2jaFEFOTZzc23iS4/S35D1OMkUbZH4efTRF/v0d3nBf7zy0cMnmPM2/QiwPDrvviIhkMmEq4rSKUwtaWIpJKcKEilEpElSJUdrft1omg+rOPWe6BanP0VUSjGQrAwFgOAjC0BBSNtYAi1DiXQtea49+ptqQAJ7YH4pWb4JhUTIDDThjUVS6Am9avPZbPto96OsTu2men9e5n2/KB0l7IJorC0aUKRhDXabAZsbOJ1Chs2G6DqGz7bqLcWXCJ4XQTWyqHd4ne6hT7gaw8tzpblBLXqNzjmnhl0fa28CbcoGRbpEZhB3YbRGUfdxPlTofLIhUSMx/yb0/tGG8bZ/y4hxkSreCIkV7NDnz7GlXKI+es5BDhZKYTAQ7GRCsAfIaX+VCxeRasA0evyUcoyTNlb1sB1RSqqWtjpXcZE/0oRvuMdBF153OOtH33SVIS79KL8yCNw1J5ypwjpOcPDx4LyvMivFNetSxg2uRoo0xDuhAKsSrykhalmRGVTVFXHlOnIYxC8JKkJGs+uwGghVDaj11DMCzb/V3xOEaCUpJxwXjk6g3YsHz7xKRVYUuMSZ43apN7nh3gkOfqmwkzVJZzxJsk8fMoTVx5Z/CQpl1HAGmAROdympuIDGbksxCnQ2IXbZjFvGyNM51PAeFG8ykcqiEUncjMSo7mUDMAlgCbne2alWfBg9VJZVSYD11mktu8QO0v9SFYvIVgBFEJAZKh9WG1UzQ9bjR90NhZz7ZTMEgQOiedIuhxYNkadzPttL/U5MKRpprhSIqcJsmtOk6TX6py2kbS24kR4cUQ1Li6pkhG6hIh6S38FfD09uVEgDOtUQu5o+mjFLU3ZDcd7ml0vzHGiO1A+lsZPYaiftYwmKqVgg6V0dQiv6Rw8QxPWVMspq5vrvaO20oeKzUAsoYPcVUFxB1SiP2cQXX6GXFR1YoIYMZFEWqShrerXftLVGweIyqgaA5M20jzHH0wyPourSoenB5HmK0nHygvDnSBlZcIU2Buke0v6SrPyAonKJrT0TrSqJUV8ZoIJ+ix01j7k6pueFlOgpfVkzspy/KKvUzZzZsrMczm49wb+cXUH/fu3mudPM4OAmnPLby5lc7l6igsP7jHHAXIWqZkkEZ7YNWlu30S39jXmQf5ArNjedFx+9J3VTc3QIj0FSpolgTTXot12VS1F2K6TIdkODzGZ8/xd3leNClI+8BQlw5Wutm1VX51q0ZamD37xB4zNDKhdtdvtCGzdkamjKKhgl2JUkw7VxdI26UcLoqg/1ufaxceWFfrWrDQbFeD7YxR2dIBXAU8SbKOScqA6VbKSLdmkDxAsH0dm+19+MLnMdyCm7QdjV700Y7uIHnMZ9NAIWU6cvQFNPYPjeJMNJ2g2D+8tUwN26VZjdgTvfFa8pNtoK2T81WE8awLBqQ59opBVg/AZCjd9Dy8QImiqCTOlNdmEtQktYDT4NMbmFchmprAa99UMlb1gKdr9Sam3pdRH2Da5wg7l589w2P/3KUQTnaJSEioHYVuUBWHSg8kCr43kEeWTziLcKQhcl5ES+oxnxHXJGX5NKW6NOK58tT+1GoAVCAG1CK1V6r6Oo+9mT6oHrvuA/JA9QxMm4yaLmafakspHL3HrUUC9L1aZcmSN+1XBUvKaMk9/hPS6tSO8viyMp1hcc6XqbbvmfdIJjSO+MC6AjVWDf6ahr8efbZWsg0emDzK4fF8Qqru5BaeokM0gWnjYlbuq28XbttZr3iJeQUm9/N1PPR1JH06bfECZXp7PEIEs2oM5Vu9GtnaGEer6LCSRbjysLJ7PS8dhim1COmhx0Zx0m9zMpe30S4ePX4yw+HdfurCGiqEY7F9HS/J93tibbSJ6faoFb3ukd8DTciouuhqofYF9b/I3x4e20WIQemKTl2mhY1tlOdNZGZGOppR2cnyywyBR6SZFX6s9bdIphD0mMdrXyr0cLaP5aHq6zBdbzMqvJbwZbVkO+KihN0JI7pYydKhgLMaSKRSviH+WPgYGppCCzIaccxBaP5Ssj4ng1gjv92tgMM2mbytO3eqQOblzUrSzCNrcdLbpY1K7vU256aFO5/QpCxN4JOgR0N1tWeqZqardXQ6K2rsLk0RdF3HrnTn8tHIAbQWgbSKUqJ7z0aBmhuos8KjZZcZAFtrreWpXi0+Pqo1AuidJLaZpO/Hz3AmDtJeeS94hpUkxoMwLas/BCgl1BKW7CNf2M0Wf+VZOWHxfht/6Qx4Zy8vbs/0FxJrkOevwCGjCnn0hRF41DtcxrtHV5w5OiiuORh715eYLk3WpQ/T/TDeA2qPJZoiWgkMFoMlCetFlIU0r+RqSYV1QXuG1b7jENCndP32RV2WwNO/aXa7UdBz+6PX/pjKT9ZNQNcSMmrhtcH6XcbA9o9GuO1D34xX+98WHHmO+D6eMCH/mSS5LH7ZEGyFWX2Iy4i+JkE7DOsr3SPugw/Bf5YPndpIZSx78EwbqspkQaomUPeks6+2pAYevYT2UpaTSBuMjODSkAFtMLqTu/b2hi5giFKcJGCNSlbMUEgHRP7v/BQUrsgTmTOqD4hpbM/mSKwDyXLgQoHJ3S1tKJZO3Ds/kaU01QekWguKCszscjrJk7Gd3v6AwqzLICpvoBp3bRtGHwtqPI8OUP0Vh5HssQkDKDDLwOHfCiSN+dZHk4XTaCPRB+8LqMFobVtHF2sPNoQfbiPZLpU2FBnNIHsj/zfs+J3Ktnv1gV5AIbWOJXeoIX3KjCZayqlHDjUWZXFVB7f3QGh5DNUahfSFCG0k2QaQPlBYncluYpmAQdlbt2cDDAc5r/eYtCAUJvErzy5OwbTYXjoOUBjKX5LTBq0QZJXLmPSL6OwllINegk351QFBLSwJ1PmLl3BgL8A6bVVBNWRFnzpceXHdCI+tZKqGLMmhzJfB5vltDMmzjukEBgRYH0qMVq4pauPFKRzY+iNEumgPL07/AAgVhCWUNXM4qDZt4Spb35qMvfxPYEAB3Qqq44w99pVXAD1NgE0mojSu4ztI7NXHyYzwAFz4EV770OT69TUbWHbLunLSbHMZLpqPAJe2M/UIDshhHCFWmOsBEDL+HVKFqwEsBnhrh7IGcHcoaYzxeKQHO3JYOQlRQaiyM/ZWNgBOezhgh8MPBSxB2sMAS5CMhmNbNhDfvwYYQ3vEdvvarm4tSHBfItl1XBMky4rZTAUDyHiL2rJqY6yt5PGmoHeoiqUPaiiDdpvodhWOrEcTtj1tDxGksfQ9Vg0csta15WLbPTC95cmeFAIA6kwwQNJXrvXgQIyv22O3rF+LEhR5kkBC2dVt2BC3o5TKko+oA0AMsWlR2XncYyCb05AxTrmWRUwHiHjM0oQgqjh0P9uupQoUrbzsrowifX9WGeHWGgDCP+hQLNVxC+GjFrcQHmq/loKBaXeLLbEqxH1MMKAAkW4JjGZpAwMaiA+8xIPjl8TypNomePRRcDB2fP+CdssCS1/eBgAGY2zvh83AwJgdUGXr8M7RwLgB+XdjRONTaAEYjZwC05x5GJYArL1GFcRpYes/jkGtVyMzMDBm9vPqBAuOV5LXwShmGo7kDBiOcZ2X9BYPHFMOaMeQWAtdMgYHnACMy+zg166G/MDXGoQe9FqCsIcZ6QVmrpxgSBdpqSYaXm6/jcHOT5Pq7CJg+TnswIazUzutsYNJewhi5RhZ++P90SYIjO0w0x9l2sOwxQoQJY6lzYuFA6RFnmGaaBDPM1gPv9G0TGXcANU1ZleStTct1GVYRJlrCDFZZGjAu2Uf4V2caZ9XqeObReqq4xu41urg/caswRitLoWAk2ZgQWsuOwMVw7IU64fFqAuhFy5R3Wgva9UlmBzXqqOzTRtI8FhkT0ASuncqhsEaZhJY4E4Ga1cyjDZ/1OHNjjPU8Q12DNTBZ0OESzH9EOFKyDBEuJJgsPO6Dj7pxHkF3IEX6MENKskKtraUQ9YprccY8ORy00RxXWoFGiad4NJ+8tmSVyXdrXR6odyhWDryIlwZHKeqIIdh6gqZnkq6geYXuRyh752ppO8ZBhs6SvgHdOaKOtsMcQf+4uzcFXj/awfg/V6FA/J0PO1+x+JEAoPAFR0hpBkcoBOj1w8AVAJOOjeITPNldI8sJ2GplM587MDphml79sQshwZZmgQnKMD2Cz2WtghHhhu0W5KamyQOuz8YBYpuSGAvMPa/MosJURDRBwmbnP9q4QNsrmxIAFx9K0gCm8xWJemfmqnB5wX6e4ODXZOxtxAdGO8gxH6dLxNQlyirSDmazcZtVcaS3NWHX04iVlzQTLJZKM/7aSCoeymW/CauqyC7Sy/ghvX+1djFmOVSxMqToJYC6tJy4SxEng23DvG7m0tsv9OhHIC9ng0JgDsmCpKMT7O1JOlHVmjBw2zMyITwYd21IU/FOLSzqSBXTcOlHMGax3OV60YSyHLYUgJp1pu1GrJcmcZY1BHsQ+hlKApiL9ftmM8S51VdYpS2r9kpJ7jhCLyQnlgjSbTmc66KYiu8Z5u77Pnwuxjf+1eXv/xy+YX/S5XIBkzw5foaiBGDalmlKGbm8x/0v/OoSfDXZ6+/PvuhKPO/4bB+/fEj++V3D2mSVa/5b3/8+vXrs0NdF699//7+/qTNzXhCjMqvKv9z+9EJptGu9MvvuJfBipEFd/vLOGI/N+FJK/ekwnVTnPSWecV+5HvWYYmj6mQfhqxoEaUTrD9+/Zp9990P7HImtdnqu4IeYJWtxJP/Qf/p049+8Gf1+iNTAudHak4R/+s/nn3/7Or9x88f3r99f/3X4Or6t3fvPwWf3328evb62Q9/Iqr4+vU73j1+/Prs7OT06zPyG9JFcrrPRX712/XP3quvz/5EZBKhXCb5JEMp/nFZ5yZ82x76L2pLcUnxApNWvQrJv0npDu4ZQycfkP/7YZcnZDwYRLRb8JNvui9j0sb9d3Tvpk16NMQdkL/2wVM/ci3TX9LXhdhvdiipcKvSVfBJ5DM4OqX+cP4i2CVkcA+qQ1NH+X0W4KYifcCRwLaB2IIiiMIodCSmTeFKZq0kuI/yvSMph91DLgg7gRSxfM/UkSD2Ii29iumqJuz5csfaGltXQhvHjRj6ThU7Mw2IxlzIoHsGAX9PygU+tyrW5i7w6bPEfNQlTs8RGhunjQspOE3iG3bppHvcB14GH6raXZyAjsQOhAxuS0BnSkejVJcDPaAYbEvE7ajIHw4KWIJ0R6JuckS8QpripMwTZ5ZMbau6dzVecXWRHtk9Ee5EDEsW73iEb9835qIO/YVZByJIPZodCmti0dTEHArkzbMvMRHRTpOO5nh6kQcT5yii/zt1JKVfBLZ+5B0Z2dzadcUeSwjYYwkOR2jqTLqfyQ5HcVuQCxE3ddIGbJJuQxpi5xg9qM7D56AiurN5x/3irrFfX/3gtwvW8a94bqXPqD6QH8m4RYsSFq/9P+dJk+LK/ylp2Asf1cEv45BMbLmfsoW+z1bMfmuI/k0ZPT979RL9cxeP1snul//sp+/cLOWvcUqvhGPAxTxq6pyoWGk13074nfPdnXyRT/pNmKGFls2mYgjEO06I9unGIzvk5DYAg//l+pK4eHwLqAKFHm97BoQ/SvI9tIDxUBjS9BEVtPbbR1lY0G4/lTsCB2beDyAtPnjjLvBd8Wety95JykKH1WBiWidkEOa0TnNhwDXjjkj32im7jMS7S/tAC5iw6UwY8PETuj4zKex8hmUCcSRvugXlopcuNmxdVWXw5WKM8avT87MXz4Pi8EjW4Ak9OwA2c6G4di3JhjxoeaOVirOuK5QB2UzMfyvp7wKazPEkiQDBu7VPu55HSXJD/yOKqwLV4QF4ZtsUBtk0XBjfEDtS1VakOahbRpPhHadiMlEOaoV2k20S4850pLVNvyg42tpm62jWeH0zO88WrnNmRbqsW4JvJSXeMbrS7yWlrto3CD+gm2qjqATg8ucvF+cffzl/rlRcxoJtEWkgCO28DQcI8K68OE/35895J2qtsaqbKM5f+6QVhqdkW535IyX4fX38lpQvQl12OT2iNfFDmwKcqQhWnaqgX2s24/t2FLBtx54/Oj073Z29uHi5T5+/4sOVqY7ed0+eS8EtG7UHDlCYFtBse1A4lr07BUiyxYTjmDYPoQNd9rBgTG+aEqXgRHtUSJ516IJniwrGM0wbcJYcE4wjDZABJ9mBwrEk8of9B0CiAy4c1xQR3CosY7JEL+EpL+DhmBdtDmdYvhwUjCV20KswcK9q49vgafawYEx3VRnC96seFYznvghL+IGqRwXkGcOrswMFZRnQu8FOqPbIYHwPOxdW2qMC8nxwQfMBlmV8Dt+TOCYcR+TAL+lA4Vj2rwzC8uxhwZjSSLkQZeBUR7hgXBPi44AT7UBBWT7cIHgPbwwMznacW9AJ67EAOPaYhY3Dkx5w4bg6masS8LkqcTFXJdBzVYri5CZ/ACc6woXjWqDDjYstlDEwHNsKfoLlmHAc7+A3zjgmGMcizODd6A4UjmUJP+RzTEiO7X33xAnXMTYY5yos6Wln0WbcAaU8hYZjjF2NqRNkOL4O9nsq4P2eijjBfSwyIM0eFpKpi83zARaMqRuPD97fa9w4fA28x+dmUxJ+T/IuQvAW2oGCsaSXfsFZdqC2LFMetglFcIxnGzgwj0WAoSiCdRI3oPTpxkdbf15mCqChY7pxMXEWKsbDLK4P1HkaK/TBlleXn3QopaJ4QWR7FsUoy3Cl4P5NJU9LmkpvFFZuc7mN8qJMoOWqwioD8kzLfSkzqUP+SR2pQykzqVUSV9pV7QsZyqxR3Wjb0lBqXaraODDvk1Vp3Cfbdt+MsuK14SkCh1I27aYptC/kQoN1nifhAcVbw6FlA8gU0mZiUdZIz7bPwtuXV2oQjXnJdPhfr2lQ4n2sMV4MFe6yVs9hNGZlmfYtydiy2IdhUJSYBwybs1nigNkEsAMy3AfSdUKmeTpMxr4pwnbPG7j606L+EsnFAIWK2KSak8vHmrWM/UVpg+F+ev159L6iOZMxigGj8TXWUcNtdrgZJTmMoZZYxvMwV+n7Au1MStu2kxGDSWlrSynoc+EKWzWrhjKAgFmuHaERiiGjEle4DtQCFwVUpsWtRird4f7tx6v3V7oj/VuaStDIJ9OPuZ9pO0yruGI3x+NExRJZ/XxKuN8/WEIYewgtFL/VY0FmhGDMpf6dJRbCDwqLLwGRaXFLjRB3x0IbvLQ5B5piK0wvLsw4jEsbc0iLJkBleqdwEUTAYVL6W/UU2yS1umMHS0/1NAu6PjPWtqfDE/CyEt16blL8W1/SDWQ37W9SV75emRQ/lgFKVJHgKCrvnsZkiGxlY2l5dtbCS9osPoc75YYcpgDfuskmWOFkfVpPbq28JJCuzThMAb7VMZs43ib3bkeJdMz6of1wtsjks9lMvK7+qOwwvIngbOxnnooYjJ7+Dat1ckqXahS5aV+m2c5WB8ZNP5Z+nZxaEKUiOf3gyXVy2Z3KGZ4iuQ7M9Xxh787Nsn9X59vzpEgHvX8nxAPseJAMBzjI7gfJcIQH2QkhKSbwFFnvgeLXgT2xBz5OTf80fviYgbp2x6U69c6RbNp9krKfZnTVMc0tciNAC47xFLN7aVN9shDQXMH81tcYk9Y30wGfMedIYG1kRWsJ9cRDR5fS8GmGjU66eq/sSnQ9coxgM1T0qR3Zzoo9nwEHhBVNFx/XafAKgNkEC4RdiWtU7nEdVDXhA0BxCQjCk6ZiBmDXwcBwqoBIVZCs7oBUdaejq6ecePpxRHl07+vMJ5wxAuBIZM1nwLGaAgXDhyk1GRjwSGmvOXh2jVLc/yaxRjvQf61FrUgJcADHRQBV6V+K2BwX7VndgepK6RhJxdq/AYd0eH/jCVzSIfbD0wgA6zQ7UGfzoAzMuMlFgB4qClCGHSAsS5pxOUJJnsGqc4YLwXl4YN2W5YBkHilRauxVzZjwsuY6QRX2SkzEhP3T3WYqEQAZs4pitM/IiKWziTfjM4UwZoLTG9LIxUEhAl1CZIJgzIM9XVKdVIYkhuLGDErSB3ONNfyMwVDcPLaKZaJucY15zEG+tSXL8qg4VpwkVzTXoqh7DyOdMf+BFfcHlGMmCA7zssYP6YWtDkYDgqkeOir+FOuY2lD1mFYUcbCwBPrvwxFsYNtfM62BDAzeX4Nk2AE689dAyU5xAf01AJZ6Fyu3eGFclLnGdpKc14BkzAtV5kx4WXOdNHVt00B9cSsv2nhg181KushSkF6cB2kclhpL9BmHGYaFx3r+8OCxywxehHcaIVpzQgIgC1bts8ujBxJNGE1BjNlYToFWstkwWTZFXXmsyY2JiICMWSmFXEqI2AZ+Mpu3HeLnIJZs6COO5l1nhmHHxY6FlfxOgjd5JVmfiQDHdh1qSmUobs6gGxLNSYwRzDeHIVZ1dred6GLamzyr7VFYXHlnxry2QF2wNR+Ft0Ah2UKStD2WGL2gTSeifdle9z3kuU5U+Nwkt3G/jYML/rYcqg5PcH5BpJpuYA+82WbYFOlb2wqTVVrXukaVbpc6Bwg/gcKQJVudh7n+GCygNMb6Noyc9kGaIO2pLn1NSJhs+LKCw1WwBd43bfACygbDaquC5diqk/jOvaXRFy2fbiwl0rWtizPuR1GO8U1bVMdT14y6unYjVab+Dpp70ymIM1PvnnSIailom1BbbDY8DVjftCktCOvaFK/8dGAasJ7Ytiavij+NbU0oqNvWpFhnWwssG8d/+uK6ZiD1Nj2YkOr5s/B6l0IUWAJdC5mCEvu/Q7XGYYyI6Arotz6kTO3UUAt8SFlgQds8ID2g4F1A9QnAnnhIbvMNP81YzHMd08uA6oNIW6hPAjGFsEqS0EKR9WKIqypAId0gseS1BPvWx4qxQpVNnde9SxYxhYBvEzteS7Cn7oIJxgVL6P9E3bCXr2HtfZkhWe4YxarRe6TWHWjfZAChNgMEZNk+uwxHssezmrqmoBodZ05PBPXND2WDRZpUvE/ePUYBag0LQnOYJx682rjPJ13StRToqZ9y95uw7nrgBMdmaJigg5ACWmP2YKPzKiB6U8RvfWhoaaMiVu+I0+rzwWGCA2cyEKSAlmgTsADt+C90Axe2iYqwoW0diC7caa8AEswqhajQZNsj+UAjKkGZ8RjaEW2N8ARd2spBCg7n5ibCCXp8mkm5la0+u7Tfd9PKUNqm5VsUlmv2ZcoS717Z0JkBfetzHNehsoXzKnPTHkp/q9kecbqdONXsBSoXDYLV0uyzSo1f8sFaCfbdjSXZneJVIdiRhIqlLjm9Z9dFdyRxdqviV7e6pAisH69DGY8zDJau2HcJqg5mrCbF7ZjQfJ9mJLqS3/S4Nm5E1d7Eqkn70rywlaaNpFtLVdvGEdXbNr5+ZqimHIbiAHZuRKIr6drOk/jG3M5JYUb27ceLC+ZwII2qksK+CODbncm3dQX1Ah1OVbdqGSt+1VxvO3YpMkwbTYG8hKG4vFRIFTGVx4uYCcTa9cM29cOKeb+mErWSfC2F7guV7GwTkV0RM4FppWulvISZuKJUeJRsIo6XMBNXaptMaWMylW6HqCy6Q3vSqCuwL2Qm1KRPWHYJtQDiiUS1GGHDdJyKnqVsSlBwJ2hN2iuTQxnDMfoQK4SMTiR2RcznIE156hnwheLYM1RIyU+fSh0VNBOu+iTxRLDVi8TMIBRu6MxMyPT1PjZjq93amCrX5v1jOgajdNdkul1lVMpMrPIjZBOxmg+PSfwoXQWXpm/tca9IT57GKxVSP0pTolZSQJlQs7FhUdbCldOT3BUxd+X05PESxuLM9DstaO5H6knlJcz9SM3RyKbLVLoDQmUxHBCXMNwpHFtOBfaFrJxXbaG8kI3zqifTchxSu/o1kah2uwt4d6TAZVwccLmZoQpqi2QQqBx7NxRhfr4Q4Rvy+Jf8Nu1gVEOWeUGEcFSzKBEhqWsRJYqTQHVj0ubwTKh2Kn1b06xifse0OwvrylrktyCA6U5hYJMT6MrbkWjXGe3z2QE93lOYL1c4ieHsKCqmaVlhZZ+khcHsMKqb0pLLGMT1rn933dwmOeVNovOGtFx5BEdbbx1/nxT2xyjHzMYYY4xfnZ6fvXgOoocBzlwdA4YvwDymcn6/R3cw9sGQzFXCivtTJCeKsOmPdM/Mpi/iXXlxbqBtEczD/vxBG0refLRqQVXgMN6pJF+dD5CktM9o+T05X4yr3qimNn4cW0BNne+xngOzPNRlOipxglFl3Q07uK4FntOj2g58+8x31qS8fv6MpL8p5ZvrtUXS7GOrhmIVburJSG2d7pmoVAAbVDUKbwN8R9Oza4+mrKa+CNdXlKfdPdVqVRweg4rYSHicSk3FHXNCLZAX5hnfLK7gxnp9e9tunwIFYVPe0bjo0+hGfzHDW2Za5X4CmLWOQJiurenU6PyYNTo3rZG2vQlVQIkMdNuReXubRanqMmjLYWJQHTTZGSoAz0X1YYxKBg2k2XbNDM5YBA1sC7BkjXjaTwOjUaKOQV0FgmfaXSYgvggVcvankNZzvZDok7UlyuogirfuCeipiWPatykH8mXokG3bwVq37yrpI7dzmOOHuKpxFposxey37lbxRs5toxPyvtmuo1p7fA/K0BRHSKKtLsLbFwsz8wNVa2Noo2a1MfdqDT1BUwfS9jRGrQ0glM8332eo/3DbSGZnkilSPZMUTVppo7NFKBnwCUhQYvpL1dYkpP2uqC+GsbmJ2cHZ0nFygjN7RiKKSxzW3t8b3Gipb1nSIC4hoenBPAKnI3lSyEaop5iCTSDa08q1Nn+PgZQPD3Gi8FbGIHpSyFQoGahQpi92KGYoeEeAlV9/mAqfFTUkYCbbWmyBwltsWvNFYVMSB4Vr0TPRB/W70EuBWsfpnUitE/S50CapY91hZFLIsKYtRobr+7xUuJ83rfGisAGJKkQKYcKD3O57A1FNUeiP1ZNCbgKG5H+YexwHVEb3qJSvnZahCTkpcqQ4NDLvM3HrCSK7Ovjs2y5jw7SgiR11GGGe1WWerF//WiMxB/iG4uDmHKWGPKsfzxGxKGuj59WMk2vy1fJMAkffRWV8t5nvTLBko0+sNfztlZwg0HfjnyZBS5jLr/v16m6r6Yt5d2bOkb7pvAGc5qZ9rVeY2x1HeuKMHOnD+Yv2Nn1QHZo6yu8N85roWtIifWkgoMKvagDsuwrAlQ1XULazWjlnyV81c3McJ1DC9hnsJ2g71T4oajveAfXb7klD09w7cnQPXt2Jqw8xmTcLoq6t5GDLGax8LGrDGSu9wVGd6ARYiMOvSrWUZiuWibB87qOq9Eca8tsq+5y9zyn4HMP6JDVazWSiymaEY8kIVdkZEbVyX15ZQ2MkAFb3ZVzDsOqRLFndoAq/lB++qFIaYCz5hOxOijWfAQaET3BfIvlLUHqkeixAZrZ9b4ZlyQyvvJqlygirv5q1zoQHZEAQGkFZ84rkedbUGUWa2dZkXCoEQaZFAWgx9nx1hpIArWRI02m3OaAlxzSyVlcLYc0DpvePcGxnk3ifNfKsMcqzSQ9jyycL0ka+J6TMp4ex9ZVWUuoo+0nqGXbWmMhTLCoTUc61uMoDxlMb4VgzgvHSRjjWjGD8jxGO7ShN90sLeW5k5cF5wIFhFBR5kkDR6sFsPbW6DKLyRp5nStlNGwFZcjqkKIQhNUGCbEXrmX8GZhuKeEBn1srqQOy5nL94CcGGw9jzeXEmD6jX4MNhbHtcnlU1Deikb8zYd7s5miW7+lBiFK29XKLKbIJkO8vwk177aWYEBMSJReiCEevRbK3sgMPboBUWtOct9itxMaZ1f1hNtKbeEXRSr6n2z355BsBPBgvM9w5V8cq9c1O+AyzA/kKQxispu3Q2GXokkLU9kO7mYLZr6aLaSkeovJyeQAHwYnlRQGj1SACsyvUAOB1apcFzSVJedYlWQsB1aPVIQOs36xOSW6h9mrJCdC8sOOCkwCvJ7lSZCfBsPcoqad8+7jCDPc5wiWosD3VVdjPXsQGYgwy9YyAATgT67CK4xY/2zb2Es+SXx/ZbqhzDksnDi9M/WFPpQAC4EFcQI4DdqBkWDDN7l3wMBMNJHmapyUnzNe4VTpX9eeYYCIAT25kEU9YEDY4dkNomaJbsIoCDxAgm6oLMuN0qMYlpGhXr1bEIEYwlID1Y7SHie0LqrsMDbF+YkAghIhzLNuSNOajMBQSkK4CG410lec0fxUyBu5EAGpB3nZcEGJTvAAnHEyIYZAkHx++w9uSdAcGD9ht4WwzpTRtAghwOjl8JED6yhAPsKbCdBLh/sPnCemdgiQc+/wByHBABWa49dGHCUeMVDDWG82kMkKwAGnYEB+TK4YBHcECCB+3XHbcYgm16SzABmdagdsnhYOdCQH4aN4XV+JUoi/I0iNPC/jRLDgs7d0PybOFA525AeuoPmSiymzn4kFSX0PBrB0i+A+RR06xnYdJEAJmz9G/2rKgaraRK2NItr1H/M9J9g2CNV5WdwRHjYGDM2nBJSHo9IghHfscFiuAAB8IuJP9Kkth8OJ/zGwPCMLRbRyz4GS8ihOxsvNw5NUMXV8IrMvdul8QiI9dWxszCexBQM3MehNxS8zX1nFhqtJyWsHoBSOsFGK8yLnAanb08BWM3QQThyCJnoeh1YFDMaBQtIDcOB8WOxtQCsuNwMHNqe9MHbE7t4UDYFSuPCOpSK9TfFtzktfbeli4v7ce2Vnh11znA5oQBD8YD6e5PgPkgI0AQhsNlCiiKE0QYX70E9DI7MJjRpIkTmk1pJ38aV3tEmUDCWGEIN6pwLBheB0T+7xzOCRgDAjIs8gRuiJlCArFkIfx29wGWPKegMExttlMXDA03U8XM2AvO3vmJPN+uNr8JJBBL2hxBAbgMmkJCsRxdXwIkOkUF8mzWsvfq+zYaCX23uR3gxm2OBbQO/1uBbuFadoQHw8/q+sKCnekVBiG3PeBcvAeciw+30Q7OBeRgMHsYLSj0/LaEhWGL07x8DG6a3Q6XAUqSHG7Ck2CD8M5wHVQ5zRUNt9KbYcLwjKs6uL2H4zjggfCjlwKguHEsmJ0F83xpi40Fo5RpElZhBbhXNMCBsYPbP+3RYLh1d57B6I0AQRnCeoELVFiu7KI2ONcOFYYrWTqeXZwCGuYIEIZhGd+hGgcoDHEFN50sYWHYVgi42UeAMKclgMs9w4AZIa+qglMax4LiFYQoPMCNOhNEOI7sQLlq4hpwe10EDMc4z29jYLX2kGAs65j6nKAsB0gQlkMaFSiSE0QYjnEKSrCHA2HHX0AFozfCA+HHbuRCkevAwJixG7CQ7DpASIZwPXgMCMiwgttkGgNqh10CPY5I/BaglxFZXa11Q/j4AxTMznQbO0rP2Oo4o0lTirwCmX4HshJ0F/yJR5zGdXznhv8UHZJ/ezICyXlAhOUJsuU44Ql7nja5jWOZTkhAdwHshHVW44e6ctQb16W4rI+b3rkuBbI+BL60X3iOqPeAkCzBNsJGRMH3wvrrILz5IMlOQEHZxr/Dmm4PCMqyLpsQdC4ZECF5rr9naUBT661LVZZ3KGlgaQ6Izv3aI70fxTYtyCSS4UznvSfhQ1L8ELJqiiI3ej1K+Foe1APnFMuL8F0cYo/uuia4fd1N2z7GKvOX9eZBKP66RMAIGq9KvJaah5LkmHVbF/xUSz+95+xW1Evq32XB7t4m086FsKVQ/hidSA7MFmIv0hX1ETwMYxyYPM+lxLaHBg3mYJdvAqNXaVRYi8WA1qA66Cch0aHO8Z9qRNB7JHFFX8R6jJ7V2dIVfdZwhA0VKO2M6wgbLJTWHdkRONQIZXFtXYXyQgLYJTBnWh6DA14Mc8l3BA94Wcwl4xE8tHfghPEEHvaw0ZmaFxKgQmWdMd4Dj8Y8hNkZ3xn+t7SU7vSxXN3SQBilR99V4OBWKDEjVpcGz6HMm2qoIXftp9hAA048khPEWayfM1KR90yEC/r8KMFtBQYhYFUg7gUPEQgiXOAswlkYA6y5BBVZEQVZHa6r7rSPJVZ3UxuJJAeVIdA2qVW1qrOU5ahCZBykgY+xm26zJstBhYyyH2tVwzQfsgJ5k8SoWtwNU6UqUK/ifYbqBmA7brUCEzEOqmGYmlqrDubJqtcqUJcoqwgpwuAolVmV57hiRimOjatlmgBZs1IOR64VaY4r5W5EkwtzVaWjzJXrAiGrlhfo780Rph6hHAcVOUrzSGW5axmno7hMlLvqOBzmxIKgduWozLiuguwuvYCvwAL+H/FgZh7w29wksSnaWjMYRpGsNALdA2vp+gsZhgZk1h4yVRrHTgv12L0kSqabpqpxZJxAd0ulFfLXZJmpVlgls6QMCvxt8zPY2YHCXhdwnaVCnO91OajIiihXmw9uajGT4G7p65Q+cIrb1f0lpxVZynK/2+i8Qi7OtxfbT05rAZmxa+pU7pospE3tapQSiXFQDbMoYa0qwMYNC5bFrptCKstVhVw2ilDOP8Lxbhdu822d7QYDL8s1YI/TLQCnyFCr1gG1zRnhjHQP74A5yBbIGnfwjY8xeJf01x39kQQH/AF229fIA2+vj6FBtwTX6uBsP3Au5ICyKImtI0u26jIW46AmUIeFa9VwcVI4xkd1javatWHNpEB6IJ2IvEL6uRrWayDEd8U9uCHeTYpr97WYSvpH3KBd8WagdMeDTKfIDvpfhHdxZu02r/AeS3DAH8LpX2MPvQxbuHruqIMmN5tC95vRLEjMXRUWclyMfp0Q4HpIZbjw7G1Sy6s3h5Nk8zMRzuvglD3E5u8qe+idX9H6xx196IdbBEsgd+RN3/9VYA66575WB2cb7tKlj9u6jMU4XWG5q8ZEhuMVlrtazKR8S1ujSp+qfbSIJyjJxL5TWkdYbqfOIw/yqi4xSoOWgfrSuf2eLc0EGCrNZpOTQ2/RtVFnZWPmdaZGK8AAr/M8ybJJ+2g2iVCmrn5UVWLWVSq8Vz2FWJZ9rGqc3sX43iaRy9XlL79cfjE4B5kot0UJvlxfqzdqW3d/qIbfovhTMO1BU8RMvdk3WBkN41JdQbHqwNSZHXmm2PrzwrbjJCZrkiBBN1uvjIvKklJkii7VXjpfvm7ePlWif0QouG3dPnSy2ifGdfVH5P0pD38Cp9HSMlKrxqdPysWkMWsY/niMdcMkeI/CR69ANC+216IaqmNKyZchGzdXC+H9vcHNhrutSnGOaEtNNYhIk59+vJCNZeE7GsPAdGJuVgzEqqlGNPwZGpgGTEdq+R+W/n9e52GeSDW5KPF7vL/BW5pfDvQ16WZmQ/yuJP++z0u14sLWRrjycHgjHds7Lfht5XzG1u8F+6Pyxl0wDFOP4MqjF7ZIjAGMWbTYAXs/MAgPKMuwfNt4i5EMzJKdxwA9/FDTOF15IK0aPQGaLb+2uyc59fNIkzQ33h7LD38VaUpBzd2HusyzvVeiLMpTDxWxMUUhkutxvkuOa7NiSuOwzG0XTGjlfE6suY66z+T7SPcA7kgJRnkWVQuvGYdEJbV8w12sni5767i4uWsTZzQjkFejm0Q+l68TWWDYj/JmRMbFjTnsC2/9UHmdw7i4+diTN2WIvTJvatNGmUMYc8HpDRlSbVQyQzCfP5LEisekPIQ+vM2jY2XFeGYnxCJuNmQANLP+VLOKQgyeZxbdYiM48k3QDR7j8nYsbBjYjaWHONH1/vqBtCtraQsoYUZdY2/tzoqKTSyQbK20qR+98DE0nvREMJac2PlZ6G2kylehtUAyZpbiqlq70brOZlTanEGT1LGX4Zr60qY85hiWbIqDqdM2KW/MgtfEo17y+snuOhshjsWKiWCTiWwnf1Rqw2eZABjzYDekvRDTGdWQyRzCfk3OcuUzIabeixjJmFmJ7j273j1DMGZC94fS1NRoRqXNV0GPZGKhG5ZxvXaDemMZtACxnA9GGwY2k8EUxphTEt+UqDQd90alzcdeFHoJejTu1JPy5raS53WSr9xQ37CSUXFz3+7mFncPVOBsH2emXVgMBLrDR/fhrEY8EZq5De32xBRNDagvbLWGNe/Qo9Ku9w/3hfnGFt0DyW9x5m1E84oruy98AYDNfg6R8/BotMXVcpmVt6FSxdmtBZNpcdc2oP1MkXAaa1Gacv2Sl7jW/FUeCZD5+Glil5MXguwcVGbbJs4g5zADsCSiv5qZ0LBdzAgal269ILJS0nXF5OYyQXTdb7qdefOes5yX2aGWZu/peAim+R4O0Afxzl5e3J5BE52CQtI9f+WA7hQUkm5UIe8Ol/HuEZqzABmaOI1yd0F7gutI207sRIpvXIk4I1KJgxjmkd1oIQRy72soBjEK696O+JNtPhMVtKFJK1i2+4bIqBO04YgLBAAyG+88KNExecZhu/m0Z35xy0Fs9pI6WixnZtoCW9f0kFZ8juEOkVWrec+mS15q8PJXL8TVJOX8SVm7Y2fz9u+ImDS8ldZVIg1Xqj0OIGiXnF5TREg7IKH7YQ3OtS5SZHHvqO0r+geYpIQ/KXuswFaJElChtqUDFEK6mN/pLGEbTMZjJklVgp7V1mNF89YhhcdxoaywvwFseRFGiM6sJNCIq1UnPoZ2Qj3BuHDBu8N1QXojz6+1mdjflxKis+1vB6x7XCe6JuuHG53tLQ1tj6BhqGfhBB+mQ4pAnYSwdjVbxP82ZJ1pn/Wxjf9md0PB8iVNIt8ZtKHK20r6I46+FB7qar0A3czIlcl/Y/fpJYZCT76tY8V3Huk3ratsqFV27WiO883FjmsqC2KHWWzPHMdDUVTiqvJCFB7k+QRFqm/veXV7R3JAy7FaO1hezs2ZRUgaC/9e6RymyquPPQqlt4PUq4EW9UUwlg3DsDqp+q3DaC0wIIyFV9OSmgwKkKFeTLucnnliakGL4qxJbVqzKw/BhY3uBvFZAloCqG9ucsDp+ctTi7ND4oeiLPJYbiRcVl53P2ePM1yiGssfjhIpkLHx1UAtDuTF8FpNvc7ULuBqDrovMT36zu/bmCQ4vUqBLTbXiSDdnf6B4by4eXgwLmOUtBdddigkvRCVeo5/S0iKYx5OHRZtMIX+1NpSWgLAWZrVzC8xMjs3QMI4zEmLPOithqb8RghgVmZARwRh2/v4poXe3DXpgGMEOOuiJ9MQg2yHA8dMM1JzhRtA2OYSk8W9g8+qElg43vxYFJy4DBd4HKQrS1DeYlQ41uOLJLDM5chw7H9P9JZNEqocBt4WIMiBXKNfVrmNXSc8QBQ4QXN9WvpA3Bnz5QctrVVnWsDvShm3AAXQ3bvvJevvzy+FG+xa9vKNdioFFCqUFgn2QjIy5KnF9sdAbAPRtSnqWqKjQxDNHgHZO2hL8JMCw46i3Qr6zeYuaOGmiZPILGxhkpbE4xfQyBqjJGuM9MLbh6GHd+XFebo/f+6VKE48Fj8WsJiNgDs0QVWXcVFgNQ7CJhfyOEGKNsAU4MPWRQxHKR2hP/c7R0/XIgIWmu0BWQ8R2DHaoj14vEFVHKrUwVzdAkGa6takKvr+eBrtcqUdQ6lzWUZ61SEsKXIM7RKB3e132luecPyQMNFUPnR9ZIDHaJt98YTNMQjXbAEA1v5U+DHmTzXWdrOjsUrVCfpLOc5HELaTSo8L2AngU44gYia6IwhwfWSAx2gbnkj6DiUxjQp3a+ISYZrqN6AsK3MMDQ+bSPys6vhmP6egqXCwGiyQjjV2U4FPu+4ZMTAY2iH4z4GOaPvl+blXNUVBmD9hM8jJmPUHyFqtYB6jnfrjmK4eCU14QV9/fIJ2kpPRbCcHtVrBPEo7jW9zPV1PEtHQbRvImgjRjjW36NbEbh4BUL0JaWmh460f2LmIU/0u5RgtDFSJCj4H1SbgOxyiX82TxMXTKDf659f+n/OkSXHl/5Q07H5mdfDLOERllPspfbuw9MMSR5Xf7p/4HYovF9R+GbBi9gLnaAqC8Sx6zkouXobQzY+4GbWDsUB+PaqH2RRlXreJqPVafbl88+7j5Uka2SpyBDQRx1O3fUb1wUoAOGx3IXcTdjLcdE8zvGtrfdW+7/OBPu9z+fOXi/OPv5w/9993LyOYYfPmY49FaiEcSC3vEX1oKSf/ZQDQU+iyNNK3t2wRfFTEpihvP169v/Lf0pQNZkrtVRKV8R1t+3FSrCC/ow/Q3uc2quLA7FzABqfC5XhEirO4toHDaVTemZvSCIdMiRD1Ouwe8vEDurZ43VOmAG2X4IgqC4BU+ypccEAJIFrbiAEdyUApBvdRDmKyHJIGEsGSHF6u1QSUPehM1i5RnVRdQlFgVO48AqFOH59OAi4l4NsSfped8ijCLCYj3snSh/MXwS4hBhJUh6aO8vuse0db8KcANxXhZzf6ZXfphY01Fpgsaw+4hOnN7E6LxQgoebcYBgWwj81NqahQwG3gWEL8orkhjplpi5WI/M6nS8OATn52nuIMrF+w3iTGDqIMMsYYvzo9P3vxHBr593t0B0U3PMSFz1bg7T8f9ucPUHzbQEH2M7WcAF4jrYQC0cs6xNoq4kZWLrF7HQHXYNBRUeu652qdEkOOdRsSqtJaguzhbRNcxTeVLReIdZ4n4QHFVv59Nzu19QZBokmM6jiFcfNZZDjkuoF8nKBHEySFxxpBIM2cU5XkPACQ/HI2QDVHadUAK7rMKgNClj4HYM2yDaO3humv9IMqrk3JAkNuSM8COGXZkYOwAhBLMqMz1QxNrci0kzaWrhPLDAk3wYFoCAxIv3IKN1BmiERGmb/DO7pfR/y1r/3O+sc319eXX4K3nz5+/PRr8Oubj5dsi/0OJQ398//39yav/9dHtiNNfv0O39F/vnlL/nn68PPPP5/5pw+vTk9ftN9pCv385dO7395eB+/fTWS2iJpYf7789d2nL0soylET6t9enP4huPy368tfr95/+vVqAqiM9fnqTfD2y18/X38i1Xz/6zUMSvD28osh1JfLq8svf758F7z585v3H9789OEy+Hj58dOXv07hTk/n06YUsT9JeHN6dvrz2YuLl798fP5KtfTVh+DN58/UBj6TOr2/vNIo+NOnN1/eyYz1py/vnp+9evlGzyR71C+XfxaAvjl9ro1H+tTnT79e0lZ7c/3mw6dfSGVJI1BbUMRgnn3w5fo6ePPh/S+/fryc29HpYr0lb62PPxGsNz8Trb8nVf10/eHTm3fkN8SqLr/8/ObtpSrQ209fri//7eOF7vfB5c8fL86Dj+/ffvlkUJbYmnKv+Ze/Bl+IkSt//+HN9c+fvnwM/uWSqkTQ/N105B0wPSs6OWgbw4fLX968/WvwL28+BJe/st73lzfXb//l3adfzLozac131x+uiJH9+vP7X4Kf33+Y9YWk/l/d7miXzfqPuuCj4WdNDt3Vale++qKIamhTBR/e/xR8/O3D9XsyIFx/evvpQ3D12+fPn2ajnfLY1MH+dk3+8flNR1/UwKQCZL0+2mhA+rWgXfS3q8vgzdVHQ75DV7+6fHtN5h2BFQ4f6Znf29+urj99DK4//evlr3IbJ0qYrGIDtOO/MDN6qo9f/6w+Tvz2Nvjpt/cf3mkPaL++/WzWh1oEMi2+f/PhjKj16u218ix0+X+uPge/vfmiPJj/+olYyE961FiHCH69vP7Lpy//Glxdf3n/+fOlsoJIH/g/73/56fIyoAPi1eUHYlgE5M3bfxX2rbna+DHRz20ghtopBl0Gkf/R/w7efry4CPZhOA9SUgeera9QU+d7nLXnV+R3JU4wqnD/c78FSaV2f92Q3t1NCucuuPAzpY9SlY+yvHqcb8hu6uWbuXNsSPXY13ENaTq4xmrFxMHFT0M+T3UX0pCu24uDFp0A5OqdaRs+0W00Q7oOb28ZMjre9SYLCzvGDSA7/T3RdRhD0k97N8SU9NEvTVhYrLMrBlbjJGBw/g/0IPRTwX10+sP76Ef6uGv325MmPOkPS5lrnrPfr312EhbNxItvOXrpxXzd5UT6biZ9V9y98BYnPm5EJzmqA3QTTwjQcC4D6fS0nphHuS68++qkKHF/+jkSNRL4Ia7qXmhHjqyw6cpkKL0IsPcHgbpVQFVFuu9mHfrPvslK0BFwqwbtN/xfVyEZneqJCfwT6c9/w2E9Wi/SL2nYfXBDV4TJESxk12Qhi90mg3zdBt+MKNZlMz86csCB+D4IVL5G62Qoy4OQLtufouZ5Gtftsz5BkbMEwU9AgigAP4S4eKrmJ/LLuo6P3PBditOPqGAT7vHrHdJ31bKITQTjifEPfziC7IcHifR//uez+QabA/n3qMzibE8cSPqY59FV34vHD3WJnpIAcVhRVsfh1DtBSXVMEqjEAS7LvKyeggb9Io1/Z1eIJvKr+Hc18Sm6xXTaJBVJT+hObo3KPa7n8iWfLVxTLyW/+VHTQbXkUB+a9GbGgv/OvfC5d+yl5Dc/ch/Zi85eHoWE0E8mVOjvPfL7H5V95oWIYdzbZDN8KhugvaqOflQdpVfw6fupymSKQj5mt4SUB25gSqLp29tludf+9kkISfwZRmv8t+PZUjfWBvMJz/sL+81x1eSWjZFeljOx9xf+uyfSjTNGOvqRTo7eJ2v71dWMSy46OpGvF70d/Zs3/O24CjoaMR1tra/wvV339yfT2tEJavW/9RW6t6Mf8Gfg+g+O3C2PT1FHg9/G9h2gvr/RCkn3VeVffqtVEW/jSD6Tb7Ba7qta0mI7i4t9RY+sqHBY/Uj/esL+8xhcus2uoP05SFExZfVvHO/rd95HVPz4T//t02/Xn3+7Dt69//Lf/X/6b5+/fPrfl2+vaSDzfz9hhRU4t0dXJzExD77TPafLc3PkxdSd6E+s0OnZ6Y7Ga+/TRby2ZjdfaCquQi2b99Iwne+GbJah6w16SlfHmSe6Xq4FUBkhbNjbZvm/EAZN1lQ48gpE55DF9KEEQfRd0QioXYyTyGMhgCiJf8elCZ8O7KZEITYBoFF7qNYsOM8NoTXGETs8aS/2sA5RxRfnrX1G9Ukbxxqx41x2cHiyz5qT0axDR625AY8AZ1+3H51QCz/J6wMuE1Kd/yts/f/ZaldQ+PrUmu7blwKxl+BsXx9+nMeDu7Z1unWjY+3j75/I3v+fsX0Txhaj8gTfF2zCl0327y/pts2nbtdPa/pcWoY+P8qN/oJHwnSGe/fi5PnJ2ZzsSgFu6SiKWAQ9Sn6rcPk01VJ1SLXdrL8k33vePpQt9s1IHvKqBnYH/6/p/s6WpdoqfyA/9HDefVwfPLZ4P65XxpdUG7OULlwYl2GToDLCBQ2Iz8JHs1Ppb6dGGelz0WL9q36mbOZFiIchGyydpvnB5ytd9tN3P/zpIU3op23yIfLx2ckpK0xQcnojhPzqt+ufPbK4/VML0K2U+ws4TXiS5lFDelSF66Y4ifAONUl9heuand3zWwltclp2PYiUJSgFLuvHq5D8m4D062/fHbEm/Nx+oklpbAnzDNl8B0c0TEzz7p6EZdjdhgzLViJfS/RNRH7Vv2ss7lLjbNDTpnz2/bOr9x8/f3j/9v31X4Or69/evf80uhL+7PWz/+y2M9p6f332+iv53devzyp0h6OrOg9v/4zKmN5WquivX9N/0A/o/3tGcyZ9KrLux9fdf0i2Qvhfv+/+g+g0JkKi2w952B7PzIH2OLzNgyq6DYjLQZwO/uv/av9BkJ69aw3rH4z4f5GWaUFoFFdFGuLf/5MW4u1MgGg7f9/bG0tVQavYGosvuBLMtJGX8T4mHhb/PmuShPyW9xfyi7PvGUSNaUKc169ePP/D/3x++uoP//W9lvQqCYb0TjYEvD+cPX9x8eLi4n/qM5gkUrQhcfbi/A//f2vXsttGDAP/pfcCpPiSzkV/oOi1EPKwkQBuGsBBgB7y7+Vq1/E6zmFF9WoY1ng0HEq7IlVEkagfxKpNbz1MrW1HcCSRBCyc+nFc9HEbmhHXvLAYay+KVpS62PwgAskgiXpVOZcXzMocA0AmxSgrdCK46tQ7BqMAmpIW6dfDiYulBKY9QK9T6csQIsNCgIi9vJwBLRWltZW/DmFhQiuIksNY/Au11YUN4dCiCmAScLD5OvEPTQBCSsmZUtES8PFT/+zaGu3WV9fuYPAycCqgA6JtRUe1FR2NYGFAFbJuVlatsYeyCgoU8ZkZyyoPg1nlKxq5PlK23hm5fXF5TK/d9zfT3Rj7IA9EJImt286vhq/HdMchDKYgqph7fetjg5fI389ZSlKEzT51ev3rOmgXOLzn1EkO0xmGiATU7VINNmvxBOLHz+/126nV6jGax5iTByNuFuCKgt2r/4rH4tP9coKjf/yEoJwL22YFrsZ/98cZwjEEIYExsS8oeARBs4PHp+ks7d0uNhfoPFj2LN4thCsgc74YhGOWcgGDCC+LTZ9vGDnb5v5PDA4qCZZs3excGkVdPo5lLTPNABih5HJLNBQ0CJ44GU26cVxtTYfoyASZs+9HAnR81gC8Pj/89WXxYXrgEyGGNBXz1Y3+LzzzCrTZXAgQYqJkBbYvc1aIjo+/n30dftjdryI5phePmwxZsJuYz445dY+vQEbJhfL268vbPzz41Og==END_SIMPLICITY_STUDIO_METADATA +# END OF METADATA \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4186c/autogen/RTE_Components.h b/silabs_examples/credentials/device/brd4186c/autogen/RTE_Components.h new file mode 100644 index 00000000000000..3b6ea30c43423f --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/RTE_Components.h @@ -0,0 +1,22 @@ +// This file is autogenerated by Silicon Labs SLC. +// The contents of this file will be replaced in their entirety upon regeneration. +// +// Source template file: RTE_Components.h.jinja + + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + +/* standard device header from emlib */ +#define CMSIS_device_header "em_device.h" + +/* components are auto-generated here */ + + +#endif /* RTE_COMPONENTS_H */ + +/* This file is autogenerated by Silicon Labs SLC. */ +/* The contents of this file will be replaced in their entirety upon regeneration. */ +/* */ +/* Source template file: RTE_Components.h.jinja */ + diff --git a/silabs_examples/credentials/device/brd4186c/autogen/linkerfile_base.icf b/silabs_examples/credentials/device/brd4186c/autogen/linkerfile_base.icf new file mode 100644 index 00000000000000..709d9fcc0f6e18 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/linkerfile_base.icf @@ -0,0 +1,85 @@ + + +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ +/* Version 4.1.1 */ + +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_ROM_start__ = 0x8006000; +define symbol __ICFEDIT_region_ROM_end__ = (0x8006000+0x178000-1); +define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; +define symbol __ICFEDIT_region_RAM_end__ = (0x20000000+0x40000-1); + +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; +define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; + +define block CSTACK with alignment = 8 +{ + section .stack +}; + +define block HEAP with alignment = 8 +{ + section .heap +}; + +define block header with alignment = 8 +{ + section AAT +}; + +define block nvm with alignment = 8192 +{ + section SIMEE, +}; +keep { block nvm }; + +define block storage with alignment = 8192 +{ + section INTERNAL_STORAGE, +}; +keep { block storage }; + +define block application with fixed order +{ + block header, + readonly section .intvec, + readonly +}; + +define block application_ram with fixed order +{ + block CSTACK, + readwrite, + block HEAP +}; + +initialize by copy { readwrite }; + +do not initialize +{ + section .noinit, + section .stack, + section .heap +}; + +keep { + section .intvec, + section AAT, + block header +}; +"application": +place at start of ROM_region { block application }; + +"storage_regions": +place at end of ROM_region { + block nvm, + block storage +}; + +"application_ram": +place at start of RAM_region { block application_ram }; diff --git a/silabs_examples/credentials/device/brd4186c/autogen/linkerfile_base.ld b/silabs_examples/credentials/device/brd4186c/autogen/linkerfile_base.ld new file mode 100644 index 00000000000000..4352b12975cbbd --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/linkerfile_base.ld @@ -0,0 +1,225 @@ +/***************************************************************************//** + * GCC Linker script for Silicon Labs devices + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + + + +MEMORY +{ + FLASH (rx) : ORIGIN = 0x8006000, LENGTH = 0x178000 + RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x40000 +} + +ENTRY(Reset_Handler) + +SECTIONS +{ + .aat : + { + KEEP(*(.aat*)); + . = ALIGN(512); + } > FLASH + + .text : + { + linker_vectors_begin = .; + KEEP(*(.vectors)) + linker_vectors_end = .; + + __Vectors_End = .; + __Vectors_Size = __Vectors_End - __Vectors; + + linker_code_begin = .; + *(.text*) + linker_code_end = .; + + KEEP(*(.init)) + KEEP(*(.fini)) + + /* .ctors */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + + /* .dtors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + + *(.rodata*) + *(.eh_frame*) + } > FLASH + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > FLASH + + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > FLASH + __exidx_end = .; + + .copy.table : + { + . = ALIGN(4); + __copy_table_start__ = .; + + LONG (__etext) + LONG (__data_start__) + LONG ((__data_end__ - __data_start__) / 4) + + /* Add each additional data section here */ +/* + LONG (__etext2) + LONG (__data2_start__) + LONG ((__data2_end__ - __data2_start__) / 4) +*/ + __copy_table_end__ = .; + } > FLASH + + .zero.table : + { + . = ALIGN(4); + __zero_table_start__ = .; + /* Add each additional bss section here */ +/* + LONG (__bss2_start__) + LONG ((__bss2_end__ - __bss2_start__) / 4) +*/ + __zero_table_end__ = .; + } > FLASH + + __etext = .; + + /* Start placing output sections which are loaded into RAM */ + . = ORIGIN(RAM); + + .stack ALIGN(8) (NOLOAD): + { + __StackLimit = .; + KEEP(*(.stack*)) + . = ALIGN(4); + __StackTop = .; + PROVIDE(__stack = __StackTop); + } > RAM + + .noinit . (NOLOAD): + { + PROVIDE(__NO_INIT__begin = .); + *(.noinit*); + PROVIDE(__NO_INIT__end = .); + } > RAM + PROVIDE(__NO_INIT_NEW__size = SIZEOF(.noinit)); + + .data . : AT (__etext) + { + . = ALIGN(4); + __data_start__ = .; + *(vtable) + *(.data*) + . = ALIGN (4); + + PROVIDE(__ram_func_section_start = .); + *(.ram) + PROVIDE(__ram_func_section_end = .); + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + + . = ALIGN(4); + /* init data */ + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + + . = ALIGN(4); + /* finit data */ + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + + . = ALIGN(4); + /* All data end */ + __data_end__ = .; + + } > RAM + + .bss . : + { + . = ALIGN(4); + __bss_start__ = .; + *(SEGGER_RTT) + *(.bss*) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + } > RAM + + .heap (COPY): + { + __HeapBase = .; + __end__ = .; + end = __end__; + _end = __end__; + KEEP(*(.heap*)) + . = ORIGIN(RAM) + LENGTH(RAM); + __HeapLimit = .; + } > RAM + + __heap_size = __HeapLimit - __HeapBase; + + /* This is where we handle flash storage blocks. We use dummy sections for finding the configured + * block sizes and then "place" them at the end of flash when the size is known. */ + .internal_storage (DSECT) : { + KEEP(*(.internal_storage*)) + } > FLASH + + .nvm (DSECT) : { + KEEP(*(.simee*)) + } > FLASH + + linker_storage_end = ORIGIN(FLASH) + LENGTH(FLASH); + linker_storage_begin = linker_storage_end - SIZEOF(.internal_storage); + linker_storage_size = SIZEOF(.internal_storage); + linker_nvm_end = linker_storage_begin; + linker_nvm_begin = linker_nvm_end - SIZEOF(.nvm); + linker_nvm_size = SIZEOF(.nvm); + __nvm3Base = linker_nvm_begin; +} diff --git a/silabs_examples/credentials/device/brd4186c/autogen/mbedtls_config_autogen.h b/silabs_examples/credentials/device/brd4186c/autogen/mbedtls_config_autogen.h new file mode 100644 index 00000000000000..1e6fc322a5a674 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/mbedtls_config_autogen.h @@ -0,0 +1,97 @@ +// This is an autogenerated config file, any changes to this file will be overwritten + +#ifndef MBEDTLS_CONFIG_AUTOGEN_H +#define MBEDTLS_CONFIG_AUTOGEN_H + + +#define MBEDTLS_MPI_MAX_SIZE 66 + + +#define MBEDTLS_AES_C +#define MBEDTLS_ASN1_PARSE_C +#define MBEDTLS_ASN1_WRITE_C +#define MBEDTLS_BASE64_C +#define MBEDTLS_CIPHER_C +#define MBEDTLS_ECP_C +#define MBEDTLS_ECP_DP_SECP192R1_ENABLED +#define MBEDTLS_ECP_DP_SECP256R1_ENABLED +#define MBEDTLS_ECP_DP_SECP384R1_ENABLED +#define MBEDTLS_ECP_DP_SECP521R1_ENABLED +#define MBEDTLS_ECDSA_C +#define MBEDTLS_ENTROPY_HARDWARE_ALT +#define MBEDTLS_ENTROPY_RAIL_PRESENT +#define MBEDTLS_MD_C +#define MBEDTLS_BIGNUM_C +#define MBEDTLS_PEM_PARSE_C +#define MBEDTLS_PEM_WRITE_C +#define MBEDTLS_PK_C +#define MBEDTLS_PK_PARSE_C +#define MBEDTLS_PK_WRITE_C +#define MBEDTLS_ENTROPY_C +#define MBEDTLS_ENTROPY_FORCE_SHA256 +#define MBEDTLS_ENTROPY_MAX_SOURCES 2 +#define MBEDTLS_NO_PLATFORM_ENTROPY +#define MBEDTLS_CTR_DRBG_C +#define MBEDTLS_SHA1_C +#define MBEDTLS_SHA256_C +#define MBEDTLS_SHA224_C +#define MBEDTLS_SHA384_C +#define MBEDTLS_SHA512_C +#define MBEDTLS_X509_USE_C +#define MBEDTLS_X509_CREATE_C +#define MBEDTLS_X509_CRT_PARSE_C +#define MBEDTLS_X509_CRT_WRITE_C +#define MBEDTLS_X509_CRL_PARSE_C +#define MBEDTLS_X509_CSR_PARSE_C +#define MBEDTLS_X509_CSR_WRITE_C +#define MBEDTLS_OID_C +#define MBEDTLS_PSA_CRYPTO_C +#define MBEDTLS_USE_PSA_CRYPTO +#define MBEDTLS_PSA_CRYPTO_CONFIG +#define MBEDTLS_PSA_CRYPTO_DRIVERS +#define MBEDTLS_PSA_CRYPTO_STORAGE_C + + +#include "config-device-acceleration.h" + +#if defined(SL_SE_ASSUME_FW_AT_LEAST_1_2_10) || defined(SL_SE_ASSUME_FW_AT_LEAST_2_1_7) + #undef MBEDTLS_ECP_DP_CURVE25519_ENABLED + #if !(defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)) + #undef MBEDTLS_ECDH_C + #undef MBEDTLS_ECP_C + #undef MBEDTLS_BIGNUM_C + #endif /* !MBEDTLS_ECP_DP_SECPxR1_ENABLED */ +#endif /* SL_SE_ASSUME_FW_AT_LEAST_x */ + +#if !defined(TEST_SUITE_MEMORY_BUFFER_ALLOC) +#if !defined(MBEDTLS_PLATFORM_FREE_MACRO) && !defined(MBEDTLS_PLATFORM_CALLOC_MACRO) +#if defined(CONFIG_MBEDTLS_USE_FREERTOS_PVCALLOC) + /* In FreeRTOS, use pvCalloc (and vPortFree) for dynamic memory allocation. + E.g. Amazon FreeRTOS implements pvCalloc for dynamic memory allocation. */ + #include + + extern void * pvCalloc( size_t xNumElements, + size_t xSize ) ; + extern void vPortFree( void *pv ); + #define MBEDTLS_PLATFORM_CALLOC_MACRO pvCalloc + #define MBEDTLS_PLATFORM_FREE_MACRO vPortFree +#else + /* No memory allocator override, supply the default for SL platforms */ + #include "sl_malloc.h" + + #define MBEDTLS_PLATFORM_FREE_MACRO sl_free + #define MBEDTLS_PLATFORM_CALLOC_MACRO sl_calloc +#endif +#endif /* No specific memory allocator override */ +#endif /* Not under test */ + +#define MBEDTLS_PLATFORM_MEMORY +#define MBEDTLS_PLATFORM_C + + + +#endif diff --git a/silabs_examples/credentials/device/brd4186c/autogen/psa_crypto_config_autogen.h b/silabs_examples/credentials/device/brd4186c/autogen/psa_crypto_config_autogen.h new file mode 100644 index 00000000000000..83745ad1837770 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/psa_crypto_config_autogen.h @@ -0,0 +1,142 @@ +// This is an autogenerated config file, any changes to this file will be overwritten + +#ifndef PSA_CRYPTO_CONFIG_AUTOGEN_H +#define PSA_CRYPTO_CONFIG_AUTOGEN_H + +#define PSA_WANT_KEY_TYPE_AES +#define PSA_WANT_ALG_CCM +#define PSA_WANT_ALG_ECB_NO_PADDING +#define MBEDTLS_PSA_BUILTIN_ALG_ECB_NO_PADDING 1 +#define PSA_WANT_ALG_SHA_1 +#define PSA_WANT_ALG_SHA_224 +#define PSA_WANT_ALG_SHA_256 +#define PSA_WANT_ALG_SHA_384 +#define PSA_WANT_ALG_SHA_512 +#define PSA_WANT_ALG_ECDSA +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR +#define PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY +#define PSA_WANT_ECC_SECP_R1_192 +#define PSA_WANT_ECC_SECP_R1_256 +#define PSA_WANT_ECC_SECP_R1_384 +#define PSA_WANT_ECC_SECP_R1_521 +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY 1 +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR 1 +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_192 1 +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_256 1 +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_384 1 +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_521 1 +#define MBEDTLS_PSA_BUILTIN_ALG_ECDSA 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_1 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_224 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_256 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_384 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_512 1 +#define MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG +#define MBEDTLS_PSA_ACCEL_ALG_SHA_1 +#define MBEDTLS_PSA_ACCEL_ALG_SHA_224 +#define MBEDTLS_PSA_ACCEL_ALG_SHA_256 +#define MBEDTLS_PSA_ACCEL_ALG_SHA_384 +#define MBEDTLS_PSA_ACCEL_ALG_SHA_512 +#define MBEDTLS_PSA_ACCEL_KEY_TYPE_AES +#define MBEDTLS_PSA_ACCEL_ALG_ECB_NO_PADDING +#define MBEDTLS_PSA_ACCEL_ALG_CBC_NO_PADDING +#define MBEDTLS_PSA_ACCEL_ALG_CBC_PKCS7 +#define MBEDTLS_PSA_ACCEL_ALG_CTR +#define MBEDTLS_PSA_ACCEL_ALG_CFB +#define MBEDTLS_PSA_ACCEL_ALG_OFB +#define MBEDTLS_PSA_ACCEL_ALG_CHACHA20_POLY1305 +#define MBEDTLS_PSA_ACCEL_KEY_TYPE_CHACHA20 +#define MBEDTLS_PSA_ACCEL_ALG_GCM +#define MBEDTLS_PSA_ACCEL_ALG_CCM +#define MBEDTLS_PSA_ACCEL_ALG_HMAC +#define MBEDTLS_PSA_ACCEL_ALG_CMAC +#define MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR +#define MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY +#define MBEDTLS_PSA_ACCEL_ALG_ECDSA +#define MBEDTLS_PSA_ACCEL_ALG_ECDH +#define MBEDTLS_PSA_ACCEL_ECC_SECP_R1_192 +#define MBEDTLS_PSA_ACCEL_ECC_SECP_R1_224 +#define MBEDTLS_PSA_ACCEL_ECC_SECP_R1_256 +#define MBEDTLS_PSA_ACCEL_ECC_SECP_R1_384 +#define MBEDTLS_PSA_ACCEL_ECC_SECP_R1_521 +#define MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_255 +#define MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_448 + +#define MBEDTLS_PSA_KEY_SLOT_COUNT (1 + SL_PSA_KEY_USER_SLOT_COUNT) +#define SL_PSA_ITS_MAX_FILES (1 + SL_PSA_ITS_USER_MAX_FILES) + +#include "config-device-acceleration.h" +#if defined(SL_SE_ASSUME_FW_AT_LEAST_1_2_10) || defined(SL_SE_ASSUME_FW_AT_LEAST_2_1_7) + #define MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_255 + #undef MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_255 + #if !(defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)) + #undef MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR + #undef MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY + #undef MBEDTLS_PSA_BUILTIN_ALG_ECDH + #endif /* !MBEDTLS_ECP_DP_SECPxR1_ENABLED */ +#endif /* SL_SE_ASSUME_FW_AT_LEAST_x */ + +#if defined(TFM_CONFIG_SL_SECURE_LIBRARY) +// Asymmetric Crypt module (RSA is not supported) +#define TFM_CRYPTO_ASYM_ENCRYPT_MODULE_DISABLED + +// HASH module +#if !defined(PSA_WANT_ALG_SHA_1) \ + && !defined(PSA_WANT_ALG_SHA_224) \ + && !defined(PSA_WANT_ALG_SHA_256) \ + && !defined(PSA_WANT_ALG_SHA_384) \ + && !defined(PSA_WANT_ALG_SHA_512) \ + && !defined(PSA_WANT_ALG_MD5) +#define TFM_CRYPTO_HASH_MODULE_DISABLED +#endif + +// AEAD module +#if !defined(PSA_WANT_ALG_CCM) \ + && !defined(PSA_WANT_ALG_GCM) \ + && !defined(PSA_WANT_ALG_CHACHA20_POLY1305) +#define TFM_CRYPTO_AEAD_MODULE_DISABLED +#endif + +// Asymmetric Sign module +#if !defined(PSA_WANT_ALG_ECDSA) \ + && !defined(PSA_WANT_ALG_EDDSA) \ + && !defined(PSA_WANT_ALG_DETERMINISTIC_ECDSA) +#define TFM_CRYPTO_ASYM_SIGN_MODULE_DISABLED +#endif + +// Cipher module +#if !defined(PSA_WANT_ALG_CFB) \ + && !defined(PSA_WANT_ALG_CTR) \ + && !defined(PSA_WANT_ALG_CBC_NO_PADDING) \ + && !defined(PSA_WANT_ALG_CBC_PKCS7) \ + && !defined(PSA_WANT_ALG_ECB_NO_PADDING) \ + && !defined(PSA_WANT_ALG_XTS) \ + && !defined(PSA_WANT_ALG_OFB) \ + && !defined(PSA_WANT_ALG_STREAM_CIPHER) +#define TFM_CRYPTO_CIPHER_MODULE_DISABLED +#endif + +// MAC module +#if !defined(PSA_WANT_ALG_HMAC) \ + && !defined(PSA_WANT_ALG_CMAC) \ + && !defined(PSA_WANT_ALG_CBC_MAC) +#define TFM_CRYPTO_MAC_MODULE_DISABLED +#endif + +// Key derivation module +#if !defined(PSA_WANT_ALG_PBKDF2_HMAC) \ + && !defined(PSA_WANT_ALG_HKDF) \ + && !defined(PSA_WANT_ALG_PBKDF2_AES_CMAC_PRF_128) \ + && !defined(PSA_WANT_ALG_TLS12_PRF) \ + && !defined(PSA_WANT_ALG_TLS12_PSK_TO_MS) \ + && !defined(PSA_WANT_ALG_ECDH) +#define TFM_CRYPTO_KEY_DERIVATION_MODULE_DISABLED +#endif + +#endif // TFM_CONFIG_SL_SECURE_LIBRARY + +#endif diff --git a/silabs_examples/credentials/device/brd4186c/autogen/sl_application_type.h b/silabs_examples/credentials/device/brd4186c/autogen/sl_application_type.h new file mode 100644 index 00000000000000..8bc7f50103c1e2 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/sl_application_type.h @@ -0,0 +1,41 @@ +/***************************************************************************//** + * @file + * @brief Autogenerated configuration file for application properties + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_APPLICATION_TYPE_H +#define SL_APPLICATION_TYPE_H + +#include "api/application_properties.h" + +// Bitfield representing type of application +#define APPLICATION_TYPE APPLICATION_TYPE_ZIGBEE + + +#endif // SL_APPLICATION_TYPE_H + diff --git a/silabs_examples/credentials/device/brd4186c/autogen/sl_board_default_init.c b/silabs_examples/credentials/device/brd4186c/autogen/sl_board_default_init.c new file mode 100644 index 00000000000000..bd43db368b3c3a --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/sl_board_default_init.c @@ -0,0 +1,36 @@ +/***************************************************************************//** + * @file + * @brief Board Default Init + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ +#include "sl_board_control.h" + +void sl_board_default_init(void) +{ + sl_board_disable_vcom(); + +} diff --git a/silabs_examples/credentials/device/brd4186c/autogen/sl_component_catalog.h b/silabs_examples/credentials/device/brd4186c/autogen/sl_component_catalog.h new file mode 100644 index 00000000000000..f004418792b696 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/sl_component_catalog.h @@ -0,0 +1,55 @@ +#ifndef SL_COMPONENT_CATALOG_H +#define SL_COMPONENT_CATALOG_H + +// APIs present in project +#define SL_CATALOG_GECKO_BOOTLOADER_INTERFACE_PRESENT +#define SL_CATALOG_DEVICE_INIT_NVIC_PRESENT +#define SL_CATALOG_EMLIB_CORE_DEBUG_CONFIG_PRESENT +#define SL_CATALOG_RETARGET_STDIO_PRESENT +#define SL_CATALOG_IOSTREAM_UART_COMMON_PRESENT +#define SL_CATALOG_IOSTREAM_USART_PRESENT +#define SL_CATALOG_LEGACY_BOOTLOADER_INTERFACE_PRESENT +#define SL_CATALOG_LEGACY_COMMON_ASH_PRESENT +#define SL_CATALOG_LEGACY_HAL_PRESENT +#define SL_CATALOG_LEGACY_HAL_WDOG_PRESENT +#define SL_CATALOG_LEGACY_NCP_ASH_PRESENT +#define SL_CATALOG_LEGACY_PRINTF_PRESENT +#define SL_CATALOG_MX25_FLASH_SHUTDOWN_EUSART_PRESENT +#define SL_CATALOG_NVM3_PRESENT +#define SL_CATALOG_POWER_MANAGER_PRESENT +#define SL_CATALOG_PRINTF_PRESENT +#define SL_CATALOG_PSA_CRYPTO_PRESENT +#define SL_CATALOG_RAIL_LIB_PRESENT +#define SL_CATALOG_RAIL_UTIL_IEEE802154_PHY_SELECT_PRESENT +#define SL_CATALOG_RAIL_UTIL_IEEE802154_STACK_EVENT_PRESENT +#define SL_CATALOG_RAIL_UTIL_PTI_PRESENT +#define SL_CATALOG_SE_MANAGER_PRESENT +#define SL_CATALOG_LED0_PRESENT +#define SL_CATALOG_SIMPLE_LED_PRESENT +#define SL_CATALOG_SIMPLE_LED_LED0_PRESENT +#define SL_CATALOG_SLEEPTIMER_PRESENT +#define SL_CATALOG_TOKEN_MANAGER_PRESENT +#define SL_CATALOG_TOKEN_MANAGER_NVM3_PRESENT +#define SL_CATALOG_ZIGBEE_AES_PSA_PRESENT +#define SL_CATALOG_ZIGBEE_APP_FRAMEWORK_COMMON_PRESENT +#define SL_CATALOG_ZIGBEE_BINDING_TABLE_PRESENT +#define SL_CATALOG_ZIGBEE_CCM_PSA_PRESENT +#define SL_CATALOG_ZIGBEE_DEBUG_BASIC_PRESENT +#define SL_CATALOG_ZIGBEE_DEBUG_EXTENDED_PRESENT +#define SL_CATALOG_ZIGBEE_DEBUG_PRINT_PRESENT +#define SL_CATALOG_ZIGBEE_END_DEVICE_BIND_PRESENT +#define SL_CATALOG_ZIGBEE_GREEN_POWER_PRESENT +#define SL_CATALOG_ZIGBEE_NCP_FRAMEWORK_PRESENT +#define SL_CATALOG_ZIGBEE_NCP_PRESENT +#define SL_CATALOG_ZIGBEE_NCP_UART_HARDWARE_PRESENT +#define SL_CATALOG_ZIGBEE_PACKET_VALIDATE_PRESENT +#define SL_CATALOG_ZIGBEE_PHY_2_4_PRESENT +#define SL_CATALOG_ZIGBEE_PRO_STACK_PRESENT +#define SL_CATALOG_ZIGBEE_R22_SUPPORT_PRESENT +#define SL_CATALOG_ZIGBEE_SECURITY_LINK_KEYS_PRESENT +#define SL_CATALOG_ZIGBEE_SOURCE_ROUTE_PRESENT +#define SL_CATALOG_ZIGBEE_STACK_COMMON_PRESENT +#define SL_CATALOG_ZIGBEE_STRONG_RANDOM_API_RADIO_PRESENT +#define SL_CATALOG_ZIGBEE_XNCP_PRESENT + +#endif // SL_COMPONENT_CATALOG_H diff --git a/silabs_examples/credentials/device/brd4186c/autogen/sl_device_init_clocks.c b/silabs_examples/credentials/device/brd4186c/autogen/sl_device_init_clocks.c new file mode 100644 index 00000000000000..b7d9d919ed9c7a --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/sl_device_init_clocks.c @@ -0,0 +1,57 @@ +/***************************************************************************//** + * @file + * @brief Device initialization for clocks. + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ +#include "sl_device_init_clocks.h" + +#include "em_cmu.h" + +sl_status_t sl_device_init_clocks(void) +{ + CMU_ClockSelectSet(cmuClock_SYSCLK, cmuSelect_HFXO); +#if defined(_CMU_EM01GRPACLKCTRL_MASK) + CMU_ClockSelectSet(cmuClock_EM01GRPACLK, cmuSelect_HFXO); +#endif +#if defined(_CMU_EM01GRPBCLKCTRL_MASK) + CMU_ClockSelectSet(cmuClock_EM01GRPBCLK, cmuSelect_HFXO); +#endif + CMU_ClockSelectSet(cmuClock_EM23GRPACLK, cmuSelect_LFXO); + CMU_ClockSelectSet(cmuClock_EM4GRPACLK, cmuSelect_LFXO); +#if defined(RTCC_PRESENT) + CMU_ClockSelectSet(cmuClock_RTCC, cmuSelect_LFXO); +#endif +#if defined(SYSRTC_PRESENT) + CMU_ClockSelectSet(cmuClock_SYSRTC, cmuSelect_LFXO); +#endif + CMU_ClockSelectSet(cmuClock_WDOG0, cmuSelect_LFXO); +#if WDOG_COUNT > 1 + CMU_ClockSelectSet(cmuClock_WDOG1, cmuSelect_LFXO); +#endif + + return SL_STATUS_OK; +} diff --git a/silabs_examples/credentials/device/brd4186c/autogen/sl_event_handler.c b/silabs_examples/credentials/device/brd4186c/autogen/sl_event_handler.c new file mode 100644 index 00000000000000..93a3fbe50df918 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/sl_event_handler.c @@ -0,0 +1,105 @@ +#include "sl_event_handler.h" + +#include "em_chip.h" +#include "sl_device_init_nvic.h" +#include "sl_board_init.h" +#include "sl_device_init_dcdc.h" +#include "sl_hfxo_manager.h" +#include "sl_device_init_hfxo.h" +#include "sl_device_init_lfxo.h" +#include "sl_device_init_clocks.h" +#include "sl_device_init_emu.h" +#include "pa_conversions_efr32.h" +#include "sl_rail_util_pti.h" +#include "zigbee-debug-extended.h" +#include "zigbee_app_framework_common.h" +#include "btl_interface.h" +#include "sl_board_control.h" +#include "sl_sleeptimer.h" +#include "sl_debug_swo.h" +#include "sl_iostream_debug.h" +#include "sl_iostream_init_usart_instances.h" +#include "sl_iostream_vuart.h" +#include "hal.h" +#include "sl_mbedtls.h" +#include "nvm3_default.h" +#include "sl_simple_led_instances.h" +#include "sl_iostream_init_instances.h" +#include "sl_power_manager.h" +#include "sl_cos.h" + +void sl_platform_init(void) +{ + CHIP_Init(); + sl_device_init_nvic(); + sl_board_preinit(); + sl_device_init_dcdc(); + sl_hfxo_manager_init_hardware(); + sl_device_init_hfxo(); + sl_device_init_lfxo(); + sl_device_init_clocks(); + sl_device_init_emu(); + sl_board_init(); + bootloader_init(); + halInit(); + nvm3_initDefault(); + sl_power_manager_init(); +} + +void sl_driver_init(void) +{ + sl_debug_swo_init(); + sl_simple_led_init_instances(); + sl_cos_send_config(); +} + +void sl_service_init(void) +{ + sl_board_configure_vcom(); + sl_sleeptimer_init(); + sl_hfxo_manager_init(); + sl_mbedtls_init(); + sl_iostream_init_instances(); +} + +void sl_stack_init(void) +{ + sl_rail_util_pa_init(); + sl_rail_util_pti_init(); + sli_zigbee_debug_extended_init(); + sli_zigbee_stack_init_callback(); + sli_zigbee_app_framework_init_callback(); + sli_zigbee_app_framework_sleep_init(); + sli_zigbee_ncp_init_callback(); +} + +void sl_internal_app_init(void) +{ +} + +void sl_platform_process_action(void) +{ +} + +void sl_service_process_action(void) +{ +} + +void sl_stack_process_action(void) +{ + sli_zigbee_stack_tick_callback(); + sli_zigbee_app_framework_tick_callback(); + sli_zigbee_ncp_tick_callback(); +} + +void sl_internal_app_process_action(void) +{ +} + +void sl_iostream_init_instances(void) +{ + sl_iostream_debug_init(); + sl_iostream_usart_init_instances(); + sl_iostream_vuart_init(); +} + diff --git a/silabs_examples/credentials/device/brd4186c/autogen/sl_event_handler.h b/silabs_examples/credentials/device/brd4186c/autogen/sl_event_handler.h new file mode 100644 index 00000000000000..9ac6fcdb22b424 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/sl_event_handler.h @@ -0,0 +1,15 @@ +#ifndef SL_EVENT_HANDLER_H +#define SL_EVENT_HANDLER_H + +void sl_platform_init(void); +void sl_driver_init(void); +void sl_service_init(void); +void sl_stack_init(void); +void sl_internal_app_init(void); +void sl_platform_process_action(void); +void sl_service_process_action(void); +void sl_stack_process_action(void); +void sl_internal_app_process_action(void); +void sl_iostream_init_instances(void); + +#endif // SL_EVENT_HANDLER_H diff --git a/silabs_examples/credentials/device/brd4186c/autogen/sl_iostream_handles.c b/silabs_examples/credentials/device/brd4186c/autogen/sl_iostream_handles.c new file mode 100644 index 00000000000000..f59e9ca1e44fff --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/sl_iostream_handles.c @@ -0,0 +1,31 @@ +#include "sl_iostream.h" +#include "sl_iostream_handles.h" +#include "string.h" + +const sl_iostream_instance_info_t *sl_iostream_instances_info[] = { + + &sl_iostream_instance_debug_info, + + &sl_iostream_instance_vcom_info, + + &sl_iostream_instance_vuart_info, + +}; + +const uint32_t sl_iostream_instances_count = sizeof(sl_iostream_instances_info) / sizeof(sl_iostream_instances_info[0]); + +/***************************************************************************//** + * Get iostream instance handle for a given name + * + * @return Instance handle if it exist, NULL otherwise. + ******************************************************************************/ +sl_iostream_t *sl_iostream_get_handle(char *name) +{ + for (uint32_t i = 0; i < sl_iostream_instances_count; i++) { + if (strcmp(sl_iostream_instances_info[i]->name, name) == 0) { + return sl_iostream_instances_info[i]->handle; + } + } + + return NULL; +} \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4186c/autogen/sl_iostream_handles.h b/silabs_examples/credentials/device/brd4186c/autogen/sl_iostream_handles.h new file mode 100644 index 00000000000000..a26f04340f8671 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/sl_iostream_handles.h @@ -0,0 +1,22 @@ +#ifndef SL_IOSTREAM_HANDLES_H +#define SL_IOSTREAM_HANDLES_H +#include "sl_iostream.h" +#include "sl_iostream_debug.h" +#include "sl_iostream_init_usart_instances.h" +#include "sl_iostream_vuart.h" + + +#ifdef __cplusplus +extern "C" { +#endif + +extern const sl_iostream_instance_info_t *sl_iostream_instances_info[]; +extern const uint32_t sl_iostream_instances_count; + +sl_iostream_t *sl_iostream_get_handle(char *name); + +#ifdef __cplusplus +} +#endif + +#endif // SL_IOSTREAM_HANDLES_H diff --git a/silabs_examples/credentials/device/brd4186c/autogen/sl_iostream_init_instances.h b/silabs_examples/credentials/device/brd4186c/autogen/sl_iostream_init_instances.h new file mode 100644 index 00000000000000..c092c37eec59a0 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/sl_iostream_init_instances.h @@ -0,0 +1,16 @@ +#ifndef SL_IOSTREAM_INIT_INSTANCES_H +#define SL_IOSTREAM_INIT_INSTANCES_H + +#include "sl_iostream.h" +#ifdef __cplusplus +extern "C" { +#endif + +// Initialize iostream component(s) / instance(s) +void sl_iostream_init_instances(void); + +#ifdef __cplusplus +} +#endif + +#endif // SL_IOSTREAM_INIT_INSTANCES_H \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4186c/autogen/sl_iostream_init_usart_instances.c b/silabs_examples/credentials/device/brd4186c/autogen/sl_iostream_init_usart_instances.c new file mode 100644 index 00000000000000..ec04146afbe6dd --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/sl_iostream_init_usart_instances.c @@ -0,0 +1,203 @@ +#if defined(SL_COMPONENT_CATALOG_PRESENT) +#include "sl_component_catalog.h" +#endif +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) +#include "sl_power_manager.h" +#endif +#include "em_device.h" +#include "sl_iostream.h" +#include "sl_iostream_uart.h" +#include "sl_iostream_usart.h" +// Include instance config + #include "sl_iostream_usart_vcom_config.h" + +// MACROs for generating name and IRQ handler function +#define SL_IOSTREAM_USART_CONCAT_PASTER(first, second, third) first ## second ## third + + + + +#define SL_IOSTREAM_USART_TX_IRQ_NUMBER(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(USART, periph_nbr, _TX_IRQn) +#define SL_IOSTREAM_USART_RX_IRQ_NUMBER(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(USART, periph_nbr, _RX_IRQn) +#define SL_IOSTREAM_USART_TX_IRQ_HANDLER(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(USART, periph_nbr, _TX_IRQHandler) +#define SL_IOSTREAM_USART_RX_IRQ_HANDLER(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(USART, periph_nbr, _RX_IRQHandler) + +#define SL_IOSTREAM_USART_CLOCK_REF(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(cmuClock_, USART, periph_nbr) + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && defined(_SILICON_LABS_32B_SERIES_2) +// EM Events +#define SLEEP_EM_EVENT_MASK ( SL_POWER_MANAGER_EVENT_TRANSITION_ENTERING_EM2 \ + | SL_POWER_MANAGER_EVENT_TRANSITION_LEAVING_EM2 \ + | SL_POWER_MANAGER_EVENT_TRANSITION_ENTERING_EM3 \ + | SL_POWER_MANAGER_EVENT_TRANSITION_LEAVING_EM3) +#endif + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && defined(_SILICON_LABS_32B_SERIES_2) +static void events_handler(sl_power_manager_em_t from, + sl_power_manager_em_t to); +static sl_power_manager_em_transition_event_info_t events_info = +{ + .event_mask = SLEEP_EM_EVENT_MASK, + .on_event = events_handler, +}; +static sl_power_manager_em_transition_event_handle_t events_handle; +#endif + + +sl_status_t sl_iostream_usart_init_vcom(void); + + +// Instance(s) handle and context variable +static sl_iostream_uart_t sl_iostream_vcom; +sl_iostream_t *sl_iostream_vcom_handle = &sl_iostream_vcom.stream; +sl_iostream_uart_t *sl_iostream_uart_vcom_handle = &sl_iostream_vcom; +static sl_iostream_usart_context_t context_vcom; +static uint8_t rx_buffer_vcom[SL_IOSTREAM_USART_VCOM_RX_BUFFER_SIZE]; +sl_iostream_instance_info_t sl_iostream_instance_vcom_info = { + .handle = &sl_iostream_vcom.stream, + .name = "vcom", + .type = SL_IOSTREAM_TYPE_UART, + .periph_id = SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO, + .init = sl_iostream_usart_init_vcom, +}; + + + +sl_status_t sl_iostream_usart_init_vcom(void) +{ + sl_status_t status; + USART_InitAsync_TypeDef init_vcom = USART_INITASYNC_DEFAULT; + init_vcom.baudrate = SL_IOSTREAM_USART_VCOM_BAUDRATE; + init_vcom.parity = SL_IOSTREAM_USART_VCOM_PARITY; + init_vcom.stopbits = SL_IOSTREAM_USART_VCOM_STOP_BITS; +#if (_SILICON_LABS_32B_SERIES > 0) +#if (SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE != uartFlowControlSoftware) + init_vcom.hwFlowControl = SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE; +#else + init_vcom.hwFlowControl = usartHwFlowControlNone; +#endif +#endif + sl_iostream_usart_config_t config_vcom = { + .usart = SL_IOSTREAM_USART_VCOM_PERIPHERAL, + .clock = SL_IOSTREAM_USART_CLOCK_REF(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO), + .tx_port = SL_IOSTREAM_USART_VCOM_TX_PORT, + .tx_pin = SL_IOSTREAM_USART_VCOM_TX_PIN, + .rx_port = SL_IOSTREAM_USART_VCOM_RX_PORT, + .rx_pin = SL_IOSTREAM_USART_VCOM_RX_PIN, +#if (_SILICON_LABS_32B_SERIES > 0) +#if defined(SL_IOSTREAM_USART_VCOM_CTS_PORT) + .cts_port = SL_IOSTREAM_USART_VCOM_CTS_PORT, + .cts_pin = SL_IOSTREAM_USART_VCOM_CTS_PIN, +#endif +#if defined(SL_IOSTREAM_USART_VCOM_RTS_PORT) + .rts_port = SL_IOSTREAM_USART_VCOM_RTS_PORT, + .rts_pin = SL_IOSTREAM_USART_VCOM_RTS_PIN, +#endif +#endif +#if defined(GPIO_USART_ROUTEEN_TXPEN) + .usart_index = SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO, +#elif defined(USART_ROUTEPEN_RXPEN) + .usart_tx_location = SL_IOSTREAM_USART_VCOM_TX_LOC, + .usart_rx_location = SL_IOSTREAM_USART_VCOM_RX_LOC, +#if defined(SL_IOSTREAM_USART_VCOM_CTS_PORT) + .usart_cts_location = SL_IOSTREAM_USART_VCOM_CTS_LOC, +#endif +#if defined(SL_IOSTREAM_USART_VCOM_RTS_PORT) + .usart_rts_location = SL_IOSTREAM_USART_VCOM_RTS_LOC, +#endif +#else + .usart_location = SL_IOSTREAM_USART_VCOM_ROUTE_LOC, +#endif + }; + sl_iostream_uart_config_t uart_config_vcom = { + .tx_irq_number = SL_IOSTREAM_USART_TX_IRQ_NUMBER(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO), + .rx_irq_number = SL_IOSTREAM_USART_RX_IRQ_NUMBER(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO), + .rx_buffer = rx_buffer_vcom, + .rx_buffer_length = SL_IOSTREAM_USART_VCOM_RX_BUFFER_SIZE, + .lf_to_crlf = SL_IOSTREAM_USART_VCOM_CONVERT_BY_DEFAULT_LF_TO_CRLF, + .rx_when_sleeping = SL_IOSTREAM_USART_VCOM_RESTRICT_ENERGY_MODE_TO_ALLOW_RECEPTION, +#if defined(SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE) +#if (SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE == uartFlowControlSoftware) + .sw_flow_control = true, +#else + .sw_flow_control = false, +#endif +#else + .sw_flow_control = false, +#endif + }; + // Instantiate usart instance + status = sl_iostream_usart_init(&sl_iostream_vcom, + &uart_config_vcom, + &init_vcom, + &config_vcom, + &context_vcom); + EFM_ASSERT(status == SL_STATUS_OK); + + return status; +} + + + +void sl_iostream_usart_init_instances(void) +{ +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && defined(_SILICON_LABS_32B_SERIES_2) + // Enable power manager notifications + sl_power_manager_subscribe_em_transition_event(&events_handle, &events_info); +#endif + + // Instantiate usart instance(s) + + sl_iostream_usart_init_vcom(); + +} + + +// VCOM IRQ Handler +void SL_IOSTREAM_USART_TX_IRQ_HANDLER(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO)(void) +{ + sl_iostream_usart_irq_handler(sl_iostream_vcom.stream.context); +} + +void SL_IOSTREAM_USART_RX_IRQ_HANDLER(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO)(void) +{ + sl_iostream_usart_irq_handler(sl_iostream_vcom.stream.context); +} + + + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && !defined(SL_CATALOG_KERNEL_PRESENT) + +sl_power_manager_on_isr_exit_t sl_iostream_usart_vcom_sleep_on_isr_exit(void) +{ + return sl_iostream_uart_sleep_on_isr_exit(&sl_iostream_vcom); +} + +#endif + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && defined(_SILICON_LABS_32B_SERIES_2) +static void events_handler(sl_power_manager_em_t from, + sl_power_manager_em_t to) +{ + uint32_t out; + if (((from == SL_POWER_MANAGER_EM2) + || (from == SL_POWER_MANAGER_EM3)) + && ((to == SL_POWER_MANAGER_EM1) + || (to == SL_POWER_MANAGER_EM0))) { + + // Wake the USART Tx pin back up + out = GPIO_PinOutGet(SL_IOSTREAM_USART_VCOM_TX_PORT, SL_IOSTREAM_USART_VCOM_TX_PIN); + GPIO_PinModeSet(SL_IOSTREAM_USART_VCOM_TX_PORT, SL_IOSTREAM_USART_VCOM_TX_PIN, gpioModePushPull, out); + + } else if (((to == SL_POWER_MANAGER_EM2) + || (to == SL_POWER_MANAGER_EM3)) + && ((from == SL_POWER_MANAGER_EM1) + || (from == SL_POWER_MANAGER_EM0))) { + + // Sleep the USART Tx pin on series 2 devices to save energy + out = GPIO_PinOutGet(SL_IOSTREAM_USART_VCOM_TX_PORT, SL_IOSTREAM_USART_VCOM_TX_PIN); + GPIO_PinModeSet(SL_IOSTREAM_USART_VCOM_TX_PORT, SL_IOSTREAM_USART_VCOM_TX_PIN, gpioModeDisabled, out); + + } +} +#endif \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4186c/autogen/sl_iostream_init_usart_instances.h b/silabs_examples/credentials/device/brd4186c/autogen/sl_iostream_init_usart_instances.h new file mode 100644 index 00000000000000..2301dbe600fab7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/sl_iostream_init_usart_instances.h @@ -0,0 +1,34 @@ +#ifndef SL_IOSTREAM_INIT_USART_INSTANCES_H +#define SL_IOSTREAM_INIT_USART_INSTANCES_H +#if defined(SL_COMPONENT_CATALOG_PRESENT) +#include "sl_component_catalog.h" +#endif +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) +#include "sl_power_manager.h" +#endif +#include "sl_iostream.h" +#include "sl_iostream_uart.h" +#ifdef __cplusplus +extern "C" { +#endif + + +extern sl_iostream_t *sl_iostream_vcom_handle; +extern sl_iostream_uart_t *sl_iostream_uart_vcom_handle; +extern sl_iostream_instance_info_t sl_iostream_instance_vcom_info; + + +// Initialize only iostream usart instance(s) +void sl_iostream_usart_init_instances(void); + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) + +sl_power_manager_on_isr_exit_t sl_iostream_usart_vcom_sleep_on_isr_exit(void); + +#endif + +#ifdef __cplusplus +} +#endif + +#endif // SL_IOSTREAM_INIT_USART_INSTANCES_H \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4186c/autogen/sl_legacy_bootloader_device_info.h b/silabs_examples/credentials/device/brd4186c/autogen/sl_legacy_bootloader_device_info.h new file mode 100644 index 00000000000000..db917a78b849ac --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/sl_legacy_bootloader_device_info.h @@ -0,0 +1,41 @@ +/***************************************************************************//** + * @file + * @brief Legacy Bootloader Interface Device Info + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +enum { + SL_FAMILY_UNKNOWN = 0, + SL_FAMILY_MGM1 = 1, + SL_FAMILY_BGM1 = 1, + SL_FAMILY_EFR32MG1P = 16, + SL_FAMILY_EFR32MG1B = 17, + SL_FAMILY_EFR32MG1V = 18, + SL_FAMILY_EFR32BG1P = 19, + SL_FAMILY_EFR32BG1B = 20, + SL_FAMILY_EFR32BG1V = 21, + SL_FAMILY_EFR32FG1P = 25, + SL_FAMILY_EFR32FG1V = 27, +}; + +// CORTEXM3 +#define SL_PLAT 4U + +// CORTEXM3_EFR32 +#define SL_MICRO 24U + +#define SL_FAMILY SL_FAMILY_EFR32MG24 + +// PHY_RAIL +#define SL_PHY 15U diff --git a/silabs_examples/credentials/device/brd4186c/autogen/sl_mbedtls_config_transform_autogen.h b/silabs_examples/credentials/device/brd4186c/autogen/sl_mbedtls_config_transform_autogen.h new file mode 100644 index 00000000000000..2e0dcae5c15f29 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/sl_mbedtls_config_transform_autogen.h @@ -0,0 +1,44 @@ +// This is an autogenerated config file, any changes to this file will be overwritten + +#ifndef SL_MBEDTLS_CONFIG_TRANSFORM_AUTOGEN_H +#define SL_MBEDTLS_CONFIG_TRANSFORM_AUTOGEN_H + +// Convert CMSIS Markup config defines to mbedTLS specific config defines + +// Allow undefining the specified cipher suites +#if defined(SLI_MBEDTLS_AUTODETECT_CIPHERSUITES) +#undef MBEDTLS_SSL_CIPHERSUITES +#endif + +#if SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH + #define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH +#endif +#if SL_MBEDTLS_SSL_EXPORT_KEYS + #define MBEDTLS_SSL_EXPORT_KEYS +#endif +#if SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED + #define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED +#endif +#if SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED + #define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED +#endif +#if SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED + #define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED +#endif +#if SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED + #define MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED +#endif + +#if !defined(MBEDTLS_SSL_IN_CONTENT_LEN) + #define MBEDTLS_SSL_IN_CONTENT_LEN SL_MBEDTLS_SSL_IN_CONTENT_LEN +#endif + +#if !defined(MBEDTLS_SSL_OUT_CONTENT_LEN) + #define MBEDTLS_SSL_OUT_CONTENT_LEN SL_MBEDTLS_SSL_OUT_CONTENT_LEN +#endif + + + + + +#endif // SL_MBEDTLS_CONFIG_TRANSFORM_AUTOGEN_H diff --git a/silabs_examples/credentials/device/brd4186c/autogen/sl_power_manager_handler.c b/silabs_examples/credentials/device/brd4186c/autogen/sl_power_manager_handler.c new file mode 100644 index 00000000000000..6f5254fbcf984e --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/sl_power_manager_handler.c @@ -0,0 +1,126 @@ +#include +#include "em_core.h" +#include "sl_power_manager.h" +#include "sl_sleeptimer.h" +#include "sl_iostream_init_usart_instances.h" +#include "sl_legacy_hal_integration_hooks.h" +#include "zigbee_app_framework_common.h" +#include "serial-interface.h" + +/***************************************************************************//** + * Check if the MCU can sleep at that time. This function is called when the system + * is about to go sleeping, with the interrupts disabled. It allows the software to + * cancel going to sleep in case of a last-minute event occurred (window between the + * function call and interrupt disable). + * + * @return True, if the system can go to sleep. + * False, otherwise. + * + * @note This function is called with the interrupt disabled and it MUST NOT be + * re-enabled. + ******************************************************************************/ +__WEAK bool app_is_ok_to_sleep(void) +{ + return true; +} + +/***************************************************************************//** + * Check if the MCU can sleep after an interrupt. This function is called after an + * interrupt occured and was processed. It allows the power manger to know if it must + * go back to sleep or wakeup. + * + * @return SL_POWER_MANAGER_IGNORE, if the module did not trigger an ISR and it + * won't to contribute to the decision. + * + * SL_POWER_MANAGER_SLEEP, The module was the one that caused the system + * wakeup and the system SHOULD go back to sleep. + * + * SL_POWER_MANAGER_WAKEUP, The module was the one that caused the system + * wakeup and the system MUST NOT go back to sleep. + * + * @note This function must not have any side effects. It is not guaranteed to be + * called for every ISR. If a prior hook function requires to wakeup, such + * as a wireless stack, the application hook function won't be called. + ******************************************************************************/ +__WEAK sl_power_manager_on_isr_exit_t app_sleep_on_isr_exit(void) +{ + return SL_POWER_MANAGER_IGNORE; +} + +/***************************************************************************//** + * Mandatory callback that allows to cancel sleeping action. This function is called + * when the system is about to go sleeping, with the interrupts disabled. It allows + * the software to cancel going to sleep in case of a last-minute event occurred + * (window between the function call and interrupt disable). + ******************************************************************************/ +bool sl_power_manager_is_ok_to_sleep(void) +{ + bool ok_to_sleep = true; + if (sl_legacy_hal_is_ok_to_sleep() == false) { + ok_to_sleep = false; + } + if (sli_zigbee_app_framework_is_ok_to_sleep() == false) { + ok_to_sleep = false; + } + if (serialOkToSleep() == false) { + ok_to_sleep = false; + } + // Application hook + if (app_is_ok_to_sleep() == false) { + ok_to_sleep = false; + } + + return ok_to_sleep; +} + +/***************************************************************************//** + * Mandatory callback that must validate if the MCU can sleep after having + * processed an interrupt when the system was sleeping. + ******************************************************************************/ +bool sl_power_manager_sleep_on_isr_exit(void) +{ + sl_power_manager_on_isr_exit_t answer; + bool sleep = false; + bool force_wakeup = false; + + // This function allow the power manager to return into sleep, if the latest timer + // to expire was power manager's internal one used to restore HFXO on time or + // the HFXO interrupt. + // Most of the time we want to get back to sleep until the next event occurs. + sleep = sl_power_manager_is_latest_wakeup_internal(); + + answer = sl_iostream_usart_vcom_sleep_on_isr_exit(); + if (answer == SL_POWER_MANAGER_WAKEUP) { + force_wakeup = true; + } else if (answer == SL_POWER_MANAGER_SLEEP) { + sleep = true; + } + + answer = sl_legacy_hal_sleep_on_isr_exit(); + if (answer == SL_POWER_MANAGER_WAKEUP) { + force_wakeup = true; + } else if (answer == SL_POWER_MANAGER_SLEEP) { + sleep = true; + } + + answer = sli_zigbee_sleep_on_isr_exit(); + if (answer == SL_POWER_MANAGER_WAKEUP) { + force_wakeup = true; + } else if (answer == SL_POWER_MANAGER_SLEEP) { + sleep = true; + } + + // Application hook + answer = app_sleep_on_isr_exit(); + if (answer == SL_POWER_MANAGER_WAKEUP) { + force_wakeup = true; + } else if (answer == SL_POWER_MANAGER_SLEEP) { + sleep = true; + } + + if (force_wakeup) { + sleep = false; + } + + return sleep; +} \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4186c/autogen/sl_rail_util_ieee802154_phy_select.c b/silabs_examples/credentials/device/brd4186c/autogen/sl_rail_util_ieee802154_phy_select.c new file mode 100644 index 00000000000000..a7632d665dbdfa --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/sl_rail_util_ieee802154_phy_select.c @@ -0,0 +1,261 @@ +/***************************************************************************//** + * @file + * @brief + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#if defined(SL_COMPONENT_CATALOG_PRESENT) + #include "sl_component_catalog.h" +#endif + +#ifdef SL_CATALOG_RAIL_MULTIPLEXER_PRESENT +#include "sl_rail_mux_rename.h" +#endif + +#include "rail.h" +#include "rail_ieee802154.h" +#include "sl_rail_util_ieee802154_phy_select.h" +#include "sl_status.h" +#include "em_assert.h" +extern void sl_mac_lower_mac_update_active_radio_config(void); + +extern RAIL_Handle_t emPhyRailHandle; + +#define RUNTIME_PHY_SELECT (0) + +#define RUNTIME_PHY_SELECT_STACK_SUPPORT (0 || SL_ZIGBEE_PHY_SELECT_STACK_SUPPORT) + +static sl_rail_util_ieee802154_radio_config_t active_radio_config = SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT; + + +static sl_rail_util_ieee802154_radio_config_t sl_rail_util_get_desired_radio_config(void) +{ + return (SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT + ); +} + +#if RUNTIME_PHY_SELECT +#if !RUNTIME_PHY_SELECT_STACK_SUPPORT +#error "Run time PHY select is currently unsupported on the selected stack." +#endif + +static bool stackInitialized = false; + +static uint8_t blockPhySwitch = 0U; +#define BLOCK_SWITCH_RX 0x01u +#define BLOCK_SWITCH_TX 0x02u +#define setBlockPhySwitch(dir, boolval) \ + do { \ + if (boolval) { \ + blockPhySwitch |= (dir); \ + } else { \ + blockPhySwitch &= (uint8_t) ~(dir); \ + } \ + } while (false) + +static bool checkPhySwitch(void) +{ + sl_rail_util_ieee802154_radio_config_t desired_radio_config = sl_rail_util_get_desired_radio_config(); + if ((active_radio_config != desired_radio_config) + && (blockPhySwitch == 0U) + && stackInitialized + && (emPhyRailHandle != NULL)) { + //@TODO: Ascertain radio is OFF, RXWARM, or RXSEARCH only. + active_radio_config = desired_radio_config; + sl_mac_lower_mac_update_active_radio_config(); + return true; + } + return false; +} + +#else//!RUNTIME_PHY_SELECT + +#define setBlockPhySwitch(dir, boolval) /*no-op*/ +#define checkPhySwitch() (false) + +#endif//RUNTIME_PHY_SELECT + +sl_rail_util_ieee802154_radio_config_t sl_rail_util_ieee802154_get_active_radio_config(void) +{ + return active_radio_config; +} + +#define ANT_DIV_PHY_DEFAULT_ENABLED (SL_RAIL_UTIL_ANTENNA_RX_DEFAULT_MODE != SL_RAIL_UTIL_ANTENNA_MODE_DISABLED) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || !ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || !SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || !SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || !SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || !SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || !ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || !SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || !SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) + +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_FEM_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || !ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || !SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_FEM_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || !SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_FEM_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || !ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_FEM_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) + +RAIL_Status_t sl_rail_util_ieee802154_config_radio(RAIL_Handle_t railHandle) +{ + // Establish the proper radio config + RAIL_Status_t status = RAIL_STATUS_INVALID_STATE; + sl_rail_util_ieee802154_radio_config_t desired_radio_config = sl_rail_util_get_desired_radio_config(); + switch (desired_radio_config) { +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT: + status = RAIL_IEEE802154_Config2p4GHzRadio(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV: + status = RAIL_IEEE802154_Config2p4GHzRadioAntDiv(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX: + status = RAIL_IEEE802154_Config2p4GHzRadioCoex(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX: + status = RAIL_IEEE802154_Config2p4GHzRadioAntDivCoex(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_FEM_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_FEM: + status = RAIL_IEEE802154_Config2p4GHzRadioFem(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_FEM_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_FEM_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_FEM: + status = RAIL_IEEE802154_Config2p4GHzRadioAntDivFem(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_FEM_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_FEM_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_FEM: + status = RAIL_IEEE802154_Config2p4GHzRadioCoexFem(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_FEM_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_FEM_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_FEM: + status = RAIL_IEEE802154_Config2p4GHzRadioAntDivCoexFem(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_FEM_SUPPORTED + default: + break; + } + EFM_ASSERT(status == RAIL_STATUS_NO_ERROR); + active_radio_config = desired_radio_config; + + return status; +} + +#if RUNTIME_PHY_SELECT +sl_rail_util_ieee802154_stack_status_t sl_rail_util_ieee802154_phy_select_on_event( + sl_rail_util_ieee802154_stack_event_t stack_event, + uint32_t supplement) +{ + bool isReceivingFrame = false; + + switch (stack_event) { + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TICK: + stackInitialized = true; + (void) checkPhySwitch(); + break; + + // RX events: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_STARTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACCEPTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACKING: + setBlockPhySwitch(BLOCK_SWITCH_RX, true); + break; + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_CORRUPTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACK_BLOCKED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACK_ABORTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_FILTERED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ENDED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACK_SENT: + isReceivingFrame = (bool) supplement; + // FALLTHROUGH + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_IDLED: + setBlockPhySwitch(BLOCK_SWITCH_RX, isReceivingFrame); + break; + + // TX events: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_PENDED_MAC: + break; + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_PENDED_PHY: + setBlockPhySwitch(BLOCK_SWITCH_TX, true); + break; + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_CCA_SOON: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_CCA_BUSY: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_STARTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ACK_WAITING: + break; + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ACK_RECEIVED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ACK_TIMEDOUT: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_BLOCKED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ABORTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ENDED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_IDLED: + setBlockPhySwitch(BLOCK_SWITCH_TX, false); + break; + default: + break; + } + return SL_RAIL_UTIL_IEEE802154_STACK_STATUS_SUCCESS; +} +#else +sl_rail_util_ieee802154_stack_status_t sl_rail_util_ieee802154_phy_select_on_event( + sl_rail_util_ieee802154_stack_event_t stack_event, + uint32_t supplement) +{ + (void)stack_event; + (void)supplement; + return SL_RAIL_UTIL_IEEE802154_STACK_STATUS_UNSUPPORTED; +} +#endif //RUNTIME_PHY_SELECT diff --git a/silabs_examples/credentials/device/brd4186c/autogen/sl_rail_util_ieee802154_stack_event.c b/silabs_examples/credentials/device/brd4186c/autogen/sl_rail_util_ieee802154_stack_event.c new file mode 100644 index 00000000000000..4d98c10bee1fc5 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/sl_rail_util_ieee802154_stack_event.c @@ -0,0 +1,44 @@ +/***************************************************************************//** + * @file + * @brief + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#include "rail.h" +#include "rail_ieee802154.h" +#include "sl_status.h" +#include "sl_rail_util_ieee802154_stack_event.h" +#include "em_assert.h" +#include "sl_rail_util_ieee802154_phy_select.h" + +sl_rail_util_ieee802154_stack_status_t sl_rail_util_ieee802154_on_event( + sl_rail_util_ieee802154_stack_event_t stack_event, + uint32_t supplement) +{ + sl_rail_util_ieee802154_phy_select_on_event(stack_event, supplement); + return SL_RAIL_UTIL_IEEE802154_STACK_STATUS_SUCCESS; +} diff --git a/silabs_examples/credentials/device/brd4186c/autogen/sl_simple_led_instances.c b/silabs_examples/credentials/device/brd4186c/autogen/sl_simple_led_instances.c new file mode 100644 index 00000000000000..a194fc048f3e4f --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/sl_simple_led_instances.c @@ -0,0 +1,44 @@ +/***************************************************************************//** + * @file + * @brief LED Driver Instances + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include "sl_simple_led.h" +#include "em_gpio.h" +#include "sl_simple_led_led0_config.h" + +sl_simple_led_context_t simple_led0_context = { + .port = SL_SIMPLE_LED_LED0_PORT, + .pin = SL_SIMPLE_LED_LED0_PIN, + .polarity = SL_SIMPLE_LED_LED0_POLARITY, +}; + +const sl_led_t sl_led_led0 = { + .context = &simple_led0_context, + .init = sl_simple_led_init, + .turn_on = sl_simple_led_turn_on, + .turn_off = sl_simple_led_turn_off, + .toggle = sl_simple_led_toggle, + .get_state = sl_simple_led_get_state, +}; + +const sl_led_t *sl_simple_led_array[] = { + &sl_led_led0 +}; + +void sl_simple_led_init_instances(void) +{ + sl_led_init(&sl_led_led0); +} diff --git a/silabs_examples/credentials/device/brd4186c/autogen/sl_simple_led_instances.h b/silabs_examples/credentials/device/brd4186c/autogen/sl_simple_led_instances.h new file mode 100644 index 00000000000000..61f19773c9b2ed --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/sl_simple_led_instances.h @@ -0,0 +1,32 @@ +/***************************************************************************//** + * @file + * @brief LED Driver Instances + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_SIMPLE_LED_INSTANCES_H +#define SL_SIMPLE_LED_INSTANCES_H + +#include "sl_simple_led.h" + +extern const sl_led_t sl_led_led0; + +extern const sl_led_t *sl_simple_led_array[]; + +#define SL_SIMPLE_LED_COUNT 1 +#define SL_SIMPLE_LED_INSTANCE(n) (sl_simple_led_array[n]) + +void sl_simple_led_init_instances(void); + +#endif // SL_SIMPLE_LED_INIT_H diff --git a/silabs_examples/credentials/device/brd4186c/autogen/zigbee_af_token_headers.h b/silabs_examples/credentials/device/brd4186c/autogen/zigbee_af_token_headers.h new file mode 100644 index 00000000000000..fcc5d6e16da805 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/zigbee_af_token_headers.h @@ -0,0 +1,25 @@ +/***************************************************************************//** + * @file zigbee_af_token_headers.h + * @brief ZCL callback dispatcher declarations. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +/* + * This file includes token headers for the components selected in the project + */ +// +// *** Generated file. Do not edit! *** +// + +#include "app/xncp/xncp-token.h" + diff --git a/silabs_examples/credentials/device/brd4186c/autogen/zigbee_common_callback_dispatcher.c b/silabs_examples/credentials/device/brd4186c/autogen/zigbee_common_callback_dispatcher.c new file mode 100644 index 00000000000000..7aebdfc9d5db83 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/zigbee_common_callback_dispatcher.c @@ -0,0 +1,38 @@ +/***************************************************************************//** + * @file zigbee_common_callback_dispatcher.c + * @brief ZigBee common dispatcher definitions. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "zigbee_app_framework_common.h" +#include "zigbee_common_callback_dispatcher.h" + +void emAfEventInit(void) +{ +} + +void emAfLocalDataInit(void) +{ +} + +void emAfInitDone(void) +{ +} + + +void emAfTick(void) +{ +} diff --git a/silabs_examples/credentials/device/brd4186c/autogen/zigbee_common_callback_dispatcher.h b/silabs_examples/credentials/device/brd4186c/autogen/zigbee_common_callback_dispatcher.h new file mode 100644 index 00000000000000..f6872e2aa7e0f4 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/zigbee_common_callback_dispatcher.h @@ -0,0 +1,34 @@ +/***************************************************************************//** + * @file zigbee_common_callback_dispatcher.h + * @brief ZigBee common dispatcher declarations. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_ZIGBEE_COMMON_CALLBACK_DISPATCHER_H +#define SL_ZIGBEE_COMMON_CALLBACK_DISPATCHER_H + +#include PLATFORM_HEADER +#include "stack/include/ember.h" + +// Event Init +void emAfEventInit(void); +// Local data Init +void emAfLocalDataInit(void); +// Init done +void emAfInitDone(void); + +// Tick +void emAfTick(void); + +#endif // SL_ZIGBEE_COMMON_CALLBACK_DISPATCHER_H \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4186c/autogen/zigbee_ncp_callback_dispatcher.c b/silabs_examples/credentials/device/brd4186c/autogen/zigbee_ncp_callback_dispatcher.c new file mode 100644 index 00000000000000..3c7a890eff4610 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/zigbee_ncp_callback_dispatcher.c @@ -0,0 +1,93 @@ +/***************************************************************************//** + * @file zigbee_ncp_callback_dispatcher.c + * @brief ZigBee ncp dispatcher definitions. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "zigbee_ncp_callback_dispatcher.h" + + +void emberAfEzspGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context) +{ + emberAfPluginEzspGetValueCommandCallback(context); + emberAfPluginEzspZigbeeProGetValueCommandCallback(context); + emberAfPluginEzspSecurityGetValueCommandCallback(context); +} + + +void emberAfEzspGetExtendedValueCommandCallback(EmberAfPluginEzspValueCommandContext* context) +{ + emberAfPluginEzspZigbeeProGetExtendedValueCommandCallback(context); +} + + +void emberAfEzspSetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context) +{ + emberAfPluginEzspSetValueCommandCallback(context); + emberAfPluginEzspZigbeeProSetValueCommandCallback(context); + emberAfPluginEzspSecuritySetValueCommandCallback(context); +} + + +void emberAfEzspGetPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context) +{ + emberAfPluginEzspBindingPolicyCommandCallback(context); + emberAfPluginEzspPolicyCommandCallback(context); + emberAfPluginEzspZigbeeProPolicyCommandCallback(context); + emberAfPluginEzspSecurityPolicyCommandCallback(context); +} + + +void emberAfEzspSetPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context) +{ + emberAfPluginEzspBindingPolicyCommandCallback(context); + emberAfPluginEzspPolicyCommandCallback(context); + emberAfPluginEzspZigbeeProPolicyCommandCallback(context); + emberAfPluginEzspSecurityPolicyCommandCallback(context); +} + + +void emberAfEzspGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context) +{ + emberAfPluginEzspBindingConfigurationValueCommandCallback(context); + emberAfPluginEzspGetConfigurationValueCommandCallback(context); + emberAfPluginEzspSourceRouteGetConfigurationValueCommandCallback(context); + emberAfPluginEzspZigbeeProGetConfigurationValueCommandCallback(context); + emberAfPluginEzspSecurityGetConfigurationValueCommandCallback(context); +} + + +void emberAfEzspSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context) +{ + emberAfPluginEzspBindingConfigurationValueCommandCallback(context); + emberAfPluginEzspSetConfigurationValueCommandCallback(context); + emberAfPluginEzspSourceRouteSetConfigurationValueCommandCallback(context); + emberAfPluginEzspZigbeeProSetConfigurationValueCommandCallback(context); + emberAfPluginEzspSecuritySetConfigurationValueCommandCallback(context); +} + + +void emberAfPluginEzspModifyMemoryAllocationCallback(void) +{ + emInitializeBindingTable(); + emberAfPluginEzspZigbeeProModifyMemoryAllocationCallback(); +} + + +void emberAfPluginEzspPermitHostToNcpFrameCallback(bool* permit) +{ + emberAfPluginEzspBindingPermitHostToNcpFrameCallback(permit); +} diff --git a/silabs_examples/credentials/device/brd4186c/autogen/zigbee_ncp_callback_dispatcher.h b/silabs_examples/credentials/device/brd4186c/autogen/zigbee_ncp_callback_dispatcher.h new file mode 100644 index 00000000000000..753af5d201f7e1 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/zigbee_ncp_callback_dispatcher.h @@ -0,0 +1,88 @@ +/***************************************************************************//** + * @file zigbee_ncp_callback_dispatcher.h + * @brief ZigBee ncp dispatcher declarations. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_ZIGBEE_NCP_CALLBACK_DISPATCHER_H +#define SL_ZIGBEE_NCP_CALLBACK_DISPATCHER_H + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "app/em260/command-context.h" // EmberAfPluginEzspValueCommandContext + + +// get_value +void emberAfEzspGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspZigbeeProGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspSecurityGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); + + + + +void emberAfEzspGetExtendedValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspZigbeeProGetExtendedValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); + + + +void emberAfEzspSetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspSetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspZigbeeProSetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspSecuritySetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); + + + +void emberAfEzspGetPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspBindingPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspZigbeeProPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspSecurityPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); + + + +void emberAfEzspSetPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspBindingPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspZigbeeProPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspSecurityPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); + + +void emberAfEzspGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspBindingConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSourceRouteGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspZigbeeProGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSecurityGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); + + + +void emberAfEzspSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspBindingConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSourceRouteSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspZigbeeProSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSecuritySetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); + + +void emberAfPluginEzspModifyMemoryAllocationCallback(void); +void emInitializeBindingTable(void); +void emberAfPluginEzspZigbeeProModifyMemoryAllocationCallback(void); + + + +void emberAfPluginEzspPermitHostToNcpFrameCallback(bool* permit); +void emberAfPluginEzspBindingPermitHostToNcpFrameCallback(bool* permit); + +#endif // SL_ZIGBEE_NCP_CALLBACK_DISPATCHER_H \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4186c/autogen/zigbee_stack_callback_dispatcher.c b/silabs_examples/credentials/device/brd4186c/autogen/zigbee_stack_callback_dispatcher.c new file mode 100644 index 00000000000000..2b9b8483a566ec --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/zigbee_stack_callback_dispatcher.c @@ -0,0 +1,993 @@ +/*****************************************************************************/ +/** + * Copyright 2020 Silicon Laboratories, Inc. + * + *****************************************************************************/ +// +// *** Generated file. Do not edit! *** +// + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "zigbee_stack_callback_dispatcher.h" + + + +#ifdef EZSP_HOST +// Incoming Message +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // The link quality + uint8_t lastHopLqi, + // The energy level + int8_t lastHopRssi, + // The sender of the message. + EmberNodeId sender, + // The index of a binding that matches the message + // matching binding. + uint8_t bindingIndex, + // The index of the entry in the address table + uint8_t addressIndex, + // The message length + uint8_t messageLength, + // message + uint8_t *messageContents) +{ +(void) type; +(void) apsFrame; +(void) lastHopLqi; +(void) lastHopRssi; +(void) sender; +(void) bindingIndex; +(void) addressIndex; +(void) messageLength; +(void) messageContents; + +emAfIncomingMessageCallback(type, apsFrame, lastHopLqi, lastHopRssi, sender, bindingIndex, addressIndex, messageLength, messageContents); +} +#else // !EZSP_HOST +// Incoming Message +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message) +{ +(void)type; +(void)apsFrame; +(void)message; + +emAfIncomingMessageCallback(type, apsFrame, message); +} +#endif // EZSP_HOST + + +// Message Sent +#ifdef EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // Message tag + uint8_t messageTag, + // Message delivery status + EmberStatus status, + // The length of the messageContents + uint8_t messageLength, + // Message data + uint8_t *messageContents) +{ +(void)type; +(void)indexOrDestination; +(void)apsFrame; +(void)messageTag; +(void)status; +(void) messageLength; +(void) messageContents; + +emAfMessageSentCallback(type, indexOrDestination, apsFrame, messageTag, status, messageLength, messageContents); +} +#else // !EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message, + // Message delivery status + EmberStatus status) +{ +(void)type; +(void)indexOrDestination; +(void)apsFrame; +(void)message; +(void)status; + +emAfMessageSentCallback(type, indexOrDestination, apsFrame, message, status); +} +#endif // EZSP_HOST + + + +// Trust Center Join +void emAfTrustCenterJoin( + // Joining node's id + EmberNodeId newNodeId, + // Joining node's Eui64 + EmberEUI64 newNodeEui64, + // Status + EmberDeviceUpdate status, + // Parent Id of the joining node + EmberNodeId parentOfNewNode) +{ +(void)newNodeId; +(void)newNodeEui64; +(void)status; +(void)parentOfNewNode; + +} + + + +// Mark Buffers +void emAfMarkBuffers(void) +{ + +emAfMarkBuffersCallback(); +} + + + +// Packet Handoff Incoming +void emAfPacketHandoffIncoming( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +{ +(void)packetType; +(void)packetBuffer; +(void)index; +(void)data; + +} + + + +// Packet Handoff Outgoing +void emAfPacketHandoffOutgoing( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +{ +(void)packetType; +(void)packetBuffer; +(void)index; +(void)data; + +} + + + +// Incoming Mfg Test Message +void emAfIncomingMfgTestMessage( + uint8_t messageType, + uint8_t dataLength, + // Return: + uint8_t *data) +{ +(void)messageType; +(void)dataLength; +(void)data; + +} + + + +// Override Incoming Route Record +void emAfOverrideIncomingRouteRecord( + EmberNodeId source, + EmberEUI64 sourceEui, + uint8_t relayCount, + EmberMessageBuffer header, + uint8_t relayListIndex, + // Return: + bool *consumed) +{ +(void)source; +(void)sourceEui; +(void)relayCount; +(void)header; +(void)relayListIndex; +(void)consumed; + +emAfOverrideIncomingRouteRecordCallback(source, sourceEui, relayCount, header, relayListIndex, consumed); +} + + + +// Override Append Source Route +// Return: Added bytes +void emAfOverrideAppendSourceRoute( + EmberNodeId destination, + // Return: + EmberMessageBuffer *header, + // Return: + bool *consumed) +{ +(void)destination; +(void)header; +(void)consumed; + +} + + + +// Override Furthur Index For Source Route Add Entry +void emAfOverrideFurthurIndexForSourceRouteAddEntry( + EmberNodeId id, + // Return: + uint8_t *furtherIndex) +{ +(void)id; +(void)furtherIndex; + +emAfOverrideFurthurIndexForSourceRouteAddEntryCallback(id, furtherIndex); +} + + + +// Stack Status +void emAfStackStatus( + // Stack status + EmberStatus status) +{ +(void)status; + +emAfStackStatusCallback(status); +} + + + +// Energy Scan Result +void emAfEnergyScanResult( + // The 802.15.4 channel number that was scanned. + uint8_t channel, + // The maximum RSSI value found on the channel. + int8_t maxRssiValue) +{ +(void)channel; +(void)maxRssiValue; + +emAfEnergyScanResultCallback(channel, maxRssiValue); +} + + + +// Network Found +void emAfNetworkFound( + // The parameters associated with the network found. + EmberZigbeeNetwork *networkFound, + // The link quality indication of the network found. + uint8_t lqi, + // The received signal strength indication of the network found. + int8_t rssi) +{ +(void)networkFound; +(void)lqi; +(void)rssi; + +emAfNetworkFoundCallback(networkFound, lqi, rssi); +} + + + +// Scan Complete +void emAfScanComplete( + // The channel on which the current error occurred. Undefined for the case + // of EMBER_SUCCESS. + uint8_t channel, + // The error condition that occurred on the current channel. Value will be + // EMBER_SUCCESS when the scan has completed. + EmberStatus status) +{ +(void)channel; +(void)status; + +emAfScanCompleteCallback(channel, status); +} + + + +// Unused Pan Id Found +void emAfUnusedPanIdFound( + // The unused panID which has been found. + EmberPanId panId, + // The channel that the unused panID was found on. + uint8_t channel) +{ +(void)panId; +(void)channel; + +emAfUnusedPanIdFoundCallback(panId, channel); +} + + + +// Child Join +#ifdef EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining, + // The node ID of the child. + EmberNodeId childId, + // The EUI64 of the child. + EmberEUI64 childEui64, + // The node type of the child. + EmberNodeType childType) +{ +(void)index; +(void)joining; +(void)childId; +(void)childEui64; +(void)childType; + +emAfChildJoinCallback(index, joining, childId, childEui64, childType); +} +#else // !EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining) +{ +(void)index; +(void)joining; + +emAfChildJoinCallback(index, joining); +} +#endif // EZSP_HOST + + + +// Duty Cycle +#ifdef EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state, + // The total number of connected end devices that are being monitored for + // duty cycle. + uint8_t totalDevices, + // Consumed duty cycles of end devices that are being monitored. The first + // entry always be the local stack's nodeId, and thus the total aggregate + // duty cycle for the device. + EmberPerDeviceDutyCycle *arrayOfDeviceDutyCycles) +{ +(void)channelPage; +(void)channel; +(void)state; +(void)totalDevices; +(void)arrayOfDeviceDutyCycles; + +emAfDutyCycleCallback(channelPage, channel, state, totalDevices, arrayOfDeviceDutyCycles); +} +#else // !EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state) +{ +(void)channelPage; +(void)channel; +(void)state; + +emAfDutyCycleCallback(channelPage, channel, state); +} +#endif // EZSP_HOST + + + +// Remote Set Binding +// Return: ZDO response status. +void emAfRemoteSetBinding( + // Return: The contents of the binding entry. + EmberBindingTableEntry *entry) +{ +(void)entry; + +} + + + +// Remote Delete Binding +// Return: ZDO response status +void emAfRemoteDeleteBinding( + // The index of the binding whose deletion was requested. + uint8_t index) +{ +(void)index; + +} + + + +// Poll Complete +void emAfPollComplete( + // An EmberStatus value: EMBER_SUCCESS - Data was received in response to + // the poll. EMBER_MAC_NO_DATA - No data was pending. + // EMBER_DELIVERY_FAILED - The poll message could not be sent. + // EMBER_MAC_NO_ACK_RECEIVED - The poll message was sent but not + // acknowledged by the parent. + EmberStatus status) +{ +(void)status; + +emAfPollCompleteCallback(status); +} + + + +// Poll +void emAfPoll( + // The node ID of the child that is requesting data. + EmberNodeId childId, + // True if transmit expected, false otherwise. + bool transmitExpected) +{ +(void)childId; +(void)transmitExpected; + +emAfPollCallback(childId, transmitExpected); +} + + + +// Debug +void emAfDebug( + // debug message + EmberMessageBuffer message) +{ +(void)message; + +} + + + +// Incoming Many To One Route Request +void emAfIncomingManyToOneRouteRequest( + // The short id of the concentrator. + EmberNodeId source, + // The EUI64 of the concentrator. + EmberEUI64 longId, + // The path cost to the concentrator. The cost may decrease as additional + // route request packets for this discovery arrive, but the callback is + // made only once. + uint8_t cost) +{ +(void)source; +(void)longId; +(void)cost; + +emAfIncomingManyToOneRouteRequestCallback(source, longId, cost); +} + + + +// Incoming Route Error +void emAfIncomingRouteError( + // EMBER_SOURCE_ROUTE_FAILURE or EMBER_MANY_TO_ONE_ROUTE_FAILURE. + EmberStatus status, + // The short id of the remote node. + EmberNodeId target) +{ +(void)status; +(void)target; + +emAfIncomingRouteErrorCallback(status, target); +} + + + +// Incoming Network Status +void emAfIncomingNetworkStatus( + // One byte over-the-air error code from network status message + uint8_t errorCode, + // The short ID of the remote node + EmberNodeId target) +{ +(void)errorCode; +(void)target; + +emAfIncomingNetworkStatusCallback(errorCode, target); +} + + + +// Incoming Route Record +void emAfIncomingRouteRecord( + // The source of the route record. + EmberNodeId source, + // The EUI64 of the source. + EmberEUI64 sourceEui, + // The number of relays in relayList. + uint8_t relayCount, + // Header. + EmberMessageBuffer header, + // The relay List Index. + uint8_t relayListIndex) +{ +(void)source; +(void)sourceEui; +(void)relayCount; +(void)header; +(void)relayListIndex; + +emAfIncomingRouteRecordCallback(source, sourceEui, relayCount, header, relayListIndex); +} + + + +// Id Conflict +void emAfIdConflict( + // The short id for which a conflict was detected + EmberNodeId conflictingId) +{ +(void)conflictingId; + +emAfIdConflictCallback(conflictingId); +} + + + +// Mac Passthrough Message +void emAfMacPassthroughMessage( + // The type of MAC passthrough message received. + EmberMacPassthroughType messageType, + // The raw message that was received. + EmberMessageBuffer message) +{ +(void)messageType; +(void)message; + +emAfMacPassthroughMessageCallback(messageType, message); +} + + + +// Stack Token Changed +void emAfStackTokenChanged( + // The address of the stack token that has changed. + uint16_t tokenAddress) +{ +(void)tokenAddress; + +emAfStackTokenChangedCallback(tokenAddress); +} + + + +// Timer +void emAfTimer( + // Which timer generated the callback (0 or 1). + uint8_t timerId) +{ +(void)timerId; + +} + + + +// Counter Rollover +void emAfCounterRollover( + // Type of Counter + EmberCounterType type) +{ +(void)type; + +emAfCounterRolloverCallback(type); +} + + + +// Raw Transmit Complete +void emAfRawTransmitComplete( + // message + EmberMessageBuffer message, + // EMBER_SUCCESS if the transmission was successful, or + // EMBER_DELIVERY_FAILED if not + EmberStatus status) +{ +(void)message; +(void)status; + +emAfRawTransmitCompleteCallback(message, status); +} + + + +// Switch Network Key +void emAfSwitchNetworkKey( + // The sequence number of the new network key. + uint8_t sequenceNumber) +{ +(void)sequenceNumber; + +emAfSwitchNetworkKeyCallback(sequenceNumber); +} + + + +// Zigbee Key Establishment +void emAfZigbeeKeyEstablishment( + // This is the IEEE address of the partner that the device successfully + // established a key with. This value is all zeros on a failure. + EmberEUI64 partner, + // This is the status indicating what was established or why the key + // establishment failed. + EmberKeyStatus status) +{ +(void)partner; +(void)status; + +emAfZigbeeKeyEstablishmentCallback(partner, status); +} + + + +// Generate Cbke Keys +void emAfGenerateCbkeKeys( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKeyData *ephemeralPublicKey) +{ +(void)status; +(void)ephemeralPublicKey; + +} + + + +// Calculate Smacs +void emAfCalculateSmacs( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +{ +(void)status; +(void)initiatorSmac; +(void)responderSmac; + +} + + + +// Dsa Sign +void emAfDsaSign( + // The result of the DSA signing operation. + EmberStatus status, + // The message and attached which includes the original message and the + // appended signature. + EmberMessageBuffer signedMessage) +{ +(void)status; +(void)signedMessage; + +} + + + +// Dsa Verify +void emAfDsaVerify( + // The result of the DSA verification operation. + EmberStatus status) +{ +(void)status; + +} + + + +// Incoming Bootload Message +void emAfIncomingBootloadMessage( + // The EUI64 of the sending node. + EmberEUI64 longId, + // The bootload message that was sent. + EmberMessageBuffer message) +{ +(void)longId; +(void)message; + +emAfIncomingBootloadMessageCallback(longId, message); +} + + + +// Bootload Transmit Complete +void emAfBootloadTransmitComplete( + // The bootload message that was sent. + EmberMessageBuffer message, + // An EmberStatus value of EMBER_SUCCESS if an ACK was received from the + // destination or EMBER_DELIVERY_FAILED if no ACK was received. + EmberStatus status) +{ +(void)message; +(void)status; + +emAfBootloadTransmitCompleteCallback(message, status); +} + + + +// Zll Network Found +void emAfZllNetworkFound( + // Return: Information about the network. + const EmberZllNetwork *networkInfo, + // Return: Device specific information. + const EmberZllDeviceInfoRecord *deviceInfo) +{ +(void)networkInfo; +(void)deviceInfo; + +} + + + +// Zll Scan Complete +void emAfZllScanComplete( + // Status of the operation. + EmberStatus status) +{ +(void)status; + +} + + + +// Zll Address Assignment +void emAfZllAddressAssignment( + // Return: Address assignment information. + const EmberZllAddressAssignment *addressInfo) +{ +(void)addressInfo; + +} + + + +// Zll Touch Link Target +void emAfZllTouchLinkTarget( + // Return: Information about the network. + const EmberZllNetwork *networkInfo) +{ +(void)networkInfo; + +} + + + +// Mac Filter Match Message +void emAfMacFilterMatchMessage( + // Return: macFilterMatchStruct. + const EmberMacFilterMatchStruct *macFilterMatchStruct) +{ +(void)macFilterMatchStruct; + +emAfMacFilterMatchMessageCallback(macFilterMatchStruct); +} + + + +// D Gp Sent +void emAfDGpSent( + // An EmberStatus value indicating success or the reason for failure. + EmberStatus status, + // The handle of the GPDF. + uint8_t gpepHandle) +{ +(void)status; +(void)gpepHandle; + +emAfDGpSentCallback(status, gpepHandle); +} + + + +// Pan Id Conflict +// Return: An EmberStatus value indicating success or the reason for failure. +void emAfPanIdConflict( + // Number of conflict reports + int8_t conflictCount) +{ +(void)conflictCount; + +} + + + +// Orphan Notification +void emAfOrphanNotification( + // The 8 byte EUI64 of the sender. + EmberEUI64 longId) +{ +(void)longId; + +} + + + +// Counter +void emAfCounter( + // Type of Counter + EmberCounterType type, + // Counter Info and value + EmberCounterInfo Info) +{ +(void)type; +(void)Info; + +emAfCounterCallback(type, Info); +} + + + +// Mac Passthrough Filter +// Return: True if mac passthrough filter was matched. False otherwise. +void emAfMacPassthroughFilter( + // Return: Mac Header of the matched messgae + uint8_t *macHeader) +{ +(void)macHeader; + +} + + + +// Generate Cbke Keys Handler283k1 +void emAfGenerateCbkeKeysHandler283k1( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKey283k1Data *ephemeralPublicKey) +{ +(void)status; +(void)ephemeralPublicKey; + +} + + + +// Calculate Smacs Handler283k1 +void emAfCalculateSmacsHandler283k1( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +{ +(void)status; +(void)initiatorSmac; +(void)responderSmac; + +} + + + +// Gpep Incoming Message +void emAfGpepIncomingMessage( + // The status of the GPDF receive. + EmberStatus status, + // The gpdLink value of the received GPDF. + uint8_t gpdLink, + // The GPDF sequence number. + uint8_t sequenceNumber, + // The address of the source GPD. + EmberGpAddress *addr, + // The security level of the received GPDF. + EmberGpSecurityLevel gpdfSecurityLevel, + // The securityKeyType used to decrypt/authenticate the incoming GPDF. + EmberGpKeyType gpdfSecurityKeyType, + // Whether the incoming GPDF had the auto-commissioning bit set. + bool autoCommissioning, + // Bidirectional information represented in bitfields, where bit0 holds + // the rxAfterTx of incoming gpdf and bit1 holds if tx queue is available + // for outgoing gpdf. + uint8_t bidirectionalInfo, + // The security frame counter of the incoming GDPF. + uint32_t gpdSecurityFrameCounter, + // The gpdCommandId of the incoming GPDF. + uint8_t gpdCommandId, + // The received MIC of the GPDF. + uint32_t mic, + // The proxy table index of the corresponding proxy table entry to the + // incoming GPDF. + uint8_t proxyTableIndex, + // The length of the GPD command payload. + uint8_t gpdCommandPayloadLength, + // The GPD command payload. + uint8_t *gpdCommandPayload) +{ +(void)status; +(void)gpdLink; +(void)sequenceNumber; +(void)addr; +(void)gpdfSecurityLevel; +(void)gpdfSecurityKeyType; +(void)autoCommissioning; +(void)bidirectionalInfo; +(void)gpdSecurityFrameCounter; +(void)gpdCommandId; +(void)mic; +(void)proxyTableIndex; +(void)gpdCommandPayloadLength; +(void)gpdCommandPayload; + +emAfGpepIncomingMessageCallback(status, gpdLink, sequenceNumber, addr, gpdfSecurityLevel, gpdfSecurityKeyType, autoCommissioning, bidirectionalInfo, gpdSecurityFrameCounter, gpdCommandId, mic, proxyTableIndex, gpdCommandPayloadLength, gpdCommandPayload); +} + + + +// Rtos Idle +// Return: True or False. +void emAfRtosIdle( + // Return: Idle time duration + uint32_t *idleTimeMs) +{ +(void)idleTimeMs; + +} + + + +// Rtos Stack Wakeup Isr +void emAfRtosStackWakeupIsr(void) +{ + +} + + + +// Radio Needs Calibrating +void emAfRadioNeedsCalibrating(void) +{ + +} + + + +// Scan Error +void emAfScanError( + // The error status of a scan + EmberStatus status) +{ +(void)status; + +} + diff --git a/silabs_examples/credentials/device/brd4186c/autogen/zigbee_stack_callback_dispatcher.h b/silabs_examples/credentials/device/brd4186c/autogen/zigbee_stack_callback_dispatcher.h new file mode 100644 index 00000000000000..cf2d271a277f10 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/autogen/zigbee_stack_callback_dispatcher.h @@ -0,0 +1,876 @@ +/*****************************************************************************/ +/** + * Copyright 2020 Silicon Laboratories, Inc. + * + *****************************************************************************/ +// +// *** Generated file. Do not edit! *** +// + +#include PLATFORM_HEADER +#ifdef EZSP_HOST +#include "stack/include/ember-types.h" +#else +#include "stack/include/ember.h" +#endif // EZSP_HOST + + + +// Incoming Message +#ifdef EZSP_HOST +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // The link quality + uint8_t lastHopLqi, + // The energy level + int8_t lastHopRssi, + // The sender of the message. + EmberNodeId sender, + // The index of a binding that matches the message + // matching binding. + uint8_t bindingIndex, + // The index of the entry in the address table + uint8_t addressIndex, + // The message length + uint8_t messageLength, + // message + uint8_t *messageContents) +; +void emAfIncomingMessageCallback( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // The link quality + uint8_t lastHopLqi, + // The energy level + int8_t lastHopRssi, + // The sender of the message. + EmberNodeId sender, + // The index of a binding that matches the message + // matching binding. + uint8_t bindingIndex, + // The index of the entry in the address table + uint8_t addressIndex, + // The message length + uint8_t messageLength, + // message + uint8_t *messageContents) +; +#else // !EZSP_HOST +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message) +; +void emAfIncomingMessageCallback( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message) +; +#endif // EZSP_HOST + + +// Message Sent +#ifdef EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // Message tag + uint8_t messageTag, + // Message delivery status + EmberStatus status, + // The length of the messageContents + uint8_t messageLength, + // Message data + uint8_t *messageContents) +; +void emAfMessageSentCallback( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // Message tag + uint8_t messageTag, + // Message delivery status + EmberStatus status, + // The length of the messageContents + uint8_t messageLength, + // Message data + uint8_t *messageContents) +; +#else // !EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message, + // Message delivery status + EmberStatus status) +; +void emAfMessageSentCallback( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message, + // Message delivery status + EmberStatus status) +; +#endif // EZSP_HOST + + + +// Trust Center Join +void emAfTrustCenterJoin( + // Joining node's id + EmberNodeId newNodeId, + // Joining node's Eui64 + EmberEUI64 newNodeEui64, + // Status + EmberDeviceUpdate status, + // Parent Id of the joining node + EmberNodeId parentOfNewNode) +; + +// Mark Buffers +void emAfMarkBuffers(void) +; +void emAfMarkBuffersCallback(void) +; + +// Packet Handoff Incoming +void emAfPacketHandoffIncoming( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +; + +// Packet Handoff Outgoing +void emAfPacketHandoffOutgoing( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +; + +// Incoming Mfg Test Message +void emAfIncomingMfgTestMessage( + uint8_t messageType, + uint8_t dataLength, + // Return: + uint8_t *data) +; + +// Override Incoming Route Record +void emAfOverrideIncomingRouteRecord( + EmberNodeId source, + EmberEUI64 sourceEui, + uint8_t relayCount, + EmberMessageBuffer header, + uint8_t relayListIndex, + // Return: + bool *consumed) +; +void emAfOverrideIncomingRouteRecordCallback( + EmberNodeId source, + EmberEUI64 sourceEui, + uint8_t relayCount, + EmberMessageBuffer header, + uint8_t relayListIndex, + // Return: + bool *consumed) +; + +// Override Append Source Route +// Return: Added bytes +void emAfOverrideAppendSourceRoute( + EmberNodeId destination, + // Return: + EmberMessageBuffer *header, + // Return: + bool *consumed) +; + +// Override Furthur Index For Source Route Add Entry +void emAfOverrideFurthurIndexForSourceRouteAddEntry( + EmberNodeId id, + // Return: + uint8_t *furtherIndex) +; +void emAfOverrideFurthurIndexForSourceRouteAddEntryCallback( + EmberNodeId id, + // Return: + uint8_t *furtherIndex) +; + +// Stack Status +void emAfStackStatus( + // Stack status + EmberStatus status) +; +void emAfStackStatusCallback( + // Stack status + EmberStatus status) +; + +// Energy Scan Result +void emAfEnergyScanResult( + // The 802.15.4 channel number that was scanned. + uint8_t channel, + // The maximum RSSI value found on the channel. + int8_t maxRssiValue) +; +void emAfEnergyScanResultCallback( + // The 802.15.4 channel number that was scanned. + uint8_t channel, + // The maximum RSSI value found on the channel. + int8_t maxRssiValue) +; + +// Network Found +void emAfNetworkFound( + // The parameters associated with the network found. + EmberZigbeeNetwork *networkFound, + // The link quality indication of the network found. + uint8_t lqi, + // The received signal strength indication of the network found. + int8_t rssi) +; +void emAfNetworkFoundCallback( + // The parameters associated with the network found. + EmberZigbeeNetwork *networkFound, + // The link quality indication of the network found. + uint8_t lqi, + // The received signal strength indication of the network found. + int8_t rssi) +; + +// Scan Complete +void emAfScanComplete( + // The channel on which the current error occurred. Undefined for the case + // of EMBER_SUCCESS. + uint8_t channel, + // The error condition that occurred on the current channel. Value will be + // EMBER_SUCCESS when the scan has completed. + EmberStatus status) +; +void emAfScanCompleteCallback( + // The channel on which the current error occurred. Undefined for the case + // of EMBER_SUCCESS. + uint8_t channel, + // The error condition that occurred on the current channel. Value will be + // EMBER_SUCCESS when the scan has completed. + EmberStatus status) +; + +// Unused Pan Id Found +void emAfUnusedPanIdFound( + // The unused panID which has been found. + EmberPanId panId, + // The channel that the unused panID was found on. + uint8_t channel) +; +void emAfUnusedPanIdFoundCallback( + // The unused panID which has been found. + EmberPanId panId, + // The channel that the unused panID was found on. + uint8_t channel) +; + +// Child Join +#ifdef EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining, + // The node ID of the child. + EmberNodeId childId, + // The EUI64 of the child. + EmberEUI64 childEui64, + // The node type of the child. + EmberNodeType childType) +; +void emAfChildJoinCallback( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining, + // The node ID of the child. + EmberNodeId childId, + // The EUI64 of the child. + EmberEUI64 childEui64, + // The node type of the child. + EmberNodeType childType) +; +#else // !EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining) +; +void emAfChildJoinCallback( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining) +; +#endif // EZSP_HOST + + + +// Duty Cycle +#ifdef EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state, + // The total number of connected end devices that are being monitored for + // duty cycle. + uint8_t totalDevices, + // Consumed duty cycles of end devices that are being monitored. The first + // entry always be the local stack's nodeId, and thus the total aggregate + // duty cycle for the device. + EmberPerDeviceDutyCycle *arrayOfDeviceDutyCycles) +; +void emAfDutyCycleCallback( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state, + // The total number of connected end devices that are being monitored for + // duty cycle. + uint8_t totalDevices, + // Consumed duty cycles of end devices that are being monitored. The first + // entry always be the local stack's nodeId, and thus the total aggregate + // duty cycle for the device. + EmberPerDeviceDutyCycle *arrayOfDeviceDutyCycles) +; +#else // !EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state) +; +void emAfDutyCycleCallback( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state) +; +#endif // EZSP_HOST + + + +// Remote Set Binding +// Return: ZDO response status. +void emAfRemoteSetBinding( + // Return: The contents of the binding entry. + EmberBindingTableEntry *entry) +; + +// Remote Delete Binding +// Return: ZDO response status +void emAfRemoteDeleteBinding( + // The index of the binding whose deletion was requested. + uint8_t index) +; + +// Poll Complete +void emAfPollComplete( + // An EmberStatus value: EMBER_SUCCESS - Data was received in response to + // the poll. EMBER_MAC_NO_DATA - No data was pending. + // EMBER_DELIVERY_FAILED - The poll message could not be sent. + // EMBER_MAC_NO_ACK_RECEIVED - The poll message was sent but not + // acknowledged by the parent. + EmberStatus status) +; +void emAfPollCompleteCallback( + // An EmberStatus value: EMBER_SUCCESS - Data was received in response to + // the poll. EMBER_MAC_NO_DATA - No data was pending. + // EMBER_DELIVERY_FAILED - The poll message could not be sent. + // EMBER_MAC_NO_ACK_RECEIVED - The poll message was sent but not + // acknowledged by the parent. + EmberStatus status) +; + +// Poll +void emAfPoll( + // The node ID of the child that is requesting data. + EmberNodeId childId, + // True if transmit expected, false otherwise. + bool transmitExpected) +; +void emAfPollCallback( + // The node ID of the child that is requesting data. + EmberNodeId childId, + // True if transmit expected, false otherwise. + bool transmitExpected) +; + +// Debug +void emAfDebug( + // debug message + EmberMessageBuffer message) +; + +// Incoming Many To One Route Request +void emAfIncomingManyToOneRouteRequest( + // The short id of the concentrator. + EmberNodeId source, + // The EUI64 of the concentrator. + EmberEUI64 longId, + // The path cost to the concentrator. The cost may decrease as additional + // route request packets for this discovery arrive, but the callback is + // made only once. + uint8_t cost) +; +void emAfIncomingManyToOneRouteRequestCallback( + // The short id of the concentrator. + EmberNodeId source, + // The EUI64 of the concentrator. + EmberEUI64 longId, + // The path cost to the concentrator. The cost may decrease as additional + // route request packets for this discovery arrive, but the callback is + // made only once. + uint8_t cost) +; + +// Incoming Route Error +void emAfIncomingRouteError( + // EMBER_SOURCE_ROUTE_FAILURE or EMBER_MANY_TO_ONE_ROUTE_FAILURE. + EmberStatus status, + // The short id of the remote node. + EmberNodeId target) +; +void emAfIncomingRouteErrorCallback( + // EMBER_SOURCE_ROUTE_FAILURE or EMBER_MANY_TO_ONE_ROUTE_FAILURE. + EmberStatus status, + // The short id of the remote node. + EmberNodeId target) +; + +// Incoming Network Status +void emAfIncomingNetworkStatus( + // One byte over-the-air error code from network status message + uint8_t errorCode, + // The short ID of the remote node + EmberNodeId target) +; +void emAfIncomingNetworkStatusCallback( + // One byte over-the-air error code from network status message + uint8_t errorCode, + // The short ID of the remote node + EmberNodeId target) +; + +// Incoming Route Record +void emAfIncomingRouteRecord( + // The source of the route record. + EmberNodeId source, + // The EUI64 of the source. + EmberEUI64 sourceEui, + // The number of relays in relayList. + uint8_t relayCount, + // Header. + EmberMessageBuffer header, + // The relay List Index. + uint8_t relayListIndex) +; +void emAfIncomingRouteRecordCallback( + // The source of the route record. + EmberNodeId source, + // The EUI64 of the source. + EmberEUI64 sourceEui, + // The number of relays in relayList. + uint8_t relayCount, + // Header. + EmberMessageBuffer header, + // The relay List Index. + uint8_t relayListIndex) +; + +// Id Conflict +void emAfIdConflict( + // The short id for which a conflict was detected + EmberNodeId conflictingId) +; +void emAfIdConflictCallback( + // The short id for which a conflict was detected + EmberNodeId conflictingId) +; + +// Mac Passthrough Message +void emAfMacPassthroughMessage( + // The type of MAC passthrough message received. + EmberMacPassthroughType messageType, + // The raw message that was received. + EmberMessageBuffer message) +; +void emAfMacPassthroughMessageCallback( + // The type of MAC passthrough message received. + EmberMacPassthroughType messageType, + // The raw message that was received. + EmberMessageBuffer message) +; + +// Stack Token Changed +void emAfStackTokenChanged( + // The address of the stack token that has changed. + uint16_t tokenAddress) +; +void emAfStackTokenChangedCallback( + // The address of the stack token that has changed. + uint16_t tokenAddress) +; + +// Timer +void emAfTimer( + // Which timer generated the callback (0 or 1). + uint8_t timerId) +; + +// Counter Rollover +void emAfCounterRollover( + // Type of Counter + EmberCounterType type) +; +void emAfCounterRolloverCallback( + // Type of Counter + EmberCounterType type) +; + +// Raw Transmit Complete +void emAfRawTransmitComplete( + // message + EmberMessageBuffer message, + // EMBER_SUCCESS if the transmission was successful, or + // EMBER_DELIVERY_FAILED if not + EmberStatus status) +; +void emAfRawTransmitCompleteCallback( + // message + EmberMessageBuffer message, + // EMBER_SUCCESS if the transmission was successful, or + // EMBER_DELIVERY_FAILED if not + EmberStatus status) +; + +// Switch Network Key +void emAfSwitchNetworkKey( + // The sequence number of the new network key. + uint8_t sequenceNumber) +; +void emAfSwitchNetworkKeyCallback( + // The sequence number of the new network key. + uint8_t sequenceNumber) +; + +// Zigbee Key Establishment +void emAfZigbeeKeyEstablishment( + // This is the IEEE address of the partner that the device successfully + // established a key with. This value is all zeros on a failure. + EmberEUI64 partner, + // This is the status indicating what was established or why the key + // establishment failed. + EmberKeyStatus status) +; +void emAfZigbeeKeyEstablishmentCallback( + // This is the IEEE address of the partner that the device successfully + // established a key with. This value is all zeros on a failure. + EmberEUI64 partner, + // This is the status indicating what was established or why the key + // establishment failed. + EmberKeyStatus status) +; + +// Generate Cbke Keys +void emAfGenerateCbkeKeys( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKeyData *ephemeralPublicKey) +; + +// Calculate Smacs +void emAfCalculateSmacs( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +; + +// Dsa Sign +void emAfDsaSign( + // The result of the DSA signing operation. + EmberStatus status, + // The message and attached which includes the original message and the + // appended signature. + EmberMessageBuffer signedMessage) +; + +// Dsa Verify +void emAfDsaVerify( + // The result of the DSA verification operation. + EmberStatus status) +; + +// Incoming Bootload Message +void emAfIncomingBootloadMessage( + // The EUI64 of the sending node. + EmberEUI64 longId, + // The bootload message that was sent. + EmberMessageBuffer message) +; +void emAfIncomingBootloadMessageCallback( + // The EUI64 of the sending node. + EmberEUI64 longId, + // The bootload message that was sent. + EmberMessageBuffer message) +; + +// Bootload Transmit Complete +void emAfBootloadTransmitComplete( + // The bootload message that was sent. + EmberMessageBuffer message, + // An EmberStatus value of EMBER_SUCCESS if an ACK was received from the + // destination or EMBER_DELIVERY_FAILED if no ACK was received. + EmberStatus status) +; +void emAfBootloadTransmitCompleteCallback( + // The bootload message that was sent. + EmberMessageBuffer message, + // An EmberStatus value of EMBER_SUCCESS if an ACK was received from the + // destination or EMBER_DELIVERY_FAILED if no ACK was received. + EmberStatus status) +; + +// Zll Network Found +void emAfZllNetworkFound( + // Return: Information about the network. + const EmberZllNetwork *networkInfo, + // Return: Device specific information. + const EmberZllDeviceInfoRecord *deviceInfo) +; + +// Zll Scan Complete +void emAfZllScanComplete( + // Status of the operation. + EmberStatus status) +; + +// Zll Address Assignment +void emAfZllAddressAssignment( + // Return: Address assignment information. + const EmberZllAddressAssignment *addressInfo) +; + +// Zll Touch Link Target +void emAfZllTouchLinkTarget( + // Return: Information about the network. + const EmberZllNetwork *networkInfo) +; + +// Mac Filter Match Message +void emAfMacFilterMatchMessage( + // Return: macFilterMatchStruct. + const EmberMacFilterMatchStruct *macFilterMatchStruct) +; +void emAfMacFilterMatchMessageCallback( + // Return: macFilterMatchStruct. + const EmberMacFilterMatchStruct *macFilterMatchStruct) +; + +// D Gp Sent +void emAfDGpSent( + // An EmberStatus value indicating success or the reason for failure. + EmberStatus status, + // The handle of the GPDF. + uint8_t gpepHandle) +; +void emAfDGpSentCallback( + // An EmberStatus value indicating success or the reason for failure. + EmberStatus status, + // The handle of the GPDF. + uint8_t gpepHandle) +; + +// Pan Id Conflict +// Return: An EmberStatus value indicating success or the reason for failure. +void emAfPanIdConflict( + // Number of conflict reports + int8_t conflictCount) +; + +// Orphan Notification +void emAfOrphanNotification( + // The 8 byte EUI64 of the sender. + EmberEUI64 longId) +; + +// Counter +void emAfCounter( + // Type of Counter + EmberCounterType type, + // Counter Info and value + EmberCounterInfo Info) +; +void emAfCounterCallback( + // Type of Counter + EmberCounterType type, + // Counter Info and value + EmberCounterInfo Info) +; + +// Mac Passthrough Filter +// Return: True if mac passthrough filter was matched. False otherwise. +void emAfMacPassthroughFilter( + // Return: Mac Header of the matched messgae + uint8_t *macHeader) +; + +// Generate Cbke Keys Handler283k1 +void emAfGenerateCbkeKeysHandler283k1( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKey283k1Data *ephemeralPublicKey) +; + +// Calculate Smacs Handler283k1 +void emAfCalculateSmacsHandler283k1( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +; + +// Gpep Incoming Message +void emAfGpepIncomingMessage( + // The status of the GPDF receive. + EmberStatus status, + // The gpdLink value of the received GPDF. + uint8_t gpdLink, + // The GPDF sequence number. + uint8_t sequenceNumber, + // The address of the source GPD. + EmberGpAddress *addr, + // The security level of the received GPDF. + EmberGpSecurityLevel gpdfSecurityLevel, + // The securityKeyType used to decrypt/authenticate the incoming GPDF. + EmberGpKeyType gpdfSecurityKeyType, + // Whether the incoming GPDF had the auto-commissioning bit set. + bool autoCommissioning, + // Bidirectional information represented in bitfields, where bit0 holds + // the rxAfterTx of incoming gpdf and bit1 holds if tx queue is available + // for outgoing gpdf. + uint8_t bidirectionalInfo, + // The security frame counter of the incoming GDPF. + uint32_t gpdSecurityFrameCounter, + // The gpdCommandId of the incoming GPDF. + uint8_t gpdCommandId, + // The received MIC of the GPDF. + uint32_t mic, + // The proxy table index of the corresponding proxy table entry to the + // incoming GPDF. + uint8_t proxyTableIndex, + // The length of the GPD command payload. + uint8_t gpdCommandPayloadLength, + // The GPD command payload. + uint8_t *gpdCommandPayload) +; +void emAfGpepIncomingMessageCallback( + // The status of the GPDF receive. + EmberStatus status, + // The gpdLink value of the received GPDF. + uint8_t gpdLink, + // The GPDF sequence number. + uint8_t sequenceNumber, + // The address of the source GPD. + EmberGpAddress *addr, + // The security level of the received GPDF. + EmberGpSecurityLevel gpdfSecurityLevel, + // The securityKeyType used to decrypt/authenticate the incoming GPDF. + EmberGpKeyType gpdfSecurityKeyType, + // Whether the incoming GPDF had the auto-commissioning bit set. + bool autoCommissioning, + // Bidirectional information represented in bitfields, where bit0 holds + // the rxAfterTx of incoming gpdf and bit1 holds if tx queue is available + // for outgoing gpdf. + uint8_t bidirectionalInfo, + // The security frame counter of the incoming GDPF. + uint32_t gpdSecurityFrameCounter, + // The gpdCommandId of the incoming GPDF. + uint8_t gpdCommandId, + // The received MIC of the GPDF. + uint32_t mic, + // The proxy table index of the corresponding proxy table entry to the + // incoming GPDF. + uint8_t proxyTableIndex, + // The length of the GPD command payload. + uint8_t gpdCommandPayloadLength, + // The GPD command payload. + uint8_t *gpdCommandPayload) +; + +// Rtos Idle +// Return: True or False. +void emAfRtosIdle( + // Return: Idle time duration + uint32_t *idleTimeMs) +; + +// Rtos Stack Wakeup Isr +void emAfRtosStackWakeupIsr(void) +; + +// Radio Needs Calibrating +void emAfRadioNeedsCalibrating(void) +; + +// Scan Error +void emAfScanError( + // The error status of a scan + EmberStatus status) +; diff --git a/silabs_examples/credentials/device/brd4186c/config/SEGGER_RTT_Conf.h b/silabs_examples/credentials/device/brd4186c/config/SEGGER_RTT_Conf.h new file mode 100644 index 00000000000000..ca8df42d9c73a7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/SEGGER_RTT_Conf.h @@ -0,0 +1,417 @@ +/********************************************************************* +* SEGGER Microcontroller GmbH * +* The Embedded Experts * +********************************************************************** +* * +* (c) 1995 - 2021 SEGGER Microcontroller GmbH * +* * +* www.segger.com Support: support@segger.com * +* * +********************************************************************** +* * +* SEGGER SystemView * Real-time application analysis * +* * +********************************************************************** +* * +* All rights reserved. * +* * +* SEGGER strongly recommends to not make any changes * +* to or modify the source code of this software in order to stay * +* compatible with the SystemView and RTT protocol, and J-Link. * +* * +* Redistribution and use in source and binary forms, with or * +* without modification, are permitted provided that the following * +* condition is met: * +* * +* o Redistributions of source code must retain the above copyright * +* notice, this condition and the following disclaimer. * +* * +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND * +* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, * +* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * +* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * +* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR * +* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * +* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * +* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * +* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * +* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * +* DAMAGE. * +* * +********************************************************************** +* * +* SystemView version: 3.30 * +* * +********************************************************************** +---------------------------END-OF-HEADER------------------------------ +File : SEGGER_RTT_Conf.h +Purpose : Implementation of SEGGER real-time transfer (RTT) which + allows real-time communication on targets which support + debugger memory accesses while the CPU is running. +Revision: $Rev: 21386 $ + +*/ + +#ifndef SEGGER_RTT_CONF_H +#define SEGGER_RTT_CONF_H + +#ifdef __IAR_SYSTEMS_ICC__ + #include +#endif + +/********************************************************************* + * + * Defines, configurable + * + ********************************************************************** + */ +#ifndef SEGGER_RTT_MAX_NUM_UP_BUFFERS + #define SEGGER_RTT_MAX_NUM_UP_BUFFERS (3) // Max. number of up-buffers (T->H) available on this target (Default: 3) +#endif + +#ifndef SEGGER_RTT_MAX_NUM_DOWN_BUFFERS + #define SEGGER_RTT_MAX_NUM_DOWN_BUFFERS (3) // Max. number of down-buffers (H->T) available on this target (Default: 3) +#endif + +#ifndef BUFFER_SIZE_UP + #define BUFFER_SIZE_UP (1024) // Size of the buffer for terminal output of target, up to host (Default: 1k) +#endif + +#ifndef BUFFER_SIZE_DOWN + #define BUFFER_SIZE_DOWN (1024) // Size of the buffer for terminal input to target from host (Usually keyboard input) (Default: 16) +#endif + +#ifndef SEGGER_RTT_PRINTF_BUFFER_SIZE + #define SEGGER_RTT_PRINTF_BUFFER_SIZE (64u) // Size of buffer for RTT printf to bulk-send chars via RTT (Default: 64) +#endif + +#ifndef SEGGER_RTT_MODE_DEFAULT + #define SEGGER_RTT_MODE_DEFAULT SEGGER_RTT_MODE_NO_BLOCK_SKIP // Mode for pre-initialized terminal channel (buffer 0) +#endif + +/********************************************************************* + * + * RTT memcpy configuration + * + * memcpy() is good for large amounts of data, + * but the overhead is big for small amounts, which are usually stored via RTT. + * With SEGGER_RTT_MEMCPY_USE_BYTELOOP a simple byte loop can be used instead. + * + * SEGGER_RTT_MEMCPY() can be used to replace standard memcpy() in RTT functions. + * This is may be required with memory access restrictions, + * such as on Cortex-A devices with MMU. + */ +#ifndef SEGGER_RTT_MEMCPY_USE_BYTELOOP + #define SEGGER_RTT_MEMCPY_USE_BYTELOOP 0 // 0: Use memcpy/SEGGER_RTT_MEMCPY, 1: Use a simple byte-loop +#endif +// +// Example definition of SEGGER_RTT_MEMCPY to external memcpy with GCC toolchains and Cortex-A targets +// +//#if ((defined __SES_ARM) || (defined __CROSSWORKS_ARM) || (defined __GNUC__)) && (defined (__ARM_ARCH_7A__)) +// #define SEGGER_RTT_MEMCPY(pDest, pSrc, NumBytes) SEGGER_memcpy((pDest), (pSrc), (NumBytes)) +//#endif + +// +// Target is not allowed to perform other RTT operations while string still has not been stored completely. +// Otherwise we would probably end up with a mixed string in the buffer. +// If using RTT from within interrupts, multiple tasks or multi processors, define the SEGGER_RTT_LOCK() and SEGGER_RTT_UNLOCK() function here. +// +// SEGGER_RTT_MAX_INTERRUPT_PRIORITY can be used in the sample lock routines on Cortex-M3/4. +// Make sure to mask all interrupts which can send RTT data, i.e. generate SystemView events, or cause task switches. +// When high-priority interrupts must not be masked while sending RTT data, SEGGER_RTT_MAX_INTERRUPT_PRIORITY needs to be adjusted accordingly. +// (Higher priority = lower priority number) +// Default value for embOS: 128u +// Default configuration in FreeRTOS: configMAX_SYSCALL_INTERRUPT_PRIORITY: ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) +// In case of doubt mask all interrupts: 1 << (8 - BASEPRI_PRIO_BITS) i.e. 1 << 5 when 3 bits are implemented in NVIC +// or define SEGGER_RTT_LOCK() to completely disable interrupts. +// +#ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) // Interrupt priority to lock on SEGGER_RTT_LOCK on Cortex-M3/4 (Default: 0x20) +#endif + +/********************************************************************* + * + * RTT lock configuration for SEGGER Embedded Studio, + * Rowley CrossStudio and GCC + */ +#if ((defined(__SES_ARM) || defined(__SES_RISCV) || defined(__CROSSWORKS_ARM) || defined(__GNUC__) || defined(__clang__)) && !defined (__CC_ARM) && !defined(WIN32)) + #if (defined(__ARM_ARCH_6M__) || defined(__ARM_ARCH_8M_BASE__)) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("mrs %0, primask \n\t" \ + "movs r1, #1 \n\t" \ + "msr primask, r1 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : \ + : "r1", "cc" \ + ); + + #define SEGGER_RTT_UNLOCK() __asm volatile ("msr primask, %0 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : \ + ); \ + } + #elif (defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_8M_MAIN__)) + #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) + #endif + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("mrs %0, basepri \n\t" \ + "mov r1, %1 \n\t" \ + "msr basepri, r1 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : "i" (SEGGER_RTT_MAX_INTERRUPT_PRIORITY) \ + : "r1", "cc" \ + ); + + #define SEGGER_RTT_UNLOCK() __asm volatile ("msr basepri, %0 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : \ + ); \ + } + + #elif defined(__ARM_ARCH_7A__) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("mrs r1, CPSR \n\t" \ + "mov %0, r1 \n\t" \ + "orr r1, r1, #0xC0 \n\t" \ + "msr CPSR_c, r1 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : \ + : "r1", "cc" \ + ); + + #define SEGGER_RTT_UNLOCK() __asm volatile ("mov r0, %0 \n\t" \ + "mrs r1, CPSR \n\t" \ + "bic r1, r1, #0xC0 \n\t" \ + "and r0, r0, #0xC0 \n\t" \ + "orr r1, r1, r0 \n\t" \ + "msr CPSR_c, r1 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : "r0", "r1", "cc" \ + ); \ + } + #elif defined(__riscv) || defined(__riscv_xlen) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("csrr %0, mstatus \n\t" \ + "csrci mstatus, 8 \n\t" \ + "andi %0, %0, 8 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : \ + : \ + ); + #define SEGGER_RTT_UNLOCK() __asm volatile ("csrr a1, mstatus \n\t" \ + "or %0, %0, a1 \n\t" \ + "csrs mstatus, %0 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : "a1" \ + ); \ + } + #else + #define SEGGER_RTT_LOCK() + #define SEGGER_RTT_UNLOCK() + #endif +#endif + +/********************************************************************* + * + * RTT lock configuration for IAR EWARM + */ +#ifdef __ICCARM__ + #if (defined (__ARM6M__) && (__CORE__ == __ARM6M__)) || \ + (defined (__ARM8M_BASELINE__) && (__CORE__ == __ARM8M_BASELINE__)) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_PRIMASK(); \ + __set_PRIMASK(1); + + #define SEGGER_RTT_UNLOCK() __set_PRIMASK(_SEGGER_RTT__LockState); \ + } + #elif (defined (__ARM7EM__) && (__CORE__ == __ARM7EM__)) || \ + (defined (__ARM7M__) && (__CORE__ == __ARM7M__)) || \ + (defined (__ARM8M_MAINLINE__) && (__CORE__ == __ARM8M_MAINLINE__)) || \ + (defined (__ARM8M_MAINLINE__) && (__CORE__ == __ARM8M_MAINLINE__)) + #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) + #endif + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_BASEPRI(); \ + __set_BASEPRI(SEGGER_RTT_MAX_INTERRUPT_PRIORITY); + + #define SEGGER_RTT_UNLOCK() __set_BASEPRI(_SEGGER_RTT__LockState); \ + } + #elif (defined (__ARM7A__) && (__CORE__ == __ARM7A__)) || \ + (defined (__ARM7R__) && (__CORE__ == __ARM7R__)) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("mrs r1, CPSR \n\t" \ + "mov %0, r1 \n\t" \ + "orr r1, r1, #0xC0 \n\t" \ + "msr CPSR_c, r1 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : \ + : "r1", "cc" \ + ); + #define SEGGER_RTT_UNLOCK() __asm volatile ("mov r0, %0 \n\t" \ + "mrs r1, CPSR \n\t" \ + "bic r1, r1, #0xC0 \n\t" \ + "and r0, r0, #0xC0 \n\t" \ + "orr r1, r1, r0 \n\t" \ + "msr CPSR_c, r1 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : "r0", "r1", "cc" \ + ); \ + } + #endif +#endif + +/********************************************************************* + * + * RTT lock configuration for IAR RX + */ +#ifdef __ICCRX__ + #define SEGGER_RTT_LOCK() { \ + unsigned long _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_interrupt_state(); \ + __disable_interrupt(); + + #define SEGGER_RTT_UNLOCK() __set_interrupt_state(_SEGGER_RTT__LockState); \ + } +#endif + +/********************************************************************* + * + * RTT lock configuration for IAR RL78 + */ +#ifdef __ICCRL78__ + #define SEGGER_RTT_LOCK() { \ + __istate_t _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_interrupt_state(); \ + __disable_interrupt(); + + #define SEGGER_RTT_UNLOCK() __set_interrupt_state(_SEGGER_RTT__LockState); \ + } +#endif + +/********************************************************************* + * + * RTT lock configuration for KEIL ARM + */ +#ifdef __CC_ARM + #if (defined __TARGET_ARCH_6S_M) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + register unsigned char _SEGGER_RTT__PRIMASK __asm( "primask"); \ + _SEGGER_RTT__LockState = _SEGGER_RTT__PRIMASK; \ + _SEGGER_RTT__PRIMASK = 1u; \ + __schedule_barrier(); + + #define SEGGER_RTT_UNLOCK() _SEGGER_RTT__PRIMASK = _SEGGER_RTT__LockState; \ + __schedule_barrier(); \ + } + #elif (defined(__TARGET_ARCH_7_M) || defined(__TARGET_ARCH_7E_M)) + #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) + #endif + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + register unsigned char BASEPRI __asm("basepri"); \ + _SEGGER_RTT__LockState = BASEPRI; \ + BASEPRI = SEGGER_RTT_MAX_INTERRUPT_PRIORITY; \ + __schedule_barrier(); + + #define SEGGER_RTT_UNLOCK() BASEPRI = _SEGGER_RTT__LockState; \ + __schedule_barrier(); \ + } + #endif +#endif + +/********************************************************************* + * + * RTT lock configuration for TI ARM + */ +#ifdef __TI_ARM__ + #if defined (__TI_ARM_V6M0__) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_PRIMASK(); \ + __set_PRIMASK(1); + + #define SEGGER_RTT_UNLOCK() __set_PRIMASK(_SEGGER_RTT__LockState); \ + } + #elif (defined (__TI_ARM_V7M3__) || defined (__TI_ARM_V7M4__)) + #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) + #endif + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = _set_interrupt_priority(SEGGER_RTT_MAX_INTERRUPT_PRIORITY); + + #define SEGGER_RTT_UNLOCK() _set_interrupt_priority(_SEGGER_RTT__LockState); \ + } + #endif +#endif + +/********************************************************************* + * + * RTT lock configuration for CCRX + */ +#ifdef __RX + #include + #define SEGGER_RTT_LOCK() { \ + unsigned long _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = get_psw() & 0x010000; \ + clrpsw_i(); + + #define SEGGER_RTT_UNLOCK() set_psw(get_psw() | _SEGGER_RTT__LockState); \ + } +#endif + +/********************************************************************* + * + * RTT lock configuration for embOS Simulation on Windows + * (Can also be used for generic RTT locking with embOS) + */ +#if defined(WIN32) || defined(SEGGER_RTT_LOCK_EMBOS) + +void OS_SIM_EnterCriticalSection(void); +void OS_SIM_LeaveCriticalSection(void); + +#define SEGGER_RTT_LOCK() { \ + OS_SIM_EnterCriticalSection(); + +#define SEGGER_RTT_UNLOCK() OS_SIM_LeaveCriticalSection(); \ + } +#endif + +/********************************************************************* + * + * RTT lock configuration fallback + */ +#ifndef SEGGER_RTT_LOCK + #define SEGGER_RTT_LOCK() // Lock RTT (nestable) (i.e. disable interrupts) +#endif + +#ifndef SEGGER_RTT_UNLOCK + #define SEGGER_RTT_UNLOCK() // Unlock RTT (nestable) (i.e. enable previous interrupt lock state) +#endif + +/********************************************************************* + * + * RTT control block configuration + */ +#define SEGGER_RTT_ALIGNMENT 1024 + +#endif +/*************************** End of file ****************************/ diff --git a/silabs_examples/credentials/device/brd4186c/config/app_properties_config.h b/silabs_examples/credentials/device/brd4186c/config/app_properties_config.h new file mode 100644 index 00000000000000..6a6b976666a554 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/app_properties_config.h @@ -0,0 +1,65 @@ +/***************************************************************************//** + * @file + * @brief Application Properties Header File + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef APP_PROPERTIES_CONFIG_H +#define APP_PROPERTIES_CONFIG_H + +#include "sl_application_type.h" + +// <<< Use Configuration Wizard in Context Menu >>> + +// App Properties settings + +// Type of signature this application is signed with +// Default: APPLICATION_SIGNATURE_NONE(0) +#define SL_APPLICATION_SIGNATURE 0 + +// Location of the signature +// Default: 0xFFFFFFFF +#define SL_APPLICATION_SIGNATURE_LOCATION 0xFFFFFFFF + +// Bitfield representing type of application +#define SL_APPLICATION_TYPE APPLICATION_TYPE + +// Version number for this application +// <0-4294967295:1> +// Default: 1 [0-4294967295] +#define SL_APPLICATION_VERSION 1 + +// Capabilities of this application +// Default: 0 +#define SL_APPLICATION_CAPABILITIES 0 + +//Product ID of the device for which the application is built +#define SL_APPLICATION_PRODUCT_ID { 0 } + +// + +#endif // APP_PROPERTIES_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186c/config/btl_interface_cfg.h b/silabs_examples/credentials/device/brd4186c/config/btl_interface_cfg.h new file mode 100644 index 00000000000000..eca01575f6cda2 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/btl_interface_cfg.h @@ -0,0 +1,44 @@ +/***************************************************************************//** + * @file + * @brief Configuration header of Bootloader Interface + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +#ifndef BTL_INTERFACE_CFG_H +#define BTL_INTERFACE_CFG_H + +#if !defined(BOOTLOADER_APPLOADER) + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_1) +#include "btl_interface_cfg_s2c1.h" +#endif + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_2) +#include "btl_interface_cfg_s2c2.h" +#endif + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_3) +#include "btl_interface_cfg_s2c3.h" +#endif + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_4) +#include "btl_interface_cfg_s2c4.h" +#endif + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_5) +#define BOOTLOADER_DISABLE_OLD_BOOTLOADER_MITIGATION 1 +#endif + +#endif // !BOOTLOADER_APPLOADER + +#endif // BTL_INTERFACE_CFG_H diff --git a/silabs_examples/credentials/device/brd4186c/config/btl_interface_cfg_s2c4.h b/silabs_examples/credentials/device/brd4186c/config/btl_interface_cfg_s2c4.h new file mode 100644 index 00000000000000..4c80d86f858e9d --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/btl_interface_cfg_s2c4.h @@ -0,0 +1,321 @@ +/***************************************************************************//** + * @file + * @brief Configuration header of Bootloader Interface + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +#ifndef BTL_INTERFACE_CFG_S2C4_H +#define BTL_INTERFACE_CFG_S2C4_H + +// <<< Use Configuration Wizard in Context Menu >>> +// Bootloader Interface Trust Zone Security State Configuration + +// Disable multi tiered fallback logic +// The fault handling logic as well as the USART auto-detection logic will be disabled. +// The re-configuration of SMU will be handled by querying the running bootloader +// for the peripheral list. Querying the peripheral list is supported from the bootloader +// version 2.0.0. Check for the BOOTLOADER_CAPABILITY_PERIPHERAL_LIST capability to +// see if the running bootloader supports querying the peripheral list. +#define BOOTLOADER_DISABLE_OLD_BOOTLOADER_MITIGATION 0 + +// Disable peripheral access fault handling +// The fault handling triggered by an erroneous access of peripherals will be disabled. +// +// This should be disabled iff all the peripherals that are in use by the bootloader +// have been properly configured by the "Manually override security state of peripherals" option. +#define BOOTLOADER_DISABLE_NVM3_FAULT_HANDLING 0 + +// Manually override the security state of peripherals in use by the bootloader +// Default: 0. +// Manually override the security state of peripherals. Choose the peripherals touched +// by the customized code to have a valid secure access state before interacting with the bootloader +// In practice, this means that the chosen peripherals will be available at the secure address, +// which is accessible by the bootloader. Once the application is entered back the secure access state +// is changed back to the original state. +// +// The USART auto-detection logic that detects which, if any, USART is in use by the bootloader +// will be disabled. Make sure to choose the correct USART used by the bootloader. +#define BOOTLOADER_MANUAL_OVERRIDE_SECURITY_STATE 0 +// EMU +// Update secure access state of EMU before calling into bootloader +#define BOOTLOADER_PPUSATD0_EMU 0 + +// CMU +// Update secure access state of CMU before calling into bootloader +#define BOOTLOADER_PPUSATD0_CMU 0 + +// HFRCO0 +// Update secure access state of HFRCO0 before calling into bootloader +#define BOOTLOADER_PPUSATD0_HFRCO0 0 + +// FSRCO +// Update secure access state of FSRCO before calling into bootloader +#define BOOTLOADER_PPUSATD0_FSRCO 0 + +// DPLL0 +// Update secure access state of DPLL0 before calling into bootloader +#define BOOTLOADER_PPUSATD0_DPLL0 0 + +// LFXO +// Update secure access state of LFXO before calling into bootloader +#define BOOTLOADER_PPUSATD0_LFXO 0 + +// LFRCO +// Update secure access state of LFRCO before calling into bootloader +#define BOOTLOADER_PPUSATD0_LFRCO 0 + +// ULFRCO +// Update secure access state of ULFRCO before calling into bootloader +#define BOOTLOADER_PPUSATD0_ULFRCO 0 + +// MSC +// Update secure access state of MSC before calling into bootloader +#define BOOTLOADER_PPUSATD0_MSC 0 + +// ICACHE0 +// Update secure access state of ICACHE0 before calling into bootloader +#define BOOTLOADER_PPUSATD0_ICACHE0 0 + +// PRS +// Update secure access state of PRS before calling into bootloader +#define BOOTLOADER_PPUSATD0_PRS 0 + +// GPIO +// Update secure access state of GPIO before calling into bootloader +#define BOOTLOADER_PPUSATD0_GPIO 0 + +// LDMA +// Update secure access state of LDMA before calling into bootloader +#define BOOTLOADER_PPUSATD0_LDMA 0 + +// LDMAXBAR +// Update secure access state of LDMAXBAR before calling into bootloader +#define BOOTLOADER_PPUSATD0_LDMAXBAR 0 + +// TIMER0 +// Update secure access state of TIMER0 before calling into bootloader +#define BOOTLOADER_PPUSATD0_TIMER0 0 + +// TIMER1 +// Update secure access state of TIMER1 before calling into bootloader +#define BOOTLOADER_PPUSATD0_TIMER1 0 + +// TIMER2 +// Update secure access state of TIMER2 before calling into bootloader +#define BOOTLOADER_PPUSATD0_TIMER2 0 + +// TIMER3 +// Update secure access state of TIMER3 before calling into bootloader +#define BOOTLOADER_PPUSATD0_TIMER3 0 + +// TIMER4 +// Update secure access state of TIMER4 before calling into bootloader +#define BOOTLOADER_PPUSATD0_TIMER4 0 + +// USART0 +// Update secure access state of USART0 before calling into bootloader +#define BOOTLOADER_PPUSATD0_USART0 0 + +// BURTC +// Update secure access state of BURTC before calling into bootloader +#define BOOTLOADER_PPUSATD0_BURTC 0 + +// I2C1 +// Update secure access state of I2C1 before calling into bootloader +#define BOOTLOADER_PPUSATD0_I2C1 0 + +// CHIPTESTCTRL +// Update secure access state of CHIPTESTCTRL before calling into bootloader +#define BOOTLOADER_PPUSATD0_CHIPTESTCTRL 0 + +// SYSCFGCFGNS +// Update secure access state of SYSCFGCFGNS before calling into bootloader +#define BOOTLOADER_PPUSATD0_SYSCFGCFGNS 0 + +// SYSCFG +// Update secure access state of SYSCFG before calling into bootloader +#define BOOTLOADER_PPUSATD0_SYSCFG 0 + +// BURAM +// Update secure access state of BURAM before calling into bootloader +#define BOOTLOADER_PPUSATD0_BURAM 0 + +// GPCRC +// Update secure access state of GPCRC before calling into bootloader +#define BOOTLOADER_PPUSATD0_GPCRC 0 + +// DCDC +// Update secure access state of DCDC before calling into bootloader +#define BOOTLOADER_PPUSATD0_DCDC 0 + +// HOSTMAILBOX +// Update secure access state of HOSTMAILBOX before calling into bootloader +#define BOOTLOADER_PPUSATD0_HOSTMAILBOX 0 + +// EUSART1 +// Update secure access state of EUSART1 before calling into bootloader +#define BOOTLOADER_PPUSATD0_EUSART1 0 + +// SYSRTC +// Update secure access state of SYSRTC before calling into bootloader +#define BOOTLOADER_PPUSATD0_SYSRTC 0 + +// KEYSCAN +// Update secure access state of KEYSCAN before calling into bootloader +#define BOOTLOADER_PPUSATD1_KEYSCAN 0 + +// DMEM +// Update secure access state of DMEM before calling into bootloader +#define BOOTLOADER_PPUSATD1_DMEM 0 + +// RADIOAES +// Update secure access state of RADIOAES before calling into bootloader +#define BOOTLOADER_PPUSATD1_RADIOAES 0 + +// SMU +// Update secure access state of SMU before calling into bootloader +#define BOOTLOADER_PPUSATD1_SMU 0 + +// SMUCFGNS +// Update secure access state of SMUCFGNS before calling into bootloader +#define BOOTLOADER_PPUSATD1_SMUCFGNS 0 + +// LETIMER0 +// Update secure access state of LETIMER0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_LETIMER0 0 + +// IADC0 +// Update secure access state of IADC0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_IADC0 0 + +// ACMP0 +// Update secure access state of ACMP0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_ACMP0 0 + +// ACMP1 +// Update secure access state of ACMP1 before calling into bootloader +#define BOOTLOADER_PPUSATD1_ACMP1 0 + +// AMUXCP0 +// Update secure access state of AMUXCP0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_AMUXCP0 0 + +// VDAC0 +// Update secure access state of VDAC0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_VDAC0 0 + +// VDAC1 +// Update secure access state of VDAC1 before calling into bootloader +#define BOOTLOADER_PPUSATD1_VDAC1 0 + +// PCNT +// Update secure access state of PCNT before calling into bootloader +#define BOOTLOADER_PPUSATD1_PCNT 0 + +// HFRCO1 +// Update secure access state of HFRCO1 before calling into bootloader +#define BOOTLOADER_PPUSATD1_HFRCO1 0 + +// HFXO0 +// Update secure access state of HFXO0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_HFXO0 0 + +// I2C0 +// Update secure access state of I2C0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_I2C0 0 + +// WDOG0 +// Update secure access state of WDOG0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_WDOG0 0 + +// WDOG1 +// Update secure access state of WDOG1 before calling into bootloader +#define BOOTLOADER_PPUSATD1_WDOG1 0 + +// EUSART0 +// Update secure access state of EUSART0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_EUSART0 0 + +// SEMAILBOX +// Update secure access state of SEMAILBOX before calling into bootloader +#define BOOTLOADER_PPUSATD1_SEMAILBOX 0 + +// MVP +// Update secure access state of MVP before calling into bootloader +#define BOOTLOADER_PPUSATD1_MVP 0 + +// AHBRADIO +// Update secure access state of AHBRADIO before calling into bootloader +#define BOOTLOADER_PPUSATD1_AHBRADIO 0 +// + +// +// <<< end of configuration section >>> + +#if BOOTLOADER_MANUAL_OVERRIDE_SECURITY_STATE == 1 +#define BOOTLOADER_PPUSATD0_MASK ((BOOTLOADER_PPUSATD0_EMU << _SMU_PPUSATD0_EMU_SHIFT) \ + | (BOOTLOADER_PPUSATD0_CMU << _SMU_PPUSATD0_CMU_SHIFT) \ + | (BOOTLOADER_PPUSATD0_HFRCO0 << _SMU_PPUSATD0_HFRCO0_SHIFT) \ + | (BOOTLOADER_PPUSATD0_FSRCO << _SMU_PPUSATD0_FSRCO_SHIFT) \ + | (BOOTLOADER_PPUSATD0_DPLL0 << _SMU_PPUSATD0_DPLL0_SHIFT) \ + | (BOOTLOADER_PPUSATD0_LFXO << _SMU_PPUSATD0_LFXO_SHIFT) \ + | (BOOTLOADER_PPUSATD0_LFRCO << _SMU_PPUSATD0_LFRCO_SHIFT) \ + | (BOOTLOADER_PPUSATD0_ULFRCO << _SMU_PPUSATD0_ULFRCO_SHIFT) \ + | (BOOTLOADER_PPUSATD0_MSC << _SMU_PPUSATD0_MSC_SHIFT) \ + | (BOOTLOADER_PPUSATD0_ICACHE0 << _SMU_PPUSATD0_ICACHE0_SHIFT) \ + | (BOOTLOADER_PPUSATD0_PRS << _SMU_PPUSATD0_PRS_SHIFT) \ + | (BOOTLOADER_PPUSATD0_GPIO << _SMU_PPUSATD0_GPIO_SHIFT) \ + | (BOOTLOADER_PPUSATD0_LDMA << _SMU_PPUSATD0_LDMA_SHIFT) \ + | (BOOTLOADER_PPUSATD0_LDMAXBAR << _SMU_PPUSATD0_LDMAXBAR_SHIFT) \ + | (BOOTLOADER_PPUSATD0_TIMER0 << _SMU_PPUSATD0_TIMER0_SHIFT) \ + | (BOOTLOADER_PPUSATD0_TIMER1 << _SMU_PPUSATD0_TIMER1_SHIFT) \ + | (BOOTLOADER_PPUSATD0_TIMER2 << _SMU_PPUSATD0_TIMER2_SHIFT) \ + | (BOOTLOADER_PPUSATD0_TIMER3 << _SMU_PPUSATD0_TIMER3_SHIFT) \ + | (BOOTLOADER_PPUSATD0_TIMER4 << _SMU_PPUSATD0_TIMER4_SHIFT) \ + | (BOOTLOADER_PPUSATD0_USART0 << _SMU_PPUSATD0_USART0_SHIFT) \ + | (BOOTLOADER_PPUSATD0_BURTC << _SMU_PPUSATD0_BURTC_SHIFT) \ + | (BOOTLOADER_PPUSATD0_I2C1 << _SMU_PPUSATD0_I2C1_SHIFT) \ + | (BOOTLOADER_PPUSATD0_CHIPTESTCTRL << _SMU_PPUSATD0_CHIPTESTCTRL_SHIFT) \ + | (BOOTLOADER_PPUSATD0_SYSCFGCFGNS << _SMU_PPUSATD0_SYSCFGCFGNS_SHIFT) \ + | (BOOTLOADER_PPUSATD0_SYSCFG << _SMU_PPUSATD0_SYSCFG_SHIFT) \ + | (BOOTLOADER_PPUSATD0_BURAM << _SMU_PPUSATD0_BURAM_SHIFT) \ + | (BOOTLOADER_PPUSATD0_GPCRC << _SMU_PPUSATD0_GPCRC_SHIFT) \ + | (BOOTLOADER_PPUSATD0_DCDC << _SMU_PPUSATD0_DCDC_SHIFT) \ + | (BOOTLOADER_PPUSATD0_HOSTMAILBOX << _SMU_PPUSATD0_HOSTMAILBOX_SHIFT) \ + | (BOOTLOADER_PPUSATD0_EUSART1 << _SMU_PPUSATD0_EUSART1_SHIFT) \ + | (BOOTLOADER_PPUSATD0_SYSRTC << _SMU_PPUSATD0_SYSRTC_SHIFT)) +#define BOOTLOADER_PPUSATD1_MASK ((BOOTLOADER_PPUSATD1_KEYSCAN << _SMU_PPUSATD1_KEYSCAN_SHIFT) \ + | (BOOTLOADER_PPUSATD1_DMEM << _SMU_PPUSATD1_DMEM_SHIFT) \ + | (BOOTLOADER_PPUSATD1_RADIOAES << _SMU_PPUSATD1_RADIOAES_SHIFT) \ + | (BOOTLOADER_PPUSATD1_SMU << _SMU_PPUSATD1_SMU_SHIFT) \ + | (BOOTLOADER_PPUSATD1_SMUCFGNS << _SMU_PPUSATD1_SMUCFGNS_SHIFT) \ + | (BOOTLOADER_PPUSATD1_LETIMER0 << _SMU_PPUSATD1_LETIMER0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_IADC0 << _SMU_PPUSATD1_IADC0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_ACMP0 << _SMU_PPUSATD1_ACMP0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_ACMP1 << _SMU_PPUSATD1_ACMP1_SHIFT) \ + | (BOOTLOADER_PPUSATD1_AMUXCP0 << _SMU_PPUSATD1_AMUXCP0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_VDAC0 << _SMU_PPUSATD1_VDAC0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_VDAC1 << _SMU_PPUSATD1_VDAC1_SHIFT) \ + | (BOOTLOADER_PPUSATD1_PCNT << _SMU_PPUSATD1_PCNT_SHIFT) \ + | (BOOTLOADER_PPUSATD1_HFRCO1 << _SMU_PPUSATD1_HFRCO1_SHIFT) \ + | (BOOTLOADER_PPUSATD1_HFXO0 << _SMU_PPUSATD1_HFXO0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_I2C0 << _SMU_PPUSATD1_I2C0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_WDOG0 << _SMU_PPUSATD1_WDOG0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_WDOG1 << _SMU_PPUSATD1_WDOG1_SHIFT) \ + | (BOOTLOADER_PPUSATD1_EUSART0 << _SMU_PPUSATD1_EUSART0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_SEMAILBOX << _SMU_PPUSATD1_SEMAILBOX_SHIFT) \ + | (BOOTLOADER_PPUSATD1_MVP << _SMU_PPUSATD1_MVP_SHIFT) \ + | (BOOTLOADER_PPUSATD1_AHBRADIO << _SMU_PPUSATD1_AHBRADIO_SHIFT)) +#endif // BOOTLOADER_MANUAL_OVERRIDE_SECURITY_STATE + +#endif // BTL_INTERFACE_CFG_S2C4_H diff --git a/silabs_examples/credentials/device/brd4186c/config/emlib_core_debug_config.h b/silabs_examples/credentials/device/brd4186c/config/emlib_core_debug_config.h new file mode 100644 index 00000000000000..50dbbed9bc4f59 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/emlib_core_debug_config.h @@ -0,0 +1,46 @@ +/***************************************************************************//** + * @file + * @brief emlib_core Configuration + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef EM_CORE_DEBUG_CONFIG_H +#define EM_CORE_DEBUG_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Core Configuration + +// Enables measuring of interrupt disable time for debugging purposes. +// Default: 0 +// If Enabled, either cycle_counter or systemview component must be added to project. +#define SL_EMLIB_CORE_ENABLE_INTERRUPT_DISABLED_TIMING 0 + +// + +// <<< end of configuration section >>> +#endif // EM_CORE_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186c/config/legacy_common_ash_config.h b/silabs_examples/credentials/device/brd4186c/config/legacy_common_ash_config.h new file mode 100644 index 00000000000000..ce1ad5d7ad4eb4 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/legacy_common_ash_config.h @@ -0,0 +1,43 @@ +/***************************************************************************//** + * @file + * @brief Legacy Host ASH configuration file. + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef LEGACY_NCP_ASH_CONFIG_H +#define LEGACY_NCP_ASH_CONFIG_H + +// The USART used for ASH communications in COM_Port_t format, as defined in platform/service/legacy_hal/inc/serial.h (see defined names for USART ports) <-1..3:1> +// Default: (-1) +// The default value of -1 causes the ASH code to try to use the USART assigned to the "VCOM" instance of SL_IOSTREAM_USART. Otherwise the value is passed to Legacy HAL, which attempts to find an instance of SL_IOSTREAM_USART which uses that USART. +#define LEGACY_NCP_ASH_SERIAL_PORT (-1) + +#endif /* LEGACY_NCP_ASH_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186c/config/legacy_hal_config.h b/silabs_examples/credentials/device/brd4186c/config/legacy_hal_config.h new file mode 100644 index 00000000000000..e3386e94094dc0 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/legacy_hal_config.h @@ -0,0 +1,47 @@ +/***************************************************************************//** + * @file + * @brief Legacy HAL configuration file. + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef LEGACY_HAL_CONFIG_H +#define LEGACY_HAL_CONFIG_H + +// Translate button interrupt callback +// When the Simple Button component is included, it provides a callback for +// buttons configured in interrupt mode. When this option is 1, Legacy HAL +// will try to consume that callback and translate it to "halButtonIsr", +// the legacy callback. If anything else in the application consumes the +// Simple button callback, it will override Legacy HAL's version. +// Default: 1 +#define LEGACY_HAL_TRANSLATE_BUTTON_INTERRUPT (1) + +#endif /* LEGACY_HAL_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186c/config/mbedtls_config.h b/silabs_examples/credentials/device/brd4186c/config/mbedtls_config.h new file mode 100644 index 00000000000000..44ce8ed553755a --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/mbedtls_config.h @@ -0,0 +1,72 @@ +#ifndef MBEDTLS_CONFIG_H +#define MBEDTLS_CONFIG_H + +// Include the autogenerated mbedtls configuration file +#include "mbedtls_config_autogen.h" + +// <<< Use Configuration Wizard in Context Menu >>> +// TLS/DTLS configuration + +// Complete list of ciphersuites to use, in order of preference. +// Default: MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8 +// Complete list of ciphersuites to use, in order of preference. +// The value of this configuration should be updated for the application needs. +#define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8 + +// Maximum TLS/DTLS fragment length in bytes (input). +// Default: 768 +// The size configured here determines the size of the internal I/O +// buffer used in mbedTLS when receiving data. +#define SL_MBEDTLS_SSL_IN_CONTENT_LEN 768 + +// Maximum TLS/DTLS fragment length in bytes (output). +// Default: 768 +// The size configured here determines the size of the internal I/O +// buffer used in mbedTLS when sending data. +#define SL_MBEDTLS_SSL_OUT_CONTENT_LEN 768 + +// Enable support for RFC 6066 max_fragment_length extension in SSL. +// Default: 1 +// Enable support for RFC 6066 max_fragment_length extension in SSL. +#define SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH 1 + +// Enable support for exporting key block and master secret. +// Default: 1 +// Enable support for exporting key block and master secret. +// This is required for certain users of TLS, e.g. EAP-TLS. +#define SL_MBEDTLS_SSL_EXPORT_KEYS 1 + +// Enable the PSK based ciphersuite modes in SSL / TLS. +// Default: 0 +// Enable the PSK based ciphersuite modes in SSL / TLS. +#define SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED 0 + +// Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS. +// Default: 0 +// Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS. +#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED 0 + +// Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS. +// Default: 0 +// Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS. +#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED 0 + +// Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS. +// Default: 0 +// Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS. +#define SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED 0 + +// +// <<< end of configuration section >>> + +// Include transformation logic to apply CMSIS-config configuration options to +// the correct Mbed TLS / PSA Crypto options. +#include "sl_mbedtls_config_transform_autogen.h" + +// Custom defines can be placed here before check_config.h is included. + +#include "mbedtls/config_psa.h" + +#include "mbedtls/check_config.h" + +#endif diff --git a/silabs_examples/credentials/device/brd4186c/config/nvm3_default_config.h b/silabs_examples/credentials/device/brd4186c/config/nvm3_default_config.h new file mode 100644 index 00000000000000..5f12735813dc50 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/nvm3_default_config.h @@ -0,0 +1,45 @@ +#ifndef NVM3_DEFAULT_CONFIG_H +#define NVM3_DEFAULT_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// NVM3 Default Instance Configuration + +#ifndef NVM3_DEFAULT_CACHE_SIZE +// NVM3 Default Instance Cache Size +// Number of NVM3 objects to cache. To reduce access times this number +// should be equal to or higher than the number of NVM3 objects in the +// default NVM3 instance. +// Default: 200 +#define NVM3_DEFAULT_CACHE_SIZE 200 +#endif + +#ifndef NVM3_DEFAULT_MAX_OBJECT_SIZE +// NVM3 Default Instance Max Object Size +// Max NVM3 object size that can be stored. +// Default: 254 +#define NVM3_DEFAULT_MAX_OBJECT_SIZE 254 +#endif + +#ifndef NVM3_DEFAULT_REPACK_HEADROOM +// NVM3 Default Instance User Repack Headroom +// Headroom determining how many bytes below the forced repack limit the user +// repack limit should be placed. The default is 0, which means the user and +// forced repack limits are equal. +// Default: 0 +#define NVM3_DEFAULT_REPACK_HEADROOM 0 +#endif + +#ifndef NVM3_DEFAULT_NVM_SIZE +// NVM3 Default Instance Size +// Size of the NVM3 storage region in flash. This size should be aligned with +// the flash page size of the device. +// Default: 40960 +#define NVM3_DEFAULT_NVM_SIZE 32768 +#endif + +// + +// <<< end of configuration section >>> + +#endif // NVM3_DEFAULT_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186c/config/psa_crypto_config.h b/silabs_examples/credentials/device/brd4186c/config/psa_crypto_config.h new file mode 100644 index 00000000000000..557606d10b524d --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/psa_crypto_config.h @@ -0,0 +1,47 @@ +#ifndef PSA_CRYPTO_CONFIG_H +#define PSA_CRYPTO_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// PSA User Maximum Open Keys Count <0-128> +// Maximum amount of keys that the user application will have open +// simultaneously. In context of PSA Crypto, an open key means any key +// either stored in RAM (lifetime set to PSA_KEY_LIFETIME_VOLATILE), or +// used as part of a cryptographic operation. +// When using a key for a multi-part (setup/update/finish) operation, a key +// is considered to be open from the moment the operation is successfully +// setup, until it finishes or aborts. +// When an application tries to open more keys than this value accounts for, +// the PSA API may return PSA_ERROR_INSUFFICIENT_MEMORY. Keep in mind that +// other software included in the application (e.g. wireless protocol stacks) +// also can have a need to have open keys in PSA Crypto. This could lead to +// a race condition when the application key slot count is set too low for +// the actual usage of the application, as a software stack may not fail +// gracefully in case an application opens more than its declared amount of +// keys, thereby precluding the stack from functioning. +// Default: 4 +#define SL_PSA_KEY_USER_SLOT_COUNT (4) + +// PSA Maximum User Persistent Keys Count <0-1024> +// Maximum amount of keys (or other files) that can be stored persistently +// by the application through the PSA interface, when persistent storage +// support for PSA Crypto is included in the project. +// Due to caching logic, this setting does have an impact on static RAM usage. +// Note that this number is added to the potential requirements from other +// software components in the project, such that the total amount of keys +// which can be stored through the ITS backend can be higher than what is +// configured here. +// +// WARNING: When changing this setting on an application that is already +// deployed, and thus will get the change through an application upgrade, +// care should be taken to ensure that the setting is only ever increased, +// and never decreased. Decreasing this setting might cause previously +// stored keys/files to become inaccessible. +// Default: 128 +#define SL_PSA_ITS_USER_MAX_FILES (128) +// <<< end of configuration section >>> + +// Include the autogenerated PSA Crypto configuration file +#include "psa_crypto_config_autogen.h" + +#endif // PSA_CRYPTO_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_board_control_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_board_control_config.h new file mode 100644 index 00000000000000..63bf462277aad7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_board_control_config.h @@ -0,0 +1,76 @@ +/***************************************************************************//** + * @file + * @brief Board Control + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_BOARD_CONTROL_CONFIG_H +#define SL_BOARD_CONTROL_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Enable Virtual COM UART +// Default: 0 +#define SL_BOARD_ENABLE_VCOM 1 + +// Enable Display +// Default: 0 +#define SL_BOARD_ENABLE_DISPLAY 0 + +// Enable Relative Humidity and Temperature sensor +// Default: 0 +#define SL_BOARD_ENABLE_SENSOR_RHT 0 + +// Disable SPI Flash +// Default: 1 +#define SL_BOARD_DISABLE_MEMORY_SPI 1 + +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> + +// SL_BOARD_ENABLE_VCOM +// $[GPIO_SL_BOARD_ENABLE_VCOM] +#define SL_BOARD_ENABLE_VCOM_PORT gpioPortB +#define SL_BOARD_ENABLE_VCOM_PIN 0 +// [GPIO_SL_BOARD_ENABLE_VCOM]$ + +// SL_BOARD_ENABLE_DISPLAY +// $[GPIO_SL_BOARD_ENABLE_DISPLAY] +#define SL_BOARD_ENABLE_DISPLAY_PORT gpioPortC +#define SL_BOARD_ENABLE_DISPLAY_PIN 9 +// [GPIO_SL_BOARD_ENABLE_DISPLAY]$ + +// SL_BOARD_ENABLE_SENSOR_RHT +// $[GPIO_SL_BOARD_ENABLE_SENSOR_RHT] +#define SL_BOARD_ENABLE_SENSOR_RHT_PORT gpioPortD +#define SL_BOARD_ENABLE_SENSOR_RHT_PIN 3 +// [GPIO_SL_BOARD_ENABLE_SENSOR_RHT]$ + +// <<< sl:end pin_tool >>> + +#endif // SL_BOARD_CONTROL_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_custom_manufacturing_token_header.h b/silabs_examples/credentials/device/brd4186c/config/sl_custom_manufacturing_token_header.h new file mode 100644 index 00000000000000..08b66580998c71 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_custom_manufacturing_token_header.h @@ -0,0 +1,84 @@ +/***************************************************************************//** + * @file + * @brief Custom manufacturing token header + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +/***************************************************************************//** + * Custom Manufacturing Token Usage Examples + * + * The macro DEFINE_MFG_TOKEN() should be used when instantiating a + * manufacturing token. Refer to the list of *_LOCATION defines to + * see what memory is allocated and what memory is unused/available. + * + * The _LOCATION is or'ed with either USERDATA_TOKENS or LOCKBITSDATA_TOKENS + * to control which segment of memory the token is placed in. + * + * REMEMBER: By definition, manufacturing tokens exist at fixed addresses. + * Tokens should not overlap. + * + * Here is a basic example of a manufacturing token header file: + * + * Note that the address used here is just an example. It places the 8 bytes + * in the middle of the USERDATA space on an EFR32MG12P433F1024GM68. + * To review addresses of existing tokens when choosing a new address, refer + * to an961-custom-nodes-efr32.pdf and the files + * platform/service/token_manager/inc/sl_token_manufacturing_series_1.h + * platform/service/token_manager/inc/sl_token_manufacturing_series_2.h + * + * @code + * #define CREATOR_MFG_EXAMPLE 0x4242 + * #ifdef DEFINETYPES + * typedef uint8_t tokTypeMfgExample[8]; + * #endif + * #ifdef DEFINETOKENS + * #define MFG_EXAMPLE_LOCATION (USERDATA_TOKENS | 0x2000) + * DEFINE_MFG_TOKEN(MFG_EXAMPLE, + * tokTypeMfgExample, + * MFG_EXAMPLE_LOCATION, + * {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}) + * #endif + * @endcode + * + * Since this file contains both the typedefs and the token defs, there are + * two \#defines used to select which one is needed when this file is included. + * \#define DEFINETYPES is used to select the type definitions and + * \#define DEFINETOKENS is used to select the token definitions. + * + * To use this example: + * Ensure the Token Manager's configuration in Studio + * has enabled Custom Manufacuturing Tokens. + * + * Ensure your application has: + * #include "sl_token_api.h" + * #include "sl_token_manager.h" + * + * This code will read the token data: + * uint8_t data[8]; + * sl_token_get_data(TOKEN_MFG_EXAMPLE, 0, &data, sizeof(data)); + ******************************************************************************/ + +/* + #define CREATOR_MFG_EXAMPLE 0x4242 + #ifdef DEFINETYPES + typedef uint8_t tokTypeMfgExample[8]; + #endif + #ifdef DEFINETOKENS + #define MFG_EXAMPLE_LOCATION (USERDATA_TOKENS | 0x2000) + DEFINE_MFG_TOKEN(MFG_EXAMPLE, + tokTypeMfgExample, + MFG_EXAMPLE_LOCATION, + {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}) + #endif + */ diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_custom_token_header.h b/silabs_examples/credentials/device/brd4186c/config/sl_custom_token_header.h new file mode 100644 index 00000000000000..abfe057a05ee5b --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_custom_token_header.h @@ -0,0 +1,86 @@ +/***************************************************************************//** + * @file + * @brief Custom token header + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +/***************************************************************************//** + * Custom Tokens Usage Examples + * + * #define BASICTOKEN1_DEFAULT 0xA5F0 + * #define BASICTOKEN2_DEFAULT { { 0xAA, 0xBB, 0xCC }, 0xDDDD } + * #define BASICTOKEN3_DEFAULT { { 0 } } + * #define COUNTERTOKEN1_DEFAULT 0 + * #define COUNTERTOKEN2_DEFAULT 0xCCCCCCCC + * #define INDEXEDTOKEN1_DEFAULT 0 + * #define INDEXEDTOKEN2_DEFAULT { 0xDDDD } + * #define INDEXEDTOKEN3_DEFAULT { 0xAA, 0xBBBB, { 0x00, 0x11, 0x22 }, 0xCC } + * + * #ifdef DEFINETYPES + * typedef uint16_t tokTypeBasicToken1; + * typedef struct { + * uint8_t basicToken2Array[3]; + * uint16_t basicToken2VarA; + * } tokTypeBasicToken2; + * + * typedef struct { + * uint8_t basicToken3Array[254]; + * } tokTypeBasicToken3; + * + * typedef uint32_t tokTypeCounterToken1; + * typedef uint32_t tokTypeCounterToken2; + * + * typedef uint8_t tokTypeIndexedToken1Element; + * typedef uint16_t tokTypeIndexedToken2Element; + * + * typedef struct { + * uint8_t indexedToken3VarA; + * uint16_t indexedToken3VarB; + * uint8_t indexedToken3Array[3]; + * int8_t indexedToken3VarC; + * } tokTypeIndexedToken3Element; + * + * #endif + * + * #ifdef DEFINETOKENS + * DEFINE_BASIC_TOKEN(BASICTOKEN1, + * tokTypeBasicToken1, + * BASICTOKEN1_DEFAULT) + * DEFINE_BASIC_TOKEN(BASICTOKEN2, + * tokTypeBasicToken2, + * BASICTOKEN2_DEFAULT) + * DEFINE_BASIC_TOKEN(BASICTOKEN3, + * tokTypeBasicToken3, + * BASICTOKEN3_DEFAULT) + * DEFINE_COUNTER_TOKEN(COUNTERTOKEN1, + * tokTypeCounterToken1, + * COUNTERTOKEN1_DEFAULT) + * DEFINE_COUNTER_TOKEN(COUNTERTOKEN2, + * tokTypeCounterToken2, + * COUNTERTOKEN2_DEFAULT) + * DEFINE_INDEXED_TOKEN(INDEXEDTOKEN1, + * tokTypeIndexedToken1Element, + * INDEXEDTOKEN1_ELEMENTS, + * INDEXEDTOKEN1_DEFAULT) + * DEFINE_INDEXED_TOKEN(INDEXEDTOKEN2, + * tokTypeIndexedToken2Element, + * INDEXEDTOKEN2_ELEMENTS, + * INDEXEDTOKEN2_DEFAULT) + * DEFINE_INDEXED_TOKEN(INDEXEDTOKEN3, + * tokTypeIndexedToken3Element, + * INDEXEDTOKEN3_ELEMENTS, + * INDEXEDTOKEN3_DEFAULT) + * #endif + * + ******************************************************************************/ diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_debug_swo_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_debug_swo_config.h new file mode 100644 index 00000000000000..34761be5087c82 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_debug_swo_config.h @@ -0,0 +1,99 @@ +/***************************************************************************//** + * @file + * @brief SWO configuration + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEBUG_SWO_CONFIG_H +#define SL_DEBUG_SWO_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// SWO Configuration + +// SWO Frequency +// Must be 875 kHz for communication with Silicon Labs debuggers +// Default: 875000 +#define SL_DEBUG_SWO_FREQ 875000 + +// Enable interrupt event trace +// Default: 0 +#define SL_DEBUG_SWO_SAMPLE_IRQ 0 + +// Enable Program Counter samples +// Default: 0 +#define SL_DEBUG_SWO_SAMPLE_PC 0 + +// SWO debug sample intervals +// <64=> 64 +// <128=> 128 +// <192=> 192 +// <256=> 256 +// <320=> 320 +// <384=> 384 +// <448=> 448 +// <512=> 512 +// <576=> 576 +// <640=> 640 +// <704=> 704 +// <768=> 768 +// <832=> 832 +// <896=> 896 +// <960=> 960 +// <1024=> 1024 +// <2048=> 2048 +// <3072=> 3072 +// <4096=> 4096 +// <5102=> 5102 +// <6144=> 6144 +// <7168=> 7168 +// <8192=> 8192 +// <9216=> 9216 +// <10240=> 10240 +// <11264=> 11264 +// <12288=> 12288 +// <13312=> 13312 +// <14336=> 14336 +// <15360=> 15360 +// Must be 64, 128, 192, [ n * 64 ], 1024, 2048, 3072, [ n * 1024 ] , 15360 +// Default: 15360 +#define SL_DEBUG_SWO_SAMPLE_INTERVAL 15360 +// + +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> +// SL_DEBUG +// $[GPIO_SL_DEBUG] +#define SL_DEBUG_PERIPHERAL GPIO + +#define SL_DEBUG_SWV_PORT gpioPortA +#define SL_DEBUG_SWV_PIN 3 +// [GPIO_SL_DEBUG]$ +// <<< sl:end pin_tool >>> + +#endif // SL_DEBUG_SWO_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_device_init_dcdc_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_device_init_dcdc_config.h new file mode 100644 index 00000000000000..4fb88397d2e8d7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_device_init_dcdc_config.h @@ -0,0 +1,58 @@ +/***************************************************************************//** + * @file + * @brief DEVICE_INIT_DCDC Config + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEVICE_INIT_DCDC_CONFIG_H +#define SL_DEVICE_INIT_DCDC_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Enable DC/DC Converter +// +// Default: 1 +#define SL_DEVICE_INIT_DCDC_ENABLE 1 + +// Set DC/DC Converter in Bypass Mode +// +// Default: 0 +#define SL_DEVICE_INIT_DCDC_BYPASS 0 + +// Override for DCDC PFMX Mode Peak Current Setting +// +// Default: 1 +#define SL_DEVICE_INIT_DCDC_PFMX_IPKVAL_OVERRIDE 1 + +// DCDC PFMX Mode Peak Current Setting <0-15> +// +// Default: DCDC_PFMXCTRL_IPKVAL_DEFAULT +#define SL_DEVICE_INIT_DCDC_PFMX_IPKVAL 12 + +// <<< end of configuration section >>> + +#endif // SL_DEVICE_INIT_DCDC_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_device_init_emu_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_device_init_emu_config.h new file mode 100644 index 00000000000000..4ac96bac233c3a --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_device_init_emu_config.h @@ -0,0 +1,53 @@ +/***************************************************************************//** + * @file + * @brief DEVICE_INIT_EMU Config + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEVICE_INIT_EMU_CONFIG_H +#define SL_DEVICE_INIT_EMU_CONFIG_H + +#include "em_emu.h" + +// <<< Use Configuration Wizard in Context Menu >>> + +// Allow debugger to remain connected in EM2 +// Force PD0B to stay on on EM2 entry. This allows the debugger to remain connected in EM2 and EM3. +// Enabling debug connectivity results in an increased power consumption in EM2/EM3. +// Default: 1 +#define SL_DEVICE_INIT_EMU_EM2_DEBUG_ENABLE 1 + +// EM4 pin retention mode +// No Retention: Pads enter reset state when entering EM4. +// Retention through EM4: Pads enter reset state when exiting EM4. +// Retention through EM4 and wakeup. +// Default: emuPinRetentionDisable +#define SL_DEVICE_INIT_EMU_EM4_PIN_RETENTION_MODE emuPinRetentionDisable + +// <<< end of configuration section >>> + +#endif // SL_DEVICE_INIT_EMU_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_device_init_hfxo_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_device_init_hfxo_config.h new file mode 100644 index 00000000000000..9e7d255d06ada8 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_device_init_hfxo_config.h @@ -0,0 +1,53 @@ +/***************************************************************************//** + * @file + * @brief DEVICE_INIT_HFXO Config + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEVICE_INIT_HFXO_CONFIG_H +#define SL_DEVICE_INIT_HFXO_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Mode +// +// Crystal oscillator +// External sine wave +// Default: cmuHfxoOscMode_Crystal +#define SL_DEVICE_INIT_HFXO_MODE cmuHfxoOscMode_Crystal + +// Frequency <38000000-40000000> +// Default: 39000000 +#define SL_DEVICE_INIT_HFXO_FREQ 39000000 + +// CTUNE <0-255> +// Default: 140 +#define SL_DEVICE_INIT_HFXO_CTUNE 87 + +// <<< end of configuration section >>> + +#endif // SL_DEVICE_INIT_HFXO_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_device_init_lfxo_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_device_init_lfxo_config.h new file mode 100644 index 00000000000000..5d2cee4142978a --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_device_init_lfxo_config.h @@ -0,0 +1,66 @@ +/***************************************************************************//** + * @file + * @brief DEVICE_INIT_LFXO Config + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEVICE_INIT_LFXO_CONFIG_H +#define SL_DEVICE_INIT_LFXO_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Mode +// +// Crystal oscillator +// AC-coupled buffer +// External digital clock +// Default: cmuLfxoOscMode_Crystal +#define SL_DEVICE_INIT_LFXO_MODE cmuLfxoOscMode_Crystal + +// CTUNE <0-127> +// Default: 63 +#define SL_DEVICE_INIT_LFXO_CTUNE 36 + +// LFXO precision in PPM <0-65535> +// Default: 500 +#define SL_DEVICE_INIT_LFXO_PRECISION 100 + +// Startup Timeout Delay +// +// 2 cycles +// 256 cycles +// 1K cycles +// 2K cycles +// 4K cycles +// 8K cycles +// 16K cycles +// 32K cycles +// Default: cmuLfxoStartupDelay_4KCycles +#define SL_DEVICE_INIT_LFXO_TIMEOUT cmuLfxoStartupDelay_4KCycles +// <<< end of configuration section >>> + +#endif // SL_DEVICE_INIT_LFXO_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_hfxo_manager_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_hfxo_manager_config.h new file mode 100644 index 00000000000000..240f890da2a7dc --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_hfxo_manager_config.h @@ -0,0 +1,56 @@ +/***************************************************************************//** + * @file + * @brief HFXO Manager configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_HFXO_MANAGER_CONFIG_H +#define SL_HFXO_MANAGER_CONFIG_H + +// Power Manager Configuration + +// Enable custom IRQ handler for crystal HF oscillator. +// Enable if HFXO0_IRQHandler is needed from your application. +// The HFXO IRQ priority must not be changed as the HFXO Manager module needs it to be high priority +// and to stay enabled through atomic sections. +// The function sl_hfxo_manager_irq_handler() will have to be called from you custom handler if this is enabled. +// Default: 0 +#define SL_HFXO_MANAGER_CUSTOM_HFXO_IRQ_HANDLER 0 + +// Enable support for Sleepy Crystals. +// If Enabled and if HFXO fails to startup due to a sleepy crystal, HFXO Manager will retry the startup with more aggressive settings +// before falling back to the configured settings. +// Default: 0 +#define SL_HFXO_MANAGER_SLEEPY_CRYSTAL_SUPPORT 0 + +// + +#endif /* SL_HFXO_MANAGER_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_iostream_usart_vcom_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_iostream_usart_vcom_config.h new file mode 100644 index 00000000000000..34f54ceb3f55e5 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_iostream_usart_vcom_config.h @@ -0,0 +1,109 @@ +/***************************************************************************//** + * @file + * @brief IOSTREAM_USART Config. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_IOSTREAM_USART_VCOM_CONFIG_H +#define SL_IOSTREAM_USART_VCOM_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// USART settings + +// Baud rate +// Default: 115200 +#define SL_IOSTREAM_USART_VCOM_BAUDRATE 115200 + +// Parity mode to use +// No Parity +// Even parity +// Odd parity +// Default: usartNoParity +#define SL_IOSTREAM_USART_VCOM_PARITY usartNoParity + +// Number of stop bits to use. +// 0.5 stop bits +// 1 stop bits +// 1.5 stop bits +// 2 stop bits +// Default: usartStopbits1 +#define SL_IOSTREAM_USART_VCOM_STOP_BITS usartStopbits1 + +// Flow control +// None +// CTS +// RTS +// CTS/RTS +// Software Flow control (XON/XOFF) +// Default: usartHwFlowControlNone +#define SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE usartHwFlowControlCtsAndRts + +// Receive buffer size +// Default: 32 +#define SL_IOSTREAM_USART_VCOM_RX_BUFFER_SIZE 32 + +// Convert \n to \r\n +// It can be changed at runtime using the C API. +// Default: 0 +#define SL_IOSTREAM_USART_VCOM_CONVERT_BY_DEFAULT_LF_TO_CRLF 0 + +// Restrict the energy mode to allow the reception. +// Default: 1 +// Limits the lowest energy mode the system can sleep to in order to keep the reception on. May cause higher power consumption. +#define SL_IOSTREAM_USART_VCOM_RESTRICT_ENERGY_MODE_TO_ALLOW_RECEPTION 1 + +// + +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> +// SL_IOSTREAM_USART_VCOM +// $[USART_SL_IOSTREAM_USART_VCOM] +#define SL_IOSTREAM_USART_VCOM_PERIPHERAL USART0 +#define SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO 0 + +// USART0 TX on PA08 +#define SL_IOSTREAM_USART_VCOM_TX_PORT gpioPortA +#define SL_IOSTREAM_USART_VCOM_TX_PIN 8 + +// USART0 RX on PA09 +#define SL_IOSTREAM_USART_VCOM_RX_PORT gpioPortA +#define SL_IOSTREAM_USART_VCOM_RX_PIN 9 + +// USART0 CTS on PB05 +#define SL_IOSTREAM_USART_VCOM_CTS_PORT gpioPortB +#define SL_IOSTREAM_USART_VCOM_CTS_PIN 5 + +// USART0 RTS on PA00 +#define SL_IOSTREAM_USART_VCOM_RTS_PORT gpioPortA +#define SL_IOSTREAM_USART_VCOM_RTS_PIN 0 + +// [USART_SL_IOSTREAM_USART_VCOM]$ +// <<< sl:end pin_tool >>> + +#endif diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_iostream_vuart_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_iostream_vuart_config.h new file mode 100644 index 00000000000000..82889008b77e1b --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_iostream_vuart_config.h @@ -0,0 +1,42 @@ +/***************************************************************************//** + * @file + * @brief SL_IOSTREAM_VUART Config. + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ +#ifndef SL_IOSTREAM_VUART_CONFIG_H +#define SL_IOSTREAM_VUART_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// VUART settings +// Receive buffer size +// Default: 32 +#define SL_IOSTREAM_VUART_RX_BUFFER_SIZE 32 + +// +// <<< end of configuration section >>> +#endif diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_legacy_hal_wdog_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_legacy_hal_wdog_config.h new file mode 100644 index 00000000000000..83b67575534e1f --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_legacy_hal_wdog_config.h @@ -0,0 +1,53 @@ +/***************************************************************************//** + * @file sl_legacy_hal_wdog_config.h + * @brief Legacy HAL watchdog configuration file. + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_LEGACY_HAL_WDOG_CONFIG_H +#define SL_LEGACY_HAL_WDOG_CONFIG_H + +// Legacy HAL WDOG Configurations + +// Disable calling halInternalEnableWatchDog in base-replacement.c's halInit(). +// Default: 0 +#define SL_LEGACY_HAL_DISABLE_WATCHDOG 0 +// + +// WDOG to use for SL_LEGACY_HAL_WDOGn. +// Default: 0 +// <0=> WDOG0 +// <1=> WDOD1 +#define SL_LEGACY_HAL_WDOGn 0 + +// + +#endif /* SL_LEGACY_HAL_WDOG_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_memory_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_memory_config.h new file mode 100644 index 00000000000000..b43ebcba024b94 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_memory_config.h @@ -0,0 +1,28 @@ +#ifndef SL_MEMORY_CONFIG_H +#define SL_MEMORY_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> +// Memory configuration + +// Stack size for the application. +// Default: 4096 +// The stack size configured here will be used by the stack that the +// application uses when coming out of a reset. +#ifndef SL_STACK_SIZE + #define SL_STACK_SIZE 4096 +#endif + +// Minimum heap size for the application. +// Default: 2048 +// Note that this value will configure the c heap which is normally used by +// malloc() and free() from the c library. The value defines a minimum heap +// size that is guaranteed to be available. The available heap may be larger +// to make use of any memory that would otherwise remain unused. +#ifndef SL_HEAP_SIZE + #define SL_HEAP_SIZE 2048 +#endif + +// +// <<< end of configuration section >>> + +#endif diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_mx25_flash_shutdown_eusart_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_mx25_flash_shutdown_eusart_config.h new file mode 100644 index 00000000000000..cdb0809710416c --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_mx25_flash_shutdown_eusart_config.h @@ -0,0 +1,51 @@ +/***************************************************************************//** + * @file + * @brief SL_MX25_FLASH_SHUTDOWN_USART Config + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_MX25_FLASH_SHUTDOWN_CONFIG_H +#define SL_MX25_FLASH_SHUTDOWN_CONFIG_H + +// <<< sl:start pin_tool >>> +// {eusart signal=TX,RX,SCLK} SL_MX25_FLASH_SHUTDOWN +// [EUSART_SL_MX25_FLASH_SHUTDOWN] +#define SL_MX25_FLASH_SHUTDOWN_PERIPHERAL EUSART1 +#define SL_MX25_FLASH_SHUTDOWN_PERIPHERAL_NO 1 + +// EUSART1 TX on PC01 +#define SL_MX25_FLASH_SHUTDOWN_TX_PORT gpioPortC +#define SL_MX25_FLASH_SHUTDOWN_TX_PIN 1 + +// EUSART1 RX on PC02 +#define SL_MX25_FLASH_SHUTDOWN_RX_PORT gpioPortC +#define SL_MX25_FLASH_SHUTDOWN_RX_PIN 2 + +// EUSART1 SCLK on PC03 +#define SL_MX25_FLASH_SHUTDOWN_SCLK_PORT gpioPortC +#define SL_MX25_FLASH_SHUTDOWN_SCLK_PIN 3 + +// [EUSART_SL_MX25_FLASH_SHUTDOWN] + +// SL_MX25_FLASH_SHUTDOWN_CS + +// $[GPIO_SL_MX25_FLASH_SHUTDOWN_CS] +#define SL_MX25_FLASH_SHUTDOWN_CS_PORT gpioPortC +#define SL_MX25_FLASH_SHUTDOWN_CS_PIN 4 + +// [GPIO_SL_MX25_FLASH_SHUTDOWN_CS]$ + +// <<< sl:end pin_tool >>> + +#endif // SL_MX25_FLASH_SHUTDOWN_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_power_manager_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_power_manager_config.h new file mode 100644 index 00000000000000..fa5c557a4f85fc --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_power_manager_config.h @@ -0,0 +1,71 @@ +/***************************************************************************//** + * @file + * @brief Power Manager configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_POWER_MANAGER_CONFIG_H +#define SL_POWER_MANAGER_CONFIG_H + +// Power Manager Configuration + +// Enable custom IRQ handler for external HF oscillator. +// Enable if CMU_IRQHandler/HFXO0_IRQHandler is needed from your application. +// The function sl_power_manager_irq_handler() will have to be called from you custom handler if this is enabled. +// Default: 0 +#define SL_POWER_MANAGER_CUSTOM_HF_OSCILLATOR_IRQ_HANDLER 0 + +// Lowest Energy mode allowed +// <1=> EM1 +// <2=> EM2 +// <3=> EM3 +// Default: 2 +#define SL_POWER_MANAGER_LOWEST_EM_ALLOWED 2 + +// Enable fast wakeup (disable voltage scaling in EM2/3 mode) +// Enable or disable voltage scaling in EM2/3 modes (when available). This decreases wakeup time by about 30 us. +// Deprecated. It is replaced by the function sl_power_manager_em23_voltage_scaling_enable_fast_wakeup() +// Default: 0 +#define SL_POWER_MANAGER_CONFIG_VOLTAGE_SCALING_FAST_WAKEUP 0 + +// Enable debugging feature +// Enable or disable debugging features (trace the different modules that have requirements). +// Default: 0 +#define SL_POWER_MANAGER_DEBUG 0 + +// Maximum numbers of requirements that can be logged +// Default: 10 +#define SL_POWER_MANAGER_DEBUG_POOL_SIZE 10 +// + +// + +#endif /* SL_POWER_MANAGER_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_rail_util_pa_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_rail_util_pa_config.h new file mode 100644 index 00000000000000..9dcab3f9667d89 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_rail_util_pa_config.h @@ -0,0 +1,81 @@ +/***************************************************************************//** + * @file + * @brief Power Amplifier configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_RAIL_UTIL_PA_CONFIG_H +#define SL_RAIL_UTIL_PA_CONFIG_H + +#include "rail_types.h" + +// <<< Use Configuration Wizard in Context Menu >>> +// PA configuration + +// Initial PA Power (deci-dBm, 100 = 10.0 dBm) +// Default: 100 +#define SL_RAIL_UTIL_PA_POWER_DECI_DBM 100 + +// PA Ramp Time (microseconds) +// <0-65535:1> +// Default: 10 +#define SL_RAIL_UTIL_PA_RAMP_TIME_US 10 + +// Milli-volts on PA supply pin (PA_VDD) +// <0-65535:1> +// Default: 3300 +#define SL_RAIL_UTIL_PA_VOLTAGE_MV 1800 + +// 2.4 GHz PA Selection +// Highest Possible +// High Power (chip-specific) +// Low Power +// Disable +// Default: RAIL_TX_POWER_MODE_2P4GIG_HIGHEST +#define SL_RAIL_UTIL_PA_SELECTION_2P4GHZ RAIL_TX_POWER_MODE_2P4GIG_HIGHEST + +// Sub-1 GHz PA Selection +// Disable +// Default: RAIL_TX_POWER_MODE_NONE +#define SL_RAIL_UTIL_PA_SELECTION_SUBGHZ RAIL_TX_POWER_MODE_NONE + +// Header file containing custom PA curves +// Default: "pa_curves_efr32.h" +#define SL_RAIL_UTIL_PA_CURVE_HEADER "pa_curves_efr32.h" + +// Header file containing PA curve types +// Default: "pa_curve_types_efr32.h" +#define SL_RAIL_UTIL_PA_CURVE_TYPES "pa_curve_types_efr32.h" + +// Enable PA Calibration +// Default: 0 +#define SL_RAIL_UTIL_PA_CALIBRATION_ENABLE 0 + +// +// <<< end of configuration section >>> + +#endif // SL_RAIL_UTIL_PA_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_rail_util_pti_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_rail_util_pti_config.h new file mode 100644 index 00000000000000..5165fc4204f699 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_rail_util_pti_config.h @@ -0,0 +1,73 @@ +/***************************************************************************//** + * @file + * @brief Packet Trace Information configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_RAIL_UTIL_PTI_CONFIG_H +#define SL_RAIL_UTIL_PTI_CONFIG_H + +#include "rail_types.h" + +// <<< Use Configuration Wizard in Context Menu >>> +// PTI Configuration + +// PTI mode +// UART +// UART onewire +// SPI +// Disabled +// Default: RAIL_PTI_MODE_UART +#define SL_RAIL_UTIL_PTI_MODE RAIL_PTI_MODE_UART + +// PTI Baud Rate (Hertz) +// <147800-20000000:1> +// Default: 1600000 +#define SL_RAIL_UTIL_PTI_BAUD_RATE_HZ 1600000 + +// +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> +// SL_RAIL_UTIL_PTI +// $[PTI_SL_RAIL_UTIL_PTI] +#define SL_RAIL_UTIL_PTI_PERIPHERAL PTI + +// PTI DOUT on PD04 +#define SL_RAIL_UTIL_PTI_DOUT_PORT gpioPortD +#define SL_RAIL_UTIL_PTI_DOUT_PIN 4 + +// PTI DFRAME on PD05 +#define SL_RAIL_UTIL_PTI_DFRAME_PORT gpioPortD +#define SL_RAIL_UTIL_PTI_DFRAME_PIN 5 + + +// [PTI_SL_RAIL_UTIL_PTI]$ + +// <<< sl:end pin_tool >>> + +#endif // SL_RAIL_UTIL_PTI_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_simple_led_led0_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_simple_led_led0_config.h new file mode 100644 index 00000000000000..09ba3c48b4becc --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_simple_led_led0_config.h @@ -0,0 +1,44 @@ +/***************************************************************************//** + * @file + * @brief Simple Led Driver Configuration + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_SIMPLE_LED_LED0_CONFIG_H +#define SL_SIMPLE_LED_LED0_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Simple LED configuration +// +// Active low +// Active high +// Default: SL_SIMPLE_LED_POLARITY_ACTIVE_HIGH +#define SL_SIMPLE_LED_LED0_POLARITY SL_SIMPLE_LED_POLARITY_ACTIVE_HIGH +// end led configuration + +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> + +// SL_SIMPLE_LED_LED0 +// $[GPIO_SL_SIMPLE_LED_LED0] +#define SL_SIMPLE_LED_LED0_PORT gpioPortB +#define SL_SIMPLE_LED_LED0_PIN 2 + +// [GPIO_SL_SIMPLE_LED_LED0]$ + +// <<< sl:end pin_tool >>> + +#endif // SL_SIMPLE_LED_LED0_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_sleeptimer_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_sleeptimer_config.h new file mode 100644 index 00000000000000..846d37d60828b7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_sleeptimer_config.h @@ -0,0 +1,72 @@ +/***************************************************************************//** + * @file + * @brief Sleep Timer configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_SLEEPTIMER_CONFIG_H +#define SL_SLEEPTIMER_CONFIG_H + +#define SL_SLEEPTIMER_PERIPHERAL_DEFAULT 0 +#define SL_SLEEPTIMER_PERIPHERAL_RTCC 1 +#define SL_SLEEPTIMER_PERIPHERAL_PRORTC 2 +#define SL_SLEEPTIMER_PERIPHERAL_RTC 3 +#define SL_SLEEPTIMER_PERIPHERAL_SYSRTC 4 +#define SL_SLEEPTIMER_PERIPHERAL_BURTC 5 + +// Timer Peripheral Used by Sleeptimer +// Default (auto select) +// RTCC +// Radio internal RTC (PRORTC) +// RTC +// SYSRTC +// Back-Up RTC (BURTC) +// Selection of the Timer Peripheral Used by the Sleeptimer +#define SL_SLEEPTIMER_PERIPHERAL SL_SLEEPTIMER_PERIPHERAL_DEFAULT + +// Enable wallclock functionality +// Enable or disable wallclock functionalities (get_time, get_date, etc). +// Default: 0 +#define SL_SLEEPTIMER_WALLCLOCK_CONFIG 0 + +// Timer frequency divider +// Default: 1 +#define SL_SLEEPTIMER_FREQ_DIVIDER 1 + +// If Radio internal RTC (PRORTC) HAL is used, determines if it owns the IRQ handler. Enable, if no wireless stack is used. +// Default: 0 +#define SL_SLEEPTIMER_PRORTC_HAL_OWNS_IRQ_HANDLER 0 + +// Enable DEBUGRUN functionality on hardware RTC. +// Default: 0 +#define SL_SLEEPTIMER_DEBUGRUN 0 + +#endif /* SLEEPTIMER_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_token_manager_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_token_manager_config.h new file mode 100644 index 00000000000000..d99e78e083594e --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_token_manager_config.h @@ -0,0 +1,54 @@ +/***************************************************************************//** + * @file + * @brief Token Manager Configurations + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_TOKEN_MANAGER_CONFIG_H +#define SL_TOKEN_MANAGER_CONFIG_H + +// TOKEN MANAGER Configurations + +// Enable Custom Tokens +// Default: 0 +#define SL_TOKEN_MANAGER_CUSTOM_TOKENS_PRESENT 0 + +// File containing custom tokens +// Default: "sl_custom_token_header.h" +// Header file containing custom tokens located at project_root/config +#define SL_TOKEN_MANAGER_CUSTOM_TOKEN_HEADER "sl_custom_token_header.h" + +// + +// Enable Custom Manufacturing Tokens +// Default: 0 +#define SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKENS_PRESENT 0 + +// File containing custom manufacturing tokens +// Default: "sl_custom_manufacturing_token_header.h" +// Header file containing custom tokens located at project_root/config +#define SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKEN_HEADER "sl_custom_manufacturing_token_header.h" + +// +// + +#if (SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKENS_PRESENT) +#define APPLICATION_MFG_TOKEN_HEADER SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKEN_HEADER +#endif // SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKENS_PRESENT + +#endif // SL_TOKEN_MANAGER_CONFIG_H + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_zigbee_binding_table_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_zigbee_binding_table_config.h new file mode 100644 index 00000000000000..ef4b92fbc30681 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_zigbee_binding_table_config.h @@ -0,0 +1,28 @@ +/***************************************************************************//** + * @brief Zigbee Binding Table component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Binding Table configuration + +// Binding Table Size <1-127> +// Default: 3 +// The number of entries that the binding table can hold. +#define EMBER_BINDING_TABLE_SIZE 32 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_zigbee_debug_print_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_zigbee_debug_print_config.h new file mode 100644 index 00000000000000..9c901f40481767 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_zigbee_debug_print_config.h @@ -0,0 +1,74 @@ +/***************************************************************************//** + * @brief ZigBee Debug Print component configuration header. + * + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// ZigBee Debug Print configuration + +// Stack group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "stack" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_STACK_GROUP_ENABLED (1) + +// Stack group runtime default +// Default: 1 +// If this option is enabled, prints belonging to the "stack" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_STACK_GROUP_RUNTIME_DEFAULT (1) + +// Core group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "core" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_CORE_GROUP_ENABLED (1) + +// Core group runtime default +// Default: 1 +// If this option is enabled, prints belonging to the "core" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_CORE_GROUP_RUNTIME_DEFAULT (1) + +// App group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "app" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_APP_GROUP_ENABLED (1) + +// App group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "app" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_APP_GROUP_RUNTIME_DEFAULT (1) + +// ZCL group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "zcl" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_ZCL_GROUP_ENABLED (1) + +// ZCL group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "zcl" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_ZCL_GROUP_RUNTIME_DEFAULT (1) + +// Legacy App Framework Debug group enabled +// Default: 0 +// If both this option and ZIGBEE_DEBUG_ZCL_GROUP_ENABLED are enabled, prints belonging to the "legacy app framework debug" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_PRINTS_ZCL_LEGACY_AF_DEBUG_ENABLED (0) + +// Legacy App Framework Debug runtime default +// Default: 0 +// If both this option and ZIGBEE_DEBUG_ZCL_GROUP_ENABLED are enabled, prints belonging to the "legacy app framework debug" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_PRINTS_ZCL_LEGACY_AF_DEBUG_RUNTIME_DEFAULT (0) + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_zigbee_green_power_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_zigbee_green_power_config.h new file mode 100644 index 00000000000000..75a81eec322a24 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_zigbee_green_power_config.h @@ -0,0 +1,63 @@ +/***************************************************************************//** + * @brief Zigbee Green Power component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Green Power Library configuration + +// Green Power Proxy Table Size <1-126> +// Default: 5 +// The maximum number of Green Power proxy table entries supported by the stack. +#define EMBER_GP_PROXY_TABLE_SIZE 5 + +// Green Power Proxy Table Token Size <1-126> +// Default: 5 +// The maximum number of pairings stored in proxy table non-volatile memory,between 0 and EMBER_GP_PROXY_TABLE_SIZE. +#define EMBER_GP_PROXY_TABLE_TOKEN_SIZE 5 + +// Green Power Sink Table Size <0-126> +// Default: 0 +// The maximum number of Green Power sink table entries supported by the stack. +#define EMBER_GP_SINK_TABLE_SIZE 0 + +// Green Power Sink Table Token Size <0-126> +// Default: 0 +// The maximum number of pairings stored in sink table non-volatile memory,between 0 and EMBER_GP_SINK_TABLE_SIZE. +#define EMBER_GP_SINK_TABLE_TOKEN_SIZE 0 + +// Green Power incoming FC (as part of proxy table) Token timeout <0-60> +// Default: 0 +// The timeout (seconds) to restore the GPD incoming security frame counter in the Flash (0 being never). +#define EMBER_GP_INCOMING_FC_TOKEN_TIMEOUT 7 + +// Green Power incoming FC (as part of proxy table) table token table size <0-126> +// Default: 0 +// The maximum table size to restore the GPD incoming security frame counter in the Flash (being either 0 or EMBER_GP_PROXY_TABLE_SIZE). +#define EMBER_GP_INCOMING_FC_TOKEN_TABLE_SIZE 0 + +// Green Power incoming FC (as part of sink table) token table token timeout <0-60> +// Default: 0 +// The timeout (seconds) to restore the GPD incoming security frame counter in the Flash (0 being never). +#define EMBER_GP_INCOMING_FC_IN_SINK_TOKEN_TIMEOUT 7 + +// Green Power incoming FC (as part of sink table)Token table size <0-126> +// Default: 0 +// The maximum table size to restore the GPD incoming security frame counter in the Flash (being either 0 or EMBER_GP_SINK_TABLE_SIZE). +#define EMBER_GP_INCOMING_FC_IN_SINK_TOKEN_TABLE_SIZE 0 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_zigbee_pro_stack_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_zigbee_pro_stack_config.h new file mode 100644 index 00000000000000..e035ce1f9c9388 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_zigbee_pro_stack_config.h @@ -0,0 +1,89 @@ +/***************************************************************************//** + * @brief ZigBee PRO Full Stack component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee PRO Stack Library configuration + +// Child Table Size <0-64> +// Default: 6 +// The maximum number of ZigBee PRO End Devices that can be supported by a single device. +#define EMBER_MAX_END_DEVICE_CHILDREN 32 + +// Packet Buffer Count <20-254> +// Default: 75 +// The maximum number of packet buffers supported by the system. This is limited by the amount of available RAM. +#define EMBER_PACKET_BUFFER_COUNT 75 + +// End Device keep alive support mode +// End Device keep alive support mode +// MAC Data Poll Keep Alive +// End Device Timeout Keep Alive +// Keep Alive Support All +// Default: EMBER_KEEP_ALIVE_SUPPORT_ALL +// End Device keep alive support mode on the coordinator/router could be set here. +#define EMBER_END_DEVICE_KEEP_ALIVE_SUPPORT_MODE EMBER_KEEP_ALIVE_SUPPORT_ALL + +// End Device Poll Timeout Value +// End Device Poll Timeout Value +// Seconds-10 +// Minutes-2 +// Minutes-4 +// Minutes-8 +// Minutes-16 +// Minutes-32 +// Minutes-64 +// Minutes-128 +// Minutes-256 +// Minutes-512 +// Minutes-1024 +// Minutes-2048 +// Minutes-4096 +// Minutes-8192 +// Minutes-16384 +// Default: MINUTES_256 +// The amount of time that must pass without hearing a MAC data poll from the device before the end device is removed from the child table. For a router device this applies to its children. For an end device, this is the amount of time before it automatically times itself out. +#define EMBER_END_DEVICE_POLL_TIMEOUT MINUTES_256 + +// Link Power Delta Request Interval <1-65535> +// Default: 300 +// The amount of time in seconds that pass between link power delta requests. +#define EMBER_LINK_POWER_DELTA_INTERVAL 300 + +// APS Unicast Message Queue Size <1-255> +// Default: 10 +// The maximum number of APS unicast messages that can be queued up by the stack. A message is considered queued when emberSendUnicast() is called and is de-queued when the emberMessageSentHandler() is called. +#define EMBER_APS_UNICAST_MESSAGE_COUNT 10 + +// Broadcast Table Size <15-254> +// Default: 15 +// The size of the broadcast table. +#define EMBER_BROADCAST_TABLE_SIZE 15 + +// Neighbor Table Size +// Neighbor Table Size +// <16=> 16 +// <26=> 26 +// Default: 16 +// The size of the neighbor table. +#define EMBER_NEIGHBOR_TABLE_SIZE 16 + +// Transient key timeout (in seconds) <0-65535> +// Default: 300 +// The amount of time a device will store a transient link key that can be used to join a network. +#define EMBER_TRANSIENT_KEY_TIMEOUT_S 300 +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_zigbee_security_link_keys_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_zigbee_security_link_keys_config.h new file mode 100644 index 00000000000000..9a0c84883944c6 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_zigbee_security_link_keys_config.h @@ -0,0 +1,33 @@ +/***************************************************************************//** + * @brief Zigbee Security Link Keys component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Security Link Keys Library configuration + +// Link Key Table Size <1-127> +// Default: 6 +// The maximum number of link key table entries supported by the stack. +#define EMBER_KEY_TABLE_SIZE 12 + +// Request Key Timeout <0-10> +// Default: 0 +// The length of time that a node will wait for a trust center to answer its Application Link Key request. +#define EMBER_REQUEST_KEY_TIMEOUT 0 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186c/config/sl_zigbee_source_route_config.h b/silabs_examples/credentials/device/brd4186c/config/sl_zigbee_source_route_config.h new file mode 100644 index 00000000000000..41b5e4bb2155ef --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/sl_zigbee_source_route_config.h @@ -0,0 +1,33 @@ +/***************************************************************************//** + * @brief Zigbee Source Route component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Source Route Library configuration + +// Source route table Size (SoC or NCP) <2-255> +// Default: 7 +// The size of the source route table for storing source routes on the SOC or NCP. +#define EMBER_SOURCE_ROUTE_TABLE_SIZE 7 + +// Max source route relay counts <11-40> +// Default: 11 +// Max source route hops accepted or/and inserted in the source route table/header. +#define EMBER_MAX_SOURCE_ROUTE_RELAY_COUNT 11 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186c/config/zigbee_sleep_config.h b/silabs_examples/credentials/device/brd4186c/config/zigbee_sleep_config.h new file mode 100644 index 00000000000000..fa4efd14070497 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/config/zigbee_sleep_config.h @@ -0,0 +1,42 @@ +/***************************************************************************//** + * @brief Zigbee Application Framework common component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Sleep configuration + +// Minimum Sleep Duration <5-1000> +// Default: 5 +// The minimum duration in milliseconds that the application will attempt to sleep for. If the sleep duration would be less than this amount, the application will not sleep. +#define SL_ZIGBEE_APP_FRAMEWORK_MINIMUM_SLEEP_DURATION_MS 5 + +// Sleep Backoff time <0-10000> +// Default: 0 +// This setting will keep a device from going back to sleep immediately upon waking up +#define SL_ZIGBEE_APP_FRAMEWORK_BACKOFF_SLEEP_MS 0 + +// Stay awake when NOT joined +// Default: TRUE +// This will force a device to stay awake even when not joined to the network. This is often used for debugging and is not recommended for production devices since it cause the device to consume battery power even when not joined to a ZigBee network. +#define SL_ZIGBEE_APP_FRAMEWORK_STAY_AWAKE_WHEN_NOT_JOINED 1 + +// Use button to force wakeup or allow sleep +// Default: FALSE +// This will setup the hardware buttons to wake-up or allow the device to go to sleep. Button 0 will force the device to wake up and stay awake. Button 1 will turn off this behavior to allow the device to sleep normally. Please note that in order for this option to be fully functional, button 0 and button 1 have to be configured to wake the device from sleep. +#define SL_ZIGBEE_APP_FRAMEWORK_USE_BUTTON_TO_STAY_AWAKE 0 +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4186c/device-creds.Makefile b/silabs_examples/credentials/device/brd4186c/device-creds.Makefile new file mode 100644 index 00000000000000..ea4140191048d6 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/device-creds.Makefile @@ -0,0 +1,190 @@ +#################################################################### +# User Makefile # +# This will not be overwritten. Edit as desired. # +#################################################################### +.SUFFIXES: # ignore builtin rules +.PHONY: all debug release clean + +# Default goal +all: debug + +#################################################################### +# Definitions # +#################################################################### + +# Values set by the initial generation +PROJECTNAME = device-creds +ARM_GCC_DIR_WIN = +ARM_GCC_DIR_OSX = +ARM_GCC_DIR_LINUX = + +# Pre-defined definitions in this file +ifeq ($(OS),Windows_NT) + ARM_GCC_DIR ?= $(ARM_GCC_DIR_WIN) +else + UNAME_S := $(shell uname -s) + ifeq ($(UNAME_S),Darwin) + ARM_GCC_DIR ?= $(ARM_GCC_DIR_OSX) + else + ARM_GCC_DIR ?= $(ARM_GCC_DIR_LINUX) + endif +endif + +# Command output is hidden by default, it can be enabled by +# setting VERBOSE=true on the commandline. +ifeq ($(VERBOSE),) + ECHO = @ +endif + +# Build Directories +BUILD_DIR = build +LST_DIR = lst + +ifneq ($(filter $(MAKECMDGOALS),release),) + OUTPUT_DIR = $(BUILD_DIR)/release +else + OUTPUT_DIR = $(BUILD_DIR)/debug +endif + +# Values that should be appended by the sub-makefiles +C_SOURCE_FILES = +CXX_SOURCE_FILES = +ASM_SOURCE_FILES = + +LIBS = + +C_DEFS = +ASM_DEFS = + +INCLUDES = + +C_FLAGS = +C_FLAGS_DEBUG = +C_FLAGS_RELEASE = +CXX_FLAGS = +CXX_FLAGS_DEBUG = +CXX_FLAGS_RELEASE = +ASM_FLAGS = +ASM_FLAGS_DEBUG = +ASM_FLAGS_RELEASE = +LD_FLAGS = + +OBJS = + +#################################################################### +# Definitions of toolchain. # +# You might need to do changes to match your system setup # +#################################################################### + +AR = "$(ARM_GCC_DIR)/bin/arm-none-eabi-gcc-ar" +CC = "$(ARM_GCC_DIR)/bin/arm-none-eabi-gcc" +CXX = "$(ARM_GCC_DIR)/bin/arm-none-eabi-g++" +OBJCOPY = "$(ARM_GCC_DIR)/bin/arm-none-eabi-objcopy" +LD = "$(ARM_GCC_DIR)/bin/arm-none-eabi-gcc" + +#################################################################### +# Include sub-makefiles # +# Define a makefile here to add files/settings to the build. # +#################################################################### +-include device-creds.project.mak + + +#################################################################### +# Rules # +#################################################################### + +# -MMD : Don't generate dependencies on system header files. +# -MP : Add phony targets, useful when a h-file is removed from a project. +# -MF : Specify a file to write the dependencies to. +DEPFLAGS = -MMD -MP -MF $(@:.o=.d) + +CSOURCES = $(notdir $(C_SOURCE_FILES)) +CXXSOURCES = $(notdir $(filter %.cpp, $(CXX_SOURCE_FILES))) +CCSOURCES = $(notdir $(filter %.cc, $(CXX_SOURCE_FILES))) +ASMSOURCES_s = $(notdir $(filter %.s, $(ASM_SOURCE_FILES))) +ASMSOURCES_S = $(notdir $(filter %.S, $(ASM_SOURCE_FILES))) + +COBJS = $(addprefix $(OUTPUT_DIR)/,$(CSOURCES:.c=.o)) +CXXOBJS = $(addprefix $(OUTPUT_DIR)/,$(CXXSOURCES:.cpp=.o)) +CCOBJS = $(addprefix $(OUTPUT_DIR)/,$(CCSOURCES:.cc=.o)) +ASMOBJS_s = $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_s:.s=.o)) +ASMOBJS_S = $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_S:.S=.o)) +OBJS += $(COBJS) $(CXXOBJS) $(CCOBJS) $(ASMOBJS_s) $(ASMOBJS_S) + +CDEPS += $(addprefix $(OUTPUT_DIR)/,$(CSOURCES:.c=.d)) +CXXDEPS += $(addprefix $(OUTPUT_DIR)/,$(CXXSOURCES:.cpp=.d)) +CXXDEPS += $(addprefix $(OUTPUT_DIR)/,$(CCSOURCES:.cc=.d)) +ASMDEPS_s += $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_s:.s=.d)) +ASMDEPS_S += $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_S:.S=.d)) + +C_PATHS = $(subst \,/,$(sort $(dir $(C_SOURCE_FILES)))) +CXX_PATHS = $(subst \,/,$(sort $(dir $(CXX_SOURCE_FILES)))) +ASM_PATHS = $(subst \,/,$(sort $(dir $(ASM_SOURCE_FILES)))) + +vpath %.c $(C_PATHS) +vpath %.cpp $(CXX_PATHS) +vpath %.cc $(CXX_PATHS) +vpath %.s $(ASM_PATHS) +vpath %.S $(ASM_PATHS) + +override CFLAGS = $(C_FLAGS) $(C_DEFS) $(INCLUDES) $(DEPFLAGS) +override CXXFLAGS = $(CXX_FLAGS) $(C_DEFS) $(INCLUDES) $(DEPFLAGS) +override ASMFLAGS = $(ASM_FLAGS) $(ASM_DEFS) $(INCLUDES) $(DEPFLAGS) + +# Rule Definitions +debug: C_FLAGS += $(C_FLAGS_DEBUG) +debug: CXX_FLAGS += $(CXX_FLAGS_DEBUG) +debug: ASM_FLAGS += $(ASM_FLAGS_DEBUG) +debug: $(OUTPUT_DIR)/$(PROJECTNAME).out + +release: C_FLAGS += $(C_FLAGS_RELEASE) +release: CXX_FLAGS += $(CXX_FLAGS_RELEASE) +release: ASM_FLAGS += $(ASM_FLAGS_RELEASE) +release: $(OUTPUT_DIR)/$(PROJECTNAME).out + +# include auto-generated dependency files (explicit rules) +ifneq (clean,$(findstring clean, $(MAKECMDGOALS))) +-include $(CDEPS) +-include $(CXXDEPS) +-include $(ASMDEPS_s) +-include $(ASMDEPS_S) +endif + +$(OUTPUT_DIR)/$(PROJECTNAME).out: $(OBJS) $(LIB_FILES) + @echo 'Linking $(OUTPUT_DIR)/$(PROJECTNAME).out' + @echo $(OBJS) > $(OUTPUT_DIR)/linker_objs + $(ECHO)$(LD) $(LD_FLAGS) @$(OUTPUT_DIR)/linker_objs $(LIBS) -o $(OUTPUT_DIR)/$(PROJECTNAME).out + $(ECHO)$(OBJCOPY) $(OUTPUT_DIR)/$(PROJECTNAME).out -O binary $(OUTPUT_DIR)/$(PROJECTNAME).bin + $(ECHO)$(OBJCOPY) $(OUTPUT_DIR)/$(PROJECTNAME).out -O ihex $(OUTPUT_DIR)/$(PROJECTNAME).hex + $(ECHO)$(OBJCOPY) $(OUTPUT_DIR)/$(PROJECTNAME).out -O srec $(OUTPUT_DIR)/$(PROJECTNAME).s37 + @echo 'Done.' + +$(OBJS): + +$(OUTPUT_DIR)/%.o: %.c + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.cpp + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CXX) $(CXXFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.cc + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CXX) $(CXXFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.s + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.S + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $< + +clean: + $(RM) -rf $(BUILD_DIR) diff --git a/silabs_examples/credentials/device/brd4186c/device-creds.emProject b/silabs_examples/credentials/device/brd4186c/device-creds.emProject new file mode 100644 index 00000000000000..196c55f7972fdb --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/device-creds.emProject @@ -0,0 +1,1181 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/silabs_examples/credentials/device/brd4186c/device-creds.ewd b/silabs_examples/credentials/device/brd4186c/device-creds.ewd new file mode 100644 index 00000000000000..f7c1d1f618342b --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/device-creds.ewd @@ -0,0 +1,1476 @@ + + + 3 + + Default + + ARM + + 1 + + C-SPY + 2 + + 30 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 5 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/silabs_examples/credentials/device/brd4186c/device-creds.ewp b/silabs_examples/credentials/device/brd4186c/device-creds.ewp new file mode 100644 index 00000000000000..1544e05684ef9c --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/device-creds.ewp @@ -0,0 +1,1249 @@ + + + + 3 + + Default + + ARM + + 1 + + General + 3 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 21 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + $PROJ_DIR$\device-creds.ipcf + + \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4186c/device-creds.eww b/silabs_examples/credentials/device/brd4186c/device-creds.eww new file mode 100644 index 00000000000000..57aaa4ba1bfcbb --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/device-creds.eww @@ -0,0 +1,8 @@ + + + + + $WS_DIR$\device-creds.ewp + + + diff --git a/silabs_examples/credentials/device/brd4186c/device-creds.ipcf b/silabs_examples/credentials/device/brd4186c/device-creds.ipcf new file mode 100644 index 00000000000000..1e16538d834a65 --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/device-creds.ipcf @@ -0,0 +1,1147 @@ + + + + + config\sl_memory_config.h + config\psa_crypto_config.h + config\sl_mx25_flash_shutdown_eusart_config.h + config\sl_device_init_dcdc_config.h + config\sl_legacy_hal_wdog_config.h + config\sl_hfxo_manager_config.h + config\sl_zigbee_debug_print_config.h + config\sl_sleeptimer_config.h + config\sl_power_manager_config.h + config\sl_device_init_lfxo_config.h + config\sl_rail_util_pti_config.h + config\nvm3_default_config.h + config\zigbee_sleep_config.h + config\app_properties_config.h + config\sl_device_init_emu_config.h + config\emlib_core_debug_config.h + config\legacy_common_ash_config.h + config\SEGGER_RTT_Conf.h + config\sl_zigbee_security_link_keys_config.h + config\sl_zigbee_binding_table_config.h + config\sl_board_control_config.h + config\sl_debug_swo_config.h + config\sl_zigbee_pro_stack_config.h + config\sl_token_manager_config.h + config\sl_custom_token_header.h + config\sl_custom_manufacturing_token_header.h + config\sl_zigbee_green_power_config.h + config\sl_simple_led_led0_config.h + config\sl_iostream_usart_vcom_config.h + config\sl_zigbee_source_route_config.h + config\legacy_hal_config.h + config\sl_device_init_hfxo_config.h + config\sl_rail_util_pa_config.h + config\btl_interface_cfg.h + config\btl_interface_cfg_s2c4.h + config\mbedtls_config.h + config\sl_iostream_vuart_config.h + + + autogen\sl_board_default_init.c + autogen\sl_application_type.h + autogen\RTE_Components.h + autogen\sl_component_catalog.h + autogen\sl_device_init_clocks.c + autogen\sl_event_handler.h + autogen\sl_event_handler.c + autogen\sl_iostream_handles.h + autogen\sl_iostream_handles.c + autogen\sl_iostream_init_instances.h + autogen\sl_iostream_init_usart_instances.c + autogen\sl_iostream_init_usart_instances.h + autogen\sl_legacy_bootloader_device_info.h + autogen\mbedtls_config_autogen.h + autogen\sl_mbedtls_config_transform_autogen.h + autogen\sl_power_manager_handler.c + autogen\psa_crypto_config_autogen.h + autogen\sl_rail_util_ieee802154_phy_select.c + autogen\sl_rail_util_ieee802154_stack_event.c + autogen\sl_simple_led_instances.c + autogen\sl_simple_led_instances.h + autogen\linkerfile_base.icf + autogen\zigbee_stack_callback_dispatcher.h + autogen\zigbee_stack_callback_dispatcher.c + autogen\zigbee_common_callback_dispatcher.h + autogen\zigbee_common_callback_dispatcher.c + autogen\zigbee_ncp_callback_dispatcher.h + autogen\zigbee_ncp_callback_dispatcher.c + autogen\zigbee_af_token_headers.h + autogen\.crc_config.crc + + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Source\system_efr32mg24.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Source\startup_efr32mg24.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24b210f1536im48.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_acmp.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_aes.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_amuxcp.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_buram.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_burtc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_cmu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_dcdc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_devinfo.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_dma_descriptor.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_dpll.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_emu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_eusart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_fsrco.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_gpcrc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_gpio.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_gpio_port.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_hfrco.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_hfxo.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_i2c.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_iadc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_icache.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_keyscan.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_ldma.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_ldmaxbar.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_ldmaxbar_defines.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_letimer.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_lfrco.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_lfxo.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_mailbox.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_mpahbram.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_msc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_mvp.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_pcnt.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_prs.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_prs_signals.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_scratchpad.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_semailbox.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_smu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_syscfg.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_sysrtc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_timer.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_ulfrco.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_usart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_vdac.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_wdog.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\em_device.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\system_efr32mg24.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_atomic.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_endianness.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_enum.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_assert.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_slist.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_status.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\src\sl_assert.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\src\sl_slist.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\toolchain\src\sl_memory.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\toolchain\inc\sl_memory_region.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\toolchain\inc\sl_memory.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\app_properties\app_properties.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface_storage.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\application_properties.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_errorcode.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface_parser.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface_storage.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_reset_info.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\cmsis_compiler.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\cmsis_version.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\tz_context.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\cmsis_iccarm.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\core_cm33.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\mpu_armv8.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\debug\src\sl_debug_swo.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\debug\inc\sl_debug_swo.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\leddrv\src\sl_led.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\leddrv\src\sl_simple_led.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\leddrv\inc\sl_led.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\leddrv\inc\sl_simple_led.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_clocks.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_dcdc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_emu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_hfxo.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_lfxo.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_nvic.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_dcdc_s2.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_emu_s2.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_hfxo_s2.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_lfxo_s2.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_nvic.c + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\hfxo_manager\src\sl_hfxo_manager.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\hfxo_manager\src\sl_hfxo_manager_hal_s2.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\hfxo_manager\src\sli_hfxo_manager_internal.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\hfxo_manager\inc\sl_hfxo_manager.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\hfxo_manager\inc\sli_hfxo_manager.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_debug.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_swo_itm_8.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_retarget_stdio.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_uart.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_usart.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_vuart.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sli_iostream_swo_itm_8.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_swo_itm_8.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_uart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sli_iostream_uart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_usart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_vuart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_swo.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\bootloader-interface.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\bootloader-interface-app.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\bootloader-interface-standalone.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\bootloader-common.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\crc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\base-replacement.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\diagnostic.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\ember-phy.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\faults.s + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\random.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\token_legacy.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\serial\serial.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\cortexm3\diagnostic.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\hal\hal.h + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-interface.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-interface-app.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-interface-standalone.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-eeprom.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\asm.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\button.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\crc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\efm32_micro.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\em2xx-reset-defs.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\emlib_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\hal.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\interrupts-efm32.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\led.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\micro-common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\micro-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\micro.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\platform-header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\random.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\reset-def.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\serial.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\token-manufacturing-series-1.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\token-manufacturing-series-2.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\token-manufacturing.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\sl_legacy_hal_integration_hooks.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_common_ash\src\ash-common.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_common_ash\inc\ash-common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_common_ash\inc\ash-protocol.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal_wdog\src\sl_legacy_hal_wdog.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal_wdog\inc\sl_legacy_hal_wdog.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_ncp_ash\src\ash-ncp.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_ncp_ash\inc\ash-ncp.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_printf\src\sl_legacy_printf.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_printf\inc\sl_legacy_printf.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\src\sl_power_manager.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\src\sl_power_manager_debug.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\src\sl_power_manager_hal_s2.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\src\sli_power_manager_private.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\inc\sl_power_manager.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\inc\sl_power_manager_debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\inc\sli_power_manager.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\system\src\sl_system_init.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\system\src\sl_system_process_action.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\system\inc\sl_system_init.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\system\inc\sl_system_process_action.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\src\sl_sleeptimer.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\src\sl_sleeptimer_hal_sysrtc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\src\sl_sleeptimer_hal_burtc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\src\sli_sleeptimer_hal.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\inc\sl_sleeptimer.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\inc\sli_sleeptimer.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\src\sl_token_def.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\src\sl_token_manager.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\src\sl_token_manufacturing.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_api.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manager.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manager_af_token_header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manufacturing.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manufacturing_api.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manufacturing_series_1.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manufacturing_series_2.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\udelay\src\sl_udelay.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\udelay\src\sl_udelay_armv6m_iar.s + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\udelay\inc\sl_udelay.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\common\inc\ecode.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\src\nvm3_default_common_linker.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\src\nvm3_hal_flash.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\src\nvm3_lock.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3_default.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3_hal.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3_hal_flash.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3_lock.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\lib\libnvm3_CM33_iar.a + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_burtc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_cmu.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_core.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_emu.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_eusart.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_gpio.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_msc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_prs.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_rmu.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_se.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_system.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_usart.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_wdog.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_burtc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_chip.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_cmu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_cmu_compat.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_assert.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_bus.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_ramfunc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_version.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_core.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_emu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_eusart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_eusart_compat.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_gpio.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_msc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_msc_compat.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_prs.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_rmu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_se.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_syscfg.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_system.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_usart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_wdog.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\peripheral\src\peripheral_sysrtc.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\peripheral\inc\peripheral_sysrtc.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail_mfm.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail_assert_error_codes.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail_types.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail_features.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\protocol\ble\rail_ble.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\protocol\ieee802154\rail_ieee802154.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\protocol\zwave\rail_zwave.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\chip\efr32\efr32xg2x\rail_chip_specific.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\autogen\librail_release\librail_efr32xg24_iar_release.a + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_ieee802154\sl_rail_util_ieee802154_stack_event.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_ieee802154\sl_rail_util_ieee802154_phy_select.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\efr32xg24\sl_rail_util_pa_curves_10dbm.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\efr32xg24\sl_rail_util_pa_curves_20dbm.h + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_conversions_efr32.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_curves_efr32.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_conversions_efr32.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_curve_types_efr32.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_curves_efr32.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_pti\sl_rail_util_pti.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_pti\sl_rail_util_pti.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_ant_div\sl_rail_util_ant_div.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_ant_div\sl_rail_util_ant_div.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\coexistence\protocol\ieee802154_uc\coexistence-802154.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\coexistence\protocol\ieee802154_uc\coexistence-802154.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\coexistence\common\coexistence.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\rail_mux\sl_rail_mux_rename.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\rail_mux\sl_rail_mux.h + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\indirect-queue.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\lower-mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\lower-mac-debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-child.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-command.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-flat-header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-packet-header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-phy.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\multi-mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-multi-network.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\scan.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\upper-mac.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\board\src\sl_board_init.c + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\board\src\sl_board_control_gpio.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\board\inc\sl_board_control.h + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\board\inc\sl_board_init.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\driver\configuration_over_swo\src\sl_cos.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\driver\configuration_over_swo\inc\sl_cos.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\driver\mx25_flash_shutdown\src\sl_mx25_flash_shutdown_eusart\sl_mx25_flash_shutdown.c + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\driver\mx25_flash_shutdown\inc\sl_mx25_flash_shutdown_eusart\sl_mx25_flash_shutdown.h + + + + + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\aes.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\padlock.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\asn1parse.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\asn1write.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\base64.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\cipher_wrap.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\cipher_wrap.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecp.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecp_curves.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecdh.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecdsa.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecp_internal_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\md.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\md_wrap.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\bignum.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\bn_mul.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pem.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pk.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pkparse.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pkwrite.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pk_wrap.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\entropy.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\entropy_poll.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ctr_drbg.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\hmac_drbg.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\entropy_poll.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\sha1.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\sha256.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\sha512.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\constant_time.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\threading.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\platform.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\platform_util.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\check_crypto_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\common.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\constant_time_internal.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\constant_time_invasive.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecdh_misc.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecp_invasive.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\mps_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\mps_error.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\mps_reader.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\mps_trace.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pk_wrap.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\rsa_alt_helpers.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ssl_debug_helpers_generated.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ssl_misc.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ssl_tls13_keys.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\oid.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509_create.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509_crl.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509_crt.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509_csr.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509write_crt.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509write_csr.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\des.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_client.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_aead.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_driver_wrappers.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_slot_management.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_storage.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_ecp.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_hash.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_mac.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_rsa.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_se.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_aead.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_cipher.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_core.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_driver_wrappers.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_ecp.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_hash.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_invasive.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_its.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_random_impl.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_rsa.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_se.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_slot_management.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_storage.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\aes.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\asn1.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\asn1write.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\base64.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\camellia.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\cipher.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ecp.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ecdh.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ecdsa.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\md.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\md5.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ripemd160.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\sha1.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\sha256.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\sha512.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\bignum.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\pem.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\des.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\entropy.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ctr_drbg.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\hmac_drbg.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\aria.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\build_info.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ccm.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\chacha20.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\chachapoly.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\check_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\cmac.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\compat-2.x.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\config_psa.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\constant_time.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\dhm.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ecjpake.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\error.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\gcm.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\hkdf.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\mbedtls_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\memory_buffer_alloc.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\net_sockets.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\nist_kw.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\oid.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\pk.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\pkcs12.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\pkcs5.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\platform.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\platform_time.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\platform_util.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\poly1305.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\private_access.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\psa_util.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\rsa.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl_cache.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl_ciphersuites.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl_cookie.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl_ticket.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\threading.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\timing.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\version.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\x509.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\x509_crl.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\x509_crt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\x509_csr.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_builtin_composites.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_builtin_primitives.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_compat.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_driver_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_driver_contexts_composites.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_driver_contexts_primitives.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_extra.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_platform.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_se_driver.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_sizes.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_struct.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_types.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_values.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\config\config-device-acceleration.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\config\config-sl-crypto-all-acceleration.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\sl_entropy_hardware.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\sl_mbedtls.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\se_aes.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\mbedtls_ecdsa_ecdh.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\mbedtls_sha.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\aes_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\ccm_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\cmac_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\se_management.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\sha1_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\sha256_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\sha512_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\sl_mbedtls.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\threading_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\gcm_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\ecjpake_alt.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_psa_trng.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_psa_driver_init.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_psa_driver_common.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_version_dependencies.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_driver_builtin_keys.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_driver_key_management.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_driver_key_derivation.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_driver_aead.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_driver_mac.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_driver_signature.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_driver_cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_transparent_driver_cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_transparent_driver_hash.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_transparent_driver_aead.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_transparent_driver_mac.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_transparent_key_derivation.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_opaque_driver_mac.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_opaque_key_derivation.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_opaque_driver_cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_opaque_driver_aead.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sl_psa_its_nvm3.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\public\sl_psa_values.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\psa\internal_trusted_storage.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\psa\error.h + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_psa_driver_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_version_dependencies.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_driver_aead.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_driver_cipher.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_driver_key_derivation.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_driver_key_management.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_driver_mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_opaque_functions.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_opaque_types.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_transparent_functions.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_transparent_types.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_util.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_entropy.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_hash.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_key_derivation.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_key_handling.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_signature.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_attestation.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sli_se_manager_osal.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sli_se_manager_osal_baremetal.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_defines.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_types.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_util.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_internal_keys.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sli_se_manager_internal.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_check_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_cipher.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_entropy.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_hash.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_key_derivation.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_key_handling.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_signature.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_attestation.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\printf\src\iostream_printf.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\printf\inc\iostream_printf.h + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\printf\printf.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\printf\printf.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\segger\systemview\SEGGER\SEGGER_RTT.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\segger\systemview\SEGGER\SEGGER.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\segger\systemview\SEGGER\SEGGER_RTT.h + + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\memory_manager\sl_malloc.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\memory_manager\sl_malloc.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\buffer_manager\legacy-packet-buffer.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\buffer_manager\buffer-queue.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\buffer_manager\buffer-management.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\event_queue\event-queue.h + + + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\aes-ecb.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\ccm-star.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\zigbee_debug_channel.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\zigbee-debug-extended.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\zigbee-event-logger-stub-gen.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\strong-random-api.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\platform\micro\aes.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\security.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\binding-table.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ccm-star.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\gp-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\source-route.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\zll-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-types-internal.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\error-def.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\error.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\child.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-alternate-mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-duty-cycle.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-static-struct.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\message.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\multi-network.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\multi-phy.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\network-formation.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\stack-info.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\trust-center.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\zigbee-device-stack.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\raw-message.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\aes-mmo.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\byte-utilities.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-random-api.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\library.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\mac-layer.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\bootload.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\cbke-crypto-engine.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\zigbee-event-logger-gen.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\mfglib.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\zll-api.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\gp\gp-token-config.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\gp\gp-proxy-table.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\gp\gp-sink-table.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\ember-configuration.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\config.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\token-stack.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\token-phy.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\ember-configuration-defaults.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-163k1-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-283k1-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-dsa-verify-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-dsa-sign-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-dsa-verify-283k1-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\install-code-stub.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\ember-multi-network-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\multi-pan-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\multi-pan-common.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\ember-multi-network.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\multi-pan-token-config.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\multi-pan.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\zll\zll-stubs.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\zll\zll-token-config.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\zigbee\source-route-table-update.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\mac\multi-mac.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_common.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_stack_cb.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_sleep.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_event.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_callback.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_ncp_framework_cb.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\plugin\debug-print\sl_zigbee_debug_print.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\plugin\debug-print\sl_zigbee_debug_print.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\util\af-ncp-token.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\security\security-address-cache.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\security\security.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\secure-ezsp-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\ezsp-protocol.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\secure-ezsp-protocol.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\secure-ezsp-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\ezsp-enum.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\ezsp-frame-utilities.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-binding-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-binding.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-green-power-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\em260-common.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\serial-interface-uart.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\ncp-stack-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-secure-ezsp-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-context.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\serial-interface.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\em260-callbacks.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-cbke.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-mfglib.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-messaging-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-networking-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-security-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-trust-center-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-zll.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-security.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-zigbee-pro.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\xncp\xncp.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\xncp\xncp_cb.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\xncp\xncp-token.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\xncp\xncp-sample-custom-ezsp-protocol.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\ncp\plugin\xncp\xncp.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\binding-table-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\binding-table-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\ncp-binding-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\ncp-binding-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\debug-basic-library-cortexm3-iar-efr32mg24-rail\debug-basic-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\debug-extended-library-cortexm3-iar-efr32mg24-rail\debug-extended-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\end-device-bind-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\end-device-bind-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\gp-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\gp-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\ncp-gp-library-cortexm3-iar-efr32mg24-rail\ncp-gp-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\em260-uart-util-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\em260-uart-util-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\packet-validate-library-cortexm3-iar-efr32mg24-rail\packet-validate-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\zigbee-pro-stack-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\zigbee-pro-stack.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\ncp-pro-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\ncp-pro-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\zigbee-r22-support-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\zigbee-r22-support-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\security-library-link-keys-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\security-library-link-keys.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\source-route-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\source-route-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\ncp-source-route-library-cortexm3-iar-efr32mg24-rail\ncp-source-route-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\em260-xncp-library-cortexm3-iar-efr32mg24-rail\em260-xncp-library.a + + + + + + ..\main.c + ..\device_creds.c + ..\device_cert.c + ..\..\common\creds.h + ..\..\common\creds.c + ..\README.md + + + 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 + + diff --git a/silabs_examples/credentials/device/brd4186c/device-creds.project.mak b/silabs_examples/credentials/device/brd4186c/device-creds.project.mak new file mode 100644 index 00000000000000..1fb1595d1b255f --- /dev/null +++ b/silabs_examples/credentials/device/brd4186c/device-creds.project.mak @@ -0,0 +1,1798 @@ +#################################################################### +# Automatically-generated file. Do not edit! # +# Makefile Version 10 # +#################################################################### + +UNAME:=$(shell uname -s | sed -e 's/^\(CYGWIN\).*/\1/' | sed -e 's/^\(MINGW\).*/\1/') +ifeq ($(UNAME),MINGW) +# Translate "C:/super" into "/C/super" for MinGW make. +SDK_PATH := /$(shell echo $(BASE_SDK_PATH) | sed s/://) +endif +SDK_PATH ?= $(BASE_SDK_PATH) +COPIED_SDK_PATH = ../../common/gsdk + +# This uses the explicit build rules below +PROJECT_SOURCE_FILES = + +C_SOURCE_FILES += $(filter %.c, $(PROJECT_SOURCE_FILES)) +CXX_SOURCE_FILES += $(filter %.cpp, $(PROJECT_SOURCE_FILES)) +CXX_SOURCE_FILES += $(filter %.cc, $(PROJECT_SOURCE_FILES)) +ASM_SOURCE_FILES += $(filter %.s, $(PROJECT_SOURCE_FILES)) +ASM_SOURCE_FILES += $(filter %.S, $(PROJECT_SOURCE_FILES)) +LIB_FILES += $(filter %.a, $(PROJECT_SOURCE_FILES)) + +C_DEFS += \ + '-DMATTER_COMMON_NAME="Matter Dev DAC 0xFFF1/0x8005"' \ + '-DMATTER_PRODUCT_ID=0x8005' \ + '-DMATTER_VENDOR_ID=0xFFF1' \ + '-DMATTER_X509_EXTENSIONS=1' \ + '-DPSA_CRYPTO_PRINT=1' \ + '-DPSA_CRYPTO_PRINT_CERT=1' \ + '-DRESERVED_AVAILABLE_MEMORY=1000' \ + '-DEFR32MG24B210F1536IM48=1' \ + '-DSL_APP_PROPERTIES=1' \ + '-DSL_BOARD_NAME="BRD4186C"' \ + '-DSL_BOARD_REV="A01"' \ + '-DSL_COMPONENT_CATALOG_PRESENT=1' \ + '-DSEGGER_RTT_ALIGNMENT=1024' \ + '-DEMBER_AF_API_BOOTLOADER_INTERFACE=1' \ + '-DCORTEXM3=1' \ + '-DCORTEXM3_EFM32_MICRO=1' \ + '-DCORTEXM3_EFR32=1' \ + '-DPHY_RAIL=1' \ + '-DPLATFORM_HEADER="platform-header.h"' \ + '-DSL_LEGACY_HAL_ENABLE_WATCHDOG=1' \ + '-DMBEDTLS_CONFIG_FILE=' \ + '-DMBEDTLS_PSA_CRYPTO_CONFIG_FILE=' \ + '-DSL_RAIL_LIB_MULTIPROTOCOL_SUPPORT=0' \ + '-DSL_RAIL_UTIL_PA_CONFIG_HEADER=' \ + '-DRTT_USE_ASM=0' \ + '-DSEGGER_RTT_SECTION="SEGGER_RTT"' \ + '-DCUSTOM_TOKEN_HEADER="sl_token_manager_af_token_header.h"' \ + '-DUSE_NVM3=1' \ + '-DUC_BUILD=1' \ + '-DEMBER_AF_NCP=1' \ + '-DEMBER_SERIAL1_RTSCTS=1' \ + '-DEZSP_UART=1' \ + '-DNO_USB=1' \ + '-DEMBER_MULTI_NETWORK_STRIPPED=1' \ + '-DSL_ZIGBEE_PHY_SELECT_STACK_SUPPORT=1' + +ASM_DEFS += \ + '-DMATTER_COMMON_NAME="Matter Dev DAC 0xFFF1/0x8005"' \ + '-DMATTER_PRODUCT_ID=0x8005' \ + '-DMATTER_VENDOR_ID=0xFFF1' \ + '-DMATTER_X509_EXTENSIONS=1' \ + '-DPSA_CRYPTO_PRINT=1' \ + '-DPSA_CRYPTO_PRINT_CERT=1' \ + '-DRESERVED_AVAILABLE_MEMORY=1000' \ + '-DEFR32MG24B210F1536IM48=1' \ + '-DSL_APP_PROPERTIES=1' \ + '-DSL_BOARD_NAME="BRD4186C"' \ + '-DSL_BOARD_REV="A01"' \ + '-DSL_COMPONENT_CATALOG_PRESENT=1' \ + '-DSEGGER_RTT_ALIGNMENT=1024' \ + '-DEMBER_AF_API_BOOTLOADER_INTERFACE=1' \ + '-DCORTEXM3=1' \ + '-DCORTEXM3_EFM32_MICRO=1' \ + '-DCORTEXM3_EFR32=1' \ + '-DPHY_RAIL=1' \ + '-DPLATFORM_HEADER="platform-header.h"' \ + '-DSL_LEGACY_HAL_ENABLE_WATCHDOG=1' \ + '-DMBEDTLS_CONFIG_FILE=' \ + '-DMBEDTLS_PSA_CRYPTO_CONFIG_FILE=' \ + '-DSL_RAIL_LIB_MULTIPROTOCOL_SUPPORT=0' \ + '-DSL_RAIL_UTIL_PA_CONFIG_HEADER=' \ + '-DRTT_USE_ASM=0' \ + '-DSEGGER_RTT_SECTION="SEGGER_RTT"' \ + '-DCUSTOM_TOKEN_HEADER="sl_token_manager_af_token_header.h"' \ + '-DUSE_NVM3=1' \ + '-DUC_BUILD=1' \ + '-DEMBER_AF_NCP=1' \ + '-DEMBER_SERIAL1_RTSCTS=1' \ + '-DEZSP_UART=1' \ + '-DNO_USB=1' \ + '-DEMBER_MULTI_NETWORK_STRIPPED=1' \ + '-DSL_ZIGBEE_PHY_SELECT_STACK_SUPPORT=1' + +INCLUDES += \ + -Iconfig \ + -Iautogen \ + -I.. \ + -I../../common \ + -I$(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG24/Include \ + -I$(SDK_PATH)/platform/common/inc \ + -I$(SDK_PATH)/hardware/board/inc \ + -I$(SDK_PATH)/platform/bootloader \ + -I$(SDK_PATH)/platform/bootloader/api \ + -I$(SDK_PATH)/platform/CMSIS/Core/Include \ + -I$(SDK_PATH)/hardware/driver/configuration_over_swo/inc \ + -I$(SDK_PATH)/platform/driver/debug/inc \ + -I$(SDK_PATH)/platform/service/device_init/inc \ + -I$(SDK_PATH)/platform/emdrv/common/inc \ + -I$(SDK_PATH)/platform/emlib/inc \ + -I$(SDK_PATH)/platform/service/hfxo_manager/inc \ + -I$(SDK_PATH)/platform/service/iostream/inc \ + -I$(SDK_PATH)/platform/driver/leddrv/inc \ + -I$(SDK_PATH)/platform/service/legacy_hal/inc \ + -I$(SDK_PATH)/platform/service/legacy_common_ash/inc \ + -I$(SDK_PATH)/platform/service/legacy_hal_wdog/inc \ + -I$(SDK_PATH)/platform/service/legacy_ncp_ash/inc \ + -I$(SDK_PATH)/platform/service/legacy_printf/inc \ + -I$(COPIED_SDK_PATH)/util/third_party/crypto/mbedtls/include \ + -I$(SDK_PATH)/util/third_party/crypto/mbedtls/include \ + -I$(SDK_PATH)/util/third_party/crypto/mbedtls/library \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/config \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/inc \ + -I$(SDK_PATH)/hardware/driver/mx25_flash_shutdown/inc/sl_mx25_flash_shutdown_eusart \ + -I$(SDK_PATH)/platform/emdrv/nvm3/inc \ + -I$(SDK_PATH)/platform/peripheral/inc \ + -I$(SDK_PATH)/platform/service/power_manager/inc \ + -I$(SDK_PATH)/util/third_party/printf \ + -I$(SDK_PATH)/util/third_party/printf/inc \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/inc \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/inc/public \ + -I$(SDK_PATH)/platform/radio/rail_lib/common \ + -I$(SDK_PATH)/platform/radio/rail_lib/protocol/ble \ + -I$(SDK_PATH)/platform/radio/rail_lib/protocol/ieee802154 \ + -I$(SDK_PATH)/platform/radio/rail_lib/protocol/zwave \ + -I$(SDK_PATH)/platform/radio/rail_lib/chip/efr32/efr32xg2x \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_ieee802154 \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/efr32xg24 \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_pti \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/inc \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src \ + -I$(SDK_PATH)/util/third_party/segger/systemview/SEGGER \ + -I$(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager \ + -I$(SDK_PATH)/platform/common/toolchain/inc \ + -I$(SDK_PATH)/platform/service/system/inc \ + -I$(SDK_PATH)/platform/service/sleeptimer/inc \ + -I$(SDK_PATH)/platform/service/token_manager/inc \ + -I$(SDK_PATH)/platform/service/udelay/inc \ + -I$(SDK_PATH)/protocol/zigbee/stack/platform/micro \ + -I$(SDK_PATH)/protocol/zigbee/stack/include \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/common \ + -I$(SDK_PATH)/protocol/zigbee/app/em260 \ + -I$(SDK_PATH)/protocol/zigbee/stack/framework \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print \ + -I$(SDK_PATH)/protocol/zigbee/stack/gp \ + -I$(SDK_PATH)/protocol/zigbee/app/xncp \ + -I$(SDK_PATH)/protocol/zigbee/app/util/ezsp \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/util \ + -I$(SDK_PATH)/protocol/zigbee/app/util/security \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin \ + -I$(SDK_PATH)/protocol/zigbee \ + -I$(SDK_PATH)/protocol/zigbee/stack \ + -I$(SDK_PATH)/protocol/zigbee/stack/zigbee \ + -I$(SDK_PATH)/platform/radio/mac/rail_mux \ + -I$(SDK_PATH)/platform/radio/mac \ + -I$(SDK_PATH)/util/silicon_labs/silabs_core \ + -I$(SDK_PATH)/protocol/zigbee/stack/core \ + -I$(SDK_PATH)/protocol/zigbee/stack/mac \ + -I$(SDK_PATH)/protocol/zigbee/app/ncp/plugin/xncp + +GROUP_START =-Wl,--start-group +GROUP_END =-Wl,--end-group + +PROJECT_LIBS = \ + -lgcc \ + -lc \ + -lm \ + -lnosys \ + $(SDK_PATH)/platform/emdrv/nvm3/lib/libnvm3_CM33_gcc.a \ + $(SDK_PATH)/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg24_gcc_release.a \ + $(SDK_PATH)/protocol/zigbee/build/binding-table-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/binding-table-library.a \ + $(SDK_PATH)/protocol/zigbee/build/ncp-binding-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/ncp-binding-library.a \ + $(SDK_PATH)/protocol/zigbee/build/debug-basic-library-cortexm3-gcc-efr32mg24-rail/debug-basic-library.a \ + $(SDK_PATH)/protocol/zigbee/build/debug-extended-library-cortexm3-gcc-efr32mg24-rail/debug-extended-library.a \ + $(SDK_PATH)/protocol/zigbee/build/end-device-bind-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/end-device-bind-library.a \ + $(SDK_PATH)/protocol/zigbee/build/gp-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/gp-library.a \ + $(SDK_PATH)/protocol/zigbee/build/ncp-gp-library-cortexm3-gcc-efr32mg24-rail/ncp-gp-library.a \ + $(SDK_PATH)/protocol/zigbee/build/em260-uart-util-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/em260-uart-util-library.a \ + $(SDK_PATH)/protocol/zigbee/build/packet-validate-library-cortexm3-gcc-efr32mg24-rail/packet-validate-library.a \ + $(SDK_PATH)/protocol/zigbee/build/zigbee-pro-stack-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/zigbee-pro-stack.a \ + $(SDK_PATH)/protocol/zigbee/build/ncp-pro-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/ncp-pro-library.a \ + $(SDK_PATH)/protocol/zigbee/build/zigbee-r22-support-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/zigbee-r22-support-library.a \ + $(SDK_PATH)/protocol/zigbee/build/security-library-link-keys-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/security-library-link-keys.a \ + $(SDK_PATH)/protocol/zigbee/build/source-route-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/source-route-library.a \ + $(SDK_PATH)/protocol/zigbee/build/ncp-source-route-library-cortexm3-gcc-efr32mg24-rail/ncp-source-route-library.a \ + $(SDK_PATH)/protocol/zigbee/build/em260-xncp-library-cortexm3-gcc-efr32mg24-rail/em260-xncp-library.a + +LIBS += $(GROUP_START) $(PROJECT_LIBS) $(GROUP_END) + +LIB_FILES += $(filter %.a, $(PROJECT_LIBS)) + +C_FLAGS += \ + -mcpu=cortex-m33 \ + -mthumb \ + -mfpu=fpv5-sp-d16 \ + -mfloat-abi=hard \ + -std=c99 \ + -Wall \ + -Wextra \ + -Os \ + -fdata-sections \ + -ffunction-sections \ + -fomit-frame-pointer \ + -imacros sl_gcc_preinclude.h \ + -mcmse \ + -fno-builtin-printf \ + -fno-builtin-sprintf \ + --specs=nano.specs \ + -Wno-unused-parameter \ + -Wno-missing-field-initializers \ + -Wno-missing-braces \ + -Wno-format \ + -g + +CXX_FLAGS += \ + -mcpu=cortex-m33 \ + -mthumb \ + -mfpu=fpv5-sp-d16 \ + -mfloat-abi=hard \ + -std=c++11 \ + -fno-rtti \ + -fno-exceptions \ + -Wall \ + -Wextra \ + -Os \ + -fdata-sections \ + -ffunction-sections \ + -fomit-frame-pointer \ + -imacros sl_gcc_preinclude.h \ + -mcmse \ + -fno-builtin-printf \ + -fno-builtin-sprintf \ + --specs=nano.specs \ + -Wno-unused-parameter \ + -Wno-missing-field-initializers \ + -Wno-missing-braces \ + -Wno-format \ + -g + +ASM_FLAGS += \ + -mcpu=cortex-m33 \ + -mthumb \ + -mfpu=fpv5-sp-d16 \ + -mfloat-abi=hard \ + -imacros sl_gcc_preinclude.h \ + -x assembler-with-cpp + +LD_FLAGS += \ + -mcpu=cortex-m33 \ + -mthumb \ + -mfpu=fpv5-sp-d16 \ + -mfloat-abi=hard \ + -T"autogen/linkerfile_base.ld" \ + --specs=nano.specs \ + -Xlinker -Map=$(OUTPUT_DIR)/$(PROJECTNAME).map \ + -Wl,--gc-sections + + +#################################################################### +# SDK Build Rules # +#################################################################### +$(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_control_gpio.o: $(SDK_PATH)/hardware/board/src/sl_board_control_gpio.c + @echo 'Building $(SDK_PATH)/hardware/board/src/sl_board_control_gpio.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/hardware/board/src/sl_board_control_gpio.c +CDEPS += $(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_control_gpio.d +OBJS += $(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_control_gpio.o + +$(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_init.o: $(SDK_PATH)/hardware/board/src/sl_board_init.c + @echo 'Building $(SDK_PATH)/hardware/board/src/sl_board_init.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/hardware/board/src/sl_board_init.c +CDEPS += $(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_init.d +OBJS += $(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_init.o + +$(OUTPUT_DIR)/sdk/hardware/driver/configuration_over_swo/src/sl_cos.o: $(SDK_PATH)/hardware/driver/configuration_over_swo/src/sl_cos.c + @echo 'Building $(SDK_PATH)/hardware/driver/configuration_over_swo/src/sl_cos.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/hardware/driver/configuration_over_swo/src/sl_cos.c +CDEPS += $(OUTPUT_DIR)/sdk/hardware/driver/configuration_over_swo/src/sl_cos.d +OBJS += $(OUTPUT_DIR)/sdk/hardware/driver/configuration_over_swo/src/sl_cos.o + +$(OUTPUT_DIR)/sdk/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_eusart/sl_mx25_flash_shutdown.o: $(SDK_PATH)/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_eusart/sl_mx25_flash_shutdown.c + @echo 'Building $(SDK_PATH)/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_eusart/sl_mx25_flash_shutdown.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_eusart/sl_mx25_flash_shutdown.c +CDEPS += $(OUTPUT_DIR)/sdk/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_eusart/sl_mx25_flash_shutdown.d +OBJS += $(OUTPUT_DIR)/sdk/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_eusart/sl_mx25_flash_shutdown.o + +$(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface.o: $(SDK_PATH)/platform/bootloader/api/btl_interface.c + @echo 'Building $(SDK_PATH)/platform/bootloader/api/btl_interface.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/bootloader/api/btl_interface.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface.d +OBJS += $(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface.o + +$(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface_storage.o: $(SDK_PATH)/platform/bootloader/api/btl_interface_storage.c + @echo 'Building $(SDK_PATH)/platform/bootloader/api/btl_interface_storage.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/bootloader/api/btl_interface_storage.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface_storage.d +OBJS += $(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface_storage.o + +$(OUTPUT_DIR)/sdk/platform/bootloader/app_properties/app_properties.o: $(SDK_PATH)/platform/bootloader/app_properties/app_properties.c + @echo 'Building $(SDK_PATH)/platform/bootloader/app_properties/app_properties.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/bootloader/app_properties/app_properties.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/bootloader/app_properties/app_properties.d +OBJS += $(OUTPUT_DIR)/sdk/platform/bootloader/app_properties/app_properties.o + +$(OUTPUT_DIR)/sdk/platform/common/src/sl_assert.o: $(SDK_PATH)/platform/common/src/sl_assert.c + @echo 'Building $(SDK_PATH)/platform/common/src/sl_assert.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/common/src/sl_assert.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_assert.d +OBJS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_assert.o + +$(OUTPUT_DIR)/sdk/platform/common/src/sl_slist.o: $(SDK_PATH)/platform/common/src/sl_slist.c + @echo 'Building $(SDK_PATH)/platform/common/src/sl_slist.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/common/src/sl_slist.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_slist.d +OBJS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_slist.o + +$(OUTPUT_DIR)/sdk/platform/common/toolchain/src/sl_memory.o: $(SDK_PATH)/platform/common/toolchain/src/sl_memory.c + @echo 'Building $(SDK_PATH)/platform/common/toolchain/src/sl_memory.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/common/toolchain/src/sl_memory.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/common/toolchain/src/sl_memory.d +OBJS += $(OUTPUT_DIR)/sdk/platform/common/toolchain/src/sl_memory.o + +$(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG24/Source/startup_efr32mg24.o: $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG24/Source/startup_efr32mg24.c + @echo 'Building $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG24/Source/startup_efr32mg24.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG24/Source/startup_efr32mg24.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG24/Source/startup_efr32mg24.d +OBJS += $(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG24/Source/startup_efr32mg24.o + +$(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG24/Source/system_efr32mg24.o: $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG24/Source/system_efr32mg24.c + @echo 'Building $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG24/Source/system_efr32mg24.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG24/Source/system_efr32mg24.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG24/Source/system_efr32mg24.d +OBJS += $(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG24/Source/system_efr32mg24.o + +$(OUTPUT_DIR)/sdk/platform/driver/debug/src/sl_debug_swo.o: $(SDK_PATH)/platform/driver/debug/src/sl_debug_swo.c + @echo 'Building $(SDK_PATH)/platform/driver/debug/src/sl_debug_swo.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/driver/debug/src/sl_debug_swo.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/driver/debug/src/sl_debug_swo.d +OBJS += $(OUTPUT_DIR)/sdk/platform/driver/debug/src/sl_debug_swo.o + +$(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_led.o: $(SDK_PATH)/platform/driver/leddrv/src/sl_led.c + @echo 'Building $(SDK_PATH)/platform/driver/leddrv/src/sl_led.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/driver/leddrv/src/sl_led.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_led.d +OBJS += $(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_led.o + +$(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_simple_led.o: $(SDK_PATH)/platform/driver/leddrv/src/sl_simple_led.c + @echo 'Building $(SDK_PATH)/platform/driver/leddrv/src/sl_simple_led.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/driver/leddrv/src/sl_simple_led.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_simple_led.d +OBJS += $(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_simple_led.o + +$(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_default_common_linker.o: $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_default_common_linker.c + @echo 'Building $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_default_common_linker.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_default_common_linker.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_default_common_linker.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_default_common_linker.o + +$(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_hal_flash.o: $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_hal_flash.c + @echo 'Building $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_hal_flash.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_hal_flash.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_hal_flash.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_hal_flash.o + +$(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_lock.o: $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_lock.c + @echo 'Building $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_lock.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_lock.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_lock.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_lock.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_burtc.o: $(SDK_PATH)/platform/emlib/src/em_burtc.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_burtc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_burtc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_burtc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_burtc.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_cmu.o: $(SDK_PATH)/platform/emlib/src/em_cmu.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_cmu.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_cmu.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_cmu.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_cmu.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_core.o: $(SDK_PATH)/platform/emlib/src/em_core.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_core.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_core.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_core.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_core.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_emu.o: $(SDK_PATH)/platform/emlib/src/em_emu.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_emu.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_emu.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_emu.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_emu.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_eusart.o: $(SDK_PATH)/platform/emlib/src/em_eusart.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_eusart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_eusart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_eusart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_eusart.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_gpio.o: $(SDK_PATH)/platform/emlib/src/em_gpio.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_gpio.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_gpio.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_gpio.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_gpio.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_msc.o: $(SDK_PATH)/platform/emlib/src/em_msc.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_msc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_msc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_msc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_msc.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_prs.o: $(SDK_PATH)/platform/emlib/src/em_prs.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_prs.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_prs.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_prs.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_prs.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_rmu.o: $(SDK_PATH)/platform/emlib/src/em_rmu.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_rmu.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_rmu.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_rmu.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_rmu.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_se.o: $(SDK_PATH)/platform/emlib/src/em_se.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_se.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_se.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_se.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_se.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_system.o: $(SDK_PATH)/platform/emlib/src/em_system.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_system.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_system.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_system.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_system.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_usart.o: $(SDK_PATH)/platform/emlib/src/em_usart.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_usart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_usart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_usart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_usart.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_wdog.o: $(SDK_PATH)/platform/emlib/src/em_wdog.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_wdog.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_wdog.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_wdog.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_wdog.o + +$(OUTPUT_DIR)/sdk/platform/peripheral/src/peripheral_sysrtc.o: $(SDK_PATH)/platform/peripheral/src/peripheral_sysrtc.c + @echo 'Building $(SDK_PATH)/platform/peripheral/src/peripheral_sysrtc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/peripheral/src/peripheral_sysrtc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/peripheral/src/peripheral_sysrtc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/peripheral/src/peripheral_sysrtc.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_dcdc_s2.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_dcdc_s2.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_dcdc_s2.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_dcdc_s2.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_dcdc_s2.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_dcdc_s2.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_emu_s2.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_emu_s2.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_emu_s2.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_emu_s2.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_emu_s2.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_emu_s2.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_hfxo_s2.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_hfxo_s2.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_hfxo_s2.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_hfxo_s2.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_hfxo_s2.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_hfxo_s2.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_lfxo_s2.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_lfxo_s2.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_lfxo_s2.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_lfxo_s2.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_lfxo_s2.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_lfxo_s2.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_nvic.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_nvic.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_nvic.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_nvic.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_nvic.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_nvic.o + +$(OUTPUT_DIR)/sdk/platform/service/hfxo_manager/src/sl_hfxo_manager.o: $(SDK_PATH)/platform/service/hfxo_manager/src/sl_hfxo_manager.c + @echo 'Building $(SDK_PATH)/platform/service/hfxo_manager/src/sl_hfxo_manager.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/hfxo_manager/src/sl_hfxo_manager.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/hfxo_manager/src/sl_hfxo_manager.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/hfxo_manager/src/sl_hfxo_manager.o + +$(OUTPUT_DIR)/sdk/platform/service/hfxo_manager/src/sl_hfxo_manager_hal_s2.o: $(SDK_PATH)/platform/service/hfxo_manager/src/sl_hfxo_manager_hal_s2.c + @echo 'Building $(SDK_PATH)/platform/service/hfxo_manager/src/sl_hfxo_manager_hal_s2.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/hfxo_manager/src/sl_hfxo_manager_hal_s2.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/hfxo_manager/src/sl_hfxo_manager_hal_s2.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/hfxo_manager/src/sl_hfxo_manager_hal_s2.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_debug.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_debug.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_debug.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_debug.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_debug.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_debug.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_retarget_stdio.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_retarget_stdio.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_retarget_stdio.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_retarget_stdio.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_retarget_stdio.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_retarget_stdio.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_swo_itm_8.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_swo_itm_8.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_swo_itm_8.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_swo_itm_8.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_swo_itm_8.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_swo_itm_8.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_uart.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_uart.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_uart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_uart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_uart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_uart.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_usart.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_usart.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_usart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_usart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_usart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_usart.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_vuart.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_vuart.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_vuart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_vuart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_vuart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_vuart.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_common_ash/src/ash-common.o: $(SDK_PATH)/platform/service/legacy_common_ash/src/ash-common.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_common_ash/src/ash-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_common_ash/src/ash-common.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_common_ash/src/ash-common.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_common_ash/src/ash-common.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/base-replacement.o: $(SDK_PATH)/platform/service/legacy_hal/src/base-replacement.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/base-replacement.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/base-replacement.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/base-replacement.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/base-replacement.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-common.o: $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-common.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-common.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-common.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-common.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-app.o: $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-app.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-app.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-app.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-app.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-app.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-standalone.o: $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-standalone.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-standalone.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-standalone.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-standalone.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-standalone.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface.o: $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/crc.o: $(SDK_PATH)/platform/service/legacy_hal/src/crc.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/crc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/crc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/crc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/crc.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/diagnostic.o: $(SDK_PATH)/platform/service/legacy_hal/src/diagnostic.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/diagnostic.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/diagnostic.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/diagnostic.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/diagnostic.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/ember-phy.o: $(SDK_PATH)/platform/service/legacy_hal/src/ember-phy.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/ember-phy.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/ember-phy.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/ember-phy.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/ember-phy.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/faults.o: $(SDK_PATH)/platform/service/legacy_hal/src/faults.s + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/faults.s' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/faults.s +ASMDEPS_s += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/faults.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/faults.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/random.o: $(SDK_PATH)/platform/service/legacy_hal/src/random.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/random.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/random.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/random.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/random.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/token_legacy.o: $(SDK_PATH)/platform/service/legacy_hal/src/token_legacy.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/token_legacy.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/token_legacy.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/token_legacy.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/token_legacy.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.o: $(SDK_PATH)/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_ncp_ash/src/ash-ncp.o: $(SDK_PATH)/platform/service/legacy_ncp_ash/src/ash-ncp.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_ncp_ash/src/ash-ncp.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_ncp_ash/src/ash-ncp.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_ncp_ash/src/ash-ncp.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_ncp_ash/src/ash-ncp.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_printf/src/sl_legacy_printf.o: $(SDK_PATH)/platform/service/legacy_printf/src/sl_legacy_printf.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_printf/src/sl_legacy_printf.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_printf/src/sl_legacy_printf.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_printf/src/sl_legacy_printf.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_printf/src/sl_legacy_printf.o + +$(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager.o: $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager.c + @echo 'Building $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager.o + +$(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_debug.o: $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_debug.c + @echo 'Building $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_debug.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_debug.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_debug.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_debug.o + +$(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_hal_s2.o: $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_hal_s2.c + @echo 'Building $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_hal_s2.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_hal_s2.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_hal_s2.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_hal_s2.o + +$(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer.o: $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer.c + @echo 'Building $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer.o + +$(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_burtc.o: $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_burtc.c + @echo 'Building $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_burtc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_burtc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_burtc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_burtc.o + +$(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_sysrtc.o: $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_sysrtc.c + @echo 'Building $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_sysrtc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_sysrtc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_sysrtc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_sysrtc.o + +$(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_init.o: $(SDK_PATH)/platform/service/system/src/sl_system_init.c + @echo 'Building $(SDK_PATH)/platform/service/system/src/sl_system_init.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/system/src/sl_system_init.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_init.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_init.o + +$(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_process_action.o: $(SDK_PATH)/platform/service/system/src/sl_system_process_action.c + @echo 'Building $(SDK_PATH)/platform/service/system/src/sl_system_process_action.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/system/src/sl_system_process_action.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_process_action.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_process_action.o + +$(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_def.o: $(SDK_PATH)/platform/service/token_manager/src/sl_token_def.c + @echo 'Building $(SDK_PATH)/platform/service/token_manager/src/sl_token_def.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/token_manager/src/sl_token_def.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_def.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_def.o + +$(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manager.o: $(SDK_PATH)/platform/service/token_manager/src/sl_token_manager.c + @echo 'Building $(SDK_PATH)/platform/service/token_manager/src/sl_token_manager.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/token_manager/src/sl_token_manager.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manager.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manager.o + +$(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manufacturing.o: $(SDK_PATH)/platform/service/token_manager/src/sl_token_manufacturing.c + @echo 'Building $(SDK_PATH)/platform/service/token_manager/src/sl_token_manufacturing.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/token_manager/src/sl_token_manufacturing.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manufacturing.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manufacturing.o + +$(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay.o: $(SDK_PATH)/platform/service/udelay/src/sl_udelay.c + @echo 'Building $(SDK_PATH)/platform/service/udelay/src/sl_udelay.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/udelay/src/sl_udelay.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay.o + +$(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay_armv6m_gcc.o: $(SDK_PATH)/platform/service/udelay/src/sl_udelay_armv6m_gcc.S + @echo 'Building $(SDK_PATH)/platform/service/udelay/src/sl_udelay_armv6m_gcc.S' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $(SDK_PATH)/platform/service/udelay/src/sl_udelay_armv6m_gcc.S +ASMDEPS_S += $(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay_armv6m_gcc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay_armv6m_gcc.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-binding-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-binding-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-binding-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-binding-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-binding-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-binding-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-green-power-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-green-power-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-green-power-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-green-power-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-green-power-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-green-power-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-messaging-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-messaging-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-messaging-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-messaging-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-messaging-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-messaging-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-networking-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-networking-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-networking-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-networking-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-networking-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-networking-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-security-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-security-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-security-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-security-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-security-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-security-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-trust-center-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-trust-center-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-trust-center-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-trust-center-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-trust-center-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-trust-center-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/em260-common.o: $(SDK_PATH)/protocol/zigbee/app/em260/em260-common.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/em260-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/em260-common.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/em260-common.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/em260-common.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/ncp-stack-stub.o: $(SDK_PATH)/protocol/zigbee/app/em260/ncp-stack-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/ncp-stack-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/ncp-stack-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/ncp-stack-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/ncp-stack-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/serial-interface-uart.o: $(SDK_PATH)/protocol/zigbee/app/em260/serial-interface-uart.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/serial-interface-uart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/serial-interface-uart.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/serial-interface-uart.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/serial-interface-uart.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_common.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_common.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_common.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_common.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_common.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.o: $(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.o: $(SDK_PATH)/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/security/security-address-cache.o: $(SDK_PATH)/protocol/zigbee/app/util/security/security-address-cache.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/security/security-address-cache.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/security/security-address-cache.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/security/security-address-cache.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/security/security-address-cache.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/xncp/xncp_cb.o: $(SDK_PATH)/protocol/zigbee/app/xncp/xncp_cb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/xncp/xncp_cb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/xncp/xncp_cb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/xncp/xncp_cb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/xncp/xncp_cb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/config/ember-configuration.o: $(SDK_PATH)/protocol/zigbee/stack/config/ember-configuration.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/config/ember-configuration.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/config/ember-configuration.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/config/ember-configuration.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/config/ember-configuration.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/ember-multi-network-stub.o: $(SDK_PATH)/protocol/zigbee/stack/core/ember-multi-network-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/core/ember-multi-network-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/core/ember-multi-network-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/ember-multi-network-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/ember-multi-network-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-common.o: $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-common.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-common.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-common.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-common.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-stub.o: $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/aes-ecb.o: $(SDK_PATH)/protocol/zigbee/stack/framework/aes-ecb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/framework/aes-ecb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/framework/aes-ecb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/aes-ecb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/aes-ecb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/ccm-star.o: $(SDK_PATH)/protocol/zigbee/stack/framework/ccm-star.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/framework/ccm-star.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/framework/ccm-star.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/ccm-star.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/ccm-star.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/strong-random-api.o: $(SDK_PATH)/protocol/zigbee/stack/framework/strong-random-api.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/framework/strong-random-api.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/framework/strong-random-api.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/strong-random-api.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/strong-random-api.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.o: $(SDK_PATH)/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/install-code-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/install-code-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/install-code-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/install-code-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/install-code-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/install-code-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/zll/zll-stubs.o: $(SDK_PATH)/protocol/zigbee/stack/zll/zll-stubs.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/zll/zll-stubs.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/zll/zll-stubs.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/zll/zll-stubs.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/zll/zll-stubs.o + +$(OUTPUT_DIR)/sdk/util/silicon_labs/silabs_core/memory_manager/sl_malloc.o: $(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager/sl_malloc.c + @echo 'Building $(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager/sl_malloc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager/sl_malloc.c +CDEPS += $(OUTPUT_DIR)/sdk/util/silicon_labs/silabs_core/memory_manager/sl_malloc.d +OBJS += $(OUTPUT_DIR)/sdk/util/silicon_labs/silabs_core/memory_manager/sl_malloc.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/aes.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/aes.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/aes.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/aes.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/aes.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/aes.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1parse.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1parse.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1parse.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1parse.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1parse.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1parse.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1write.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1write.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1write.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1write.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1write.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1write.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/base64.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/base64.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/base64.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/base64.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/base64.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/base64.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/bignum.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/bignum.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/bignum.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/bignum.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/bignum.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/bignum.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher_wrap.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher_wrap.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher_wrap.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher_wrap.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher_wrap.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher_wrap.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/constant_time.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/constant_time.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/constant_time.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/constant_time.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/constant_time.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/constant_time.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ctr_drbg.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ctr_drbg.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ctr_drbg.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ctr_drbg.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ctr_drbg.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ctr_drbg.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/des.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/des.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/des.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/des.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/des.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/des.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdh.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdh.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdh.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdh.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdh.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdh.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdsa.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdsa.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdsa.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdsa.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdsa.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdsa.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp_curves.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp_curves.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp_curves.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp_curves.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp_curves.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp_curves.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy_poll.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy_poll.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy_poll.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy_poll.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy_poll.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy_poll.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/hmac_drbg.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/hmac_drbg.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/hmac_drbg.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/hmac_drbg.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/hmac_drbg.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/hmac_drbg.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/md.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/md.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/md.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/md.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/md.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/md.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/oid.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/oid.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/oid.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/oid.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/oid.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/oid.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pem.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pem.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pem.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pem.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pem.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pem.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk_wrap.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk_wrap.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk_wrap.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk_wrap.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk_wrap.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk_wrap.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkparse.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkparse.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkparse.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkparse.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkparse.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkparse.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkwrite.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkwrite.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkwrite.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkwrite.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkwrite.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkwrite.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform_util.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform_util.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform_util.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform_util.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform_util.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform_util.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_aead.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_aead.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_aead.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_aead.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_aead.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_aead.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_client.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_client.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_client.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_client.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_client.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_client.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_hash.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_hash.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_hash.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_hash.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_hash.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_hash.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_mac.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_mac.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_mac.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_mac.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_mac.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_mac.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_se.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_se.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_se.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_se.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_se.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_se.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_storage.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_storage.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_storage.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_storage.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_storage.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_storage.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha1.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha1.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha1.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha1.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha1.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha1.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha256.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha256.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha256.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha256.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha256.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha256.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha512.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha512.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha512.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha512.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha512.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha512.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/threading.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/threading.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/threading.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/threading.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/threading.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/threading.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509.o + +$(OUTPUT_DIR)/project/_/_/common/gsdk/util/third_party/crypto/mbedtls/library/x509_create.o: $(COPIED_SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_create.c + @echo 'Building $(COPIED_SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_create.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(COPIED_SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_create.c +CDEPS += $(OUTPUT_DIR)/project/_/_/common/gsdk/util/third_party/crypto/mbedtls/library/x509_create.d +OBJS += $(OUTPUT_DIR)/project/_/_/common/gsdk/util/third_party/crypto/mbedtls/library/x509_create.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crl.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crl.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crl.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crl.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crl.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crl.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crt.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crt.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crt.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crt.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crt.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crt.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_csr.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_csr.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_csr.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_csr.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_csr.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_csr.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_crt.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_crt.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_crt.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_crt.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_crt.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_crt.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_csr.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_csr.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_csr.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_csr.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_csr.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_csr.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_attestation.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_attestation.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_attestation.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_attestation.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_attestation.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_attestation.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_cipher.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_entropy.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_entropy.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_entropy.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_entropy.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_entropy.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_entropy.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_hash.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_hash.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_hash.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_hash.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_hash.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_hash.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_derivation.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_derivation.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_derivation.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_derivation.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_derivation.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_derivation.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_handling.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_handling.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_handling.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_handling.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_handling.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_handling.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_signature.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_signature.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_signature.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_signature.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_signature.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_signature.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_util.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_util.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_util.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_util.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_util.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_util.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_ecdsa_ecdh.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_ecdsa_ecdh.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_ecdsa_ecdh.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_ecdsa_ecdh.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_ecdsa_ecdh.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_ecdsa_ecdh.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/se_aes.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/se_aes.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/se_aes.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/se_aes.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/se_aes.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/se_aes.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_aead.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_aead.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_aead.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_aead.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_aead.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_aead.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_builtin_keys.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_builtin_keys.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_builtin_keys.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_builtin_keys.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_builtin_keys.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_builtin_keys.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_cipher.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_derivation.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_derivation.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_derivation.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_derivation.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_derivation.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_derivation.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_management.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_management.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_management.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_management.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_management.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_management.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_mac.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_mac.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_mac.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_mac.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_mac.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_mac.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_signature.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_signature.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_signature.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_signature.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_signature.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_signature.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_aead.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_aead.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_aead.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_aead.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_aead.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_aead.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_cipher.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_mac.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_mac.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_mac.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_mac.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_mac.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_mac.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_key_derivation.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_key_derivation.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_key_derivation.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_key_derivation.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_key_derivation.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_key_derivation.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_aead.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_aead.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_aead.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_aead.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_aead.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_aead.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_cipher.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_hash.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_hash.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_hash.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_hash.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_hash.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_hash.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_mac.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_mac.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_mac.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_mac.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_mac.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_mac.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_key_derivation.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_key_derivation.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_key_derivation.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_key_derivation.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_key_derivation.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_key_derivation.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.o + +$(OUTPUT_DIR)/sdk/util/third_party/printf/printf.o: $(SDK_PATH)/util/third_party/printf/printf.c + @echo 'Building $(SDK_PATH)/util/third_party/printf/printf.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/printf/printf.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/printf/printf.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/printf/printf.o + +$(OUTPUT_DIR)/sdk/util/third_party/printf/src/iostream_printf.o: $(SDK_PATH)/util/third_party/printf/src/iostream_printf.c + @echo 'Building $(SDK_PATH)/util/third_party/printf/src/iostream_printf.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/printf/src/iostream_printf.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/printf/src/iostream_printf.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/printf/src/iostream_printf.o + +$(OUTPUT_DIR)/sdk/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.o: $(SDK_PATH)/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.c + @echo 'Building $(SDK_PATH)/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.o + +$(OUTPUT_DIR)/project/_/_/common/creds.o: ../../common/creds.c + @echo 'Building ../../common/creds.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../../common/creds.c +CDEPS += $(OUTPUT_DIR)/project/_/_/common/creds.d +OBJS += $(OUTPUT_DIR)/project/_/_/common/creds.o + +$(OUTPUT_DIR)/project/_/device_cert.o: ../device_cert.c + @echo 'Building ../device_cert.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../device_cert.c +CDEPS += $(OUTPUT_DIR)/project/_/device_cert.d +OBJS += $(OUTPUT_DIR)/project/_/device_cert.o + +$(OUTPUT_DIR)/project/_/device_creds.o: ../device_creds.c + @echo 'Building ../device_creds.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../device_creds.c +CDEPS += $(OUTPUT_DIR)/project/_/device_creds.d +OBJS += $(OUTPUT_DIR)/project/_/device_creds.o + +$(OUTPUT_DIR)/project/_/main.o: ../main.c + @echo 'Building ../main.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../main.c +CDEPS += $(OUTPUT_DIR)/project/_/main.d +OBJS += $(OUTPUT_DIR)/project/_/main.o + +$(OUTPUT_DIR)/project/autogen/sl_board_default_init.o: autogen/sl_board_default_init.c + @echo 'Building autogen/sl_board_default_init.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_board_default_init.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_board_default_init.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_board_default_init.o + +$(OUTPUT_DIR)/project/autogen/sl_device_init_clocks.o: autogen/sl_device_init_clocks.c + @echo 'Building autogen/sl_device_init_clocks.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_device_init_clocks.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_device_init_clocks.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_device_init_clocks.o + +$(OUTPUT_DIR)/project/autogen/sl_event_handler.o: autogen/sl_event_handler.c + @echo 'Building autogen/sl_event_handler.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_event_handler.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_event_handler.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_event_handler.o + +$(OUTPUT_DIR)/project/autogen/sl_iostream_handles.o: autogen/sl_iostream_handles.c + @echo 'Building autogen/sl_iostream_handles.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_iostream_handles.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_iostream_handles.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_iostream_handles.o + +$(OUTPUT_DIR)/project/autogen/sl_iostream_init_usart_instances.o: autogen/sl_iostream_init_usart_instances.c + @echo 'Building autogen/sl_iostream_init_usart_instances.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_iostream_init_usart_instances.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_iostream_init_usart_instances.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_iostream_init_usart_instances.o + +$(OUTPUT_DIR)/project/autogen/sl_power_manager_handler.o: autogen/sl_power_manager_handler.c + @echo 'Building autogen/sl_power_manager_handler.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_power_manager_handler.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_power_manager_handler.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_power_manager_handler.o + +$(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_phy_select.o: autogen/sl_rail_util_ieee802154_phy_select.c + @echo 'Building autogen/sl_rail_util_ieee802154_phy_select.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_rail_util_ieee802154_phy_select.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_phy_select.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_phy_select.o + +$(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_stack_event.o: autogen/sl_rail_util_ieee802154_stack_event.c + @echo 'Building autogen/sl_rail_util_ieee802154_stack_event.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_rail_util_ieee802154_stack_event.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_stack_event.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_stack_event.o + +$(OUTPUT_DIR)/project/autogen/sl_simple_led_instances.o: autogen/sl_simple_led_instances.c + @echo 'Building autogen/sl_simple_led_instances.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_simple_led_instances.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_simple_led_instances.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_simple_led_instances.o + +$(OUTPUT_DIR)/project/autogen/zigbee_common_callback_dispatcher.o: autogen/zigbee_common_callback_dispatcher.c + @echo 'Building autogen/zigbee_common_callback_dispatcher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/zigbee_common_callback_dispatcher.c +CDEPS += $(OUTPUT_DIR)/project/autogen/zigbee_common_callback_dispatcher.d +OBJS += $(OUTPUT_DIR)/project/autogen/zigbee_common_callback_dispatcher.o + +$(OUTPUT_DIR)/project/autogen/zigbee_ncp_callback_dispatcher.o: autogen/zigbee_ncp_callback_dispatcher.c + @echo 'Building autogen/zigbee_ncp_callback_dispatcher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/zigbee_ncp_callback_dispatcher.c +CDEPS += $(OUTPUT_DIR)/project/autogen/zigbee_ncp_callback_dispatcher.d +OBJS += $(OUTPUT_DIR)/project/autogen/zigbee_ncp_callback_dispatcher.o + +$(OUTPUT_DIR)/project/autogen/zigbee_stack_callback_dispatcher.o: autogen/zigbee_stack_callback_dispatcher.c + @echo 'Building autogen/zigbee_stack_callback_dispatcher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/zigbee_stack_callback_dispatcher.c +CDEPS += $(OUTPUT_DIR)/project/autogen/zigbee_stack_callback_dispatcher.d +OBJS += $(OUTPUT_DIR)/project/autogen/zigbee_stack_callback_dispatcher.o + +# Automatically-generated Simplicity Studio Metadata +# Please do not edit or delete these lines! +# SIMPLICITY_STUDIO_METADATA=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END_SIMPLICITY_STUDIO_METADATA +# END OF METADATA \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4187c/autogen/RTE_Components.h b/silabs_examples/credentials/device/brd4187c/autogen/RTE_Components.h new file mode 100644 index 00000000000000..3b6ea30c43423f --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/RTE_Components.h @@ -0,0 +1,22 @@ +// This file is autogenerated by Silicon Labs SLC. +// The contents of this file will be replaced in their entirety upon regeneration. +// +// Source template file: RTE_Components.h.jinja + + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + +/* standard device header from emlib */ +#define CMSIS_device_header "em_device.h" + +/* components are auto-generated here */ + + +#endif /* RTE_COMPONENTS_H */ + +/* This file is autogenerated by Silicon Labs SLC. */ +/* The contents of this file will be replaced in their entirety upon regeneration. */ +/* */ +/* Source template file: RTE_Components.h.jinja */ + diff --git a/silabs_examples/credentials/device/brd4187c/autogen/linkerfile_base.icf b/silabs_examples/credentials/device/brd4187c/autogen/linkerfile_base.icf new file mode 100644 index 00000000000000..709d9fcc0f6e18 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/linkerfile_base.icf @@ -0,0 +1,85 @@ + + +/*###ICF### Section handled by ICF editor, don't touch! ****/ +/*-Editor annotation file-*/ +/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */ +/* Version 4.1.1 */ + +/*-Memory Regions-*/ +define symbol __ICFEDIT_region_ROM_start__ = 0x8006000; +define symbol __ICFEDIT_region_ROM_end__ = (0x8006000+0x178000-1); +define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; +define symbol __ICFEDIT_region_RAM_end__ = (0x20000000+0x40000-1); + +/**** End of ICF editor section. ###ICF###*/ + +define memory mem with size = 4G; +define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; +define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; + +define block CSTACK with alignment = 8 +{ + section .stack +}; + +define block HEAP with alignment = 8 +{ + section .heap +}; + +define block header with alignment = 8 +{ + section AAT +}; + +define block nvm with alignment = 8192 +{ + section SIMEE, +}; +keep { block nvm }; + +define block storage with alignment = 8192 +{ + section INTERNAL_STORAGE, +}; +keep { block storage }; + +define block application with fixed order +{ + block header, + readonly section .intvec, + readonly +}; + +define block application_ram with fixed order +{ + block CSTACK, + readwrite, + block HEAP +}; + +initialize by copy { readwrite }; + +do not initialize +{ + section .noinit, + section .stack, + section .heap +}; + +keep { + section .intvec, + section AAT, + block header +}; +"application": +place at start of ROM_region { block application }; + +"storage_regions": +place at end of ROM_region { + block nvm, + block storage +}; + +"application_ram": +place at start of RAM_region { block application_ram }; diff --git a/silabs_examples/credentials/device/brd4187c/autogen/linkerfile_base.ld b/silabs_examples/credentials/device/brd4187c/autogen/linkerfile_base.ld new file mode 100644 index 00000000000000..4352b12975cbbd --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/linkerfile_base.ld @@ -0,0 +1,225 @@ +/***************************************************************************//** + * GCC Linker script for Silicon Labs devices + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + + + +MEMORY +{ + FLASH (rx) : ORIGIN = 0x8006000, LENGTH = 0x178000 + RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x40000 +} + +ENTRY(Reset_Handler) + +SECTIONS +{ + .aat : + { + KEEP(*(.aat*)); + . = ALIGN(512); + } > FLASH + + .text : + { + linker_vectors_begin = .; + KEEP(*(.vectors)) + linker_vectors_end = .; + + __Vectors_End = .; + __Vectors_Size = __Vectors_End - __Vectors; + + linker_code_begin = .; + *(.text*) + linker_code_end = .; + + KEEP(*(.init)) + KEEP(*(.fini)) + + /* .ctors */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + + /* .dtors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + + *(.rodata*) + *(.eh_frame*) + } > FLASH + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > FLASH + + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > FLASH + __exidx_end = .; + + .copy.table : + { + . = ALIGN(4); + __copy_table_start__ = .; + + LONG (__etext) + LONG (__data_start__) + LONG ((__data_end__ - __data_start__) / 4) + + /* Add each additional data section here */ +/* + LONG (__etext2) + LONG (__data2_start__) + LONG ((__data2_end__ - __data2_start__) / 4) +*/ + __copy_table_end__ = .; + } > FLASH + + .zero.table : + { + . = ALIGN(4); + __zero_table_start__ = .; + /* Add each additional bss section here */ +/* + LONG (__bss2_start__) + LONG ((__bss2_end__ - __bss2_start__) / 4) +*/ + __zero_table_end__ = .; + } > FLASH + + __etext = .; + + /* Start placing output sections which are loaded into RAM */ + . = ORIGIN(RAM); + + .stack ALIGN(8) (NOLOAD): + { + __StackLimit = .; + KEEP(*(.stack*)) + . = ALIGN(4); + __StackTop = .; + PROVIDE(__stack = __StackTop); + } > RAM + + .noinit . (NOLOAD): + { + PROVIDE(__NO_INIT__begin = .); + *(.noinit*); + PROVIDE(__NO_INIT__end = .); + } > RAM + PROVIDE(__NO_INIT_NEW__size = SIZEOF(.noinit)); + + .data . : AT (__etext) + { + . = ALIGN(4); + __data_start__ = .; + *(vtable) + *(.data*) + . = ALIGN (4); + + PROVIDE(__ram_func_section_start = .); + *(.ram) + PROVIDE(__ram_func_section_end = .); + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + + . = ALIGN(4); + /* init data */ + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + + . = ALIGN(4); + /* finit data */ + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + + . = ALIGN(4); + /* All data end */ + __data_end__ = .; + + } > RAM + + .bss . : + { + . = ALIGN(4); + __bss_start__ = .; + *(SEGGER_RTT) + *(.bss*) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + } > RAM + + .heap (COPY): + { + __HeapBase = .; + __end__ = .; + end = __end__; + _end = __end__; + KEEP(*(.heap*)) + . = ORIGIN(RAM) + LENGTH(RAM); + __HeapLimit = .; + } > RAM + + __heap_size = __HeapLimit - __HeapBase; + + /* This is where we handle flash storage blocks. We use dummy sections for finding the configured + * block sizes and then "place" them at the end of flash when the size is known. */ + .internal_storage (DSECT) : { + KEEP(*(.internal_storage*)) + } > FLASH + + .nvm (DSECT) : { + KEEP(*(.simee*)) + } > FLASH + + linker_storage_end = ORIGIN(FLASH) + LENGTH(FLASH); + linker_storage_begin = linker_storage_end - SIZEOF(.internal_storage); + linker_storage_size = SIZEOF(.internal_storage); + linker_nvm_end = linker_storage_begin; + linker_nvm_begin = linker_nvm_end - SIZEOF(.nvm); + linker_nvm_size = SIZEOF(.nvm); + __nvm3Base = linker_nvm_begin; +} diff --git a/silabs_examples/credentials/device/brd4187c/autogen/mbedtls_config_autogen.h b/silabs_examples/credentials/device/brd4187c/autogen/mbedtls_config_autogen.h new file mode 100644 index 00000000000000..1e6fc322a5a674 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/mbedtls_config_autogen.h @@ -0,0 +1,97 @@ +// This is an autogenerated config file, any changes to this file will be overwritten + +#ifndef MBEDTLS_CONFIG_AUTOGEN_H +#define MBEDTLS_CONFIG_AUTOGEN_H + + +#define MBEDTLS_MPI_MAX_SIZE 66 + + +#define MBEDTLS_AES_C +#define MBEDTLS_ASN1_PARSE_C +#define MBEDTLS_ASN1_WRITE_C +#define MBEDTLS_BASE64_C +#define MBEDTLS_CIPHER_C +#define MBEDTLS_ECP_C +#define MBEDTLS_ECP_DP_SECP192R1_ENABLED +#define MBEDTLS_ECP_DP_SECP256R1_ENABLED +#define MBEDTLS_ECP_DP_SECP384R1_ENABLED +#define MBEDTLS_ECP_DP_SECP521R1_ENABLED +#define MBEDTLS_ECDSA_C +#define MBEDTLS_ENTROPY_HARDWARE_ALT +#define MBEDTLS_ENTROPY_RAIL_PRESENT +#define MBEDTLS_MD_C +#define MBEDTLS_BIGNUM_C +#define MBEDTLS_PEM_PARSE_C +#define MBEDTLS_PEM_WRITE_C +#define MBEDTLS_PK_C +#define MBEDTLS_PK_PARSE_C +#define MBEDTLS_PK_WRITE_C +#define MBEDTLS_ENTROPY_C +#define MBEDTLS_ENTROPY_FORCE_SHA256 +#define MBEDTLS_ENTROPY_MAX_SOURCES 2 +#define MBEDTLS_NO_PLATFORM_ENTROPY +#define MBEDTLS_CTR_DRBG_C +#define MBEDTLS_SHA1_C +#define MBEDTLS_SHA256_C +#define MBEDTLS_SHA224_C +#define MBEDTLS_SHA384_C +#define MBEDTLS_SHA512_C +#define MBEDTLS_X509_USE_C +#define MBEDTLS_X509_CREATE_C +#define MBEDTLS_X509_CRT_PARSE_C +#define MBEDTLS_X509_CRT_WRITE_C +#define MBEDTLS_X509_CRL_PARSE_C +#define MBEDTLS_X509_CSR_PARSE_C +#define MBEDTLS_X509_CSR_WRITE_C +#define MBEDTLS_OID_C +#define MBEDTLS_PSA_CRYPTO_C +#define MBEDTLS_USE_PSA_CRYPTO +#define MBEDTLS_PSA_CRYPTO_CONFIG +#define MBEDTLS_PSA_CRYPTO_DRIVERS +#define MBEDTLS_PSA_CRYPTO_STORAGE_C + + +#include "config-device-acceleration.h" + +#if defined(SL_SE_ASSUME_FW_AT_LEAST_1_2_10) || defined(SL_SE_ASSUME_FW_AT_LEAST_2_1_7) + #undef MBEDTLS_ECP_DP_CURVE25519_ENABLED + #if !(defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)) + #undef MBEDTLS_ECDH_C + #undef MBEDTLS_ECP_C + #undef MBEDTLS_BIGNUM_C + #endif /* !MBEDTLS_ECP_DP_SECPxR1_ENABLED */ +#endif /* SL_SE_ASSUME_FW_AT_LEAST_x */ + +#if !defined(TEST_SUITE_MEMORY_BUFFER_ALLOC) +#if !defined(MBEDTLS_PLATFORM_FREE_MACRO) && !defined(MBEDTLS_PLATFORM_CALLOC_MACRO) +#if defined(CONFIG_MBEDTLS_USE_FREERTOS_PVCALLOC) + /* In FreeRTOS, use pvCalloc (and vPortFree) for dynamic memory allocation. + E.g. Amazon FreeRTOS implements pvCalloc for dynamic memory allocation. */ + #include + + extern void * pvCalloc( size_t xNumElements, + size_t xSize ) ; + extern void vPortFree( void *pv ); + #define MBEDTLS_PLATFORM_CALLOC_MACRO pvCalloc + #define MBEDTLS_PLATFORM_FREE_MACRO vPortFree +#else + /* No memory allocator override, supply the default for SL platforms */ + #include "sl_malloc.h" + + #define MBEDTLS_PLATFORM_FREE_MACRO sl_free + #define MBEDTLS_PLATFORM_CALLOC_MACRO sl_calloc +#endif +#endif /* No specific memory allocator override */ +#endif /* Not under test */ + +#define MBEDTLS_PLATFORM_MEMORY +#define MBEDTLS_PLATFORM_C + + + +#endif diff --git a/silabs_examples/credentials/device/brd4187c/autogen/psa_crypto_config_autogen.h b/silabs_examples/credentials/device/brd4187c/autogen/psa_crypto_config_autogen.h new file mode 100644 index 00000000000000..83745ad1837770 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/psa_crypto_config_autogen.h @@ -0,0 +1,142 @@ +// This is an autogenerated config file, any changes to this file will be overwritten + +#ifndef PSA_CRYPTO_CONFIG_AUTOGEN_H +#define PSA_CRYPTO_CONFIG_AUTOGEN_H + +#define PSA_WANT_KEY_TYPE_AES +#define PSA_WANT_ALG_CCM +#define PSA_WANT_ALG_ECB_NO_PADDING +#define MBEDTLS_PSA_BUILTIN_ALG_ECB_NO_PADDING 1 +#define PSA_WANT_ALG_SHA_1 +#define PSA_WANT_ALG_SHA_224 +#define PSA_WANT_ALG_SHA_256 +#define PSA_WANT_ALG_SHA_384 +#define PSA_WANT_ALG_SHA_512 +#define PSA_WANT_ALG_ECDSA +#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR +#define PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY +#define PSA_WANT_ECC_SECP_R1_192 +#define PSA_WANT_ECC_SECP_R1_256 +#define PSA_WANT_ECC_SECP_R1_384 +#define PSA_WANT_ECC_SECP_R1_521 +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY 1 +#define MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR 1 +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_192 1 +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_256 1 +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_384 1 +#define MBEDTLS_PSA_BUILTIN_ECC_SECP_R1_521 1 +#define MBEDTLS_PSA_BUILTIN_ALG_ECDSA 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_1 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_224 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_256 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_384 1 +#define MBEDTLS_PSA_BUILTIN_ALG_SHA_512 1 +#define MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG +#define MBEDTLS_PSA_ACCEL_ALG_SHA_1 +#define MBEDTLS_PSA_ACCEL_ALG_SHA_224 +#define MBEDTLS_PSA_ACCEL_ALG_SHA_256 +#define MBEDTLS_PSA_ACCEL_ALG_SHA_384 +#define MBEDTLS_PSA_ACCEL_ALG_SHA_512 +#define MBEDTLS_PSA_ACCEL_KEY_TYPE_AES +#define MBEDTLS_PSA_ACCEL_ALG_ECB_NO_PADDING +#define MBEDTLS_PSA_ACCEL_ALG_CBC_NO_PADDING +#define MBEDTLS_PSA_ACCEL_ALG_CBC_PKCS7 +#define MBEDTLS_PSA_ACCEL_ALG_CTR +#define MBEDTLS_PSA_ACCEL_ALG_CFB +#define MBEDTLS_PSA_ACCEL_ALG_OFB +#define MBEDTLS_PSA_ACCEL_ALG_CHACHA20_POLY1305 +#define MBEDTLS_PSA_ACCEL_KEY_TYPE_CHACHA20 +#define MBEDTLS_PSA_ACCEL_ALG_GCM +#define MBEDTLS_PSA_ACCEL_ALG_CCM +#define MBEDTLS_PSA_ACCEL_ALG_HMAC +#define MBEDTLS_PSA_ACCEL_ALG_CMAC +#define MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_KEY_PAIR +#define MBEDTLS_PSA_ACCEL_KEY_TYPE_ECC_PUBLIC_KEY +#define MBEDTLS_PSA_ACCEL_ALG_ECDSA +#define MBEDTLS_PSA_ACCEL_ALG_ECDH +#define MBEDTLS_PSA_ACCEL_ECC_SECP_R1_192 +#define MBEDTLS_PSA_ACCEL_ECC_SECP_R1_224 +#define MBEDTLS_PSA_ACCEL_ECC_SECP_R1_256 +#define MBEDTLS_PSA_ACCEL_ECC_SECP_R1_384 +#define MBEDTLS_PSA_ACCEL_ECC_SECP_R1_521 +#define MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_255 +#define MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_448 + +#define MBEDTLS_PSA_KEY_SLOT_COUNT (1 + SL_PSA_KEY_USER_SLOT_COUNT) +#define SL_PSA_ITS_MAX_FILES (1 + SL_PSA_ITS_USER_MAX_FILES) + +#include "config-device-acceleration.h" +#if defined(SL_SE_ASSUME_FW_AT_LEAST_1_2_10) || defined(SL_SE_ASSUME_FW_AT_LEAST_2_1_7) + #define MBEDTLS_PSA_ACCEL_ECC_MONTGOMERY_255 + #undef MBEDTLS_PSA_BUILTIN_ECC_MONTGOMERY_255 + #if !(defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) \ + || defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED)) + #undef MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR + #undef MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY + #undef MBEDTLS_PSA_BUILTIN_ALG_ECDH + #endif /* !MBEDTLS_ECP_DP_SECPxR1_ENABLED */ +#endif /* SL_SE_ASSUME_FW_AT_LEAST_x */ + +#if defined(TFM_CONFIG_SL_SECURE_LIBRARY) +// Asymmetric Crypt module (RSA is not supported) +#define TFM_CRYPTO_ASYM_ENCRYPT_MODULE_DISABLED + +// HASH module +#if !defined(PSA_WANT_ALG_SHA_1) \ + && !defined(PSA_WANT_ALG_SHA_224) \ + && !defined(PSA_WANT_ALG_SHA_256) \ + && !defined(PSA_WANT_ALG_SHA_384) \ + && !defined(PSA_WANT_ALG_SHA_512) \ + && !defined(PSA_WANT_ALG_MD5) +#define TFM_CRYPTO_HASH_MODULE_DISABLED +#endif + +// AEAD module +#if !defined(PSA_WANT_ALG_CCM) \ + && !defined(PSA_WANT_ALG_GCM) \ + && !defined(PSA_WANT_ALG_CHACHA20_POLY1305) +#define TFM_CRYPTO_AEAD_MODULE_DISABLED +#endif + +// Asymmetric Sign module +#if !defined(PSA_WANT_ALG_ECDSA) \ + && !defined(PSA_WANT_ALG_EDDSA) \ + && !defined(PSA_WANT_ALG_DETERMINISTIC_ECDSA) +#define TFM_CRYPTO_ASYM_SIGN_MODULE_DISABLED +#endif + +// Cipher module +#if !defined(PSA_WANT_ALG_CFB) \ + && !defined(PSA_WANT_ALG_CTR) \ + && !defined(PSA_WANT_ALG_CBC_NO_PADDING) \ + && !defined(PSA_WANT_ALG_CBC_PKCS7) \ + && !defined(PSA_WANT_ALG_ECB_NO_PADDING) \ + && !defined(PSA_WANT_ALG_XTS) \ + && !defined(PSA_WANT_ALG_OFB) \ + && !defined(PSA_WANT_ALG_STREAM_CIPHER) +#define TFM_CRYPTO_CIPHER_MODULE_DISABLED +#endif + +// MAC module +#if !defined(PSA_WANT_ALG_HMAC) \ + && !defined(PSA_WANT_ALG_CMAC) \ + && !defined(PSA_WANT_ALG_CBC_MAC) +#define TFM_CRYPTO_MAC_MODULE_DISABLED +#endif + +// Key derivation module +#if !defined(PSA_WANT_ALG_PBKDF2_HMAC) \ + && !defined(PSA_WANT_ALG_HKDF) \ + && !defined(PSA_WANT_ALG_PBKDF2_AES_CMAC_PRF_128) \ + && !defined(PSA_WANT_ALG_TLS12_PRF) \ + && !defined(PSA_WANT_ALG_TLS12_PSK_TO_MS) \ + && !defined(PSA_WANT_ALG_ECDH) +#define TFM_CRYPTO_KEY_DERIVATION_MODULE_DISABLED +#endif + +#endif // TFM_CONFIG_SL_SECURE_LIBRARY + +#endif diff --git a/silabs_examples/credentials/device/brd4187c/autogen/sl_application_type.h b/silabs_examples/credentials/device/brd4187c/autogen/sl_application_type.h new file mode 100644 index 00000000000000..8bc7f50103c1e2 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/sl_application_type.h @@ -0,0 +1,41 @@ +/***************************************************************************//** + * @file + * @brief Autogenerated configuration file for application properties + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_APPLICATION_TYPE_H +#define SL_APPLICATION_TYPE_H + +#include "api/application_properties.h" + +// Bitfield representing type of application +#define APPLICATION_TYPE APPLICATION_TYPE_ZIGBEE + + +#endif // SL_APPLICATION_TYPE_H + diff --git a/silabs_examples/credentials/device/brd4187c/autogen/sl_board_default_init.c b/silabs_examples/credentials/device/brd4187c/autogen/sl_board_default_init.c new file mode 100644 index 00000000000000..bd43db368b3c3a --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/sl_board_default_init.c @@ -0,0 +1,36 @@ +/***************************************************************************//** + * @file + * @brief Board Default Init + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ +#include "sl_board_control.h" + +void sl_board_default_init(void) +{ + sl_board_disable_vcom(); + +} diff --git a/silabs_examples/credentials/device/brd4187c/autogen/sl_component_catalog.h b/silabs_examples/credentials/device/brd4187c/autogen/sl_component_catalog.h new file mode 100644 index 00000000000000..f004418792b696 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/sl_component_catalog.h @@ -0,0 +1,55 @@ +#ifndef SL_COMPONENT_CATALOG_H +#define SL_COMPONENT_CATALOG_H + +// APIs present in project +#define SL_CATALOG_GECKO_BOOTLOADER_INTERFACE_PRESENT +#define SL_CATALOG_DEVICE_INIT_NVIC_PRESENT +#define SL_CATALOG_EMLIB_CORE_DEBUG_CONFIG_PRESENT +#define SL_CATALOG_RETARGET_STDIO_PRESENT +#define SL_CATALOG_IOSTREAM_UART_COMMON_PRESENT +#define SL_CATALOG_IOSTREAM_USART_PRESENT +#define SL_CATALOG_LEGACY_BOOTLOADER_INTERFACE_PRESENT +#define SL_CATALOG_LEGACY_COMMON_ASH_PRESENT +#define SL_CATALOG_LEGACY_HAL_PRESENT +#define SL_CATALOG_LEGACY_HAL_WDOG_PRESENT +#define SL_CATALOG_LEGACY_NCP_ASH_PRESENT +#define SL_CATALOG_LEGACY_PRINTF_PRESENT +#define SL_CATALOG_MX25_FLASH_SHUTDOWN_EUSART_PRESENT +#define SL_CATALOG_NVM3_PRESENT +#define SL_CATALOG_POWER_MANAGER_PRESENT +#define SL_CATALOG_PRINTF_PRESENT +#define SL_CATALOG_PSA_CRYPTO_PRESENT +#define SL_CATALOG_RAIL_LIB_PRESENT +#define SL_CATALOG_RAIL_UTIL_IEEE802154_PHY_SELECT_PRESENT +#define SL_CATALOG_RAIL_UTIL_IEEE802154_STACK_EVENT_PRESENT +#define SL_CATALOG_RAIL_UTIL_PTI_PRESENT +#define SL_CATALOG_SE_MANAGER_PRESENT +#define SL_CATALOG_LED0_PRESENT +#define SL_CATALOG_SIMPLE_LED_PRESENT +#define SL_CATALOG_SIMPLE_LED_LED0_PRESENT +#define SL_CATALOG_SLEEPTIMER_PRESENT +#define SL_CATALOG_TOKEN_MANAGER_PRESENT +#define SL_CATALOG_TOKEN_MANAGER_NVM3_PRESENT +#define SL_CATALOG_ZIGBEE_AES_PSA_PRESENT +#define SL_CATALOG_ZIGBEE_APP_FRAMEWORK_COMMON_PRESENT +#define SL_CATALOG_ZIGBEE_BINDING_TABLE_PRESENT +#define SL_CATALOG_ZIGBEE_CCM_PSA_PRESENT +#define SL_CATALOG_ZIGBEE_DEBUG_BASIC_PRESENT +#define SL_CATALOG_ZIGBEE_DEBUG_EXTENDED_PRESENT +#define SL_CATALOG_ZIGBEE_DEBUG_PRINT_PRESENT +#define SL_CATALOG_ZIGBEE_END_DEVICE_BIND_PRESENT +#define SL_CATALOG_ZIGBEE_GREEN_POWER_PRESENT +#define SL_CATALOG_ZIGBEE_NCP_FRAMEWORK_PRESENT +#define SL_CATALOG_ZIGBEE_NCP_PRESENT +#define SL_CATALOG_ZIGBEE_NCP_UART_HARDWARE_PRESENT +#define SL_CATALOG_ZIGBEE_PACKET_VALIDATE_PRESENT +#define SL_CATALOG_ZIGBEE_PHY_2_4_PRESENT +#define SL_CATALOG_ZIGBEE_PRO_STACK_PRESENT +#define SL_CATALOG_ZIGBEE_R22_SUPPORT_PRESENT +#define SL_CATALOG_ZIGBEE_SECURITY_LINK_KEYS_PRESENT +#define SL_CATALOG_ZIGBEE_SOURCE_ROUTE_PRESENT +#define SL_CATALOG_ZIGBEE_STACK_COMMON_PRESENT +#define SL_CATALOG_ZIGBEE_STRONG_RANDOM_API_RADIO_PRESENT +#define SL_CATALOG_ZIGBEE_XNCP_PRESENT + +#endif // SL_COMPONENT_CATALOG_H diff --git a/silabs_examples/credentials/device/brd4187c/autogen/sl_device_init_clocks.c b/silabs_examples/credentials/device/brd4187c/autogen/sl_device_init_clocks.c new file mode 100644 index 00000000000000..b7d9d919ed9c7a --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/sl_device_init_clocks.c @@ -0,0 +1,57 @@ +/***************************************************************************//** + * @file + * @brief Device initialization for clocks. + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ +#include "sl_device_init_clocks.h" + +#include "em_cmu.h" + +sl_status_t sl_device_init_clocks(void) +{ + CMU_ClockSelectSet(cmuClock_SYSCLK, cmuSelect_HFXO); +#if defined(_CMU_EM01GRPACLKCTRL_MASK) + CMU_ClockSelectSet(cmuClock_EM01GRPACLK, cmuSelect_HFXO); +#endif +#if defined(_CMU_EM01GRPBCLKCTRL_MASK) + CMU_ClockSelectSet(cmuClock_EM01GRPBCLK, cmuSelect_HFXO); +#endif + CMU_ClockSelectSet(cmuClock_EM23GRPACLK, cmuSelect_LFXO); + CMU_ClockSelectSet(cmuClock_EM4GRPACLK, cmuSelect_LFXO); +#if defined(RTCC_PRESENT) + CMU_ClockSelectSet(cmuClock_RTCC, cmuSelect_LFXO); +#endif +#if defined(SYSRTC_PRESENT) + CMU_ClockSelectSet(cmuClock_SYSRTC, cmuSelect_LFXO); +#endif + CMU_ClockSelectSet(cmuClock_WDOG0, cmuSelect_LFXO); +#if WDOG_COUNT > 1 + CMU_ClockSelectSet(cmuClock_WDOG1, cmuSelect_LFXO); +#endif + + return SL_STATUS_OK; +} diff --git a/silabs_examples/credentials/device/brd4187c/autogen/sl_event_handler.c b/silabs_examples/credentials/device/brd4187c/autogen/sl_event_handler.c new file mode 100644 index 00000000000000..93a3fbe50df918 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/sl_event_handler.c @@ -0,0 +1,105 @@ +#include "sl_event_handler.h" + +#include "em_chip.h" +#include "sl_device_init_nvic.h" +#include "sl_board_init.h" +#include "sl_device_init_dcdc.h" +#include "sl_hfxo_manager.h" +#include "sl_device_init_hfxo.h" +#include "sl_device_init_lfxo.h" +#include "sl_device_init_clocks.h" +#include "sl_device_init_emu.h" +#include "pa_conversions_efr32.h" +#include "sl_rail_util_pti.h" +#include "zigbee-debug-extended.h" +#include "zigbee_app_framework_common.h" +#include "btl_interface.h" +#include "sl_board_control.h" +#include "sl_sleeptimer.h" +#include "sl_debug_swo.h" +#include "sl_iostream_debug.h" +#include "sl_iostream_init_usart_instances.h" +#include "sl_iostream_vuart.h" +#include "hal.h" +#include "sl_mbedtls.h" +#include "nvm3_default.h" +#include "sl_simple_led_instances.h" +#include "sl_iostream_init_instances.h" +#include "sl_power_manager.h" +#include "sl_cos.h" + +void sl_platform_init(void) +{ + CHIP_Init(); + sl_device_init_nvic(); + sl_board_preinit(); + sl_device_init_dcdc(); + sl_hfxo_manager_init_hardware(); + sl_device_init_hfxo(); + sl_device_init_lfxo(); + sl_device_init_clocks(); + sl_device_init_emu(); + sl_board_init(); + bootloader_init(); + halInit(); + nvm3_initDefault(); + sl_power_manager_init(); +} + +void sl_driver_init(void) +{ + sl_debug_swo_init(); + sl_simple_led_init_instances(); + sl_cos_send_config(); +} + +void sl_service_init(void) +{ + sl_board_configure_vcom(); + sl_sleeptimer_init(); + sl_hfxo_manager_init(); + sl_mbedtls_init(); + sl_iostream_init_instances(); +} + +void sl_stack_init(void) +{ + sl_rail_util_pa_init(); + sl_rail_util_pti_init(); + sli_zigbee_debug_extended_init(); + sli_zigbee_stack_init_callback(); + sli_zigbee_app_framework_init_callback(); + sli_zigbee_app_framework_sleep_init(); + sli_zigbee_ncp_init_callback(); +} + +void sl_internal_app_init(void) +{ +} + +void sl_platform_process_action(void) +{ +} + +void sl_service_process_action(void) +{ +} + +void sl_stack_process_action(void) +{ + sli_zigbee_stack_tick_callback(); + sli_zigbee_app_framework_tick_callback(); + sli_zigbee_ncp_tick_callback(); +} + +void sl_internal_app_process_action(void) +{ +} + +void sl_iostream_init_instances(void) +{ + sl_iostream_debug_init(); + sl_iostream_usart_init_instances(); + sl_iostream_vuart_init(); +} + diff --git a/silabs_examples/credentials/device/brd4187c/autogen/sl_event_handler.h b/silabs_examples/credentials/device/brd4187c/autogen/sl_event_handler.h new file mode 100644 index 00000000000000..9ac6fcdb22b424 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/sl_event_handler.h @@ -0,0 +1,15 @@ +#ifndef SL_EVENT_HANDLER_H +#define SL_EVENT_HANDLER_H + +void sl_platform_init(void); +void sl_driver_init(void); +void sl_service_init(void); +void sl_stack_init(void); +void sl_internal_app_init(void); +void sl_platform_process_action(void); +void sl_service_process_action(void); +void sl_stack_process_action(void); +void sl_internal_app_process_action(void); +void sl_iostream_init_instances(void); + +#endif // SL_EVENT_HANDLER_H diff --git a/silabs_examples/credentials/device/brd4187c/autogen/sl_iostream_handles.c b/silabs_examples/credentials/device/brd4187c/autogen/sl_iostream_handles.c new file mode 100644 index 00000000000000..f59e9ca1e44fff --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/sl_iostream_handles.c @@ -0,0 +1,31 @@ +#include "sl_iostream.h" +#include "sl_iostream_handles.h" +#include "string.h" + +const sl_iostream_instance_info_t *sl_iostream_instances_info[] = { + + &sl_iostream_instance_debug_info, + + &sl_iostream_instance_vcom_info, + + &sl_iostream_instance_vuart_info, + +}; + +const uint32_t sl_iostream_instances_count = sizeof(sl_iostream_instances_info) / sizeof(sl_iostream_instances_info[0]); + +/***************************************************************************//** + * Get iostream instance handle for a given name + * + * @return Instance handle if it exist, NULL otherwise. + ******************************************************************************/ +sl_iostream_t *sl_iostream_get_handle(char *name) +{ + for (uint32_t i = 0; i < sl_iostream_instances_count; i++) { + if (strcmp(sl_iostream_instances_info[i]->name, name) == 0) { + return sl_iostream_instances_info[i]->handle; + } + } + + return NULL; +} \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4187c/autogen/sl_iostream_handles.h b/silabs_examples/credentials/device/brd4187c/autogen/sl_iostream_handles.h new file mode 100644 index 00000000000000..a26f04340f8671 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/sl_iostream_handles.h @@ -0,0 +1,22 @@ +#ifndef SL_IOSTREAM_HANDLES_H +#define SL_IOSTREAM_HANDLES_H +#include "sl_iostream.h" +#include "sl_iostream_debug.h" +#include "sl_iostream_init_usart_instances.h" +#include "sl_iostream_vuart.h" + + +#ifdef __cplusplus +extern "C" { +#endif + +extern const sl_iostream_instance_info_t *sl_iostream_instances_info[]; +extern const uint32_t sl_iostream_instances_count; + +sl_iostream_t *sl_iostream_get_handle(char *name); + +#ifdef __cplusplus +} +#endif + +#endif // SL_IOSTREAM_HANDLES_H diff --git a/silabs_examples/credentials/device/brd4187c/autogen/sl_iostream_init_instances.h b/silabs_examples/credentials/device/brd4187c/autogen/sl_iostream_init_instances.h new file mode 100644 index 00000000000000..c092c37eec59a0 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/sl_iostream_init_instances.h @@ -0,0 +1,16 @@ +#ifndef SL_IOSTREAM_INIT_INSTANCES_H +#define SL_IOSTREAM_INIT_INSTANCES_H + +#include "sl_iostream.h" +#ifdef __cplusplus +extern "C" { +#endif + +// Initialize iostream component(s) / instance(s) +void sl_iostream_init_instances(void); + +#ifdef __cplusplus +} +#endif + +#endif // SL_IOSTREAM_INIT_INSTANCES_H \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4187c/autogen/sl_iostream_init_usart_instances.c b/silabs_examples/credentials/device/brd4187c/autogen/sl_iostream_init_usart_instances.c new file mode 100644 index 00000000000000..ec04146afbe6dd --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/sl_iostream_init_usart_instances.c @@ -0,0 +1,203 @@ +#if defined(SL_COMPONENT_CATALOG_PRESENT) +#include "sl_component_catalog.h" +#endif +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) +#include "sl_power_manager.h" +#endif +#include "em_device.h" +#include "sl_iostream.h" +#include "sl_iostream_uart.h" +#include "sl_iostream_usart.h" +// Include instance config + #include "sl_iostream_usart_vcom_config.h" + +// MACROs for generating name and IRQ handler function +#define SL_IOSTREAM_USART_CONCAT_PASTER(first, second, third) first ## second ## third + + + + +#define SL_IOSTREAM_USART_TX_IRQ_NUMBER(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(USART, periph_nbr, _TX_IRQn) +#define SL_IOSTREAM_USART_RX_IRQ_NUMBER(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(USART, periph_nbr, _RX_IRQn) +#define SL_IOSTREAM_USART_TX_IRQ_HANDLER(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(USART, periph_nbr, _TX_IRQHandler) +#define SL_IOSTREAM_USART_RX_IRQ_HANDLER(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(USART, periph_nbr, _RX_IRQHandler) + +#define SL_IOSTREAM_USART_CLOCK_REF(periph_nbr) SL_IOSTREAM_USART_CONCAT_PASTER(cmuClock_, USART, periph_nbr) + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && defined(_SILICON_LABS_32B_SERIES_2) +// EM Events +#define SLEEP_EM_EVENT_MASK ( SL_POWER_MANAGER_EVENT_TRANSITION_ENTERING_EM2 \ + | SL_POWER_MANAGER_EVENT_TRANSITION_LEAVING_EM2 \ + | SL_POWER_MANAGER_EVENT_TRANSITION_ENTERING_EM3 \ + | SL_POWER_MANAGER_EVENT_TRANSITION_LEAVING_EM3) +#endif + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && defined(_SILICON_LABS_32B_SERIES_2) +static void events_handler(sl_power_manager_em_t from, + sl_power_manager_em_t to); +static sl_power_manager_em_transition_event_info_t events_info = +{ + .event_mask = SLEEP_EM_EVENT_MASK, + .on_event = events_handler, +}; +static sl_power_manager_em_transition_event_handle_t events_handle; +#endif + + +sl_status_t sl_iostream_usart_init_vcom(void); + + +// Instance(s) handle and context variable +static sl_iostream_uart_t sl_iostream_vcom; +sl_iostream_t *sl_iostream_vcom_handle = &sl_iostream_vcom.stream; +sl_iostream_uart_t *sl_iostream_uart_vcom_handle = &sl_iostream_vcom; +static sl_iostream_usart_context_t context_vcom; +static uint8_t rx_buffer_vcom[SL_IOSTREAM_USART_VCOM_RX_BUFFER_SIZE]; +sl_iostream_instance_info_t sl_iostream_instance_vcom_info = { + .handle = &sl_iostream_vcom.stream, + .name = "vcom", + .type = SL_IOSTREAM_TYPE_UART, + .periph_id = SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO, + .init = sl_iostream_usart_init_vcom, +}; + + + +sl_status_t sl_iostream_usart_init_vcom(void) +{ + sl_status_t status; + USART_InitAsync_TypeDef init_vcom = USART_INITASYNC_DEFAULT; + init_vcom.baudrate = SL_IOSTREAM_USART_VCOM_BAUDRATE; + init_vcom.parity = SL_IOSTREAM_USART_VCOM_PARITY; + init_vcom.stopbits = SL_IOSTREAM_USART_VCOM_STOP_BITS; +#if (_SILICON_LABS_32B_SERIES > 0) +#if (SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE != uartFlowControlSoftware) + init_vcom.hwFlowControl = SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE; +#else + init_vcom.hwFlowControl = usartHwFlowControlNone; +#endif +#endif + sl_iostream_usart_config_t config_vcom = { + .usart = SL_IOSTREAM_USART_VCOM_PERIPHERAL, + .clock = SL_IOSTREAM_USART_CLOCK_REF(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO), + .tx_port = SL_IOSTREAM_USART_VCOM_TX_PORT, + .tx_pin = SL_IOSTREAM_USART_VCOM_TX_PIN, + .rx_port = SL_IOSTREAM_USART_VCOM_RX_PORT, + .rx_pin = SL_IOSTREAM_USART_VCOM_RX_PIN, +#if (_SILICON_LABS_32B_SERIES > 0) +#if defined(SL_IOSTREAM_USART_VCOM_CTS_PORT) + .cts_port = SL_IOSTREAM_USART_VCOM_CTS_PORT, + .cts_pin = SL_IOSTREAM_USART_VCOM_CTS_PIN, +#endif +#if defined(SL_IOSTREAM_USART_VCOM_RTS_PORT) + .rts_port = SL_IOSTREAM_USART_VCOM_RTS_PORT, + .rts_pin = SL_IOSTREAM_USART_VCOM_RTS_PIN, +#endif +#endif +#if defined(GPIO_USART_ROUTEEN_TXPEN) + .usart_index = SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO, +#elif defined(USART_ROUTEPEN_RXPEN) + .usart_tx_location = SL_IOSTREAM_USART_VCOM_TX_LOC, + .usart_rx_location = SL_IOSTREAM_USART_VCOM_RX_LOC, +#if defined(SL_IOSTREAM_USART_VCOM_CTS_PORT) + .usart_cts_location = SL_IOSTREAM_USART_VCOM_CTS_LOC, +#endif +#if defined(SL_IOSTREAM_USART_VCOM_RTS_PORT) + .usart_rts_location = SL_IOSTREAM_USART_VCOM_RTS_LOC, +#endif +#else + .usart_location = SL_IOSTREAM_USART_VCOM_ROUTE_LOC, +#endif + }; + sl_iostream_uart_config_t uart_config_vcom = { + .tx_irq_number = SL_IOSTREAM_USART_TX_IRQ_NUMBER(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO), + .rx_irq_number = SL_IOSTREAM_USART_RX_IRQ_NUMBER(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO), + .rx_buffer = rx_buffer_vcom, + .rx_buffer_length = SL_IOSTREAM_USART_VCOM_RX_BUFFER_SIZE, + .lf_to_crlf = SL_IOSTREAM_USART_VCOM_CONVERT_BY_DEFAULT_LF_TO_CRLF, + .rx_when_sleeping = SL_IOSTREAM_USART_VCOM_RESTRICT_ENERGY_MODE_TO_ALLOW_RECEPTION, +#if defined(SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE) +#if (SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE == uartFlowControlSoftware) + .sw_flow_control = true, +#else + .sw_flow_control = false, +#endif +#else + .sw_flow_control = false, +#endif + }; + // Instantiate usart instance + status = sl_iostream_usart_init(&sl_iostream_vcom, + &uart_config_vcom, + &init_vcom, + &config_vcom, + &context_vcom); + EFM_ASSERT(status == SL_STATUS_OK); + + return status; +} + + + +void sl_iostream_usart_init_instances(void) +{ +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && defined(_SILICON_LABS_32B_SERIES_2) + // Enable power manager notifications + sl_power_manager_subscribe_em_transition_event(&events_handle, &events_info); +#endif + + // Instantiate usart instance(s) + + sl_iostream_usart_init_vcom(); + +} + + +// VCOM IRQ Handler +void SL_IOSTREAM_USART_TX_IRQ_HANDLER(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO)(void) +{ + sl_iostream_usart_irq_handler(sl_iostream_vcom.stream.context); +} + +void SL_IOSTREAM_USART_RX_IRQ_HANDLER(SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO)(void) +{ + sl_iostream_usart_irq_handler(sl_iostream_vcom.stream.context); +} + + + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && !defined(SL_CATALOG_KERNEL_PRESENT) + +sl_power_manager_on_isr_exit_t sl_iostream_usart_vcom_sleep_on_isr_exit(void) +{ + return sl_iostream_uart_sleep_on_isr_exit(&sl_iostream_vcom); +} + +#endif + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) && defined(_SILICON_LABS_32B_SERIES_2) +static void events_handler(sl_power_manager_em_t from, + sl_power_manager_em_t to) +{ + uint32_t out; + if (((from == SL_POWER_MANAGER_EM2) + || (from == SL_POWER_MANAGER_EM3)) + && ((to == SL_POWER_MANAGER_EM1) + || (to == SL_POWER_MANAGER_EM0))) { + + // Wake the USART Tx pin back up + out = GPIO_PinOutGet(SL_IOSTREAM_USART_VCOM_TX_PORT, SL_IOSTREAM_USART_VCOM_TX_PIN); + GPIO_PinModeSet(SL_IOSTREAM_USART_VCOM_TX_PORT, SL_IOSTREAM_USART_VCOM_TX_PIN, gpioModePushPull, out); + + } else if (((to == SL_POWER_MANAGER_EM2) + || (to == SL_POWER_MANAGER_EM3)) + && ((from == SL_POWER_MANAGER_EM1) + || (from == SL_POWER_MANAGER_EM0))) { + + // Sleep the USART Tx pin on series 2 devices to save energy + out = GPIO_PinOutGet(SL_IOSTREAM_USART_VCOM_TX_PORT, SL_IOSTREAM_USART_VCOM_TX_PIN); + GPIO_PinModeSet(SL_IOSTREAM_USART_VCOM_TX_PORT, SL_IOSTREAM_USART_VCOM_TX_PIN, gpioModeDisabled, out); + + } +} +#endif \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4187c/autogen/sl_iostream_init_usart_instances.h b/silabs_examples/credentials/device/brd4187c/autogen/sl_iostream_init_usart_instances.h new file mode 100644 index 00000000000000..2301dbe600fab7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/sl_iostream_init_usart_instances.h @@ -0,0 +1,34 @@ +#ifndef SL_IOSTREAM_INIT_USART_INSTANCES_H +#define SL_IOSTREAM_INIT_USART_INSTANCES_H +#if defined(SL_COMPONENT_CATALOG_PRESENT) +#include "sl_component_catalog.h" +#endif +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) +#include "sl_power_manager.h" +#endif +#include "sl_iostream.h" +#include "sl_iostream_uart.h" +#ifdef __cplusplus +extern "C" { +#endif + + +extern sl_iostream_t *sl_iostream_vcom_handle; +extern sl_iostream_uart_t *sl_iostream_uart_vcom_handle; +extern sl_iostream_instance_info_t sl_iostream_instance_vcom_info; + + +// Initialize only iostream usart instance(s) +void sl_iostream_usart_init_instances(void); + +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) + +sl_power_manager_on_isr_exit_t sl_iostream_usart_vcom_sleep_on_isr_exit(void); + +#endif + +#ifdef __cplusplus +} +#endif + +#endif // SL_IOSTREAM_INIT_USART_INSTANCES_H \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4187c/autogen/sl_legacy_bootloader_device_info.h b/silabs_examples/credentials/device/brd4187c/autogen/sl_legacy_bootloader_device_info.h new file mode 100644 index 00000000000000..db917a78b849ac --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/sl_legacy_bootloader_device_info.h @@ -0,0 +1,41 @@ +/***************************************************************************//** + * @file + * @brief Legacy Bootloader Interface Device Info + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +enum { + SL_FAMILY_UNKNOWN = 0, + SL_FAMILY_MGM1 = 1, + SL_FAMILY_BGM1 = 1, + SL_FAMILY_EFR32MG1P = 16, + SL_FAMILY_EFR32MG1B = 17, + SL_FAMILY_EFR32MG1V = 18, + SL_FAMILY_EFR32BG1P = 19, + SL_FAMILY_EFR32BG1B = 20, + SL_FAMILY_EFR32BG1V = 21, + SL_FAMILY_EFR32FG1P = 25, + SL_FAMILY_EFR32FG1V = 27, +}; + +// CORTEXM3 +#define SL_PLAT 4U + +// CORTEXM3_EFR32 +#define SL_MICRO 24U + +#define SL_FAMILY SL_FAMILY_EFR32MG24 + +// PHY_RAIL +#define SL_PHY 15U diff --git a/silabs_examples/credentials/device/brd4187c/autogen/sl_mbedtls_config_transform_autogen.h b/silabs_examples/credentials/device/brd4187c/autogen/sl_mbedtls_config_transform_autogen.h new file mode 100644 index 00000000000000..2e0dcae5c15f29 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/sl_mbedtls_config_transform_autogen.h @@ -0,0 +1,44 @@ +// This is an autogenerated config file, any changes to this file will be overwritten + +#ifndef SL_MBEDTLS_CONFIG_TRANSFORM_AUTOGEN_H +#define SL_MBEDTLS_CONFIG_TRANSFORM_AUTOGEN_H + +// Convert CMSIS Markup config defines to mbedTLS specific config defines + +// Allow undefining the specified cipher suites +#if defined(SLI_MBEDTLS_AUTODETECT_CIPHERSUITES) +#undef MBEDTLS_SSL_CIPHERSUITES +#endif + +#if SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH + #define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH +#endif +#if SL_MBEDTLS_SSL_EXPORT_KEYS + #define MBEDTLS_SSL_EXPORT_KEYS +#endif +#if SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED + #define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED +#endif +#if SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED + #define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED +#endif +#if SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED + #define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED +#endif +#if SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED + #define MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED +#endif + +#if !defined(MBEDTLS_SSL_IN_CONTENT_LEN) + #define MBEDTLS_SSL_IN_CONTENT_LEN SL_MBEDTLS_SSL_IN_CONTENT_LEN +#endif + +#if !defined(MBEDTLS_SSL_OUT_CONTENT_LEN) + #define MBEDTLS_SSL_OUT_CONTENT_LEN SL_MBEDTLS_SSL_OUT_CONTENT_LEN +#endif + + + + + +#endif // SL_MBEDTLS_CONFIG_TRANSFORM_AUTOGEN_H diff --git a/silabs_examples/credentials/device/brd4187c/autogen/sl_power_manager_handler.c b/silabs_examples/credentials/device/brd4187c/autogen/sl_power_manager_handler.c new file mode 100644 index 00000000000000..6f5254fbcf984e --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/sl_power_manager_handler.c @@ -0,0 +1,126 @@ +#include +#include "em_core.h" +#include "sl_power_manager.h" +#include "sl_sleeptimer.h" +#include "sl_iostream_init_usart_instances.h" +#include "sl_legacy_hal_integration_hooks.h" +#include "zigbee_app_framework_common.h" +#include "serial-interface.h" + +/***************************************************************************//** + * Check if the MCU can sleep at that time. This function is called when the system + * is about to go sleeping, with the interrupts disabled. It allows the software to + * cancel going to sleep in case of a last-minute event occurred (window between the + * function call and interrupt disable). + * + * @return True, if the system can go to sleep. + * False, otherwise. + * + * @note This function is called with the interrupt disabled and it MUST NOT be + * re-enabled. + ******************************************************************************/ +__WEAK bool app_is_ok_to_sleep(void) +{ + return true; +} + +/***************************************************************************//** + * Check if the MCU can sleep after an interrupt. This function is called after an + * interrupt occured and was processed. It allows the power manger to know if it must + * go back to sleep or wakeup. + * + * @return SL_POWER_MANAGER_IGNORE, if the module did not trigger an ISR and it + * won't to contribute to the decision. + * + * SL_POWER_MANAGER_SLEEP, The module was the one that caused the system + * wakeup and the system SHOULD go back to sleep. + * + * SL_POWER_MANAGER_WAKEUP, The module was the one that caused the system + * wakeup and the system MUST NOT go back to sleep. + * + * @note This function must not have any side effects. It is not guaranteed to be + * called for every ISR. If a prior hook function requires to wakeup, such + * as a wireless stack, the application hook function won't be called. + ******************************************************************************/ +__WEAK sl_power_manager_on_isr_exit_t app_sleep_on_isr_exit(void) +{ + return SL_POWER_MANAGER_IGNORE; +} + +/***************************************************************************//** + * Mandatory callback that allows to cancel sleeping action. This function is called + * when the system is about to go sleeping, with the interrupts disabled. It allows + * the software to cancel going to sleep in case of a last-minute event occurred + * (window between the function call and interrupt disable). + ******************************************************************************/ +bool sl_power_manager_is_ok_to_sleep(void) +{ + bool ok_to_sleep = true; + if (sl_legacy_hal_is_ok_to_sleep() == false) { + ok_to_sleep = false; + } + if (sli_zigbee_app_framework_is_ok_to_sleep() == false) { + ok_to_sleep = false; + } + if (serialOkToSleep() == false) { + ok_to_sleep = false; + } + // Application hook + if (app_is_ok_to_sleep() == false) { + ok_to_sleep = false; + } + + return ok_to_sleep; +} + +/***************************************************************************//** + * Mandatory callback that must validate if the MCU can sleep after having + * processed an interrupt when the system was sleeping. + ******************************************************************************/ +bool sl_power_manager_sleep_on_isr_exit(void) +{ + sl_power_manager_on_isr_exit_t answer; + bool sleep = false; + bool force_wakeup = false; + + // This function allow the power manager to return into sleep, if the latest timer + // to expire was power manager's internal one used to restore HFXO on time or + // the HFXO interrupt. + // Most of the time we want to get back to sleep until the next event occurs. + sleep = sl_power_manager_is_latest_wakeup_internal(); + + answer = sl_iostream_usart_vcom_sleep_on_isr_exit(); + if (answer == SL_POWER_MANAGER_WAKEUP) { + force_wakeup = true; + } else if (answer == SL_POWER_MANAGER_SLEEP) { + sleep = true; + } + + answer = sl_legacy_hal_sleep_on_isr_exit(); + if (answer == SL_POWER_MANAGER_WAKEUP) { + force_wakeup = true; + } else if (answer == SL_POWER_MANAGER_SLEEP) { + sleep = true; + } + + answer = sli_zigbee_sleep_on_isr_exit(); + if (answer == SL_POWER_MANAGER_WAKEUP) { + force_wakeup = true; + } else if (answer == SL_POWER_MANAGER_SLEEP) { + sleep = true; + } + + // Application hook + answer = app_sleep_on_isr_exit(); + if (answer == SL_POWER_MANAGER_WAKEUP) { + force_wakeup = true; + } else if (answer == SL_POWER_MANAGER_SLEEP) { + sleep = true; + } + + if (force_wakeup) { + sleep = false; + } + + return sleep; +} \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4187c/autogen/sl_rail_util_ieee802154_phy_select.c b/silabs_examples/credentials/device/brd4187c/autogen/sl_rail_util_ieee802154_phy_select.c new file mode 100644 index 00000000000000..a7632d665dbdfa --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/sl_rail_util_ieee802154_phy_select.c @@ -0,0 +1,261 @@ +/***************************************************************************//** + * @file + * @brief + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#if defined(SL_COMPONENT_CATALOG_PRESENT) + #include "sl_component_catalog.h" +#endif + +#ifdef SL_CATALOG_RAIL_MULTIPLEXER_PRESENT +#include "sl_rail_mux_rename.h" +#endif + +#include "rail.h" +#include "rail_ieee802154.h" +#include "sl_rail_util_ieee802154_phy_select.h" +#include "sl_status.h" +#include "em_assert.h" +extern void sl_mac_lower_mac_update_active_radio_config(void); + +extern RAIL_Handle_t emPhyRailHandle; + +#define RUNTIME_PHY_SELECT (0) + +#define RUNTIME_PHY_SELECT_STACK_SUPPORT (0 || SL_ZIGBEE_PHY_SELECT_STACK_SUPPORT) + +static sl_rail_util_ieee802154_radio_config_t active_radio_config = SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT; + + +static sl_rail_util_ieee802154_radio_config_t sl_rail_util_get_desired_radio_config(void) +{ + return (SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT + ); +} + +#if RUNTIME_PHY_SELECT +#if !RUNTIME_PHY_SELECT_STACK_SUPPORT +#error "Run time PHY select is currently unsupported on the selected stack." +#endif + +static bool stackInitialized = false; + +static uint8_t blockPhySwitch = 0U; +#define BLOCK_SWITCH_RX 0x01u +#define BLOCK_SWITCH_TX 0x02u +#define setBlockPhySwitch(dir, boolval) \ + do { \ + if (boolval) { \ + blockPhySwitch |= (dir); \ + } else { \ + blockPhySwitch &= (uint8_t) ~(dir); \ + } \ + } while (false) + +static bool checkPhySwitch(void) +{ + sl_rail_util_ieee802154_radio_config_t desired_radio_config = sl_rail_util_get_desired_radio_config(); + if ((active_radio_config != desired_radio_config) + && (blockPhySwitch == 0U) + && stackInitialized + && (emPhyRailHandle != NULL)) { + //@TODO: Ascertain radio is OFF, RXWARM, or RXSEARCH only. + active_radio_config = desired_radio_config; + sl_mac_lower_mac_update_active_radio_config(); + return true; + } + return false; +} + +#else//!RUNTIME_PHY_SELECT + +#define setBlockPhySwitch(dir, boolval) /*no-op*/ +#define checkPhySwitch() (false) + +#endif//RUNTIME_PHY_SELECT + +sl_rail_util_ieee802154_radio_config_t sl_rail_util_ieee802154_get_active_radio_config(void) +{ + return active_radio_config; +} + +#define ANT_DIV_PHY_DEFAULT_ENABLED (SL_RAIL_UTIL_ANTENNA_RX_DEFAULT_MODE != SL_RAIL_UTIL_ANTENNA_MODE_DISABLED) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || !ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || !SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || !SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || !SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || !SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || !ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || !SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || !SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) + +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_FEM_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || !ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || !SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_FEM_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || !SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_FEM_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || !ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) +#define SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_FEM_SUPPORTED \ + ((SL_RAIL_UTIL_ANT_DIV_RX_RUNTIME_PHY_SELECT || ANT_DIV_PHY_DEFAULT_ENABLED) \ + && (SL_RAIL_UTIL_COEX_RUNTIME_PHY_SELECT || SL_RAIL_UTIL_COEX_PHY_ENABLED) \ + && (SL_FEM_UTIL_RUNTIME_PHY_SELECT || SL_FEM_UTIL_OPTIMIZED_PHY_ENABLE)) + +RAIL_Status_t sl_rail_util_ieee802154_config_radio(RAIL_Handle_t railHandle) +{ + // Establish the proper radio config + RAIL_Status_t status = RAIL_STATUS_INVALID_STATE; + sl_rail_util_ieee802154_radio_config_t desired_radio_config = sl_rail_util_get_desired_radio_config(); + switch (desired_radio_config) { +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT: + status = RAIL_IEEE802154_Config2p4GHzRadio(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_DEFAULT_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV: + status = RAIL_IEEE802154_Config2p4GHzRadioAntDiv(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX: + status = RAIL_IEEE802154_Config2p4GHzRadioCoex(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX: + status = RAIL_IEEE802154_Config2p4GHzRadioAntDivCoex(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_FEM_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_FEM: + status = RAIL_IEEE802154_Config2p4GHzRadioFem(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_FEM_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_FEM_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_FEM: + status = RAIL_IEEE802154_Config2p4GHzRadioAntDivFem(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_FEM_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_FEM_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_FEM: + status = RAIL_IEEE802154_Config2p4GHzRadioCoexFem(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_COEX_FEM_SUPPORTED +#if SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_FEM_SUPPORTED + case SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_FEM: + status = RAIL_IEEE802154_Config2p4GHzRadioAntDivCoexFem(railHandle); + break; +#endif //SL_RAIL_UTIL_IEEE802154_RADIO_CONFIG_2P4_ANTDIV_COEX_FEM_SUPPORTED + default: + break; + } + EFM_ASSERT(status == RAIL_STATUS_NO_ERROR); + active_radio_config = desired_radio_config; + + return status; +} + +#if RUNTIME_PHY_SELECT +sl_rail_util_ieee802154_stack_status_t sl_rail_util_ieee802154_phy_select_on_event( + sl_rail_util_ieee802154_stack_event_t stack_event, + uint32_t supplement) +{ + bool isReceivingFrame = false; + + switch (stack_event) { + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TICK: + stackInitialized = true; + (void) checkPhySwitch(); + break; + + // RX events: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_STARTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACCEPTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACKING: + setBlockPhySwitch(BLOCK_SWITCH_RX, true); + break; + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_CORRUPTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACK_BLOCKED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACK_ABORTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_FILTERED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ENDED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_ACK_SENT: + isReceivingFrame = (bool) supplement; + // FALLTHROUGH + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_RX_IDLED: + setBlockPhySwitch(BLOCK_SWITCH_RX, isReceivingFrame); + break; + + // TX events: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_PENDED_MAC: + break; + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_PENDED_PHY: + setBlockPhySwitch(BLOCK_SWITCH_TX, true); + break; + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_CCA_SOON: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_CCA_BUSY: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_STARTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ACK_WAITING: + break; + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ACK_RECEIVED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ACK_TIMEDOUT: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_BLOCKED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ABORTED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_ENDED: + case SL_RAIL_UTIL_IEEE802154_STACK_EVENT_TX_IDLED: + setBlockPhySwitch(BLOCK_SWITCH_TX, false); + break; + default: + break; + } + return SL_RAIL_UTIL_IEEE802154_STACK_STATUS_SUCCESS; +} +#else +sl_rail_util_ieee802154_stack_status_t sl_rail_util_ieee802154_phy_select_on_event( + sl_rail_util_ieee802154_stack_event_t stack_event, + uint32_t supplement) +{ + (void)stack_event; + (void)supplement; + return SL_RAIL_UTIL_IEEE802154_STACK_STATUS_UNSUPPORTED; +} +#endif //RUNTIME_PHY_SELECT diff --git a/silabs_examples/credentials/device/brd4187c/autogen/sl_rail_util_ieee802154_stack_event.c b/silabs_examples/credentials/device/brd4187c/autogen/sl_rail_util_ieee802154_stack_event.c new file mode 100644 index 00000000000000..4d98c10bee1fc5 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/sl_rail_util_ieee802154_stack_event.c @@ -0,0 +1,44 @@ +/***************************************************************************//** + * @file + * @brief + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#include "rail.h" +#include "rail_ieee802154.h" +#include "sl_status.h" +#include "sl_rail_util_ieee802154_stack_event.h" +#include "em_assert.h" +#include "sl_rail_util_ieee802154_phy_select.h" + +sl_rail_util_ieee802154_stack_status_t sl_rail_util_ieee802154_on_event( + sl_rail_util_ieee802154_stack_event_t stack_event, + uint32_t supplement) +{ + sl_rail_util_ieee802154_phy_select_on_event(stack_event, supplement); + return SL_RAIL_UTIL_IEEE802154_STACK_STATUS_SUCCESS; +} diff --git a/silabs_examples/credentials/device/brd4187c/autogen/sl_simple_led_instances.c b/silabs_examples/credentials/device/brd4187c/autogen/sl_simple_led_instances.c new file mode 100644 index 00000000000000..a194fc048f3e4f --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/sl_simple_led_instances.c @@ -0,0 +1,44 @@ +/***************************************************************************//** + * @file + * @brief LED Driver Instances + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include "sl_simple_led.h" +#include "em_gpio.h" +#include "sl_simple_led_led0_config.h" + +sl_simple_led_context_t simple_led0_context = { + .port = SL_SIMPLE_LED_LED0_PORT, + .pin = SL_SIMPLE_LED_LED0_PIN, + .polarity = SL_SIMPLE_LED_LED0_POLARITY, +}; + +const sl_led_t sl_led_led0 = { + .context = &simple_led0_context, + .init = sl_simple_led_init, + .turn_on = sl_simple_led_turn_on, + .turn_off = sl_simple_led_turn_off, + .toggle = sl_simple_led_toggle, + .get_state = sl_simple_led_get_state, +}; + +const sl_led_t *sl_simple_led_array[] = { + &sl_led_led0 +}; + +void sl_simple_led_init_instances(void) +{ + sl_led_init(&sl_led_led0); +} diff --git a/silabs_examples/credentials/device/brd4187c/autogen/sl_simple_led_instances.h b/silabs_examples/credentials/device/brd4187c/autogen/sl_simple_led_instances.h new file mode 100644 index 00000000000000..61f19773c9b2ed --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/sl_simple_led_instances.h @@ -0,0 +1,32 @@ +/***************************************************************************//** + * @file + * @brief LED Driver Instances + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_SIMPLE_LED_INSTANCES_H +#define SL_SIMPLE_LED_INSTANCES_H + +#include "sl_simple_led.h" + +extern const sl_led_t sl_led_led0; + +extern const sl_led_t *sl_simple_led_array[]; + +#define SL_SIMPLE_LED_COUNT 1 +#define SL_SIMPLE_LED_INSTANCE(n) (sl_simple_led_array[n]) + +void sl_simple_led_init_instances(void); + +#endif // SL_SIMPLE_LED_INIT_H diff --git a/silabs_examples/credentials/device/brd4187c/autogen/zigbee_af_token_headers.h b/silabs_examples/credentials/device/brd4187c/autogen/zigbee_af_token_headers.h new file mode 100644 index 00000000000000..fcc5d6e16da805 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/zigbee_af_token_headers.h @@ -0,0 +1,25 @@ +/***************************************************************************//** + * @file zigbee_af_token_headers.h + * @brief ZCL callback dispatcher declarations. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +/* + * This file includes token headers for the components selected in the project + */ +// +// *** Generated file. Do not edit! *** +// + +#include "app/xncp/xncp-token.h" + diff --git a/silabs_examples/credentials/device/brd4187c/autogen/zigbee_common_callback_dispatcher.c b/silabs_examples/credentials/device/brd4187c/autogen/zigbee_common_callback_dispatcher.c new file mode 100644 index 00000000000000..7aebdfc9d5db83 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/zigbee_common_callback_dispatcher.c @@ -0,0 +1,38 @@ +/***************************************************************************//** + * @file zigbee_common_callback_dispatcher.c + * @brief ZigBee common dispatcher definitions. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "zigbee_app_framework_common.h" +#include "zigbee_common_callback_dispatcher.h" + +void emAfEventInit(void) +{ +} + +void emAfLocalDataInit(void) +{ +} + +void emAfInitDone(void) +{ +} + + +void emAfTick(void) +{ +} diff --git a/silabs_examples/credentials/device/brd4187c/autogen/zigbee_common_callback_dispatcher.h b/silabs_examples/credentials/device/brd4187c/autogen/zigbee_common_callback_dispatcher.h new file mode 100644 index 00000000000000..f6872e2aa7e0f4 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/zigbee_common_callback_dispatcher.h @@ -0,0 +1,34 @@ +/***************************************************************************//** + * @file zigbee_common_callback_dispatcher.h + * @brief ZigBee common dispatcher declarations. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_ZIGBEE_COMMON_CALLBACK_DISPATCHER_H +#define SL_ZIGBEE_COMMON_CALLBACK_DISPATCHER_H + +#include PLATFORM_HEADER +#include "stack/include/ember.h" + +// Event Init +void emAfEventInit(void); +// Local data Init +void emAfLocalDataInit(void); +// Init done +void emAfInitDone(void); + +// Tick +void emAfTick(void); + +#endif // SL_ZIGBEE_COMMON_CALLBACK_DISPATCHER_H \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4187c/autogen/zigbee_ncp_callback_dispatcher.c b/silabs_examples/credentials/device/brd4187c/autogen/zigbee_ncp_callback_dispatcher.c new file mode 100644 index 00000000000000..3c7a890eff4610 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/zigbee_ncp_callback_dispatcher.c @@ -0,0 +1,93 @@ +/***************************************************************************//** + * @file zigbee_ncp_callback_dispatcher.c + * @brief ZigBee ncp dispatcher definitions. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "zigbee_ncp_callback_dispatcher.h" + + +void emberAfEzspGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context) +{ + emberAfPluginEzspGetValueCommandCallback(context); + emberAfPluginEzspZigbeeProGetValueCommandCallback(context); + emberAfPluginEzspSecurityGetValueCommandCallback(context); +} + + +void emberAfEzspGetExtendedValueCommandCallback(EmberAfPluginEzspValueCommandContext* context) +{ + emberAfPluginEzspZigbeeProGetExtendedValueCommandCallback(context); +} + + +void emberAfEzspSetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context) +{ + emberAfPluginEzspSetValueCommandCallback(context); + emberAfPluginEzspZigbeeProSetValueCommandCallback(context); + emberAfPluginEzspSecuritySetValueCommandCallback(context); +} + + +void emberAfEzspGetPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context) +{ + emberAfPluginEzspBindingPolicyCommandCallback(context); + emberAfPluginEzspPolicyCommandCallback(context); + emberAfPluginEzspZigbeeProPolicyCommandCallback(context); + emberAfPluginEzspSecurityPolicyCommandCallback(context); +} + + +void emberAfEzspSetPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context) +{ + emberAfPluginEzspBindingPolicyCommandCallback(context); + emberAfPluginEzspPolicyCommandCallback(context); + emberAfPluginEzspZigbeeProPolicyCommandCallback(context); + emberAfPluginEzspSecurityPolicyCommandCallback(context); +} + + +void emberAfEzspGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context) +{ + emberAfPluginEzspBindingConfigurationValueCommandCallback(context); + emberAfPluginEzspGetConfigurationValueCommandCallback(context); + emberAfPluginEzspSourceRouteGetConfigurationValueCommandCallback(context); + emberAfPluginEzspZigbeeProGetConfigurationValueCommandCallback(context); + emberAfPluginEzspSecurityGetConfigurationValueCommandCallback(context); +} + + +void emberAfEzspSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context) +{ + emberAfPluginEzspBindingConfigurationValueCommandCallback(context); + emberAfPluginEzspSetConfigurationValueCommandCallback(context); + emberAfPluginEzspSourceRouteSetConfigurationValueCommandCallback(context); + emberAfPluginEzspZigbeeProSetConfigurationValueCommandCallback(context); + emberAfPluginEzspSecuritySetConfigurationValueCommandCallback(context); +} + + +void emberAfPluginEzspModifyMemoryAllocationCallback(void) +{ + emInitializeBindingTable(); + emberAfPluginEzspZigbeeProModifyMemoryAllocationCallback(); +} + + +void emberAfPluginEzspPermitHostToNcpFrameCallback(bool* permit) +{ + emberAfPluginEzspBindingPermitHostToNcpFrameCallback(permit); +} diff --git a/silabs_examples/credentials/device/brd4187c/autogen/zigbee_ncp_callback_dispatcher.h b/silabs_examples/credentials/device/brd4187c/autogen/zigbee_ncp_callback_dispatcher.h new file mode 100644 index 00000000000000..753af5d201f7e1 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/zigbee_ncp_callback_dispatcher.h @@ -0,0 +1,88 @@ +/***************************************************************************//** + * @file zigbee_ncp_callback_dispatcher.h + * @brief ZigBee ncp dispatcher declarations. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_ZIGBEE_NCP_CALLBACK_DISPATCHER_H +#define SL_ZIGBEE_NCP_CALLBACK_DISPATCHER_H + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "app/em260/command-context.h" // EmberAfPluginEzspValueCommandContext + + +// get_value +void emberAfEzspGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspZigbeeProGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspSecurityGetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); + + + + +void emberAfEzspGetExtendedValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspZigbeeProGetExtendedValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); + + + +void emberAfEzspSetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspSetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspZigbeeProSetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); +void emberAfPluginEzspSecuritySetValueCommandCallback(EmberAfPluginEzspValueCommandContext* context); + + + +void emberAfEzspGetPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspBindingPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspZigbeeProPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspSecurityPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); + + + +void emberAfEzspSetPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspBindingPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspZigbeeProPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); +void emberAfPluginEzspSecurityPolicyCommandCallback(EmberAfPluginEzspPolicyCommandContext* context); + + +void emberAfEzspGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspBindingConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSourceRouteGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspZigbeeProGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSecurityGetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); + + + +void emberAfEzspSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspBindingConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSourceRouteSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspZigbeeProSetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); +void emberAfPluginEzspSecuritySetConfigurationValueCommandCallback(EmberAfPluginEzspConfigurationValueCommandContext* context); + + +void emberAfPluginEzspModifyMemoryAllocationCallback(void); +void emInitializeBindingTable(void); +void emberAfPluginEzspZigbeeProModifyMemoryAllocationCallback(void); + + + +void emberAfPluginEzspPermitHostToNcpFrameCallback(bool* permit); +void emberAfPluginEzspBindingPermitHostToNcpFrameCallback(bool* permit); + +#endif // SL_ZIGBEE_NCP_CALLBACK_DISPATCHER_H \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4187c/autogen/zigbee_stack_callback_dispatcher.c b/silabs_examples/credentials/device/brd4187c/autogen/zigbee_stack_callback_dispatcher.c new file mode 100644 index 00000000000000..2b9b8483a566ec --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/zigbee_stack_callback_dispatcher.c @@ -0,0 +1,993 @@ +/*****************************************************************************/ +/** + * Copyright 2020 Silicon Laboratories, Inc. + * + *****************************************************************************/ +// +// *** Generated file. Do not edit! *** +// + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "zigbee_stack_callback_dispatcher.h" + + + +#ifdef EZSP_HOST +// Incoming Message +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // The link quality + uint8_t lastHopLqi, + // The energy level + int8_t lastHopRssi, + // The sender of the message. + EmberNodeId sender, + // The index of a binding that matches the message + // matching binding. + uint8_t bindingIndex, + // The index of the entry in the address table + uint8_t addressIndex, + // The message length + uint8_t messageLength, + // message + uint8_t *messageContents) +{ +(void) type; +(void) apsFrame; +(void) lastHopLqi; +(void) lastHopRssi; +(void) sender; +(void) bindingIndex; +(void) addressIndex; +(void) messageLength; +(void) messageContents; + +emAfIncomingMessageCallback(type, apsFrame, lastHopLqi, lastHopRssi, sender, bindingIndex, addressIndex, messageLength, messageContents); +} +#else // !EZSP_HOST +// Incoming Message +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message) +{ +(void)type; +(void)apsFrame; +(void)message; + +emAfIncomingMessageCallback(type, apsFrame, message); +} +#endif // EZSP_HOST + + +// Message Sent +#ifdef EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // Message tag + uint8_t messageTag, + // Message delivery status + EmberStatus status, + // The length of the messageContents + uint8_t messageLength, + // Message data + uint8_t *messageContents) +{ +(void)type; +(void)indexOrDestination; +(void)apsFrame; +(void)messageTag; +(void)status; +(void) messageLength; +(void) messageContents; + +emAfMessageSentCallback(type, indexOrDestination, apsFrame, messageTag, status, messageLength, messageContents); +} +#else // !EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message, + // Message delivery status + EmberStatus status) +{ +(void)type; +(void)indexOrDestination; +(void)apsFrame; +(void)message; +(void)status; + +emAfMessageSentCallback(type, indexOrDestination, apsFrame, message, status); +} +#endif // EZSP_HOST + + + +// Trust Center Join +void emAfTrustCenterJoin( + // Joining node's id + EmberNodeId newNodeId, + // Joining node's Eui64 + EmberEUI64 newNodeEui64, + // Status + EmberDeviceUpdate status, + // Parent Id of the joining node + EmberNodeId parentOfNewNode) +{ +(void)newNodeId; +(void)newNodeEui64; +(void)status; +(void)parentOfNewNode; + +} + + + +// Mark Buffers +void emAfMarkBuffers(void) +{ + +emAfMarkBuffersCallback(); +} + + + +// Packet Handoff Incoming +void emAfPacketHandoffIncoming( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +{ +(void)packetType; +(void)packetBuffer; +(void)index; +(void)data; + +} + + + +// Packet Handoff Outgoing +void emAfPacketHandoffOutgoing( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +{ +(void)packetType; +(void)packetBuffer; +(void)index; +(void)data; + +} + + + +// Incoming Mfg Test Message +void emAfIncomingMfgTestMessage( + uint8_t messageType, + uint8_t dataLength, + // Return: + uint8_t *data) +{ +(void)messageType; +(void)dataLength; +(void)data; + +} + + + +// Override Incoming Route Record +void emAfOverrideIncomingRouteRecord( + EmberNodeId source, + EmberEUI64 sourceEui, + uint8_t relayCount, + EmberMessageBuffer header, + uint8_t relayListIndex, + // Return: + bool *consumed) +{ +(void)source; +(void)sourceEui; +(void)relayCount; +(void)header; +(void)relayListIndex; +(void)consumed; + +emAfOverrideIncomingRouteRecordCallback(source, sourceEui, relayCount, header, relayListIndex, consumed); +} + + + +// Override Append Source Route +// Return: Added bytes +void emAfOverrideAppendSourceRoute( + EmberNodeId destination, + // Return: + EmberMessageBuffer *header, + // Return: + bool *consumed) +{ +(void)destination; +(void)header; +(void)consumed; + +} + + + +// Override Furthur Index For Source Route Add Entry +void emAfOverrideFurthurIndexForSourceRouteAddEntry( + EmberNodeId id, + // Return: + uint8_t *furtherIndex) +{ +(void)id; +(void)furtherIndex; + +emAfOverrideFurthurIndexForSourceRouteAddEntryCallback(id, furtherIndex); +} + + + +// Stack Status +void emAfStackStatus( + // Stack status + EmberStatus status) +{ +(void)status; + +emAfStackStatusCallback(status); +} + + + +// Energy Scan Result +void emAfEnergyScanResult( + // The 802.15.4 channel number that was scanned. + uint8_t channel, + // The maximum RSSI value found on the channel. + int8_t maxRssiValue) +{ +(void)channel; +(void)maxRssiValue; + +emAfEnergyScanResultCallback(channel, maxRssiValue); +} + + + +// Network Found +void emAfNetworkFound( + // The parameters associated with the network found. + EmberZigbeeNetwork *networkFound, + // The link quality indication of the network found. + uint8_t lqi, + // The received signal strength indication of the network found. + int8_t rssi) +{ +(void)networkFound; +(void)lqi; +(void)rssi; + +emAfNetworkFoundCallback(networkFound, lqi, rssi); +} + + + +// Scan Complete +void emAfScanComplete( + // The channel on which the current error occurred. Undefined for the case + // of EMBER_SUCCESS. + uint8_t channel, + // The error condition that occurred on the current channel. Value will be + // EMBER_SUCCESS when the scan has completed. + EmberStatus status) +{ +(void)channel; +(void)status; + +emAfScanCompleteCallback(channel, status); +} + + + +// Unused Pan Id Found +void emAfUnusedPanIdFound( + // The unused panID which has been found. + EmberPanId panId, + // The channel that the unused panID was found on. + uint8_t channel) +{ +(void)panId; +(void)channel; + +emAfUnusedPanIdFoundCallback(panId, channel); +} + + + +// Child Join +#ifdef EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining, + // The node ID of the child. + EmberNodeId childId, + // The EUI64 of the child. + EmberEUI64 childEui64, + // The node type of the child. + EmberNodeType childType) +{ +(void)index; +(void)joining; +(void)childId; +(void)childEui64; +(void)childType; + +emAfChildJoinCallback(index, joining, childId, childEui64, childType); +} +#else // !EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining) +{ +(void)index; +(void)joining; + +emAfChildJoinCallback(index, joining); +} +#endif // EZSP_HOST + + + +// Duty Cycle +#ifdef EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state, + // The total number of connected end devices that are being monitored for + // duty cycle. + uint8_t totalDevices, + // Consumed duty cycles of end devices that are being monitored. The first + // entry always be the local stack's nodeId, and thus the total aggregate + // duty cycle for the device. + EmberPerDeviceDutyCycle *arrayOfDeviceDutyCycles) +{ +(void)channelPage; +(void)channel; +(void)state; +(void)totalDevices; +(void)arrayOfDeviceDutyCycles; + +emAfDutyCycleCallback(channelPage, channel, state, totalDevices, arrayOfDeviceDutyCycles); +} +#else // !EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state) +{ +(void)channelPage; +(void)channel; +(void)state; + +emAfDutyCycleCallback(channelPage, channel, state); +} +#endif // EZSP_HOST + + + +// Remote Set Binding +// Return: ZDO response status. +void emAfRemoteSetBinding( + // Return: The contents of the binding entry. + EmberBindingTableEntry *entry) +{ +(void)entry; + +} + + + +// Remote Delete Binding +// Return: ZDO response status +void emAfRemoteDeleteBinding( + // The index of the binding whose deletion was requested. + uint8_t index) +{ +(void)index; + +} + + + +// Poll Complete +void emAfPollComplete( + // An EmberStatus value: EMBER_SUCCESS - Data was received in response to + // the poll. EMBER_MAC_NO_DATA - No data was pending. + // EMBER_DELIVERY_FAILED - The poll message could not be sent. + // EMBER_MAC_NO_ACK_RECEIVED - The poll message was sent but not + // acknowledged by the parent. + EmberStatus status) +{ +(void)status; + +emAfPollCompleteCallback(status); +} + + + +// Poll +void emAfPoll( + // The node ID of the child that is requesting data. + EmberNodeId childId, + // True if transmit expected, false otherwise. + bool transmitExpected) +{ +(void)childId; +(void)transmitExpected; + +emAfPollCallback(childId, transmitExpected); +} + + + +// Debug +void emAfDebug( + // debug message + EmberMessageBuffer message) +{ +(void)message; + +} + + + +// Incoming Many To One Route Request +void emAfIncomingManyToOneRouteRequest( + // The short id of the concentrator. + EmberNodeId source, + // The EUI64 of the concentrator. + EmberEUI64 longId, + // The path cost to the concentrator. The cost may decrease as additional + // route request packets for this discovery arrive, but the callback is + // made only once. + uint8_t cost) +{ +(void)source; +(void)longId; +(void)cost; + +emAfIncomingManyToOneRouteRequestCallback(source, longId, cost); +} + + + +// Incoming Route Error +void emAfIncomingRouteError( + // EMBER_SOURCE_ROUTE_FAILURE or EMBER_MANY_TO_ONE_ROUTE_FAILURE. + EmberStatus status, + // The short id of the remote node. + EmberNodeId target) +{ +(void)status; +(void)target; + +emAfIncomingRouteErrorCallback(status, target); +} + + + +// Incoming Network Status +void emAfIncomingNetworkStatus( + // One byte over-the-air error code from network status message + uint8_t errorCode, + // The short ID of the remote node + EmberNodeId target) +{ +(void)errorCode; +(void)target; + +emAfIncomingNetworkStatusCallback(errorCode, target); +} + + + +// Incoming Route Record +void emAfIncomingRouteRecord( + // The source of the route record. + EmberNodeId source, + // The EUI64 of the source. + EmberEUI64 sourceEui, + // The number of relays in relayList. + uint8_t relayCount, + // Header. + EmberMessageBuffer header, + // The relay List Index. + uint8_t relayListIndex) +{ +(void)source; +(void)sourceEui; +(void)relayCount; +(void)header; +(void)relayListIndex; + +emAfIncomingRouteRecordCallback(source, sourceEui, relayCount, header, relayListIndex); +} + + + +// Id Conflict +void emAfIdConflict( + // The short id for which a conflict was detected + EmberNodeId conflictingId) +{ +(void)conflictingId; + +emAfIdConflictCallback(conflictingId); +} + + + +// Mac Passthrough Message +void emAfMacPassthroughMessage( + // The type of MAC passthrough message received. + EmberMacPassthroughType messageType, + // The raw message that was received. + EmberMessageBuffer message) +{ +(void)messageType; +(void)message; + +emAfMacPassthroughMessageCallback(messageType, message); +} + + + +// Stack Token Changed +void emAfStackTokenChanged( + // The address of the stack token that has changed. + uint16_t tokenAddress) +{ +(void)tokenAddress; + +emAfStackTokenChangedCallback(tokenAddress); +} + + + +// Timer +void emAfTimer( + // Which timer generated the callback (0 or 1). + uint8_t timerId) +{ +(void)timerId; + +} + + + +// Counter Rollover +void emAfCounterRollover( + // Type of Counter + EmberCounterType type) +{ +(void)type; + +emAfCounterRolloverCallback(type); +} + + + +// Raw Transmit Complete +void emAfRawTransmitComplete( + // message + EmberMessageBuffer message, + // EMBER_SUCCESS if the transmission was successful, or + // EMBER_DELIVERY_FAILED if not + EmberStatus status) +{ +(void)message; +(void)status; + +emAfRawTransmitCompleteCallback(message, status); +} + + + +// Switch Network Key +void emAfSwitchNetworkKey( + // The sequence number of the new network key. + uint8_t sequenceNumber) +{ +(void)sequenceNumber; + +emAfSwitchNetworkKeyCallback(sequenceNumber); +} + + + +// Zigbee Key Establishment +void emAfZigbeeKeyEstablishment( + // This is the IEEE address of the partner that the device successfully + // established a key with. This value is all zeros on a failure. + EmberEUI64 partner, + // This is the status indicating what was established or why the key + // establishment failed. + EmberKeyStatus status) +{ +(void)partner; +(void)status; + +emAfZigbeeKeyEstablishmentCallback(partner, status); +} + + + +// Generate Cbke Keys +void emAfGenerateCbkeKeys( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKeyData *ephemeralPublicKey) +{ +(void)status; +(void)ephemeralPublicKey; + +} + + + +// Calculate Smacs +void emAfCalculateSmacs( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +{ +(void)status; +(void)initiatorSmac; +(void)responderSmac; + +} + + + +// Dsa Sign +void emAfDsaSign( + // The result of the DSA signing operation. + EmberStatus status, + // The message and attached which includes the original message and the + // appended signature. + EmberMessageBuffer signedMessage) +{ +(void)status; +(void)signedMessage; + +} + + + +// Dsa Verify +void emAfDsaVerify( + // The result of the DSA verification operation. + EmberStatus status) +{ +(void)status; + +} + + + +// Incoming Bootload Message +void emAfIncomingBootloadMessage( + // The EUI64 of the sending node. + EmberEUI64 longId, + // The bootload message that was sent. + EmberMessageBuffer message) +{ +(void)longId; +(void)message; + +emAfIncomingBootloadMessageCallback(longId, message); +} + + + +// Bootload Transmit Complete +void emAfBootloadTransmitComplete( + // The bootload message that was sent. + EmberMessageBuffer message, + // An EmberStatus value of EMBER_SUCCESS if an ACK was received from the + // destination or EMBER_DELIVERY_FAILED if no ACK was received. + EmberStatus status) +{ +(void)message; +(void)status; + +emAfBootloadTransmitCompleteCallback(message, status); +} + + + +// Zll Network Found +void emAfZllNetworkFound( + // Return: Information about the network. + const EmberZllNetwork *networkInfo, + // Return: Device specific information. + const EmberZllDeviceInfoRecord *deviceInfo) +{ +(void)networkInfo; +(void)deviceInfo; + +} + + + +// Zll Scan Complete +void emAfZllScanComplete( + // Status of the operation. + EmberStatus status) +{ +(void)status; + +} + + + +// Zll Address Assignment +void emAfZllAddressAssignment( + // Return: Address assignment information. + const EmberZllAddressAssignment *addressInfo) +{ +(void)addressInfo; + +} + + + +// Zll Touch Link Target +void emAfZllTouchLinkTarget( + // Return: Information about the network. + const EmberZllNetwork *networkInfo) +{ +(void)networkInfo; + +} + + + +// Mac Filter Match Message +void emAfMacFilterMatchMessage( + // Return: macFilterMatchStruct. + const EmberMacFilterMatchStruct *macFilterMatchStruct) +{ +(void)macFilterMatchStruct; + +emAfMacFilterMatchMessageCallback(macFilterMatchStruct); +} + + + +// D Gp Sent +void emAfDGpSent( + // An EmberStatus value indicating success or the reason for failure. + EmberStatus status, + // The handle of the GPDF. + uint8_t gpepHandle) +{ +(void)status; +(void)gpepHandle; + +emAfDGpSentCallback(status, gpepHandle); +} + + + +// Pan Id Conflict +// Return: An EmberStatus value indicating success or the reason for failure. +void emAfPanIdConflict( + // Number of conflict reports + int8_t conflictCount) +{ +(void)conflictCount; + +} + + + +// Orphan Notification +void emAfOrphanNotification( + // The 8 byte EUI64 of the sender. + EmberEUI64 longId) +{ +(void)longId; + +} + + + +// Counter +void emAfCounter( + // Type of Counter + EmberCounterType type, + // Counter Info and value + EmberCounterInfo Info) +{ +(void)type; +(void)Info; + +emAfCounterCallback(type, Info); +} + + + +// Mac Passthrough Filter +// Return: True if mac passthrough filter was matched. False otherwise. +void emAfMacPassthroughFilter( + // Return: Mac Header of the matched messgae + uint8_t *macHeader) +{ +(void)macHeader; + +} + + + +// Generate Cbke Keys Handler283k1 +void emAfGenerateCbkeKeysHandler283k1( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKey283k1Data *ephemeralPublicKey) +{ +(void)status; +(void)ephemeralPublicKey; + +} + + + +// Calculate Smacs Handler283k1 +void emAfCalculateSmacsHandler283k1( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +{ +(void)status; +(void)initiatorSmac; +(void)responderSmac; + +} + + + +// Gpep Incoming Message +void emAfGpepIncomingMessage( + // The status of the GPDF receive. + EmberStatus status, + // The gpdLink value of the received GPDF. + uint8_t gpdLink, + // The GPDF sequence number. + uint8_t sequenceNumber, + // The address of the source GPD. + EmberGpAddress *addr, + // The security level of the received GPDF. + EmberGpSecurityLevel gpdfSecurityLevel, + // The securityKeyType used to decrypt/authenticate the incoming GPDF. + EmberGpKeyType gpdfSecurityKeyType, + // Whether the incoming GPDF had the auto-commissioning bit set. + bool autoCommissioning, + // Bidirectional information represented in bitfields, where bit0 holds + // the rxAfterTx of incoming gpdf and bit1 holds if tx queue is available + // for outgoing gpdf. + uint8_t bidirectionalInfo, + // The security frame counter of the incoming GDPF. + uint32_t gpdSecurityFrameCounter, + // The gpdCommandId of the incoming GPDF. + uint8_t gpdCommandId, + // The received MIC of the GPDF. + uint32_t mic, + // The proxy table index of the corresponding proxy table entry to the + // incoming GPDF. + uint8_t proxyTableIndex, + // The length of the GPD command payload. + uint8_t gpdCommandPayloadLength, + // The GPD command payload. + uint8_t *gpdCommandPayload) +{ +(void)status; +(void)gpdLink; +(void)sequenceNumber; +(void)addr; +(void)gpdfSecurityLevel; +(void)gpdfSecurityKeyType; +(void)autoCommissioning; +(void)bidirectionalInfo; +(void)gpdSecurityFrameCounter; +(void)gpdCommandId; +(void)mic; +(void)proxyTableIndex; +(void)gpdCommandPayloadLength; +(void)gpdCommandPayload; + +emAfGpepIncomingMessageCallback(status, gpdLink, sequenceNumber, addr, gpdfSecurityLevel, gpdfSecurityKeyType, autoCommissioning, bidirectionalInfo, gpdSecurityFrameCounter, gpdCommandId, mic, proxyTableIndex, gpdCommandPayloadLength, gpdCommandPayload); +} + + + +// Rtos Idle +// Return: True or False. +void emAfRtosIdle( + // Return: Idle time duration + uint32_t *idleTimeMs) +{ +(void)idleTimeMs; + +} + + + +// Rtos Stack Wakeup Isr +void emAfRtosStackWakeupIsr(void) +{ + +} + + + +// Radio Needs Calibrating +void emAfRadioNeedsCalibrating(void) +{ + +} + + + +// Scan Error +void emAfScanError( + // The error status of a scan + EmberStatus status) +{ +(void)status; + +} + diff --git a/silabs_examples/credentials/device/brd4187c/autogen/zigbee_stack_callback_dispatcher.h b/silabs_examples/credentials/device/brd4187c/autogen/zigbee_stack_callback_dispatcher.h new file mode 100644 index 00000000000000..cf2d271a277f10 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/autogen/zigbee_stack_callback_dispatcher.h @@ -0,0 +1,876 @@ +/*****************************************************************************/ +/** + * Copyright 2020 Silicon Laboratories, Inc. + * + *****************************************************************************/ +// +// *** Generated file. Do not edit! *** +// + +#include PLATFORM_HEADER +#ifdef EZSP_HOST +#include "stack/include/ember-types.h" +#else +#include "stack/include/ember.h" +#endif // EZSP_HOST + + + +// Incoming Message +#ifdef EZSP_HOST +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // The link quality + uint8_t lastHopLqi, + // The energy level + int8_t lastHopRssi, + // The sender of the message. + EmberNodeId sender, + // The index of a binding that matches the message + // matching binding. + uint8_t bindingIndex, + // The index of the entry in the address table + uint8_t addressIndex, + // The message length + uint8_t messageLength, + // message + uint8_t *messageContents) +; +void emAfIncomingMessageCallback( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // The link quality + uint8_t lastHopLqi, + // The energy level + int8_t lastHopRssi, + // The sender of the message. + EmberNodeId sender, + // The index of a binding that matches the message + // matching binding. + uint8_t bindingIndex, + // The index of the entry in the address table + uint8_t addressIndex, + // The message length + uint8_t messageLength, + // message + uint8_t *messageContents) +; +#else // !EZSP_HOST +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message) +; +void emAfIncomingMessageCallback( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message) +; +#endif // EZSP_HOST + + +// Message Sent +#ifdef EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // Message tag + uint8_t messageTag, + // Message delivery status + EmberStatus status, + // The length of the messageContents + uint8_t messageLength, + // Message data + uint8_t *messageContents) +; +void emAfMessageSentCallback( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // Message tag + uint8_t messageTag, + // Message delivery status + EmberStatus status, + // The length of the messageContents + uint8_t messageLength, + // Message data + uint8_t *messageContents) +; +#else // !EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message, + // Message delivery status + EmberStatus status) +; +void emAfMessageSentCallback( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message, + // Message delivery status + EmberStatus status) +; +#endif // EZSP_HOST + + + +// Trust Center Join +void emAfTrustCenterJoin( + // Joining node's id + EmberNodeId newNodeId, + // Joining node's Eui64 + EmberEUI64 newNodeEui64, + // Status + EmberDeviceUpdate status, + // Parent Id of the joining node + EmberNodeId parentOfNewNode) +; + +// Mark Buffers +void emAfMarkBuffers(void) +; +void emAfMarkBuffersCallback(void) +; + +// Packet Handoff Incoming +void emAfPacketHandoffIncoming( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +; + +// Packet Handoff Outgoing +void emAfPacketHandoffOutgoing( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +; + +// Incoming Mfg Test Message +void emAfIncomingMfgTestMessage( + uint8_t messageType, + uint8_t dataLength, + // Return: + uint8_t *data) +; + +// Override Incoming Route Record +void emAfOverrideIncomingRouteRecord( + EmberNodeId source, + EmberEUI64 sourceEui, + uint8_t relayCount, + EmberMessageBuffer header, + uint8_t relayListIndex, + // Return: + bool *consumed) +; +void emAfOverrideIncomingRouteRecordCallback( + EmberNodeId source, + EmberEUI64 sourceEui, + uint8_t relayCount, + EmberMessageBuffer header, + uint8_t relayListIndex, + // Return: + bool *consumed) +; + +// Override Append Source Route +// Return: Added bytes +void emAfOverrideAppendSourceRoute( + EmberNodeId destination, + // Return: + EmberMessageBuffer *header, + // Return: + bool *consumed) +; + +// Override Furthur Index For Source Route Add Entry +void emAfOverrideFurthurIndexForSourceRouteAddEntry( + EmberNodeId id, + // Return: + uint8_t *furtherIndex) +; +void emAfOverrideFurthurIndexForSourceRouteAddEntryCallback( + EmberNodeId id, + // Return: + uint8_t *furtherIndex) +; + +// Stack Status +void emAfStackStatus( + // Stack status + EmberStatus status) +; +void emAfStackStatusCallback( + // Stack status + EmberStatus status) +; + +// Energy Scan Result +void emAfEnergyScanResult( + // The 802.15.4 channel number that was scanned. + uint8_t channel, + // The maximum RSSI value found on the channel. + int8_t maxRssiValue) +; +void emAfEnergyScanResultCallback( + // The 802.15.4 channel number that was scanned. + uint8_t channel, + // The maximum RSSI value found on the channel. + int8_t maxRssiValue) +; + +// Network Found +void emAfNetworkFound( + // The parameters associated with the network found. + EmberZigbeeNetwork *networkFound, + // The link quality indication of the network found. + uint8_t lqi, + // The received signal strength indication of the network found. + int8_t rssi) +; +void emAfNetworkFoundCallback( + // The parameters associated with the network found. + EmberZigbeeNetwork *networkFound, + // The link quality indication of the network found. + uint8_t lqi, + // The received signal strength indication of the network found. + int8_t rssi) +; + +// Scan Complete +void emAfScanComplete( + // The channel on which the current error occurred. Undefined for the case + // of EMBER_SUCCESS. + uint8_t channel, + // The error condition that occurred on the current channel. Value will be + // EMBER_SUCCESS when the scan has completed. + EmberStatus status) +; +void emAfScanCompleteCallback( + // The channel on which the current error occurred. Undefined for the case + // of EMBER_SUCCESS. + uint8_t channel, + // The error condition that occurred on the current channel. Value will be + // EMBER_SUCCESS when the scan has completed. + EmberStatus status) +; + +// Unused Pan Id Found +void emAfUnusedPanIdFound( + // The unused panID which has been found. + EmberPanId panId, + // The channel that the unused panID was found on. + uint8_t channel) +; +void emAfUnusedPanIdFoundCallback( + // The unused panID which has been found. + EmberPanId panId, + // The channel that the unused panID was found on. + uint8_t channel) +; + +// Child Join +#ifdef EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining, + // The node ID of the child. + EmberNodeId childId, + // The EUI64 of the child. + EmberEUI64 childEui64, + // The node type of the child. + EmberNodeType childType) +; +void emAfChildJoinCallback( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining, + // The node ID of the child. + EmberNodeId childId, + // The EUI64 of the child. + EmberEUI64 childEui64, + // The node type of the child. + EmberNodeType childType) +; +#else // !EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining) +; +void emAfChildJoinCallback( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining) +; +#endif // EZSP_HOST + + + +// Duty Cycle +#ifdef EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state, + // The total number of connected end devices that are being monitored for + // duty cycle. + uint8_t totalDevices, + // Consumed duty cycles of end devices that are being monitored. The first + // entry always be the local stack's nodeId, and thus the total aggregate + // duty cycle for the device. + EmberPerDeviceDutyCycle *arrayOfDeviceDutyCycles) +; +void emAfDutyCycleCallback( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state, + // The total number of connected end devices that are being monitored for + // duty cycle. + uint8_t totalDevices, + // Consumed duty cycles of end devices that are being monitored. The first + // entry always be the local stack's nodeId, and thus the total aggregate + // duty cycle for the device. + EmberPerDeviceDutyCycle *arrayOfDeviceDutyCycles) +; +#else // !EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state) +; +void emAfDutyCycleCallback( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state) +; +#endif // EZSP_HOST + + + +// Remote Set Binding +// Return: ZDO response status. +void emAfRemoteSetBinding( + // Return: The contents of the binding entry. + EmberBindingTableEntry *entry) +; + +// Remote Delete Binding +// Return: ZDO response status +void emAfRemoteDeleteBinding( + // The index of the binding whose deletion was requested. + uint8_t index) +; + +// Poll Complete +void emAfPollComplete( + // An EmberStatus value: EMBER_SUCCESS - Data was received in response to + // the poll. EMBER_MAC_NO_DATA - No data was pending. + // EMBER_DELIVERY_FAILED - The poll message could not be sent. + // EMBER_MAC_NO_ACK_RECEIVED - The poll message was sent but not + // acknowledged by the parent. + EmberStatus status) +; +void emAfPollCompleteCallback( + // An EmberStatus value: EMBER_SUCCESS - Data was received in response to + // the poll. EMBER_MAC_NO_DATA - No data was pending. + // EMBER_DELIVERY_FAILED - The poll message could not be sent. + // EMBER_MAC_NO_ACK_RECEIVED - The poll message was sent but not + // acknowledged by the parent. + EmberStatus status) +; + +// Poll +void emAfPoll( + // The node ID of the child that is requesting data. + EmberNodeId childId, + // True if transmit expected, false otherwise. + bool transmitExpected) +; +void emAfPollCallback( + // The node ID of the child that is requesting data. + EmberNodeId childId, + // True if transmit expected, false otherwise. + bool transmitExpected) +; + +// Debug +void emAfDebug( + // debug message + EmberMessageBuffer message) +; + +// Incoming Many To One Route Request +void emAfIncomingManyToOneRouteRequest( + // The short id of the concentrator. + EmberNodeId source, + // The EUI64 of the concentrator. + EmberEUI64 longId, + // The path cost to the concentrator. The cost may decrease as additional + // route request packets for this discovery arrive, but the callback is + // made only once. + uint8_t cost) +; +void emAfIncomingManyToOneRouteRequestCallback( + // The short id of the concentrator. + EmberNodeId source, + // The EUI64 of the concentrator. + EmberEUI64 longId, + // The path cost to the concentrator. The cost may decrease as additional + // route request packets for this discovery arrive, but the callback is + // made only once. + uint8_t cost) +; + +// Incoming Route Error +void emAfIncomingRouteError( + // EMBER_SOURCE_ROUTE_FAILURE or EMBER_MANY_TO_ONE_ROUTE_FAILURE. + EmberStatus status, + // The short id of the remote node. + EmberNodeId target) +; +void emAfIncomingRouteErrorCallback( + // EMBER_SOURCE_ROUTE_FAILURE or EMBER_MANY_TO_ONE_ROUTE_FAILURE. + EmberStatus status, + // The short id of the remote node. + EmberNodeId target) +; + +// Incoming Network Status +void emAfIncomingNetworkStatus( + // One byte over-the-air error code from network status message + uint8_t errorCode, + // The short ID of the remote node + EmberNodeId target) +; +void emAfIncomingNetworkStatusCallback( + // One byte over-the-air error code from network status message + uint8_t errorCode, + // The short ID of the remote node + EmberNodeId target) +; + +// Incoming Route Record +void emAfIncomingRouteRecord( + // The source of the route record. + EmberNodeId source, + // The EUI64 of the source. + EmberEUI64 sourceEui, + // The number of relays in relayList. + uint8_t relayCount, + // Header. + EmberMessageBuffer header, + // The relay List Index. + uint8_t relayListIndex) +; +void emAfIncomingRouteRecordCallback( + // The source of the route record. + EmberNodeId source, + // The EUI64 of the source. + EmberEUI64 sourceEui, + // The number of relays in relayList. + uint8_t relayCount, + // Header. + EmberMessageBuffer header, + // The relay List Index. + uint8_t relayListIndex) +; + +// Id Conflict +void emAfIdConflict( + // The short id for which a conflict was detected + EmberNodeId conflictingId) +; +void emAfIdConflictCallback( + // The short id for which a conflict was detected + EmberNodeId conflictingId) +; + +// Mac Passthrough Message +void emAfMacPassthroughMessage( + // The type of MAC passthrough message received. + EmberMacPassthroughType messageType, + // The raw message that was received. + EmberMessageBuffer message) +; +void emAfMacPassthroughMessageCallback( + // The type of MAC passthrough message received. + EmberMacPassthroughType messageType, + // The raw message that was received. + EmberMessageBuffer message) +; + +// Stack Token Changed +void emAfStackTokenChanged( + // The address of the stack token that has changed. + uint16_t tokenAddress) +; +void emAfStackTokenChangedCallback( + // The address of the stack token that has changed. + uint16_t tokenAddress) +; + +// Timer +void emAfTimer( + // Which timer generated the callback (0 or 1). + uint8_t timerId) +; + +// Counter Rollover +void emAfCounterRollover( + // Type of Counter + EmberCounterType type) +; +void emAfCounterRolloverCallback( + // Type of Counter + EmberCounterType type) +; + +// Raw Transmit Complete +void emAfRawTransmitComplete( + // message + EmberMessageBuffer message, + // EMBER_SUCCESS if the transmission was successful, or + // EMBER_DELIVERY_FAILED if not + EmberStatus status) +; +void emAfRawTransmitCompleteCallback( + // message + EmberMessageBuffer message, + // EMBER_SUCCESS if the transmission was successful, or + // EMBER_DELIVERY_FAILED if not + EmberStatus status) +; + +// Switch Network Key +void emAfSwitchNetworkKey( + // The sequence number of the new network key. + uint8_t sequenceNumber) +; +void emAfSwitchNetworkKeyCallback( + // The sequence number of the new network key. + uint8_t sequenceNumber) +; + +// Zigbee Key Establishment +void emAfZigbeeKeyEstablishment( + // This is the IEEE address of the partner that the device successfully + // established a key with. This value is all zeros on a failure. + EmberEUI64 partner, + // This is the status indicating what was established or why the key + // establishment failed. + EmberKeyStatus status) +; +void emAfZigbeeKeyEstablishmentCallback( + // This is the IEEE address of the partner that the device successfully + // established a key with. This value is all zeros on a failure. + EmberEUI64 partner, + // This is the status indicating what was established or why the key + // establishment failed. + EmberKeyStatus status) +; + +// Generate Cbke Keys +void emAfGenerateCbkeKeys( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKeyData *ephemeralPublicKey) +; + +// Calculate Smacs +void emAfCalculateSmacs( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +; + +// Dsa Sign +void emAfDsaSign( + // The result of the DSA signing operation. + EmberStatus status, + // The message and attached which includes the original message and the + // appended signature. + EmberMessageBuffer signedMessage) +; + +// Dsa Verify +void emAfDsaVerify( + // The result of the DSA verification operation. + EmberStatus status) +; + +// Incoming Bootload Message +void emAfIncomingBootloadMessage( + // The EUI64 of the sending node. + EmberEUI64 longId, + // The bootload message that was sent. + EmberMessageBuffer message) +; +void emAfIncomingBootloadMessageCallback( + // The EUI64 of the sending node. + EmberEUI64 longId, + // The bootload message that was sent. + EmberMessageBuffer message) +; + +// Bootload Transmit Complete +void emAfBootloadTransmitComplete( + // The bootload message that was sent. + EmberMessageBuffer message, + // An EmberStatus value of EMBER_SUCCESS if an ACK was received from the + // destination or EMBER_DELIVERY_FAILED if no ACK was received. + EmberStatus status) +; +void emAfBootloadTransmitCompleteCallback( + // The bootload message that was sent. + EmberMessageBuffer message, + // An EmberStatus value of EMBER_SUCCESS if an ACK was received from the + // destination or EMBER_DELIVERY_FAILED if no ACK was received. + EmberStatus status) +; + +// Zll Network Found +void emAfZllNetworkFound( + // Return: Information about the network. + const EmberZllNetwork *networkInfo, + // Return: Device specific information. + const EmberZllDeviceInfoRecord *deviceInfo) +; + +// Zll Scan Complete +void emAfZllScanComplete( + // Status of the operation. + EmberStatus status) +; + +// Zll Address Assignment +void emAfZllAddressAssignment( + // Return: Address assignment information. + const EmberZllAddressAssignment *addressInfo) +; + +// Zll Touch Link Target +void emAfZllTouchLinkTarget( + // Return: Information about the network. + const EmberZllNetwork *networkInfo) +; + +// Mac Filter Match Message +void emAfMacFilterMatchMessage( + // Return: macFilterMatchStruct. + const EmberMacFilterMatchStruct *macFilterMatchStruct) +; +void emAfMacFilterMatchMessageCallback( + // Return: macFilterMatchStruct. + const EmberMacFilterMatchStruct *macFilterMatchStruct) +; + +// D Gp Sent +void emAfDGpSent( + // An EmberStatus value indicating success or the reason for failure. + EmberStatus status, + // The handle of the GPDF. + uint8_t gpepHandle) +; +void emAfDGpSentCallback( + // An EmberStatus value indicating success or the reason for failure. + EmberStatus status, + // The handle of the GPDF. + uint8_t gpepHandle) +; + +// Pan Id Conflict +// Return: An EmberStatus value indicating success or the reason for failure. +void emAfPanIdConflict( + // Number of conflict reports + int8_t conflictCount) +; + +// Orphan Notification +void emAfOrphanNotification( + // The 8 byte EUI64 of the sender. + EmberEUI64 longId) +; + +// Counter +void emAfCounter( + // Type of Counter + EmberCounterType type, + // Counter Info and value + EmberCounterInfo Info) +; +void emAfCounterCallback( + // Type of Counter + EmberCounterType type, + // Counter Info and value + EmberCounterInfo Info) +; + +// Mac Passthrough Filter +// Return: True if mac passthrough filter was matched. False otherwise. +void emAfMacPassthroughFilter( + // Return: Mac Header of the matched messgae + uint8_t *macHeader) +; + +// Generate Cbke Keys Handler283k1 +void emAfGenerateCbkeKeysHandler283k1( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKey283k1Data *ephemeralPublicKey) +; + +// Calculate Smacs Handler283k1 +void emAfCalculateSmacsHandler283k1( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +; + +// Gpep Incoming Message +void emAfGpepIncomingMessage( + // The status of the GPDF receive. + EmberStatus status, + // The gpdLink value of the received GPDF. + uint8_t gpdLink, + // The GPDF sequence number. + uint8_t sequenceNumber, + // The address of the source GPD. + EmberGpAddress *addr, + // The security level of the received GPDF. + EmberGpSecurityLevel gpdfSecurityLevel, + // The securityKeyType used to decrypt/authenticate the incoming GPDF. + EmberGpKeyType gpdfSecurityKeyType, + // Whether the incoming GPDF had the auto-commissioning bit set. + bool autoCommissioning, + // Bidirectional information represented in bitfields, where bit0 holds + // the rxAfterTx of incoming gpdf and bit1 holds if tx queue is available + // for outgoing gpdf. + uint8_t bidirectionalInfo, + // The security frame counter of the incoming GDPF. + uint32_t gpdSecurityFrameCounter, + // The gpdCommandId of the incoming GPDF. + uint8_t gpdCommandId, + // The received MIC of the GPDF. + uint32_t mic, + // The proxy table index of the corresponding proxy table entry to the + // incoming GPDF. + uint8_t proxyTableIndex, + // The length of the GPD command payload. + uint8_t gpdCommandPayloadLength, + // The GPD command payload. + uint8_t *gpdCommandPayload) +; +void emAfGpepIncomingMessageCallback( + // The status of the GPDF receive. + EmberStatus status, + // The gpdLink value of the received GPDF. + uint8_t gpdLink, + // The GPDF sequence number. + uint8_t sequenceNumber, + // The address of the source GPD. + EmberGpAddress *addr, + // The security level of the received GPDF. + EmberGpSecurityLevel gpdfSecurityLevel, + // The securityKeyType used to decrypt/authenticate the incoming GPDF. + EmberGpKeyType gpdfSecurityKeyType, + // Whether the incoming GPDF had the auto-commissioning bit set. + bool autoCommissioning, + // Bidirectional information represented in bitfields, where bit0 holds + // the rxAfterTx of incoming gpdf and bit1 holds if tx queue is available + // for outgoing gpdf. + uint8_t bidirectionalInfo, + // The security frame counter of the incoming GDPF. + uint32_t gpdSecurityFrameCounter, + // The gpdCommandId of the incoming GPDF. + uint8_t gpdCommandId, + // The received MIC of the GPDF. + uint32_t mic, + // The proxy table index of the corresponding proxy table entry to the + // incoming GPDF. + uint8_t proxyTableIndex, + // The length of the GPD command payload. + uint8_t gpdCommandPayloadLength, + // The GPD command payload. + uint8_t *gpdCommandPayload) +; + +// Rtos Idle +// Return: True or False. +void emAfRtosIdle( + // Return: Idle time duration + uint32_t *idleTimeMs) +; + +// Rtos Stack Wakeup Isr +void emAfRtosStackWakeupIsr(void) +; + +// Radio Needs Calibrating +void emAfRadioNeedsCalibrating(void) +; + +// Scan Error +void emAfScanError( + // The error status of a scan + EmberStatus status) +; diff --git a/silabs_examples/credentials/device/brd4187c/config/SEGGER_RTT_Conf.h b/silabs_examples/credentials/device/brd4187c/config/SEGGER_RTT_Conf.h new file mode 100644 index 00000000000000..ca8df42d9c73a7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/SEGGER_RTT_Conf.h @@ -0,0 +1,417 @@ +/********************************************************************* +* SEGGER Microcontroller GmbH * +* The Embedded Experts * +********************************************************************** +* * +* (c) 1995 - 2021 SEGGER Microcontroller GmbH * +* * +* www.segger.com Support: support@segger.com * +* * +********************************************************************** +* * +* SEGGER SystemView * Real-time application analysis * +* * +********************************************************************** +* * +* All rights reserved. * +* * +* SEGGER strongly recommends to not make any changes * +* to or modify the source code of this software in order to stay * +* compatible with the SystemView and RTT protocol, and J-Link. * +* * +* Redistribution and use in source and binary forms, with or * +* without modification, are permitted provided that the following * +* condition is met: * +* * +* o Redistributions of source code must retain the above copyright * +* notice, this condition and the following disclaimer. * +* * +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND * +* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, * +* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * +* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * +* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR * +* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * +* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * +* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * +* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * +* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * +* DAMAGE. * +* * +********************************************************************** +* * +* SystemView version: 3.30 * +* * +********************************************************************** +---------------------------END-OF-HEADER------------------------------ +File : SEGGER_RTT_Conf.h +Purpose : Implementation of SEGGER real-time transfer (RTT) which + allows real-time communication on targets which support + debugger memory accesses while the CPU is running. +Revision: $Rev: 21386 $ + +*/ + +#ifndef SEGGER_RTT_CONF_H +#define SEGGER_RTT_CONF_H + +#ifdef __IAR_SYSTEMS_ICC__ + #include +#endif + +/********************************************************************* + * + * Defines, configurable + * + ********************************************************************** + */ +#ifndef SEGGER_RTT_MAX_NUM_UP_BUFFERS + #define SEGGER_RTT_MAX_NUM_UP_BUFFERS (3) // Max. number of up-buffers (T->H) available on this target (Default: 3) +#endif + +#ifndef SEGGER_RTT_MAX_NUM_DOWN_BUFFERS + #define SEGGER_RTT_MAX_NUM_DOWN_BUFFERS (3) // Max. number of down-buffers (H->T) available on this target (Default: 3) +#endif + +#ifndef BUFFER_SIZE_UP + #define BUFFER_SIZE_UP (1024) // Size of the buffer for terminal output of target, up to host (Default: 1k) +#endif + +#ifndef BUFFER_SIZE_DOWN + #define BUFFER_SIZE_DOWN (1024) // Size of the buffer for terminal input to target from host (Usually keyboard input) (Default: 16) +#endif + +#ifndef SEGGER_RTT_PRINTF_BUFFER_SIZE + #define SEGGER_RTT_PRINTF_BUFFER_SIZE (64u) // Size of buffer for RTT printf to bulk-send chars via RTT (Default: 64) +#endif + +#ifndef SEGGER_RTT_MODE_DEFAULT + #define SEGGER_RTT_MODE_DEFAULT SEGGER_RTT_MODE_NO_BLOCK_SKIP // Mode for pre-initialized terminal channel (buffer 0) +#endif + +/********************************************************************* + * + * RTT memcpy configuration + * + * memcpy() is good for large amounts of data, + * but the overhead is big for small amounts, which are usually stored via RTT. + * With SEGGER_RTT_MEMCPY_USE_BYTELOOP a simple byte loop can be used instead. + * + * SEGGER_RTT_MEMCPY() can be used to replace standard memcpy() in RTT functions. + * This is may be required with memory access restrictions, + * such as on Cortex-A devices with MMU. + */ +#ifndef SEGGER_RTT_MEMCPY_USE_BYTELOOP + #define SEGGER_RTT_MEMCPY_USE_BYTELOOP 0 // 0: Use memcpy/SEGGER_RTT_MEMCPY, 1: Use a simple byte-loop +#endif +// +// Example definition of SEGGER_RTT_MEMCPY to external memcpy with GCC toolchains and Cortex-A targets +// +//#if ((defined __SES_ARM) || (defined __CROSSWORKS_ARM) || (defined __GNUC__)) && (defined (__ARM_ARCH_7A__)) +// #define SEGGER_RTT_MEMCPY(pDest, pSrc, NumBytes) SEGGER_memcpy((pDest), (pSrc), (NumBytes)) +//#endif + +// +// Target is not allowed to perform other RTT operations while string still has not been stored completely. +// Otherwise we would probably end up with a mixed string in the buffer. +// If using RTT from within interrupts, multiple tasks or multi processors, define the SEGGER_RTT_LOCK() and SEGGER_RTT_UNLOCK() function here. +// +// SEGGER_RTT_MAX_INTERRUPT_PRIORITY can be used in the sample lock routines on Cortex-M3/4. +// Make sure to mask all interrupts which can send RTT data, i.e. generate SystemView events, or cause task switches. +// When high-priority interrupts must not be masked while sending RTT data, SEGGER_RTT_MAX_INTERRUPT_PRIORITY needs to be adjusted accordingly. +// (Higher priority = lower priority number) +// Default value for embOS: 128u +// Default configuration in FreeRTOS: configMAX_SYSCALL_INTERRUPT_PRIORITY: ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) +// In case of doubt mask all interrupts: 1 << (8 - BASEPRI_PRIO_BITS) i.e. 1 << 5 when 3 bits are implemented in NVIC +// or define SEGGER_RTT_LOCK() to completely disable interrupts. +// +#ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) // Interrupt priority to lock on SEGGER_RTT_LOCK on Cortex-M3/4 (Default: 0x20) +#endif + +/********************************************************************* + * + * RTT lock configuration for SEGGER Embedded Studio, + * Rowley CrossStudio and GCC + */ +#if ((defined(__SES_ARM) || defined(__SES_RISCV) || defined(__CROSSWORKS_ARM) || defined(__GNUC__) || defined(__clang__)) && !defined (__CC_ARM) && !defined(WIN32)) + #if (defined(__ARM_ARCH_6M__) || defined(__ARM_ARCH_8M_BASE__)) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("mrs %0, primask \n\t" \ + "movs r1, #1 \n\t" \ + "msr primask, r1 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : \ + : "r1", "cc" \ + ); + + #define SEGGER_RTT_UNLOCK() __asm volatile ("msr primask, %0 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : \ + ); \ + } + #elif (defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_8M_MAIN__)) + #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) + #endif + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("mrs %0, basepri \n\t" \ + "mov r1, %1 \n\t" \ + "msr basepri, r1 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : "i" (SEGGER_RTT_MAX_INTERRUPT_PRIORITY) \ + : "r1", "cc" \ + ); + + #define SEGGER_RTT_UNLOCK() __asm volatile ("msr basepri, %0 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : \ + ); \ + } + + #elif defined(__ARM_ARCH_7A__) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("mrs r1, CPSR \n\t" \ + "mov %0, r1 \n\t" \ + "orr r1, r1, #0xC0 \n\t" \ + "msr CPSR_c, r1 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : \ + : "r1", "cc" \ + ); + + #define SEGGER_RTT_UNLOCK() __asm volatile ("mov r0, %0 \n\t" \ + "mrs r1, CPSR \n\t" \ + "bic r1, r1, #0xC0 \n\t" \ + "and r0, r0, #0xC0 \n\t" \ + "orr r1, r1, r0 \n\t" \ + "msr CPSR_c, r1 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : "r0", "r1", "cc" \ + ); \ + } + #elif defined(__riscv) || defined(__riscv_xlen) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("csrr %0, mstatus \n\t" \ + "csrci mstatus, 8 \n\t" \ + "andi %0, %0, 8 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : \ + : \ + ); + #define SEGGER_RTT_UNLOCK() __asm volatile ("csrr a1, mstatus \n\t" \ + "or %0, %0, a1 \n\t" \ + "csrs mstatus, %0 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : "a1" \ + ); \ + } + #else + #define SEGGER_RTT_LOCK() + #define SEGGER_RTT_UNLOCK() + #endif +#endif + +/********************************************************************* + * + * RTT lock configuration for IAR EWARM + */ +#ifdef __ICCARM__ + #if (defined (__ARM6M__) && (__CORE__ == __ARM6M__)) || \ + (defined (__ARM8M_BASELINE__) && (__CORE__ == __ARM8M_BASELINE__)) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_PRIMASK(); \ + __set_PRIMASK(1); + + #define SEGGER_RTT_UNLOCK() __set_PRIMASK(_SEGGER_RTT__LockState); \ + } + #elif (defined (__ARM7EM__) && (__CORE__ == __ARM7EM__)) || \ + (defined (__ARM7M__) && (__CORE__ == __ARM7M__)) || \ + (defined (__ARM8M_MAINLINE__) && (__CORE__ == __ARM8M_MAINLINE__)) || \ + (defined (__ARM8M_MAINLINE__) && (__CORE__ == __ARM8M_MAINLINE__)) + #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) + #endif + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_BASEPRI(); \ + __set_BASEPRI(SEGGER_RTT_MAX_INTERRUPT_PRIORITY); + + #define SEGGER_RTT_UNLOCK() __set_BASEPRI(_SEGGER_RTT__LockState); \ + } + #elif (defined (__ARM7A__) && (__CORE__ == __ARM7A__)) || \ + (defined (__ARM7R__) && (__CORE__ == __ARM7R__)) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + __asm volatile ("mrs r1, CPSR \n\t" \ + "mov %0, r1 \n\t" \ + "orr r1, r1, #0xC0 \n\t" \ + "msr CPSR_c, r1 \n\t" \ + : "=r" (_SEGGER_RTT__LockState) \ + : \ + : "r1", "cc" \ + ); + #define SEGGER_RTT_UNLOCK() __asm volatile ("mov r0, %0 \n\t" \ + "mrs r1, CPSR \n\t" \ + "bic r1, r1, #0xC0 \n\t" \ + "and r0, r0, #0xC0 \n\t" \ + "orr r1, r1, r0 \n\t" \ + "msr CPSR_c, r1 \n\t" \ + : \ + : "r" (_SEGGER_RTT__LockState) \ + : "r0", "r1", "cc" \ + ); \ + } + #endif +#endif + +/********************************************************************* + * + * RTT lock configuration for IAR RX + */ +#ifdef __ICCRX__ + #define SEGGER_RTT_LOCK() { \ + unsigned long _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_interrupt_state(); \ + __disable_interrupt(); + + #define SEGGER_RTT_UNLOCK() __set_interrupt_state(_SEGGER_RTT__LockState); \ + } +#endif + +/********************************************************************* + * + * RTT lock configuration for IAR RL78 + */ +#ifdef __ICCRL78__ + #define SEGGER_RTT_LOCK() { \ + __istate_t _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_interrupt_state(); \ + __disable_interrupt(); + + #define SEGGER_RTT_UNLOCK() __set_interrupt_state(_SEGGER_RTT__LockState); \ + } +#endif + +/********************************************************************* + * + * RTT lock configuration for KEIL ARM + */ +#ifdef __CC_ARM + #if (defined __TARGET_ARCH_6S_M) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + register unsigned char _SEGGER_RTT__PRIMASK __asm( "primask"); \ + _SEGGER_RTT__LockState = _SEGGER_RTT__PRIMASK; \ + _SEGGER_RTT__PRIMASK = 1u; \ + __schedule_barrier(); + + #define SEGGER_RTT_UNLOCK() _SEGGER_RTT__PRIMASK = _SEGGER_RTT__LockState; \ + __schedule_barrier(); \ + } + #elif (defined(__TARGET_ARCH_7_M) || defined(__TARGET_ARCH_7E_M)) + #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) + #endif + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + register unsigned char BASEPRI __asm("basepri"); \ + _SEGGER_RTT__LockState = BASEPRI; \ + BASEPRI = SEGGER_RTT_MAX_INTERRUPT_PRIORITY; \ + __schedule_barrier(); + + #define SEGGER_RTT_UNLOCK() BASEPRI = _SEGGER_RTT__LockState; \ + __schedule_barrier(); \ + } + #endif +#endif + +/********************************************************************* + * + * RTT lock configuration for TI ARM + */ +#ifdef __TI_ARM__ + #if defined (__TI_ARM_V6M0__) + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = __get_PRIMASK(); \ + __set_PRIMASK(1); + + #define SEGGER_RTT_UNLOCK() __set_PRIMASK(_SEGGER_RTT__LockState); \ + } + #elif (defined (__TI_ARM_V7M3__) || defined (__TI_ARM_V7M4__)) + #ifndef SEGGER_RTT_MAX_INTERRUPT_PRIORITY + #define SEGGER_RTT_MAX_INTERRUPT_PRIORITY (0x20) + #endif + #define SEGGER_RTT_LOCK() { \ + unsigned int _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = _set_interrupt_priority(SEGGER_RTT_MAX_INTERRUPT_PRIORITY); + + #define SEGGER_RTT_UNLOCK() _set_interrupt_priority(_SEGGER_RTT__LockState); \ + } + #endif +#endif + +/********************************************************************* + * + * RTT lock configuration for CCRX + */ +#ifdef __RX + #include + #define SEGGER_RTT_LOCK() { \ + unsigned long _SEGGER_RTT__LockState; \ + _SEGGER_RTT__LockState = get_psw() & 0x010000; \ + clrpsw_i(); + + #define SEGGER_RTT_UNLOCK() set_psw(get_psw() | _SEGGER_RTT__LockState); \ + } +#endif + +/********************************************************************* + * + * RTT lock configuration for embOS Simulation on Windows + * (Can also be used for generic RTT locking with embOS) + */ +#if defined(WIN32) || defined(SEGGER_RTT_LOCK_EMBOS) + +void OS_SIM_EnterCriticalSection(void); +void OS_SIM_LeaveCriticalSection(void); + +#define SEGGER_RTT_LOCK() { \ + OS_SIM_EnterCriticalSection(); + +#define SEGGER_RTT_UNLOCK() OS_SIM_LeaveCriticalSection(); \ + } +#endif + +/********************************************************************* + * + * RTT lock configuration fallback + */ +#ifndef SEGGER_RTT_LOCK + #define SEGGER_RTT_LOCK() // Lock RTT (nestable) (i.e. disable interrupts) +#endif + +#ifndef SEGGER_RTT_UNLOCK + #define SEGGER_RTT_UNLOCK() // Unlock RTT (nestable) (i.e. enable previous interrupt lock state) +#endif + +/********************************************************************* + * + * RTT control block configuration + */ +#define SEGGER_RTT_ALIGNMENT 1024 + +#endif +/*************************** End of file ****************************/ diff --git a/silabs_examples/credentials/device/brd4187c/config/app_properties_config.h b/silabs_examples/credentials/device/brd4187c/config/app_properties_config.h new file mode 100644 index 00000000000000..6a6b976666a554 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/app_properties_config.h @@ -0,0 +1,65 @@ +/***************************************************************************//** + * @file + * @brief Application Properties Header File + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef APP_PROPERTIES_CONFIG_H +#define APP_PROPERTIES_CONFIG_H + +#include "sl_application_type.h" + +// <<< Use Configuration Wizard in Context Menu >>> + +// App Properties settings + +// Type of signature this application is signed with +// Default: APPLICATION_SIGNATURE_NONE(0) +#define SL_APPLICATION_SIGNATURE 0 + +// Location of the signature +// Default: 0xFFFFFFFF +#define SL_APPLICATION_SIGNATURE_LOCATION 0xFFFFFFFF + +// Bitfield representing type of application +#define SL_APPLICATION_TYPE APPLICATION_TYPE + +// Version number for this application +// <0-4294967295:1> +// Default: 1 [0-4294967295] +#define SL_APPLICATION_VERSION 1 + +// Capabilities of this application +// Default: 0 +#define SL_APPLICATION_CAPABILITIES 0 + +//Product ID of the device for which the application is built +#define SL_APPLICATION_PRODUCT_ID { 0 } + +// + +#endif // APP_PROPERTIES_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4187c/config/btl_interface_cfg.h b/silabs_examples/credentials/device/brd4187c/config/btl_interface_cfg.h new file mode 100644 index 00000000000000..eca01575f6cda2 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/btl_interface_cfg.h @@ -0,0 +1,44 @@ +/***************************************************************************//** + * @file + * @brief Configuration header of Bootloader Interface + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +#ifndef BTL_INTERFACE_CFG_H +#define BTL_INTERFACE_CFG_H + +#if !defined(BOOTLOADER_APPLOADER) + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_1) +#include "btl_interface_cfg_s2c1.h" +#endif + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_2) +#include "btl_interface_cfg_s2c2.h" +#endif + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_3) +#include "btl_interface_cfg_s2c3.h" +#endif + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_4) +#include "btl_interface_cfg_s2c4.h" +#endif + +#if defined(_SILICON_LABS_32B_SERIES_2_CONFIG_5) +#define BOOTLOADER_DISABLE_OLD_BOOTLOADER_MITIGATION 1 +#endif + +#endif // !BOOTLOADER_APPLOADER + +#endif // BTL_INTERFACE_CFG_H diff --git a/silabs_examples/credentials/device/brd4187c/config/btl_interface_cfg_s2c4.h b/silabs_examples/credentials/device/brd4187c/config/btl_interface_cfg_s2c4.h new file mode 100644 index 00000000000000..4c80d86f858e9d --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/btl_interface_cfg_s2c4.h @@ -0,0 +1,321 @@ +/***************************************************************************//** + * @file + * @brief Configuration header of Bootloader Interface + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +#ifndef BTL_INTERFACE_CFG_S2C4_H +#define BTL_INTERFACE_CFG_S2C4_H + +// <<< Use Configuration Wizard in Context Menu >>> +// Bootloader Interface Trust Zone Security State Configuration + +// Disable multi tiered fallback logic +// The fault handling logic as well as the USART auto-detection logic will be disabled. +// The re-configuration of SMU will be handled by querying the running bootloader +// for the peripheral list. Querying the peripheral list is supported from the bootloader +// version 2.0.0. Check for the BOOTLOADER_CAPABILITY_PERIPHERAL_LIST capability to +// see if the running bootloader supports querying the peripheral list. +#define BOOTLOADER_DISABLE_OLD_BOOTLOADER_MITIGATION 0 + +// Disable peripheral access fault handling +// The fault handling triggered by an erroneous access of peripherals will be disabled. +// +// This should be disabled iff all the peripherals that are in use by the bootloader +// have been properly configured by the "Manually override security state of peripherals" option. +#define BOOTLOADER_DISABLE_NVM3_FAULT_HANDLING 0 + +// Manually override the security state of peripherals in use by the bootloader +// Default: 0. +// Manually override the security state of peripherals. Choose the peripherals touched +// by the customized code to have a valid secure access state before interacting with the bootloader +// In practice, this means that the chosen peripherals will be available at the secure address, +// which is accessible by the bootloader. Once the application is entered back the secure access state +// is changed back to the original state. +// +// The USART auto-detection logic that detects which, if any, USART is in use by the bootloader +// will be disabled. Make sure to choose the correct USART used by the bootloader. +#define BOOTLOADER_MANUAL_OVERRIDE_SECURITY_STATE 0 +// EMU +// Update secure access state of EMU before calling into bootloader +#define BOOTLOADER_PPUSATD0_EMU 0 + +// CMU +// Update secure access state of CMU before calling into bootloader +#define BOOTLOADER_PPUSATD0_CMU 0 + +// HFRCO0 +// Update secure access state of HFRCO0 before calling into bootloader +#define BOOTLOADER_PPUSATD0_HFRCO0 0 + +// FSRCO +// Update secure access state of FSRCO before calling into bootloader +#define BOOTLOADER_PPUSATD0_FSRCO 0 + +// DPLL0 +// Update secure access state of DPLL0 before calling into bootloader +#define BOOTLOADER_PPUSATD0_DPLL0 0 + +// LFXO +// Update secure access state of LFXO before calling into bootloader +#define BOOTLOADER_PPUSATD0_LFXO 0 + +// LFRCO +// Update secure access state of LFRCO before calling into bootloader +#define BOOTLOADER_PPUSATD0_LFRCO 0 + +// ULFRCO +// Update secure access state of ULFRCO before calling into bootloader +#define BOOTLOADER_PPUSATD0_ULFRCO 0 + +// MSC +// Update secure access state of MSC before calling into bootloader +#define BOOTLOADER_PPUSATD0_MSC 0 + +// ICACHE0 +// Update secure access state of ICACHE0 before calling into bootloader +#define BOOTLOADER_PPUSATD0_ICACHE0 0 + +// PRS +// Update secure access state of PRS before calling into bootloader +#define BOOTLOADER_PPUSATD0_PRS 0 + +// GPIO +// Update secure access state of GPIO before calling into bootloader +#define BOOTLOADER_PPUSATD0_GPIO 0 + +// LDMA +// Update secure access state of LDMA before calling into bootloader +#define BOOTLOADER_PPUSATD0_LDMA 0 + +// LDMAXBAR +// Update secure access state of LDMAXBAR before calling into bootloader +#define BOOTLOADER_PPUSATD0_LDMAXBAR 0 + +// TIMER0 +// Update secure access state of TIMER0 before calling into bootloader +#define BOOTLOADER_PPUSATD0_TIMER0 0 + +// TIMER1 +// Update secure access state of TIMER1 before calling into bootloader +#define BOOTLOADER_PPUSATD0_TIMER1 0 + +// TIMER2 +// Update secure access state of TIMER2 before calling into bootloader +#define BOOTLOADER_PPUSATD0_TIMER2 0 + +// TIMER3 +// Update secure access state of TIMER3 before calling into bootloader +#define BOOTLOADER_PPUSATD0_TIMER3 0 + +// TIMER4 +// Update secure access state of TIMER4 before calling into bootloader +#define BOOTLOADER_PPUSATD0_TIMER4 0 + +// USART0 +// Update secure access state of USART0 before calling into bootloader +#define BOOTLOADER_PPUSATD0_USART0 0 + +// BURTC +// Update secure access state of BURTC before calling into bootloader +#define BOOTLOADER_PPUSATD0_BURTC 0 + +// I2C1 +// Update secure access state of I2C1 before calling into bootloader +#define BOOTLOADER_PPUSATD0_I2C1 0 + +// CHIPTESTCTRL +// Update secure access state of CHIPTESTCTRL before calling into bootloader +#define BOOTLOADER_PPUSATD0_CHIPTESTCTRL 0 + +// SYSCFGCFGNS +// Update secure access state of SYSCFGCFGNS before calling into bootloader +#define BOOTLOADER_PPUSATD0_SYSCFGCFGNS 0 + +// SYSCFG +// Update secure access state of SYSCFG before calling into bootloader +#define BOOTLOADER_PPUSATD0_SYSCFG 0 + +// BURAM +// Update secure access state of BURAM before calling into bootloader +#define BOOTLOADER_PPUSATD0_BURAM 0 + +// GPCRC +// Update secure access state of GPCRC before calling into bootloader +#define BOOTLOADER_PPUSATD0_GPCRC 0 + +// DCDC +// Update secure access state of DCDC before calling into bootloader +#define BOOTLOADER_PPUSATD0_DCDC 0 + +// HOSTMAILBOX +// Update secure access state of HOSTMAILBOX before calling into bootloader +#define BOOTLOADER_PPUSATD0_HOSTMAILBOX 0 + +// EUSART1 +// Update secure access state of EUSART1 before calling into bootloader +#define BOOTLOADER_PPUSATD0_EUSART1 0 + +// SYSRTC +// Update secure access state of SYSRTC before calling into bootloader +#define BOOTLOADER_PPUSATD0_SYSRTC 0 + +// KEYSCAN +// Update secure access state of KEYSCAN before calling into bootloader +#define BOOTLOADER_PPUSATD1_KEYSCAN 0 + +// DMEM +// Update secure access state of DMEM before calling into bootloader +#define BOOTLOADER_PPUSATD1_DMEM 0 + +// RADIOAES +// Update secure access state of RADIOAES before calling into bootloader +#define BOOTLOADER_PPUSATD1_RADIOAES 0 + +// SMU +// Update secure access state of SMU before calling into bootloader +#define BOOTLOADER_PPUSATD1_SMU 0 + +// SMUCFGNS +// Update secure access state of SMUCFGNS before calling into bootloader +#define BOOTLOADER_PPUSATD1_SMUCFGNS 0 + +// LETIMER0 +// Update secure access state of LETIMER0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_LETIMER0 0 + +// IADC0 +// Update secure access state of IADC0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_IADC0 0 + +// ACMP0 +// Update secure access state of ACMP0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_ACMP0 0 + +// ACMP1 +// Update secure access state of ACMP1 before calling into bootloader +#define BOOTLOADER_PPUSATD1_ACMP1 0 + +// AMUXCP0 +// Update secure access state of AMUXCP0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_AMUXCP0 0 + +// VDAC0 +// Update secure access state of VDAC0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_VDAC0 0 + +// VDAC1 +// Update secure access state of VDAC1 before calling into bootloader +#define BOOTLOADER_PPUSATD1_VDAC1 0 + +// PCNT +// Update secure access state of PCNT before calling into bootloader +#define BOOTLOADER_PPUSATD1_PCNT 0 + +// HFRCO1 +// Update secure access state of HFRCO1 before calling into bootloader +#define BOOTLOADER_PPUSATD1_HFRCO1 0 + +// HFXO0 +// Update secure access state of HFXO0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_HFXO0 0 + +// I2C0 +// Update secure access state of I2C0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_I2C0 0 + +// WDOG0 +// Update secure access state of WDOG0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_WDOG0 0 + +// WDOG1 +// Update secure access state of WDOG1 before calling into bootloader +#define BOOTLOADER_PPUSATD1_WDOG1 0 + +// EUSART0 +// Update secure access state of EUSART0 before calling into bootloader +#define BOOTLOADER_PPUSATD1_EUSART0 0 + +// SEMAILBOX +// Update secure access state of SEMAILBOX before calling into bootloader +#define BOOTLOADER_PPUSATD1_SEMAILBOX 0 + +// MVP +// Update secure access state of MVP before calling into bootloader +#define BOOTLOADER_PPUSATD1_MVP 0 + +// AHBRADIO +// Update secure access state of AHBRADIO before calling into bootloader +#define BOOTLOADER_PPUSATD1_AHBRADIO 0 +// + +// +// <<< end of configuration section >>> + +#if BOOTLOADER_MANUAL_OVERRIDE_SECURITY_STATE == 1 +#define BOOTLOADER_PPUSATD0_MASK ((BOOTLOADER_PPUSATD0_EMU << _SMU_PPUSATD0_EMU_SHIFT) \ + | (BOOTLOADER_PPUSATD0_CMU << _SMU_PPUSATD0_CMU_SHIFT) \ + | (BOOTLOADER_PPUSATD0_HFRCO0 << _SMU_PPUSATD0_HFRCO0_SHIFT) \ + | (BOOTLOADER_PPUSATD0_FSRCO << _SMU_PPUSATD0_FSRCO_SHIFT) \ + | (BOOTLOADER_PPUSATD0_DPLL0 << _SMU_PPUSATD0_DPLL0_SHIFT) \ + | (BOOTLOADER_PPUSATD0_LFXO << _SMU_PPUSATD0_LFXO_SHIFT) \ + | (BOOTLOADER_PPUSATD0_LFRCO << _SMU_PPUSATD0_LFRCO_SHIFT) \ + | (BOOTLOADER_PPUSATD0_ULFRCO << _SMU_PPUSATD0_ULFRCO_SHIFT) \ + | (BOOTLOADER_PPUSATD0_MSC << _SMU_PPUSATD0_MSC_SHIFT) \ + | (BOOTLOADER_PPUSATD0_ICACHE0 << _SMU_PPUSATD0_ICACHE0_SHIFT) \ + | (BOOTLOADER_PPUSATD0_PRS << _SMU_PPUSATD0_PRS_SHIFT) \ + | (BOOTLOADER_PPUSATD0_GPIO << _SMU_PPUSATD0_GPIO_SHIFT) \ + | (BOOTLOADER_PPUSATD0_LDMA << _SMU_PPUSATD0_LDMA_SHIFT) \ + | (BOOTLOADER_PPUSATD0_LDMAXBAR << _SMU_PPUSATD0_LDMAXBAR_SHIFT) \ + | (BOOTLOADER_PPUSATD0_TIMER0 << _SMU_PPUSATD0_TIMER0_SHIFT) \ + | (BOOTLOADER_PPUSATD0_TIMER1 << _SMU_PPUSATD0_TIMER1_SHIFT) \ + | (BOOTLOADER_PPUSATD0_TIMER2 << _SMU_PPUSATD0_TIMER2_SHIFT) \ + | (BOOTLOADER_PPUSATD0_TIMER3 << _SMU_PPUSATD0_TIMER3_SHIFT) \ + | (BOOTLOADER_PPUSATD0_TIMER4 << _SMU_PPUSATD0_TIMER4_SHIFT) \ + | (BOOTLOADER_PPUSATD0_USART0 << _SMU_PPUSATD0_USART0_SHIFT) \ + | (BOOTLOADER_PPUSATD0_BURTC << _SMU_PPUSATD0_BURTC_SHIFT) \ + | (BOOTLOADER_PPUSATD0_I2C1 << _SMU_PPUSATD0_I2C1_SHIFT) \ + | (BOOTLOADER_PPUSATD0_CHIPTESTCTRL << _SMU_PPUSATD0_CHIPTESTCTRL_SHIFT) \ + | (BOOTLOADER_PPUSATD0_SYSCFGCFGNS << _SMU_PPUSATD0_SYSCFGCFGNS_SHIFT) \ + | (BOOTLOADER_PPUSATD0_SYSCFG << _SMU_PPUSATD0_SYSCFG_SHIFT) \ + | (BOOTLOADER_PPUSATD0_BURAM << _SMU_PPUSATD0_BURAM_SHIFT) \ + | (BOOTLOADER_PPUSATD0_GPCRC << _SMU_PPUSATD0_GPCRC_SHIFT) \ + | (BOOTLOADER_PPUSATD0_DCDC << _SMU_PPUSATD0_DCDC_SHIFT) \ + | (BOOTLOADER_PPUSATD0_HOSTMAILBOX << _SMU_PPUSATD0_HOSTMAILBOX_SHIFT) \ + | (BOOTLOADER_PPUSATD0_EUSART1 << _SMU_PPUSATD0_EUSART1_SHIFT) \ + | (BOOTLOADER_PPUSATD0_SYSRTC << _SMU_PPUSATD0_SYSRTC_SHIFT)) +#define BOOTLOADER_PPUSATD1_MASK ((BOOTLOADER_PPUSATD1_KEYSCAN << _SMU_PPUSATD1_KEYSCAN_SHIFT) \ + | (BOOTLOADER_PPUSATD1_DMEM << _SMU_PPUSATD1_DMEM_SHIFT) \ + | (BOOTLOADER_PPUSATD1_RADIOAES << _SMU_PPUSATD1_RADIOAES_SHIFT) \ + | (BOOTLOADER_PPUSATD1_SMU << _SMU_PPUSATD1_SMU_SHIFT) \ + | (BOOTLOADER_PPUSATD1_SMUCFGNS << _SMU_PPUSATD1_SMUCFGNS_SHIFT) \ + | (BOOTLOADER_PPUSATD1_LETIMER0 << _SMU_PPUSATD1_LETIMER0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_IADC0 << _SMU_PPUSATD1_IADC0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_ACMP0 << _SMU_PPUSATD1_ACMP0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_ACMP1 << _SMU_PPUSATD1_ACMP1_SHIFT) \ + | (BOOTLOADER_PPUSATD1_AMUXCP0 << _SMU_PPUSATD1_AMUXCP0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_VDAC0 << _SMU_PPUSATD1_VDAC0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_VDAC1 << _SMU_PPUSATD1_VDAC1_SHIFT) \ + | (BOOTLOADER_PPUSATD1_PCNT << _SMU_PPUSATD1_PCNT_SHIFT) \ + | (BOOTLOADER_PPUSATD1_HFRCO1 << _SMU_PPUSATD1_HFRCO1_SHIFT) \ + | (BOOTLOADER_PPUSATD1_HFXO0 << _SMU_PPUSATD1_HFXO0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_I2C0 << _SMU_PPUSATD1_I2C0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_WDOG0 << _SMU_PPUSATD1_WDOG0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_WDOG1 << _SMU_PPUSATD1_WDOG1_SHIFT) \ + | (BOOTLOADER_PPUSATD1_EUSART0 << _SMU_PPUSATD1_EUSART0_SHIFT) \ + | (BOOTLOADER_PPUSATD1_SEMAILBOX << _SMU_PPUSATD1_SEMAILBOX_SHIFT) \ + | (BOOTLOADER_PPUSATD1_MVP << _SMU_PPUSATD1_MVP_SHIFT) \ + | (BOOTLOADER_PPUSATD1_AHBRADIO << _SMU_PPUSATD1_AHBRADIO_SHIFT)) +#endif // BOOTLOADER_MANUAL_OVERRIDE_SECURITY_STATE + +#endif // BTL_INTERFACE_CFG_S2C4_H diff --git a/silabs_examples/credentials/device/brd4187c/config/emlib_core_debug_config.h b/silabs_examples/credentials/device/brd4187c/config/emlib_core_debug_config.h new file mode 100644 index 00000000000000..50dbbed9bc4f59 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/emlib_core_debug_config.h @@ -0,0 +1,46 @@ +/***************************************************************************//** + * @file + * @brief emlib_core Configuration + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef EM_CORE_DEBUG_CONFIG_H +#define EM_CORE_DEBUG_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Core Configuration + +// Enables measuring of interrupt disable time for debugging purposes. +// Default: 0 +// If Enabled, either cycle_counter or systemview component must be added to project. +#define SL_EMLIB_CORE_ENABLE_INTERRUPT_DISABLED_TIMING 0 + +// + +// <<< end of configuration section >>> +#endif // EM_CORE_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4187c/config/legacy_common_ash_config.h b/silabs_examples/credentials/device/brd4187c/config/legacy_common_ash_config.h new file mode 100644 index 00000000000000..ce1ad5d7ad4eb4 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/legacy_common_ash_config.h @@ -0,0 +1,43 @@ +/***************************************************************************//** + * @file + * @brief Legacy Host ASH configuration file. + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef LEGACY_NCP_ASH_CONFIG_H +#define LEGACY_NCP_ASH_CONFIG_H + +// The USART used for ASH communications in COM_Port_t format, as defined in platform/service/legacy_hal/inc/serial.h (see defined names for USART ports) <-1..3:1> +// Default: (-1) +// The default value of -1 causes the ASH code to try to use the USART assigned to the "VCOM" instance of SL_IOSTREAM_USART. Otherwise the value is passed to Legacy HAL, which attempts to find an instance of SL_IOSTREAM_USART which uses that USART. +#define LEGACY_NCP_ASH_SERIAL_PORT (-1) + +#endif /* LEGACY_NCP_ASH_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4187c/config/legacy_hal_config.h b/silabs_examples/credentials/device/brd4187c/config/legacy_hal_config.h new file mode 100644 index 00000000000000..e3386e94094dc0 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/legacy_hal_config.h @@ -0,0 +1,47 @@ +/***************************************************************************//** + * @file + * @brief Legacy HAL configuration file. + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef LEGACY_HAL_CONFIG_H +#define LEGACY_HAL_CONFIG_H + +// Translate button interrupt callback +// When the Simple Button component is included, it provides a callback for +// buttons configured in interrupt mode. When this option is 1, Legacy HAL +// will try to consume that callback and translate it to "halButtonIsr", +// the legacy callback. If anything else in the application consumes the +// Simple button callback, it will override Legacy HAL's version. +// Default: 1 +#define LEGACY_HAL_TRANSLATE_BUTTON_INTERRUPT (1) + +#endif /* LEGACY_HAL_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4187c/config/mbedtls_config.h b/silabs_examples/credentials/device/brd4187c/config/mbedtls_config.h new file mode 100644 index 00000000000000..44ce8ed553755a --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/mbedtls_config.h @@ -0,0 +1,72 @@ +#ifndef MBEDTLS_CONFIG_H +#define MBEDTLS_CONFIG_H + +// Include the autogenerated mbedtls configuration file +#include "mbedtls_config_autogen.h" + +// <<< Use Configuration Wizard in Context Menu >>> +// TLS/DTLS configuration + +// Complete list of ciphersuites to use, in order of preference. +// Default: MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8 +// Complete list of ciphersuites to use, in order of preference. +// The value of this configuration should be updated for the application needs. +#define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8 + +// Maximum TLS/DTLS fragment length in bytes (input). +// Default: 768 +// The size configured here determines the size of the internal I/O +// buffer used in mbedTLS when receiving data. +#define SL_MBEDTLS_SSL_IN_CONTENT_LEN 768 + +// Maximum TLS/DTLS fragment length in bytes (output). +// Default: 768 +// The size configured here determines the size of the internal I/O +// buffer used in mbedTLS when sending data. +#define SL_MBEDTLS_SSL_OUT_CONTENT_LEN 768 + +// Enable support for RFC 6066 max_fragment_length extension in SSL. +// Default: 1 +// Enable support for RFC 6066 max_fragment_length extension in SSL. +#define SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH 1 + +// Enable support for exporting key block and master secret. +// Default: 1 +// Enable support for exporting key block and master secret. +// This is required for certain users of TLS, e.g. EAP-TLS. +#define SL_MBEDTLS_SSL_EXPORT_KEYS 1 + +// Enable the PSK based ciphersuite modes in SSL / TLS. +// Default: 0 +// Enable the PSK based ciphersuite modes in SSL / TLS. +#define SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED 0 + +// Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS. +// Default: 0 +// Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS. +#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED 0 + +// Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS. +// Default: 0 +// Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS. +#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED 0 + +// Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS. +// Default: 0 +// Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS. +#define SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED 0 + +// +// <<< end of configuration section >>> + +// Include transformation logic to apply CMSIS-config configuration options to +// the correct Mbed TLS / PSA Crypto options. +#include "sl_mbedtls_config_transform_autogen.h" + +// Custom defines can be placed here before check_config.h is included. + +#include "mbedtls/config_psa.h" + +#include "mbedtls/check_config.h" + +#endif diff --git a/silabs_examples/credentials/device/brd4187c/config/nvm3_default_config.h b/silabs_examples/credentials/device/brd4187c/config/nvm3_default_config.h new file mode 100644 index 00000000000000..5f12735813dc50 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/nvm3_default_config.h @@ -0,0 +1,45 @@ +#ifndef NVM3_DEFAULT_CONFIG_H +#define NVM3_DEFAULT_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// NVM3 Default Instance Configuration + +#ifndef NVM3_DEFAULT_CACHE_SIZE +// NVM3 Default Instance Cache Size +// Number of NVM3 objects to cache. To reduce access times this number +// should be equal to or higher than the number of NVM3 objects in the +// default NVM3 instance. +// Default: 200 +#define NVM3_DEFAULT_CACHE_SIZE 200 +#endif + +#ifndef NVM3_DEFAULT_MAX_OBJECT_SIZE +// NVM3 Default Instance Max Object Size +// Max NVM3 object size that can be stored. +// Default: 254 +#define NVM3_DEFAULT_MAX_OBJECT_SIZE 254 +#endif + +#ifndef NVM3_DEFAULT_REPACK_HEADROOM +// NVM3 Default Instance User Repack Headroom +// Headroom determining how many bytes below the forced repack limit the user +// repack limit should be placed. The default is 0, which means the user and +// forced repack limits are equal. +// Default: 0 +#define NVM3_DEFAULT_REPACK_HEADROOM 0 +#endif + +#ifndef NVM3_DEFAULT_NVM_SIZE +// NVM3 Default Instance Size +// Size of the NVM3 storage region in flash. This size should be aligned with +// the flash page size of the device. +// Default: 40960 +#define NVM3_DEFAULT_NVM_SIZE 32768 +#endif + +// + +// <<< end of configuration section >>> + +#endif // NVM3_DEFAULT_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4187c/config/psa_crypto_config.h b/silabs_examples/credentials/device/brd4187c/config/psa_crypto_config.h new file mode 100644 index 00000000000000..557606d10b524d --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/psa_crypto_config.h @@ -0,0 +1,47 @@ +#ifndef PSA_CRYPTO_CONFIG_H +#define PSA_CRYPTO_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// PSA User Maximum Open Keys Count <0-128> +// Maximum amount of keys that the user application will have open +// simultaneously. In context of PSA Crypto, an open key means any key +// either stored in RAM (lifetime set to PSA_KEY_LIFETIME_VOLATILE), or +// used as part of a cryptographic operation. +// When using a key for a multi-part (setup/update/finish) operation, a key +// is considered to be open from the moment the operation is successfully +// setup, until it finishes or aborts. +// When an application tries to open more keys than this value accounts for, +// the PSA API may return PSA_ERROR_INSUFFICIENT_MEMORY. Keep in mind that +// other software included in the application (e.g. wireless protocol stacks) +// also can have a need to have open keys in PSA Crypto. This could lead to +// a race condition when the application key slot count is set too low for +// the actual usage of the application, as a software stack may not fail +// gracefully in case an application opens more than its declared amount of +// keys, thereby precluding the stack from functioning. +// Default: 4 +#define SL_PSA_KEY_USER_SLOT_COUNT (4) + +// PSA Maximum User Persistent Keys Count <0-1024> +// Maximum amount of keys (or other files) that can be stored persistently +// by the application through the PSA interface, when persistent storage +// support for PSA Crypto is included in the project. +// Due to caching logic, this setting does have an impact on static RAM usage. +// Note that this number is added to the potential requirements from other +// software components in the project, such that the total amount of keys +// which can be stored through the ITS backend can be higher than what is +// configured here. +// +// WARNING: When changing this setting on an application that is already +// deployed, and thus will get the change through an application upgrade, +// care should be taken to ensure that the setting is only ever increased, +// and never decreased. Decreasing this setting might cause previously +// stored keys/files to become inaccessible. +// Default: 128 +#define SL_PSA_ITS_USER_MAX_FILES (128) +// <<< end of configuration section >>> + +// Include the autogenerated PSA Crypto configuration file +#include "psa_crypto_config_autogen.h" + +#endif // PSA_CRYPTO_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_board_control_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_board_control_config.h new file mode 100644 index 00000000000000..63bf462277aad7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_board_control_config.h @@ -0,0 +1,76 @@ +/***************************************************************************//** + * @file + * @brief Board Control + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_BOARD_CONTROL_CONFIG_H +#define SL_BOARD_CONTROL_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Enable Virtual COM UART +// Default: 0 +#define SL_BOARD_ENABLE_VCOM 1 + +// Enable Display +// Default: 0 +#define SL_BOARD_ENABLE_DISPLAY 0 + +// Enable Relative Humidity and Temperature sensor +// Default: 0 +#define SL_BOARD_ENABLE_SENSOR_RHT 0 + +// Disable SPI Flash +// Default: 1 +#define SL_BOARD_DISABLE_MEMORY_SPI 1 + +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> + +// SL_BOARD_ENABLE_VCOM +// $[GPIO_SL_BOARD_ENABLE_VCOM] +#define SL_BOARD_ENABLE_VCOM_PORT gpioPortB +#define SL_BOARD_ENABLE_VCOM_PIN 0 +// [GPIO_SL_BOARD_ENABLE_VCOM]$ + +// SL_BOARD_ENABLE_DISPLAY +// $[GPIO_SL_BOARD_ENABLE_DISPLAY] +#define SL_BOARD_ENABLE_DISPLAY_PORT gpioPortC +#define SL_BOARD_ENABLE_DISPLAY_PIN 9 +// [GPIO_SL_BOARD_ENABLE_DISPLAY]$ + +// SL_BOARD_ENABLE_SENSOR_RHT +// $[GPIO_SL_BOARD_ENABLE_SENSOR_RHT] +#define SL_BOARD_ENABLE_SENSOR_RHT_PORT gpioPortD +#define SL_BOARD_ENABLE_SENSOR_RHT_PIN 3 +// [GPIO_SL_BOARD_ENABLE_SENSOR_RHT]$ + +// <<< sl:end pin_tool >>> + +#endif // SL_BOARD_CONTROL_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_custom_manufacturing_token_header.h b/silabs_examples/credentials/device/brd4187c/config/sl_custom_manufacturing_token_header.h new file mode 100644 index 00000000000000..08b66580998c71 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_custom_manufacturing_token_header.h @@ -0,0 +1,84 @@ +/***************************************************************************//** + * @file + * @brief Custom manufacturing token header + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +/***************************************************************************//** + * Custom Manufacturing Token Usage Examples + * + * The macro DEFINE_MFG_TOKEN() should be used when instantiating a + * manufacturing token. Refer to the list of *_LOCATION defines to + * see what memory is allocated and what memory is unused/available. + * + * The _LOCATION is or'ed with either USERDATA_TOKENS or LOCKBITSDATA_TOKENS + * to control which segment of memory the token is placed in. + * + * REMEMBER: By definition, manufacturing tokens exist at fixed addresses. + * Tokens should not overlap. + * + * Here is a basic example of a manufacturing token header file: + * + * Note that the address used here is just an example. It places the 8 bytes + * in the middle of the USERDATA space on an EFR32MG12P433F1024GM68. + * To review addresses of existing tokens when choosing a new address, refer + * to an961-custom-nodes-efr32.pdf and the files + * platform/service/token_manager/inc/sl_token_manufacturing_series_1.h + * platform/service/token_manager/inc/sl_token_manufacturing_series_2.h + * + * @code + * #define CREATOR_MFG_EXAMPLE 0x4242 + * #ifdef DEFINETYPES + * typedef uint8_t tokTypeMfgExample[8]; + * #endif + * #ifdef DEFINETOKENS + * #define MFG_EXAMPLE_LOCATION (USERDATA_TOKENS | 0x2000) + * DEFINE_MFG_TOKEN(MFG_EXAMPLE, + * tokTypeMfgExample, + * MFG_EXAMPLE_LOCATION, + * {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}) + * #endif + * @endcode + * + * Since this file contains both the typedefs and the token defs, there are + * two \#defines used to select which one is needed when this file is included. + * \#define DEFINETYPES is used to select the type definitions and + * \#define DEFINETOKENS is used to select the token definitions. + * + * To use this example: + * Ensure the Token Manager's configuration in Studio + * has enabled Custom Manufacuturing Tokens. + * + * Ensure your application has: + * #include "sl_token_api.h" + * #include "sl_token_manager.h" + * + * This code will read the token data: + * uint8_t data[8]; + * sl_token_get_data(TOKEN_MFG_EXAMPLE, 0, &data, sizeof(data)); + ******************************************************************************/ + +/* + #define CREATOR_MFG_EXAMPLE 0x4242 + #ifdef DEFINETYPES + typedef uint8_t tokTypeMfgExample[8]; + #endif + #ifdef DEFINETOKENS + #define MFG_EXAMPLE_LOCATION (USERDATA_TOKENS | 0x2000) + DEFINE_MFG_TOKEN(MFG_EXAMPLE, + tokTypeMfgExample, + MFG_EXAMPLE_LOCATION, + {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}) + #endif + */ diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_custom_token_header.h b/silabs_examples/credentials/device/brd4187c/config/sl_custom_token_header.h new file mode 100644 index 00000000000000..abfe057a05ee5b --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_custom_token_header.h @@ -0,0 +1,86 @@ +/***************************************************************************//** + * @file + * @brief Custom token header + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +/***************************************************************************//** + * Custom Tokens Usage Examples + * + * #define BASICTOKEN1_DEFAULT 0xA5F0 + * #define BASICTOKEN2_DEFAULT { { 0xAA, 0xBB, 0xCC }, 0xDDDD } + * #define BASICTOKEN3_DEFAULT { { 0 } } + * #define COUNTERTOKEN1_DEFAULT 0 + * #define COUNTERTOKEN2_DEFAULT 0xCCCCCCCC + * #define INDEXEDTOKEN1_DEFAULT 0 + * #define INDEXEDTOKEN2_DEFAULT { 0xDDDD } + * #define INDEXEDTOKEN3_DEFAULT { 0xAA, 0xBBBB, { 0x00, 0x11, 0x22 }, 0xCC } + * + * #ifdef DEFINETYPES + * typedef uint16_t tokTypeBasicToken1; + * typedef struct { + * uint8_t basicToken2Array[3]; + * uint16_t basicToken2VarA; + * } tokTypeBasicToken2; + * + * typedef struct { + * uint8_t basicToken3Array[254]; + * } tokTypeBasicToken3; + * + * typedef uint32_t tokTypeCounterToken1; + * typedef uint32_t tokTypeCounterToken2; + * + * typedef uint8_t tokTypeIndexedToken1Element; + * typedef uint16_t tokTypeIndexedToken2Element; + * + * typedef struct { + * uint8_t indexedToken3VarA; + * uint16_t indexedToken3VarB; + * uint8_t indexedToken3Array[3]; + * int8_t indexedToken3VarC; + * } tokTypeIndexedToken3Element; + * + * #endif + * + * #ifdef DEFINETOKENS + * DEFINE_BASIC_TOKEN(BASICTOKEN1, + * tokTypeBasicToken1, + * BASICTOKEN1_DEFAULT) + * DEFINE_BASIC_TOKEN(BASICTOKEN2, + * tokTypeBasicToken2, + * BASICTOKEN2_DEFAULT) + * DEFINE_BASIC_TOKEN(BASICTOKEN3, + * tokTypeBasicToken3, + * BASICTOKEN3_DEFAULT) + * DEFINE_COUNTER_TOKEN(COUNTERTOKEN1, + * tokTypeCounterToken1, + * COUNTERTOKEN1_DEFAULT) + * DEFINE_COUNTER_TOKEN(COUNTERTOKEN2, + * tokTypeCounterToken2, + * COUNTERTOKEN2_DEFAULT) + * DEFINE_INDEXED_TOKEN(INDEXEDTOKEN1, + * tokTypeIndexedToken1Element, + * INDEXEDTOKEN1_ELEMENTS, + * INDEXEDTOKEN1_DEFAULT) + * DEFINE_INDEXED_TOKEN(INDEXEDTOKEN2, + * tokTypeIndexedToken2Element, + * INDEXEDTOKEN2_ELEMENTS, + * INDEXEDTOKEN2_DEFAULT) + * DEFINE_INDEXED_TOKEN(INDEXEDTOKEN3, + * tokTypeIndexedToken3Element, + * INDEXEDTOKEN3_ELEMENTS, + * INDEXEDTOKEN3_DEFAULT) + * #endif + * + ******************************************************************************/ diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_debug_swo_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_debug_swo_config.h new file mode 100644 index 00000000000000..34761be5087c82 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_debug_swo_config.h @@ -0,0 +1,99 @@ +/***************************************************************************//** + * @file + * @brief SWO configuration + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEBUG_SWO_CONFIG_H +#define SL_DEBUG_SWO_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// SWO Configuration + +// SWO Frequency +// Must be 875 kHz for communication with Silicon Labs debuggers +// Default: 875000 +#define SL_DEBUG_SWO_FREQ 875000 + +// Enable interrupt event trace +// Default: 0 +#define SL_DEBUG_SWO_SAMPLE_IRQ 0 + +// Enable Program Counter samples +// Default: 0 +#define SL_DEBUG_SWO_SAMPLE_PC 0 + +// SWO debug sample intervals +// <64=> 64 +// <128=> 128 +// <192=> 192 +// <256=> 256 +// <320=> 320 +// <384=> 384 +// <448=> 448 +// <512=> 512 +// <576=> 576 +// <640=> 640 +// <704=> 704 +// <768=> 768 +// <832=> 832 +// <896=> 896 +// <960=> 960 +// <1024=> 1024 +// <2048=> 2048 +// <3072=> 3072 +// <4096=> 4096 +// <5102=> 5102 +// <6144=> 6144 +// <7168=> 7168 +// <8192=> 8192 +// <9216=> 9216 +// <10240=> 10240 +// <11264=> 11264 +// <12288=> 12288 +// <13312=> 13312 +// <14336=> 14336 +// <15360=> 15360 +// Must be 64, 128, 192, [ n * 64 ], 1024, 2048, 3072, [ n * 1024 ] , 15360 +// Default: 15360 +#define SL_DEBUG_SWO_SAMPLE_INTERVAL 15360 +// + +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> +// SL_DEBUG +// $[GPIO_SL_DEBUG] +#define SL_DEBUG_PERIPHERAL GPIO + +#define SL_DEBUG_SWV_PORT gpioPortA +#define SL_DEBUG_SWV_PIN 3 +// [GPIO_SL_DEBUG]$ +// <<< sl:end pin_tool >>> + +#endif // SL_DEBUG_SWO_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_device_init_dcdc_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_device_init_dcdc_config.h new file mode 100644 index 00000000000000..695e68ec962d94 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_device_init_dcdc_config.h @@ -0,0 +1,58 @@ +/***************************************************************************//** + * @file + * @brief DEVICE_INIT_DCDC Config + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEVICE_INIT_DCDC_CONFIG_H +#define SL_DEVICE_INIT_DCDC_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Enable DC/DC Converter +// +// Default: 1 +#define SL_DEVICE_INIT_DCDC_ENABLE 1 + +// Set DC/DC Converter in Bypass Mode +// +// Default: 0 +#define SL_DEVICE_INIT_DCDC_BYPASS 0 + +// Override for DCDC PFMX Mode Peak Current Setting +// +// Default: 1 +#define SL_DEVICE_INIT_DCDC_PFMX_IPKVAL_OVERRIDE 1 + +// DCDC PFMX Mode Peak Current Setting <0-15> +// +// Default: DCDC_PFMXCTRL_IPKVAL_DEFAULT +#define SL_DEVICE_INIT_DCDC_PFMX_IPKVAL 9 + +// <<< end of configuration section >>> + +#endif // SL_DEVICE_INIT_DCDC_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_device_init_emu_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_device_init_emu_config.h new file mode 100644 index 00000000000000..4ac96bac233c3a --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_device_init_emu_config.h @@ -0,0 +1,53 @@ +/***************************************************************************//** + * @file + * @brief DEVICE_INIT_EMU Config + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEVICE_INIT_EMU_CONFIG_H +#define SL_DEVICE_INIT_EMU_CONFIG_H + +#include "em_emu.h" + +// <<< Use Configuration Wizard in Context Menu >>> + +// Allow debugger to remain connected in EM2 +// Force PD0B to stay on on EM2 entry. This allows the debugger to remain connected in EM2 and EM3. +// Enabling debug connectivity results in an increased power consumption in EM2/EM3. +// Default: 1 +#define SL_DEVICE_INIT_EMU_EM2_DEBUG_ENABLE 1 + +// EM4 pin retention mode +// No Retention: Pads enter reset state when entering EM4. +// Retention through EM4: Pads enter reset state when exiting EM4. +// Retention through EM4 and wakeup. +// Default: emuPinRetentionDisable +#define SL_DEVICE_INIT_EMU_EM4_PIN_RETENTION_MODE emuPinRetentionDisable + +// <<< end of configuration section >>> + +#endif // SL_DEVICE_INIT_EMU_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_device_init_hfxo_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_device_init_hfxo_config.h new file mode 100644 index 00000000000000..570c1c93a765d7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_device_init_hfxo_config.h @@ -0,0 +1,53 @@ +/***************************************************************************//** + * @file + * @brief DEVICE_INIT_HFXO Config + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEVICE_INIT_HFXO_CONFIG_H +#define SL_DEVICE_INIT_HFXO_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Mode +// +// Crystal oscillator +// External sine wave +// Default: cmuHfxoOscMode_Crystal +#define SL_DEVICE_INIT_HFXO_MODE cmuHfxoOscMode_Crystal + +// Frequency <38000000-40000000> +// Default: 39000000 +#define SL_DEVICE_INIT_HFXO_FREQ 39000000 + +// CTUNE <0-255> +// Default: 140 +#define SL_DEVICE_INIT_HFXO_CTUNE 95 + +// <<< end of configuration section >>> + +#endif // SL_DEVICE_INIT_HFXO_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_device_init_lfxo_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_device_init_lfxo_config.h new file mode 100644 index 00000000000000..177a5b410e43a7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_device_init_lfxo_config.h @@ -0,0 +1,66 @@ +/***************************************************************************//** + * @file + * @brief DEVICE_INIT_LFXO Config + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_DEVICE_INIT_LFXO_CONFIG_H +#define SL_DEVICE_INIT_LFXO_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Mode +// +// Crystal oscillator +// AC-coupled buffer +// External digital clock +// Default: cmuLfxoOscMode_Crystal +#define SL_DEVICE_INIT_LFXO_MODE cmuLfxoOscMode_Crystal + +// CTUNE <0-127> +// Default: 63 +#define SL_DEVICE_INIT_LFXO_CTUNE 44 + +// LFXO precision in PPM <0-65535> +// Default: 500 +#define SL_DEVICE_INIT_LFXO_PRECISION 100 + +// Startup Timeout Delay +// +// 2 cycles +// 256 cycles +// 1K cycles +// 2K cycles +// 4K cycles +// 8K cycles +// 16K cycles +// 32K cycles +// Default: cmuLfxoStartupDelay_4KCycles +#define SL_DEVICE_INIT_LFXO_TIMEOUT cmuLfxoStartupDelay_4KCycles +// <<< end of configuration section >>> + +#endif // SL_DEVICE_INIT_LFXO_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_hfxo_manager_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_hfxo_manager_config.h new file mode 100644 index 00000000000000..240f890da2a7dc --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_hfxo_manager_config.h @@ -0,0 +1,56 @@ +/***************************************************************************//** + * @file + * @brief HFXO Manager configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_HFXO_MANAGER_CONFIG_H +#define SL_HFXO_MANAGER_CONFIG_H + +// Power Manager Configuration + +// Enable custom IRQ handler for crystal HF oscillator. +// Enable if HFXO0_IRQHandler is needed from your application. +// The HFXO IRQ priority must not be changed as the HFXO Manager module needs it to be high priority +// and to stay enabled through atomic sections. +// The function sl_hfxo_manager_irq_handler() will have to be called from you custom handler if this is enabled. +// Default: 0 +#define SL_HFXO_MANAGER_CUSTOM_HFXO_IRQ_HANDLER 0 + +// Enable support for Sleepy Crystals. +// If Enabled and if HFXO fails to startup due to a sleepy crystal, HFXO Manager will retry the startup with more aggressive settings +// before falling back to the configured settings. +// Default: 0 +#define SL_HFXO_MANAGER_SLEEPY_CRYSTAL_SUPPORT 0 + +// + +#endif /* SL_HFXO_MANAGER_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_iostream_usart_vcom_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_iostream_usart_vcom_config.h new file mode 100644 index 00000000000000..34f54ceb3f55e5 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_iostream_usart_vcom_config.h @@ -0,0 +1,109 @@ +/***************************************************************************//** + * @file + * @brief IOSTREAM_USART Config. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_IOSTREAM_USART_VCOM_CONFIG_H +#define SL_IOSTREAM_USART_VCOM_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// USART settings + +// Baud rate +// Default: 115200 +#define SL_IOSTREAM_USART_VCOM_BAUDRATE 115200 + +// Parity mode to use +// No Parity +// Even parity +// Odd parity +// Default: usartNoParity +#define SL_IOSTREAM_USART_VCOM_PARITY usartNoParity + +// Number of stop bits to use. +// 0.5 stop bits +// 1 stop bits +// 1.5 stop bits +// 2 stop bits +// Default: usartStopbits1 +#define SL_IOSTREAM_USART_VCOM_STOP_BITS usartStopbits1 + +// Flow control +// None +// CTS +// RTS +// CTS/RTS +// Software Flow control (XON/XOFF) +// Default: usartHwFlowControlNone +#define SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE usartHwFlowControlCtsAndRts + +// Receive buffer size +// Default: 32 +#define SL_IOSTREAM_USART_VCOM_RX_BUFFER_SIZE 32 + +// Convert \n to \r\n +// It can be changed at runtime using the C API. +// Default: 0 +#define SL_IOSTREAM_USART_VCOM_CONVERT_BY_DEFAULT_LF_TO_CRLF 0 + +// Restrict the energy mode to allow the reception. +// Default: 1 +// Limits the lowest energy mode the system can sleep to in order to keep the reception on. May cause higher power consumption. +#define SL_IOSTREAM_USART_VCOM_RESTRICT_ENERGY_MODE_TO_ALLOW_RECEPTION 1 + +// + +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> +// SL_IOSTREAM_USART_VCOM +// $[USART_SL_IOSTREAM_USART_VCOM] +#define SL_IOSTREAM_USART_VCOM_PERIPHERAL USART0 +#define SL_IOSTREAM_USART_VCOM_PERIPHERAL_NO 0 + +// USART0 TX on PA08 +#define SL_IOSTREAM_USART_VCOM_TX_PORT gpioPortA +#define SL_IOSTREAM_USART_VCOM_TX_PIN 8 + +// USART0 RX on PA09 +#define SL_IOSTREAM_USART_VCOM_RX_PORT gpioPortA +#define SL_IOSTREAM_USART_VCOM_RX_PIN 9 + +// USART0 CTS on PB05 +#define SL_IOSTREAM_USART_VCOM_CTS_PORT gpioPortB +#define SL_IOSTREAM_USART_VCOM_CTS_PIN 5 + +// USART0 RTS on PA00 +#define SL_IOSTREAM_USART_VCOM_RTS_PORT gpioPortA +#define SL_IOSTREAM_USART_VCOM_RTS_PIN 0 + +// [USART_SL_IOSTREAM_USART_VCOM]$ +// <<< sl:end pin_tool >>> + +#endif diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_iostream_vuart_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_iostream_vuart_config.h new file mode 100644 index 00000000000000..82889008b77e1b --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_iostream_vuart_config.h @@ -0,0 +1,42 @@ +/***************************************************************************//** + * @file + * @brief SL_IOSTREAM_VUART Config. + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ +#ifndef SL_IOSTREAM_VUART_CONFIG_H +#define SL_IOSTREAM_VUART_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// VUART settings +// Receive buffer size +// Default: 32 +#define SL_IOSTREAM_VUART_RX_BUFFER_SIZE 32 + +// +// <<< end of configuration section >>> +#endif diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_legacy_hal_wdog_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_legacy_hal_wdog_config.h new file mode 100644 index 00000000000000..83b67575534e1f --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_legacy_hal_wdog_config.h @@ -0,0 +1,53 @@ +/***************************************************************************//** + * @file sl_legacy_hal_wdog_config.h + * @brief Legacy HAL watchdog configuration file. + ******************************************************************************* + * # License + * Copyright 2022 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_LEGACY_HAL_WDOG_CONFIG_H +#define SL_LEGACY_HAL_WDOG_CONFIG_H + +// Legacy HAL WDOG Configurations + +// Disable calling halInternalEnableWatchDog in base-replacement.c's halInit(). +// Default: 0 +#define SL_LEGACY_HAL_DISABLE_WATCHDOG 0 +// + +// WDOG to use for SL_LEGACY_HAL_WDOGn. +// Default: 0 +// <0=> WDOG0 +// <1=> WDOD1 +#define SL_LEGACY_HAL_WDOGn 0 + +// + +#endif /* SL_LEGACY_HAL_WDOG_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_memory_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_memory_config.h new file mode 100644 index 00000000000000..b43ebcba024b94 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_memory_config.h @@ -0,0 +1,28 @@ +#ifndef SL_MEMORY_CONFIG_H +#define SL_MEMORY_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> +// Memory configuration + +// Stack size for the application. +// Default: 4096 +// The stack size configured here will be used by the stack that the +// application uses when coming out of a reset. +#ifndef SL_STACK_SIZE + #define SL_STACK_SIZE 4096 +#endif + +// Minimum heap size for the application. +// Default: 2048 +// Note that this value will configure the c heap which is normally used by +// malloc() and free() from the c library. The value defines a minimum heap +// size that is guaranteed to be available. The available heap may be larger +// to make use of any memory that would otherwise remain unused. +#ifndef SL_HEAP_SIZE + #define SL_HEAP_SIZE 2048 +#endif + +// +// <<< end of configuration section >>> + +#endif diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_mx25_flash_shutdown_eusart_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_mx25_flash_shutdown_eusart_config.h new file mode 100644 index 00000000000000..cdb0809710416c --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_mx25_flash_shutdown_eusart_config.h @@ -0,0 +1,51 @@ +/***************************************************************************//** + * @file + * @brief SL_MX25_FLASH_SHUTDOWN_USART Config + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_MX25_FLASH_SHUTDOWN_CONFIG_H +#define SL_MX25_FLASH_SHUTDOWN_CONFIG_H + +// <<< sl:start pin_tool >>> +// {eusart signal=TX,RX,SCLK} SL_MX25_FLASH_SHUTDOWN +// [EUSART_SL_MX25_FLASH_SHUTDOWN] +#define SL_MX25_FLASH_SHUTDOWN_PERIPHERAL EUSART1 +#define SL_MX25_FLASH_SHUTDOWN_PERIPHERAL_NO 1 + +// EUSART1 TX on PC01 +#define SL_MX25_FLASH_SHUTDOWN_TX_PORT gpioPortC +#define SL_MX25_FLASH_SHUTDOWN_TX_PIN 1 + +// EUSART1 RX on PC02 +#define SL_MX25_FLASH_SHUTDOWN_RX_PORT gpioPortC +#define SL_MX25_FLASH_SHUTDOWN_RX_PIN 2 + +// EUSART1 SCLK on PC03 +#define SL_MX25_FLASH_SHUTDOWN_SCLK_PORT gpioPortC +#define SL_MX25_FLASH_SHUTDOWN_SCLK_PIN 3 + +// [EUSART_SL_MX25_FLASH_SHUTDOWN] + +// SL_MX25_FLASH_SHUTDOWN_CS + +// $[GPIO_SL_MX25_FLASH_SHUTDOWN_CS] +#define SL_MX25_FLASH_SHUTDOWN_CS_PORT gpioPortC +#define SL_MX25_FLASH_SHUTDOWN_CS_PIN 4 + +// [GPIO_SL_MX25_FLASH_SHUTDOWN_CS]$ + +// <<< sl:end pin_tool >>> + +#endif // SL_MX25_FLASH_SHUTDOWN_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_power_manager_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_power_manager_config.h new file mode 100644 index 00000000000000..fa5c557a4f85fc --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_power_manager_config.h @@ -0,0 +1,71 @@ +/***************************************************************************//** + * @file + * @brief Power Manager configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_POWER_MANAGER_CONFIG_H +#define SL_POWER_MANAGER_CONFIG_H + +// Power Manager Configuration + +// Enable custom IRQ handler for external HF oscillator. +// Enable if CMU_IRQHandler/HFXO0_IRQHandler is needed from your application. +// The function sl_power_manager_irq_handler() will have to be called from you custom handler if this is enabled. +// Default: 0 +#define SL_POWER_MANAGER_CUSTOM_HF_OSCILLATOR_IRQ_HANDLER 0 + +// Lowest Energy mode allowed +// <1=> EM1 +// <2=> EM2 +// <3=> EM3 +// Default: 2 +#define SL_POWER_MANAGER_LOWEST_EM_ALLOWED 2 + +// Enable fast wakeup (disable voltage scaling in EM2/3 mode) +// Enable or disable voltage scaling in EM2/3 modes (when available). This decreases wakeup time by about 30 us. +// Deprecated. It is replaced by the function sl_power_manager_em23_voltage_scaling_enable_fast_wakeup() +// Default: 0 +#define SL_POWER_MANAGER_CONFIG_VOLTAGE_SCALING_FAST_WAKEUP 0 + +// Enable debugging feature +// Enable or disable debugging features (trace the different modules that have requirements). +// Default: 0 +#define SL_POWER_MANAGER_DEBUG 0 + +// Maximum numbers of requirements that can be logged +// Default: 10 +#define SL_POWER_MANAGER_DEBUG_POOL_SIZE 10 +// + +// + +#endif /* SL_POWER_MANAGER_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_rail_util_pa_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_rail_util_pa_config.h new file mode 100644 index 00000000000000..9667d438c36875 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_rail_util_pa_config.h @@ -0,0 +1,81 @@ +/***************************************************************************//** + * @file + * @brief Power Amplifier configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_RAIL_UTIL_PA_CONFIG_H +#define SL_RAIL_UTIL_PA_CONFIG_H + +#include "rail_types.h" + +// <<< Use Configuration Wizard in Context Menu >>> +// PA configuration + +// Initial PA Power (deci-dBm, 100 = 10.0 dBm) +// Default: 100 +#define SL_RAIL_UTIL_PA_POWER_DECI_DBM 100 + +// PA Ramp Time (microseconds) +// <0-65535:1> +// Default: 10 +#define SL_RAIL_UTIL_PA_RAMP_TIME_US 10 + +// Milli-volts on PA supply pin (PA_VDD) +// <0-65535:1> +// Default: 3300 +#define SL_RAIL_UTIL_PA_VOLTAGE_MV 3300 + +// 2.4 GHz PA Selection +// Highest Possible +// High Power (chip-specific) +// Low Power +// Disable +// Default: RAIL_TX_POWER_MODE_2P4GIG_HIGHEST +#define SL_RAIL_UTIL_PA_SELECTION_2P4GHZ RAIL_TX_POWER_MODE_2P4GIG_HIGHEST + +// Sub-1 GHz PA Selection +// Disable +// Default: RAIL_TX_POWER_MODE_NONE +#define SL_RAIL_UTIL_PA_SELECTION_SUBGHZ RAIL_TX_POWER_MODE_NONE + +// Header file containing custom PA curves +// Default: "pa_curves_efr32.h" +#define SL_RAIL_UTIL_PA_CURVE_HEADER "pa_curves_efr32.h" + +// Header file containing PA curve types +// Default: "pa_curve_types_efr32.h" +#define SL_RAIL_UTIL_PA_CURVE_TYPES "pa_curve_types_efr32.h" + +// Enable PA Calibration +// Default: 0 +#define SL_RAIL_UTIL_PA_CALIBRATION_ENABLE 0 + +// +// <<< end of configuration section >>> + +#endif // SL_RAIL_UTIL_PA_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_rail_util_pti_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_rail_util_pti_config.h new file mode 100644 index 00000000000000..5165fc4204f699 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_rail_util_pti_config.h @@ -0,0 +1,73 @@ +/***************************************************************************//** + * @file + * @brief Packet Trace Information configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef SL_RAIL_UTIL_PTI_CONFIG_H +#define SL_RAIL_UTIL_PTI_CONFIG_H + +#include "rail_types.h" + +// <<< Use Configuration Wizard in Context Menu >>> +// PTI Configuration + +// PTI mode +// UART +// UART onewire +// SPI +// Disabled +// Default: RAIL_PTI_MODE_UART +#define SL_RAIL_UTIL_PTI_MODE RAIL_PTI_MODE_UART + +// PTI Baud Rate (Hertz) +// <147800-20000000:1> +// Default: 1600000 +#define SL_RAIL_UTIL_PTI_BAUD_RATE_HZ 1600000 + +// +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> +// SL_RAIL_UTIL_PTI +// $[PTI_SL_RAIL_UTIL_PTI] +#define SL_RAIL_UTIL_PTI_PERIPHERAL PTI + +// PTI DOUT on PD04 +#define SL_RAIL_UTIL_PTI_DOUT_PORT gpioPortD +#define SL_RAIL_UTIL_PTI_DOUT_PIN 4 + +// PTI DFRAME on PD05 +#define SL_RAIL_UTIL_PTI_DFRAME_PORT gpioPortD +#define SL_RAIL_UTIL_PTI_DFRAME_PIN 5 + + +// [PTI_SL_RAIL_UTIL_PTI]$ + +// <<< sl:end pin_tool >>> + +#endif // SL_RAIL_UTIL_PTI_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_simple_led_led0_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_simple_led_led0_config.h new file mode 100644 index 00000000000000..09ba3c48b4becc --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_simple_led_led0_config.h @@ -0,0 +1,44 @@ +/***************************************************************************//** + * @file + * @brief Simple Led Driver Configuration + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_SIMPLE_LED_LED0_CONFIG_H +#define SL_SIMPLE_LED_LED0_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Simple LED configuration +// +// Active low +// Active high +// Default: SL_SIMPLE_LED_POLARITY_ACTIVE_HIGH +#define SL_SIMPLE_LED_LED0_POLARITY SL_SIMPLE_LED_POLARITY_ACTIVE_HIGH +// end led configuration + +// <<< end of configuration section >>> + +// <<< sl:start pin_tool >>> + +// SL_SIMPLE_LED_LED0 +// $[GPIO_SL_SIMPLE_LED_LED0] +#define SL_SIMPLE_LED_LED0_PORT gpioPortB +#define SL_SIMPLE_LED_LED0_PIN 2 + +// [GPIO_SL_SIMPLE_LED_LED0]$ + +// <<< sl:end pin_tool >>> + +#endif // SL_SIMPLE_LED_LED0_CONFIG_H diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_sleeptimer_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_sleeptimer_config.h new file mode 100644 index 00000000000000..846d37d60828b7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_sleeptimer_config.h @@ -0,0 +1,72 @@ +/***************************************************************************//** + * @file + * @brief Sleep Timer configuration file. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_SLEEPTIMER_CONFIG_H +#define SL_SLEEPTIMER_CONFIG_H + +#define SL_SLEEPTIMER_PERIPHERAL_DEFAULT 0 +#define SL_SLEEPTIMER_PERIPHERAL_RTCC 1 +#define SL_SLEEPTIMER_PERIPHERAL_PRORTC 2 +#define SL_SLEEPTIMER_PERIPHERAL_RTC 3 +#define SL_SLEEPTIMER_PERIPHERAL_SYSRTC 4 +#define SL_SLEEPTIMER_PERIPHERAL_BURTC 5 + +// Timer Peripheral Used by Sleeptimer +// Default (auto select) +// RTCC +// Radio internal RTC (PRORTC) +// RTC +// SYSRTC +// Back-Up RTC (BURTC) +// Selection of the Timer Peripheral Used by the Sleeptimer +#define SL_SLEEPTIMER_PERIPHERAL SL_SLEEPTIMER_PERIPHERAL_DEFAULT + +// Enable wallclock functionality +// Enable or disable wallclock functionalities (get_time, get_date, etc). +// Default: 0 +#define SL_SLEEPTIMER_WALLCLOCK_CONFIG 0 + +// Timer frequency divider +// Default: 1 +#define SL_SLEEPTIMER_FREQ_DIVIDER 1 + +// If Radio internal RTC (PRORTC) HAL is used, determines if it owns the IRQ handler. Enable, if no wireless stack is used. +// Default: 0 +#define SL_SLEEPTIMER_PRORTC_HAL_OWNS_IRQ_HANDLER 0 + +// Enable DEBUGRUN functionality on hardware RTC. +// Default: 0 +#define SL_SLEEPTIMER_DEBUGRUN 0 + +#endif /* SLEEPTIMER_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_token_manager_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_token_manager_config.h new file mode 100644 index 00000000000000..d99e78e083594e --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_token_manager_config.h @@ -0,0 +1,54 @@ +/***************************************************************************//** + * @file + * @brief Token Manager Configurations + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_TOKEN_MANAGER_CONFIG_H +#define SL_TOKEN_MANAGER_CONFIG_H + +// TOKEN MANAGER Configurations + +// Enable Custom Tokens +// Default: 0 +#define SL_TOKEN_MANAGER_CUSTOM_TOKENS_PRESENT 0 + +// File containing custom tokens +// Default: "sl_custom_token_header.h" +// Header file containing custom tokens located at project_root/config +#define SL_TOKEN_MANAGER_CUSTOM_TOKEN_HEADER "sl_custom_token_header.h" + +// + +// Enable Custom Manufacturing Tokens +// Default: 0 +#define SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKENS_PRESENT 0 + +// File containing custom manufacturing tokens +// Default: "sl_custom_manufacturing_token_header.h" +// Header file containing custom tokens located at project_root/config +#define SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKEN_HEADER "sl_custom_manufacturing_token_header.h" + +// +// + +#if (SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKENS_PRESENT) +#define APPLICATION_MFG_TOKEN_HEADER SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKEN_HEADER +#endif // SL_TOKEN_MANAGER_CUSTOM_MANUFACTURING_TOKENS_PRESENT + +#endif // SL_TOKEN_MANAGER_CONFIG_H + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_zigbee_binding_table_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_zigbee_binding_table_config.h new file mode 100644 index 00000000000000..ef4b92fbc30681 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_zigbee_binding_table_config.h @@ -0,0 +1,28 @@ +/***************************************************************************//** + * @brief Zigbee Binding Table component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Binding Table configuration + +// Binding Table Size <1-127> +// Default: 3 +// The number of entries that the binding table can hold. +#define EMBER_BINDING_TABLE_SIZE 32 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_zigbee_debug_print_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_zigbee_debug_print_config.h new file mode 100644 index 00000000000000..9c901f40481767 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_zigbee_debug_print_config.h @@ -0,0 +1,74 @@ +/***************************************************************************//** + * @brief ZigBee Debug Print component configuration header. + * + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// ZigBee Debug Print configuration + +// Stack group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "stack" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_STACK_GROUP_ENABLED (1) + +// Stack group runtime default +// Default: 1 +// If this option is enabled, prints belonging to the "stack" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_STACK_GROUP_RUNTIME_DEFAULT (1) + +// Core group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "core" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_CORE_GROUP_ENABLED (1) + +// Core group runtime default +// Default: 1 +// If this option is enabled, prints belonging to the "core" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_CORE_GROUP_RUNTIME_DEFAULT (1) + +// App group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "app" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_APP_GROUP_ENABLED (1) + +// App group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "app" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_APP_GROUP_RUNTIME_DEFAULT (1) + +// ZCL group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "zcl" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_ZCL_GROUP_ENABLED (1) + +// ZCL group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "zcl" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_ZCL_GROUP_RUNTIME_DEFAULT (1) + +// Legacy App Framework Debug group enabled +// Default: 0 +// If both this option and ZIGBEE_DEBUG_ZCL_GROUP_ENABLED are enabled, prints belonging to the "legacy app framework debug" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_PRINTS_ZCL_LEGACY_AF_DEBUG_ENABLED (0) + +// Legacy App Framework Debug runtime default +// Default: 0 +// If both this option and ZIGBEE_DEBUG_ZCL_GROUP_ENABLED are enabled, prints belonging to the "legacy app framework debug" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_PRINTS_ZCL_LEGACY_AF_DEBUG_RUNTIME_DEFAULT (0) + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_zigbee_green_power_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_zigbee_green_power_config.h new file mode 100644 index 00000000000000..75a81eec322a24 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_zigbee_green_power_config.h @@ -0,0 +1,63 @@ +/***************************************************************************//** + * @brief Zigbee Green Power component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Green Power Library configuration + +// Green Power Proxy Table Size <1-126> +// Default: 5 +// The maximum number of Green Power proxy table entries supported by the stack. +#define EMBER_GP_PROXY_TABLE_SIZE 5 + +// Green Power Proxy Table Token Size <1-126> +// Default: 5 +// The maximum number of pairings stored in proxy table non-volatile memory,between 0 and EMBER_GP_PROXY_TABLE_SIZE. +#define EMBER_GP_PROXY_TABLE_TOKEN_SIZE 5 + +// Green Power Sink Table Size <0-126> +// Default: 0 +// The maximum number of Green Power sink table entries supported by the stack. +#define EMBER_GP_SINK_TABLE_SIZE 0 + +// Green Power Sink Table Token Size <0-126> +// Default: 0 +// The maximum number of pairings stored in sink table non-volatile memory,between 0 and EMBER_GP_SINK_TABLE_SIZE. +#define EMBER_GP_SINK_TABLE_TOKEN_SIZE 0 + +// Green Power incoming FC (as part of proxy table) Token timeout <0-60> +// Default: 0 +// The timeout (seconds) to restore the GPD incoming security frame counter in the Flash (0 being never). +#define EMBER_GP_INCOMING_FC_TOKEN_TIMEOUT 7 + +// Green Power incoming FC (as part of proxy table) table token table size <0-126> +// Default: 0 +// The maximum table size to restore the GPD incoming security frame counter in the Flash (being either 0 or EMBER_GP_PROXY_TABLE_SIZE). +#define EMBER_GP_INCOMING_FC_TOKEN_TABLE_SIZE 0 + +// Green Power incoming FC (as part of sink table) token table token timeout <0-60> +// Default: 0 +// The timeout (seconds) to restore the GPD incoming security frame counter in the Flash (0 being never). +#define EMBER_GP_INCOMING_FC_IN_SINK_TOKEN_TIMEOUT 7 + +// Green Power incoming FC (as part of sink table)Token table size <0-126> +// Default: 0 +// The maximum table size to restore the GPD incoming security frame counter in the Flash (being either 0 or EMBER_GP_SINK_TABLE_SIZE). +#define EMBER_GP_INCOMING_FC_IN_SINK_TOKEN_TABLE_SIZE 0 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_zigbee_pro_stack_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_zigbee_pro_stack_config.h new file mode 100644 index 00000000000000..e035ce1f9c9388 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_zigbee_pro_stack_config.h @@ -0,0 +1,89 @@ +/***************************************************************************//** + * @brief ZigBee PRO Full Stack component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee PRO Stack Library configuration + +// Child Table Size <0-64> +// Default: 6 +// The maximum number of ZigBee PRO End Devices that can be supported by a single device. +#define EMBER_MAX_END_DEVICE_CHILDREN 32 + +// Packet Buffer Count <20-254> +// Default: 75 +// The maximum number of packet buffers supported by the system. This is limited by the amount of available RAM. +#define EMBER_PACKET_BUFFER_COUNT 75 + +// End Device keep alive support mode +// End Device keep alive support mode +// MAC Data Poll Keep Alive +// End Device Timeout Keep Alive +// Keep Alive Support All +// Default: EMBER_KEEP_ALIVE_SUPPORT_ALL +// End Device keep alive support mode on the coordinator/router could be set here. +#define EMBER_END_DEVICE_KEEP_ALIVE_SUPPORT_MODE EMBER_KEEP_ALIVE_SUPPORT_ALL + +// End Device Poll Timeout Value +// End Device Poll Timeout Value +// Seconds-10 +// Minutes-2 +// Minutes-4 +// Minutes-8 +// Minutes-16 +// Minutes-32 +// Minutes-64 +// Minutes-128 +// Minutes-256 +// Minutes-512 +// Minutes-1024 +// Minutes-2048 +// Minutes-4096 +// Minutes-8192 +// Minutes-16384 +// Default: MINUTES_256 +// The amount of time that must pass without hearing a MAC data poll from the device before the end device is removed from the child table. For a router device this applies to its children. For an end device, this is the amount of time before it automatically times itself out. +#define EMBER_END_DEVICE_POLL_TIMEOUT MINUTES_256 + +// Link Power Delta Request Interval <1-65535> +// Default: 300 +// The amount of time in seconds that pass between link power delta requests. +#define EMBER_LINK_POWER_DELTA_INTERVAL 300 + +// APS Unicast Message Queue Size <1-255> +// Default: 10 +// The maximum number of APS unicast messages that can be queued up by the stack. A message is considered queued when emberSendUnicast() is called and is de-queued when the emberMessageSentHandler() is called. +#define EMBER_APS_UNICAST_MESSAGE_COUNT 10 + +// Broadcast Table Size <15-254> +// Default: 15 +// The size of the broadcast table. +#define EMBER_BROADCAST_TABLE_SIZE 15 + +// Neighbor Table Size +// Neighbor Table Size +// <16=> 16 +// <26=> 26 +// Default: 16 +// The size of the neighbor table. +#define EMBER_NEIGHBOR_TABLE_SIZE 16 + +// Transient key timeout (in seconds) <0-65535> +// Default: 300 +// The amount of time a device will store a transient link key that can be used to join a network. +#define EMBER_TRANSIENT_KEY_TIMEOUT_S 300 +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_zigbee_security_link_keys_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_zigbee_security_link_keys_config.h new file mode 100644 index 00000000000000..9a0c84883944c6 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_zigbee_security_link_keys_config.h @@ -0,0 +1,33 @@ +/***************************************************************************//** + * @brief Zigbee Security Link Keys component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Security Link Keys Library configuration + +// Link Key Table Size <1-127> +// Default: 6 +// The maximum number of link key table entries supported by the stack. +#define EMBER_KEY_TABLE_SIZE 12 + +// Request Key Timeout <0-10> +// Default: 0 +// The length of time that a node will wait for a trust center to answer its Application Link Key request. +#define EMBER_REQUEST_KEY_TIMEOUT 0 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4187c/config/sl_zigbee_source_route_config.h b/silabs_examples/credentials/device/brd4187c/config/sl_zigbee_source_route_config.h new file mode 100644 index 00000000000000..41b5e4bb2155ef --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/sl_zigbee_source_route_config.h @@ -0,0 +1,33 @@ +/***************************************************************************//** + * @brief Zigbee Source Route component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Source Route Library configuration + +// Source route table Size (SoC or NCP) <2-255> +// Default: 7 +// The size of the source route table for storing source routes on the SOC or NCP. +#define EMBER_SOURCE_ROUTE_TABLE_SIZE 7 + +// Max source route relay counts <11-40> +// Default: 11 +// Max source route hops accepted or/and inserted in the source route table/header. +#define EMBER_MAX_SOURCE_ROUTE_RELAY_COUNT 11 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4187c/config/zigbee_sleep_config.h b/silabs_examples/credentials/device/brd4187c/config/zigbee_sleep_config.h new file mode 100644 index 00000000000000..fa4efd14070497 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/config/zigbee_sleep_config.h @@ -0,0 +1,42 @@ +/***************************************************************************//** + * @brief Zigbee Application Framework common component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Sleep configuration + +// Minimum Sleep Duration <5-1000> +// Default: 5 +// The minimum duration in milliseconds that the application will attempt to sleep for. If the sleep duration would be less than this amount, the application will not sleep. +#define SL_ZIGBEE_APP_FRAMEWORK_MINIMUM_SLEEP_DURATION_MS 5 + +// Sleep Backoff time <0-10000> +// Default: 0 +// This setting will keep a device from going back to sleep immediately upon waking up +#define SL_ZIGBEE_APP_FRAMEWORK_BACKOFF_SLEEP_MS 0 + +// Stay awake when NOT joined +// Default: TRUE +// This will force a device to stay awake even when not joined to the network. This is often used for debugging and is not recommended for production devices since it cause the device to consume battery power even when not joined to a ZigBee network. +#define SL_ZIGBEE_APP_FRAMEWORK_STAY_AWAKE_WHEN_NOT_JOINED 1 + +// Use button to force wakeup or allow sleep +// Default: FALSE +// This will setup the hardware buttons to wake-up or allow the device to go to sleep. Button 0 will force the device to wake up and stay awake. Button 1 will turn off this behavior to allow the device to sleep normally. Please note that in order for this option to be fully functional, button 0 and button 1 have to be configured to wake the device from sleep. +#define SL_ZIGBEE_APP_FRAMEWORK_USE_BUTTON_TO_STAY_AWAKE 0 +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/device/brd4187c/device-creds.Makefile b/silabs_examples/credentials/device/brd4187c/device-creds.Makefile new file mode 100644 index 00000000000000..ea4140191048d6 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/device-creds.Makefile @@ -0,0 +1,190 @@ +#################################################################### +# User Makefile # +# This will not be overwritten. Edit as desired. # +#################################################################### +.SUFFIXES: # ignore builtin rules +.PHONY: all debug release clean + +# Default goal +all: debug + +#################################################################### +# Definitions # +#################################################################### + +# Values set by the initial generation +PROJECTNAME = device-creds +ARM_GCC_DIR_WIN = +ARM_GCC_DIR_OSX = +ARM_GCC_DIR_LINUX = + +# Pre-defined definitions in this file +ifeq ($(OS),Windows_NT) + ARM_GCC_DIR ?= $(ARM_GCC_DIR_WIN) +else + UNAME_S := $(shell uname -s) + ifeq ($(UNAME_S),Darwin) + ARM_GCC_DIR ?= $(ARM_GCC_DIR_OSX) + else + ARM_GCC_DIR ?= $(ARM_GCC_DIR_LINUX) + endif +endif + +# Command output is hidden by default, it can be enabled by +# setting VERBOSE=true on the commandline. +ifeq ($(VERBOSE),) + ECHO = @ +endif + +# Build Directories +BUILD_DIR = build +LST_DIR = lst + +ifneq ($(filter $(MAKECMDGOALS),release),) + OUTPUT_DIR = $(BUILD_DIR)/release +else + OUTPUT_DIR = $(BUILD_DIR)/debug +endif + +# Values that should be appended by the sub-makefiles +C_SOURCE_FILES = +CXX_SOURCE_FILES = +ASM_SOURCE_FILES = + +LIBS = + +C_DEFS = +ASM_DEFS = + +INCLUDES = + +C_FLAGS = +C_FLAGS_DEBUG = +C_FLAGS_RELEASE = +CXX_FLAGS = +CXX_FLAGS_DEBUG = +CXX_FLAGS_RELEASE = +ASM_FLAGS = +ASM_FLAGS_DEBUG = +ASM_FLAGS_RELEASE = +LD_FLAGS = + +OBJS = + +#################################################################### +# Definitions of toolchain. # +# You might need to do changes to match your system setup # +#################################################################### + +AR = "$(ARM_GCC_DIR)/bin/arm-none-eabi-gcc-ar" +CC = "$(ARM_GCC_DIR)/bin/arm-none-eabi-gcc" +CXX = "$(ARM_GCC_DIR)/bin/arm-none-eabi-g++" +OBJCOPY = "$(ARM_GCC_DIR)/bin/arm-none-eabi-objcopy" +LD = "$(ARM_GCC_DIR)/bin/arm-none-eabi-gcc" + +#################################################################### +# Include sub-makefiles # +# Define a makefile here to add files/settings to the build. # +#################################################################### +-include device-creds.project.mak + + +#################################################################### +# Rules # +#################################################################### + +# -MMD : Don't generate dependencies on system header files. +# -MP : Add phony targets, useful when a h-file is removed from a project. +# -MF : Specify a file to write the dependencies to. +DEPFLAGS = -MMD -MP -MF $(@:.o=.d) + +CSOURCES = $(notdir $(C_SOURCE_FILES)) +CXXSOURCES = $(notdir $(filter %.cpp, $(CXX_SOURCE_FILES))) +CCSOURCES = $(notdir $(filter %.cc, $(CXX_SOURCE_FILES))) +ASMSOURCES_s = $(notdir $(filter %.s, $(ASM_SOURCE_FILES))) +ASMSOURCES_S = $(notdir $(filter %.S, $(ASM_SOURCE_FILES))) + +COBJS = $(addprefix $(OUTPUT_DIR)/,$(CSOURCES:.c=.o)) +CXXOBJS = $(addprefix $(OUTPUT_DIR)/,$(CXXSOURCES:.cpp=.o)) +CCOBJS = $(addprefix $(OUTPUT_DIR)/,$(CCSOURCES:.cc=.o)) +ASMOBJS_s = $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_s:.s=.o)) +ASMOBJS_S = $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_S:.S=.o)) +OBJS += $(COBJS) $(CXXOBJS) $(CCOBJS) $(ASMOBJS_s) $(ASMOBJS_S) + +CDEPS += $(addprefix $(OUTPUT_DIR)/,$(CSOURCES:.c=.d)) +CXXDEPS += $(addprefix $(OUTPUT_DIR)/,$(CXXSOURCES:.cpp=.d)) +CXXDEPS += $(addprefix $(OUTPUT_DIR)/,$(CCSOURCES:.cc=.d)) +ASMDEPS_s += $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_s:.s=.d)) +ASMDEPS_S += $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_S:.S=.d)) + +C_PATHS = $(subst \,/,$(sort $(dir $(C_SOURCE_FILES)))) +CXX_PATHS = $(subst \,/,$(sort $(dir $(CXX_SOURCE_FILES)))) +ASM_PATHS = $(subst \,/,$(sort $(dir $(ASM_SOURCE_FILES)))) + +vpath %.c $(C_PATHS) +vpath %.cpp $(CXX_PATHS) +vpath %.cc $(CXX_PATHS) +vpath %.s $(ASM_PATHS) +vpath %.S $(ASM_PATHS) + +override CFLAGS = $(C_FLAGS) $(C_DEFS) $(INCLUDES) $(DEPFLAGS) +override CXXFLAGS = $(CXX_FLAGS) $(C_DEFS) $(INCLUDES) $(DEPFLAGS) +override ASMFLAGS = $(ASM_FLAGS) $(ASM_DEFS) $(INCLUDES) $(DEPFLAGS) + +# Rule Definitions +debug: C_FLAGS += $(C_FLAGS_DEBUG) +debug: CXX_FLAGS += $(CXX_FLAGS_DEBUG) +debug: ASM_FLAGS += $(ASM_FLAGS_DEBUG) +debug: $(OUTPUT_DIR)/$(PROJECTNAME).out + +release: C_FLAGS += $(C_FLAGS_RELEASE) +release: CXX_FLAGS += $(CXX_FLAGS_RELEASE) +release: ASM_FLAGS += $(ASM_FLAGS_RELEASE) +release: $(OUTPUT_DIR)/$(PROJECTNAME).out + +# include auto-generated dependency files (explicit rules) +ifneq (clean,$(findstring clean, $(MAKECMDGOALS))) +-include $(CDEPS) +-include $(CXXDEPS) +-include $(ASMDEPS_s) +-include $(ASMDEPS_S) +endif + +$(OUTPUT_DIR)/$(PROJECTNAME).out: $(OBJS) $(LIB_FILES) + @echo 'Linking $(OUTPUT_DIR)/$(PROJECTNAME).out' + @echo $(OBJS) > $(OUTPUT_DIR)/linker_objs + $(ECHO)$(LD) $(LD_FLAGS) @$(OUTPUT_DIR)/linker_objs $(LIBS) -o $(OUTPUT_DIR)/$(PROJECTNAME).out + $(ECHO)$(OBJCOPY) $(OUTPUT_DIR)/$(PROJECTNAME).out -O binary $(OUTPUT_DIR)/$(PROJECTNAME).bin + $(ECHO)$(OBJCOPY) $(OUTPUT_DIR)/$(PROJECTNAME).out -O ihex $(OUTPUT_DIR)/$(PROJECTNAME).hex + $(ECHO)$(OBJCOPY) $(OUTPUT_DIR)/$(PROJECTNAME).out -O srec $(OUTPUT_DIR)/$(PROJECTNAME).s37 + @echo 'Done.' + +$(OBJS): + +$(OUTPUT_DIR)/%.o: %.c + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.cpp + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CXX) $(CXXFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.cc + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CXX) $(CXXFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.s + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.S + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $< + +clean: + $(RM) -rf $(BUILD_DIR) diff --git a/silabs_examples/credentials/device/brd4187c/device-creds.emProject b/silabs_examples/credentials/device/brd4187c/device-creds.emProject new file mode 100644 index 00000000000000..f124bbea5ac1f0 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/device-creds.emProject @@ -0,0 +1,1181 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/silabs_examples/credentials/device/brd4187c/device-creds.ewd b/silabs_examples/credentials/device/brd4187c/device-creds.ewd new file mode 100644 index 00000000000000..8c0547155569d7 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/device-creds.ewd @@ -0,0 +1,1476 @@ + + + 3 + + Default + + ARM + + 1 + + C-SPY + 2 + + 30 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ARMSIM_ID + 2 + + 1 + 1 + 1 + + + + + + + + CADI_ID + 2 + + 0 + 1 + 1 + + + + + + + + + CMSISDAP_ID + 2 + + 4 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GDBSERVER_ID + 2 + + 0 + 1 + 1 + + + + + + + + + + + IJET_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JLINK_ID + 2 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LMIFTDI_ID + 2 + + 2 + 1 + 1 + + + + + + + + + + NULINK_ID + 2 + + 0 + 1 + 1 + + + + + + + PEMICRO_ID + 2 + + 3 + 1 + 1 + + + + + + + + STLINK_ID + 2 + + 5 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THIRDPARTY_ID + 2 + + 0 + 1 + 1 + + + + + + + + TIFET_ID + 2 + + 1 + 1 + 1 + + + + + + + + + + + + + + + + + + + XDS100_ID + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8BE.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin + 0 + + + $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin + 0 + + + $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin + 1 + + + $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin + 0 + + + $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin + 0 + + + + diff --git a/silabs_examples/credentials/device/brd4187c/device-creds.ewp b/silabs_examples/credentials/device/brd4187c/device-creds.ewp new file mode 100644 index 00000000000000..b36f49dd1465db --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/device-creds.ewp @@ -0,0 +1,1249 @@ + + + + 3 + + Default + + ARM + + 1 + + General + 3 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 21 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + $PROJ_DIR$\device-creds.ipcf + + \ No newline at end of file diff --git a/silabs_examples/credentials/device/brd4187c/device-creds.eww b/silabs_examples/credentials/device/brd4187c/device-creds.eww new file mode 100644 index 00000000000000..57aaa4ba1bfcbb --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/device-creds.eww @@ -0,0 +1,8 @@ + + + + + $WS_DIR$\device-creds.ewp + + + diff --git a/silabs_examples/credentials/device/brd4187c/device-creds.ipcf b/silabs_examples/credentials/device/brd4187c/device-creds.ipcf new file mode 100644 index 00000000000000..c47df3af5f252e --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/device-creds.ipcf @@ -0,0 +1,1147 @@ + + + + + config\sl_memory_config.h + config\psa_crypto_config.h + config\sl_mx25_flash_shutdown_eusart_config.h + config\sl_device_init_dcdc_config.h + config\sl_legacy_hal_wdog_config.h + config\sl_hfxo_manager_config.h + config\sl_zigbee_debug_print_config.h + config\sl_sleeptimer_config.h + config\sl_power_manager_config.h + config\sl_device_init_lfxo_config.h + config\sl_rail_util_pti_config.h + config\nvm3_default_config.h + config\zigbee_sleep_config.h + config\app_properties_config.h + config\sl_device_init_emu_config.h + config\emlib_core_debug_config.h + config\legacy_common_ash_config.h + config\SEGGER_RTT_Conf.h + config\sl_zigbee_security_link_keys_config.h + config\sl_zigbee_binding_table_config.h + config\sl_board_control_config.h + config\sl_debug_swo_config.h + config\sl_zigbee_pro_stack_config.h + config\sl_token_manager_config.h + config\sl_custom_token_header.h + config\sl_custom_manufacturing_token_header.h + config\sl_zigbee_green_power_config.h + config\sl_simple_led_led0_config.h + config\sl_iostream_usart_vcom_config.h + config\sl_zigbee_source_route_config.h + config\legacy_hal_config.h + config\sl_device_init_hfxo_config.h + config\sl_rail_util_pa_config.h + config\btl_interface_cfg.h + config\btl_interface_cfg_s2c4.h + config\mbedtls_config.h + config\sl_iostream_vuart_config.h + + + autogen\sl_board_default_init.c + autogen\sl_application_type.h + autogen\RTE_Components.h + autogen\sl_component_catalog.h + autogen\sl_device_init_clocks.c + autogen\sl_event_handler.h + autogen\sl_event_handler.c + autogen\sl_iostream_handles.h + autogen\sl_iostream_handles.c + autogen\sl_iostream_init_instances.h + autogen\sl_iostream_init_usart_instances.c + autogen\sl_iostream_init_usart_instances.h + autogen\sl_legacy_bootloader_device_info.h + autogen\mbedtls_config_autogen.h + autogen\sl_mbedtls_config_transform_autogen.h + autogen\sl_power_manager_handler.c + autogen\psa_crypto_config_autogen.h + autogen\sl_rail_util_ieee802154_phy_select.c + autogen\sl_rail_util_ieee802154_stack_event.c + autogen\sl_simple_led_instances.c + autogen\sl_simple_led_instances.h + autogen\linkerfile_base.icf + autogen\zigbee_stack_callback_dispatcher.h + autogen\zigbee_stack_callback_dispatcher.c + autogen\zigbee_common_callback_dispatcher.h + autogen\zigbee_common_callback_dispatcher.c + autogen\zigbee_ncp_callback_dispatcher.h + autogen\zigbee_ncp_callback_dispatcher.c + autogen\zigbee_af_token_headers.h + autogen\.crc_config.crc + + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Source\system_efr32mg24.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Source\startup_efr32mg24.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24b220f1536im48.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_acmp.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_aes.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_amuxcp.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_buram.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_burtc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_cmu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_dcdc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_devinfo.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_dma_descriptor.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_dpll.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_emu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_eusart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_fsrco.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_gpcrc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_gpio.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_gpio_port.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_hfrco.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_hfxo.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_i2c.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_iadc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_icache.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_keyscan.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_ldma.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_ldmaxbar.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_ldmaxbar_defines.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_letimer.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_lfrco.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_lfxo.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_mailbox.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_mpahbram.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_msc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_mvp.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_pcnt.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_prs.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_prs_signals.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_scratchpad.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_semailbox.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_smu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_syscfg.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_sysrtc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_timer.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_ulfrco.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_usart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_vdac.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\efr32mg24_wdog.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\em_device.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\Device\SiliconLabs\EFR32MG24\Include\system_efr32mg24.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_atomic.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_endianness.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_enum.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_assert.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_slist.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\inc\sl_status.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\src\sl_assert.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\src\sl_slist.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\toolchain\src\sl_memory.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\toolchain\inc\sl_memory_region.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\common\toolchain\inc\sl_memory.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\app_properties\app_properties.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface_storage.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\application_properties.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_errorcode.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface_parser.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_interface_storage.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\bootloader\api\btl_reset_info.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\cmsis_compiler.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\cmsis_version.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\tz_context.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\cmsis_iccarm.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\core_cm33.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\CMSIS\Core\Include\mpu_armv8.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\debug\src\sl_debug_swo.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\debug\inc\sl_debug_swo.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\leddrv\src\sl_led.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\leddrv\src\sl_simple_led.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\leddrv\inc\sl_led.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\driver\leddrv\inc\sl_simple_led.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_clocks.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_dcdc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_emu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_hfxo.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_lfxo.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\inc\sl_device_init_nvic.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_dcdc_s2.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_emu_s2.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_hfxo_s2.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_lfxo_s2.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\device_init\src\sl_device_init_nvic.c + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\hfxo_manager\src\sl_hfxo_manager.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\hfxo_manager\src\sl_hfxo_manager_hal_s2.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\hfxo_manager\src\sli_hfxo_manager_internal.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\hfxo_manager\inc\sl_hfxo_manager.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\hfxo_manager\inc\sli_hfxo_manager.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_debug.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_swo_itm_8.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_retarget_stdio.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_uart.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_usart.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\src\sl_iostream_vuart.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sli_iostream_swo_itm_8.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_swo_itm_8.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_uart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sli_iostream_uart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_usart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_vuart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\iostream\inc\sl_iostream_swo.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\bootloader-interface.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\bootloader-interface-app.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\bootloader-interface-standalone.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\bootloader-common.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\crc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\base-replacement.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\diagnostic.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\ember-phy.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\faults.s + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\random.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\src\token_legacy.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\serial\serial.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\cortexm3\diagnostic.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\hal\hal.h + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-interface.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-interface-app.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-interface-standalone.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\bootloader-eeprom.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\asm.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\button.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\crc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\efm32_micro.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\em2xx-reset-defs.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\emlib_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\hal.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\interrupts-efm32.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\led.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\micro-common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\micro-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\micro.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\platform-header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\random.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\reset-def.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\serial.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\token-manufacturing-series-1.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\token-manufacturing-series-2.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\token-manufacturing.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal\inc\sl_legacy_hal_integration_hooks.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_common_ash\src\ash-common.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_common_ash\inc\ash-common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_common_ash\inc\ash-protocol.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal_wdog\src\sl_legacy_hal_wdog.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_hal_wdog\inc\sl_legacy_hal_wdog.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_ncp_ash\src\ash-ncp.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_ncp_ash\inc\ash-ncp.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_printf\src\sl_legacy_printf.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\legacy_printf\inc\sl_legacy_printf.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\src\sl_power_manager.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\src\sl_power_manager_debug.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\src\sl_power_manager_hal_s2.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\src\sli_power_manager_private.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\inc\sl_power_manager.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\inc\sl_power_manager_debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\power_manager\inc\sli_power_manager.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\system\src\sl_system_init.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\system\src\sl_system_process_action.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\system\inc\sl_system_init.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\system\inc\sl_system_process_action.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\src\sl_sleeptimer.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\src\sl_sleeptimer_hal_sysrtc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\src\sl_sleeptimer_hal_burtc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\src\sli_sleeptimer_hal.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\inc\sl_sleeptimer.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\sleeptimer\inc\sli_sleeptimer.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\src\sl_token_def.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\src\sl_token_manager.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\src\sl_token_manufacturing.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_api.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manager.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manager_af_token_header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manufacturing.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manufacturing_api.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manufacturing_series_1.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\token_manager\inc\sl_token_manufacturing_series_2.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\udelay\src\sl_udelay.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\udelay\src\sl_udelay_armv6m_iar.s + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\service\udelay\inc\sl_udelay.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\common\inc\ecode.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\src\nvm3_default_common_linker.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\src\nvm3_hal_flash.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\src\nvm3_lock.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3_default.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3_hal.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3_hal_flash.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\inc\nvm3_lock.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emdrv\nvm3\lib\libnvm3_CM33_iar.a + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_burtc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_cmu.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_core.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_emu.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_eusart.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_gpio.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_msc.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_prs.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_rmu.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_se.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_system.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_usart.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\src\em_wdog.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_burtc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_chip.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_cmu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_cmu_compat.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_assert.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_bus.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_ramfunc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_version.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_core.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_emu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_eusart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_eusart_compat.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_gpio.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_msc.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_msc_compat.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_prs.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_rmu.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_se.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_syscfg.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_system.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_usart.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\emlib\inc\em_wdog.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\peripheral\src\peripheral_sysrtc.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\peripheral\inc\peripheral_sysrtc.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail_mfm.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail_assert_error_codes.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail_types.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\common\rail_features.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\protocol\ble\rail_ble.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\protocol\ieee802154\rail_ieee802154.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\protocol\zwave\rail_zwave.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\chip\efr32\efr32xg2x\rail_chip_specific.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\autogen\librail_release\librail_efr32xg24_iar_release.a + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_ieee802154\sl_rail_util_ieee802154_stack_event.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_ieee802154\sl_rail_util_ieee802154_phy_select.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\efr32xg24\sl_rail_util_pa_curves_10dbm.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\efr32xg24\sl_rail_util_pa_curves_20dbm.h + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_conversions_efr32.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_curves_efr32.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_conversions_efr32.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_curve_types_efr32.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\pa-conversions\pa_curves_efr32.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_pti\sl_rail_util_pti.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_pti\sl_rail_util_pti.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_ant_div\sl_rail_util_ant_div.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\rail_util_ant_div\sl_rail_util_ant_div.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\coexistence\protocol\ieee802154_uc\coexistence-802154.c + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\coexistence\protocol\ieee802154_uc\coexistence-802154.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\rail_lib\plugin\coexistence\common\coexistence.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\rail_mux\sl_rail_mux_rename.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\rail_mux\sl_rail_mux.h + + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\indirect-queue.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\lower-mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\lower-mac-debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-child.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-command.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-flat-header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-packet-header.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-phy.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\multi-mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\mac-multi-network.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\scan.h + ..\..\..\..\..\..\..\Green\git\gsdk\platform\radio\mac\upper-mac.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\board\src\sl_board_init.c + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\board\src\sl_board_control_gpio.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\board\inc\sl_board_control.h + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\board\inc\sl_board_init.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\driver\configuration_over_swo\src\sl_cos.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\driver\configuration_over_swo\inc\sl_cos.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\driver\mx25_flash_shutdown\src\sl_mx25_flash_shutdown_eusart\sl_mx25_flash_shutdown.c + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\hardware\driver\mx25_flash_shutdown\inc\sl_mx25_flash_shutdown_eusart\sl_mx25_flash_shutdown.h + + + + + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\aes.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\padlock.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\asn1parse.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\asn1write.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\base64.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\cipher_wrap.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\cipher_wrap.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecp.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecp_curves.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecdh.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecdsa.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecp_internal_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\md.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\md_wrap.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\bignum.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\bn_mul.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pem.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pk.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pkparse.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pkwrite.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pk_wrap.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\entropy.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\entropy_poll.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ctr_drbg.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\hmac_drbg.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\entropy_poll.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\sha1.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\sha256.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\sha512.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\constant_time.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\threading.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\platform.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\platform_util.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\check_crypto_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\common.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\constant_time_internal.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\constant_time_invasive.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecdh_misc.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ecp_invasive.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\mps_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\mps_error.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\mps_reader.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\mps_trace.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\pk_wrap.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\rsa_alt_helpers.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ssl_debug_helpers_generated.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ssl_misc.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\ssl_tls13_keys.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\oid.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509_create.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509_crl.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509_crt.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509_csr.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509write_crt.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\x509write_csr.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\des.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_client.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_aead.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_driver_wrappers.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_slot_management.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_storage.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_ecp.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_hash.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_mac.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_rsa.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_se.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_aead.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_cipher.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_core.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_driver_wrappers.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_ecp.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_hash.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_invasive.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_its.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_random_impl.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_rsa.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_se.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_slot_management.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\library\psa_crypto_storage.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\aes.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\asn1.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\asn1write.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\base64.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\camellia.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\cipher.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ecp.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ecdh.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ecdsa.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\md.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\md5.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ripemd160.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\sha1.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\sha256.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\sha512.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\bignum.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\pem.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\des.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\entropy.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ctr_drbg.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\hmac_drbg.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\aria.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\build_info.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ccm.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\chacha20.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\chachapoly.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\check_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\cmac.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\compat-2.x.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\config_psa.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\constant_time.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\dhm.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ecjpake.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\error.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\gcm.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\hkdf.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\mbedtls_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\memory_buffer_alloc.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\net_sockets.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\nist_kw.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\oid.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\pk.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\pkcs12.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\pkcs5.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\platform.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\platform_time.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\platform_util.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\poly1305.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\private_access.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\psa_util.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\rsa.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl_cache.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl_ciphersuites.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl_cookie.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\ssl_ticket.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\threading.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\timing.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\version.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\x509.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\x509_crl.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\x509_crt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\mbedtls\x509_csr.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_builtin_composites.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_builtin_primitives.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_compat.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_driver_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_driver_contexts_composites.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_driver_contexts_primitives.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_extra.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_platform.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_se_driver.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_sizes.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_struct.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_types.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\mbedtls\include\psa\crypto_values.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\config\config-device-acceleration.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\config\config-sl-crypto-all-acceleration.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\sl_entropy_hardware.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\sl_mbedtls.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\se_aes.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\mbedtls_ecdsa_ecdh.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\src\mbedtls_sha.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\aes_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\ccm_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\cmac_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\se_management.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\sha1_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\sha256_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\sha512_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\sl_mbedtls.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\threading_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\gcm_alt.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_mbedtls_support\inc\ecjpake_alt.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_psa_trng.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_psa_driver_init.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_psa_driver_common.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_version_dependencies.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_driver_builtin_keys.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_driver_key_management.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_driver_key_derivation.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_driver_aead.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_driver_mac.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_driver_signature.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_driver_cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_transparent_driver_cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_transparent_driver_hash.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_transparent_driver_aead.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_transparent_driver_mac.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_transparent_key_derivation.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_opaque_driver_mac.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_opaque_key_derivation.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_opaque_driver_cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sli_se_opaque_driver_aead.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\src\sl_psa_its_nvm3.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\public\sl_psa_values.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\psa\internal_trusted_storage.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\psa\error.h + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_psa_driver_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_version_dependencies.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_driver_aead.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_driver_cipher.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_driver_key_derivation.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_driver_key_management.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_driver_mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_opaque_functions.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_opaque_types.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_transparent_functions.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\sl_psa_driver\inc\sli_se_transparent_types.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_util.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_cipher.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_entropy.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_hash.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_key_derivation.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_key_handling.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_signature.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sl_se_manager_attestation.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sli_se_manager_osal.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\src\sli_se_manager_osal_baremetal.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_defines.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_types.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_util.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_internal_keys.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sli_se_manager_internal.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_check_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_config.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_cipher.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_entropy.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_hash.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_key_derivation.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_key_handling.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_signature.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\crypto\sl_component\se_manager\inc\sl_se_manager_attestation.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\printf\src\iostream_printf.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\printf\inc\iostream_printf.h + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\printf\printf.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\printf\printf.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\segger\systemview\SEGGER\SEGGER_RTT.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\segger\systemview\SEGGER\SEGGER.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\third_party\segger\systemview\SEGGER\SEGGER_RTT.h + + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\memory_manager\sl_malloc.c + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\memory_manager\sl_malloc.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\buffer_manager\legacy-packet-buffer.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\buffer_manager\buffer-queue.h + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\buffer_manager\buffer-management.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\util\silicon_labs\silabs_core\event_queue\event-queue.h + + + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\aes-ecb.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\ccm-star.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\zigbee_debug_channel.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\zigbee-debug-extended.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\zigbee-event-logger-stub-gen.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\framework\strong-random-api.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\platform\micro\aes.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\security.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\binding-table.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ccm-star.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\gp-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\source-route.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\zll-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-types-internal.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-debug.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\error-def.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\error.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\child.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-alternate-mac.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-duty-cycle.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-static-struct.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\message.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\multi-network.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\multi-phy.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\network-formation.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\stack-info.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\trust-center.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\zigbee-device-stack.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\raw-message.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\aes-mmo.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\byte-utilities.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\ember-random-api.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\library.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\mac-layer.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\bootload.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\cbke-crypto-engine.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\zigbee-event-logger-gen.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\mfglib.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\include\zll-api.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\gp\gp-token-config.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\gp\gp-proxy-table.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\gp\gp-sink-table.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\ember-configuration.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\config.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\token-stack.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\token-phy.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\config\ember-configuration-defaults.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-163k1-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-283k1-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-dsa-verify-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-dsa-sign-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\cbke-crypto-engine-dsa-verify-283k1-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\security\install-code-stub.c + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\ember-multi-network-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\multi-pan-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\multi-pan-common.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\ember-multi-network.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\multi-pan-token-config.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\core\multi-pan.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\zll\zll-stubs.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\zll\zll-token-config.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\zigbee\source-route-table-update.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\stack\mac\multi-mac.h + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_common.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_stack_cb.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_sleep.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_common.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_event.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_app_framework_callback.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\common\zigbee_ncp_framework_cb.c + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\plugin\debug-print\sl_zigbee_debug_print.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\plugin\debug-print\sl_zigbee_debug_print.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\framework\util\af-ncp-token.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\security\security-address-cache.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\security\security.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\secure-ezsp-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\ezsp-protocol.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\secure-ezsp-protocol.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\secure-ezsp-types.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\ezsp-enum.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\util\ezsp\ezsp-frame-utilities.h + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-binding-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-binding.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-green-power-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\em260-common.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\serial-interface-uart.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\ncp-stack-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-secure-ezsp-stub.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-context.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\serial-interface.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\em260-callbacks.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-cbke.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-mfglib.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-messaging-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-networking-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-security-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-trust-center-generated.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-zll.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-security.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\em260\command-handlers-zigbee-pro.h + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\xncp\xncp.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\xncp\xncp_cb.c + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\xncp\xncp-token.h + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\xncp\xncp-sample-custom-ezsp-protocol.h + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\app\ncp\plugin\xncp\xncp.h + + + + + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\binding-table-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\binding-table-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\ncp-binding-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\ncp-binding-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\debug-basic-library-cortexm3-iar-efr32mg24-rail\debug-basic-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\debug-extended-library-cortexm3-iar-efr32mg24-rail\debug-extended-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\end-device-bind-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\end-device-bind-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\gp-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\gp-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\ncp-gp-library-cortexm3-iar-efr32mg24-rail\ncp-gp-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\em260-uart-util-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\em260-uart-util-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\packet-validate-library-cortexm3-iar-efr32mg24-rail\packet-validate-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\zigbee-pro-stack-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\zigbee-pro-stack.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\ncp-pro-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\ncp-pro-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\zigbee-r22-support-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\zigbee-r22-support-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\security-library-link-keys-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\security-library-link-keys.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\source-route-library-cortexm3-iar-efr32mg24-rail-ember_multi_network_stripped\source-route-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\ncp-source-route-library-cortexm3-iar-efr32mg24-rail\ncp-source-route-library.a + + + ..\..\..\..\..\..\..\Green\git\gsdk\protocol\zigbee\build\em260-xncp-library-cortexm3-iar-efr32mg24-rail\em260-xncp-library.a + + + + + + ..\main.c + ..\device_creds.c + ..\device_cert.c + ..\..\common\creds.h + ..\..\common\creds.c + ..\README.md + + + eJztfflz20iy5r/icEzsD7sNQaIsj9vbPS9kiXJzR7IUouyZfs8TiCJQJDHCNTgoyRP9v28dAAiAOOpIUNLbnZiWJbLyyy+rsqqy7n+/nc+ubi5nZ7O736353dfz2bX16evs8m72Zf7249v/+vf3t4vM9VI3uEJ2HCZXKPr+9iP59Or07m56a51dX11df7G+nF5Nyeff337/Tr5CaYrjN+d48+b89OzN4ePFxcWRefj44fDwhH7//e1PpfzN7fX517M7a3bOxPNElQTfpl/Or2+331Os6vd/Pzn82Zr+/W76ZT67/jJnqXiCm/mpdXb7+83dNdEy+3LX85V1Nr2tfn87nU9vv03PrdNvp7PL00+XU+tqenV9+ztPc3h4yJJNL26PJ1efJ+8+TSaHF0cnx+9nV+8+VHDml9bpzQ018oYomE3n9e8+XZ/entfz7tPt+bujD38+K/OpTHY7/VamOj08qiYghXBz/WVK7Ti9O728/kw0EgtqJs+nnz+T7Lq9u7NOL2efv1yVXx9O3nFrrj6RBKcXhPKM6Ly+u7w+PSefkPyZ3l6cnk0raGfXt3fTv18dt3xkTS+ujifW1ezs9rr9a5Jp1bL47XfrluRy9aPL07uL69sr67cpZVCaHXkoXYaxb6wxcnB8sK5mwuX08+nZ79Zvp5fW9Asrsr+d3p39dn79uYJMTDy/u5yTHPtyMftsXcwuuVW/+AvspF5i2WGwdFcH67/Uklf8ZUcySpBlx09RGjaECSdql3U5+2RdfSU1irjB3fXZ9aU1/3pzc5073GEt7dc78uPmtNBSsf+XxLNi5HpWlpIfEWooo+X6dT61TudXFdizr/O76yvr7vqv0y/NzCR4aXiPA8tHAVrh2ELL/IOd3KXAX77VSvvrGWsmzisflf7z5exm52NSn2anl0fE/+Znd9VqMP3P+Y319bRW/b5cE1s+7WCwTLS+TO/+dn37V9JY3c5ubqbn9Sr1n7PPn6ZTizrVfHo5JS3L/O707K+1LCeJ//ipbNcu3UWM4qcblK6TeRrz/Hm78/2F6+Hy+yTNHDf8aCbOvVk4pYl9J96YwcY/Nj13Qf+jv1tnV8fHloviA/SmVSxG5DOTFS0VQ1karnBAxdlnMfYwSnD5N17Gx5PH1eQdxSy+bWLHYRraoWf+cFcLjE1qiWMu3MBxg5WRooWHDY+bZdhhnOJH/9ggcAYD9wm4QXUZmNSK2PIzkg1WgNOHML63kjR2owh3wAkRCezIKKS1abSACZFw8CJbGQuUuLYIibb0EnrwY4oDBzsSqpoiQtqIhOHgjWtjlin62dsBKERmFenr32IIu5aY2kZSsdz1J+8PjQzFqUFbYYDcbQcUIhMh+x6nxgZ5roNSoQrdJSOkj/9hkC+NJCU46lY3kYRLlkqANBgVIBnb48nESLIoIqr1eXRjClFKsJ3FbvpUEvHc4N64x0+JOqVuTDFKYRaTdiIOMzF3HCDTgibsKbJUOoUk2oVHiiGiazf5AWqJOL4gHyck3Pivf+x8db34J7bTerjiOjuhyyywvczZhi1LEsN8NL+FXkaQzU9ehk1SAZO1Gbs2ip3Q9NnIzbRj7CQmb/bNRezQEYlt8oDTfKOHUsQ3ajCSUnbo+yHR1Rp4nXPIueu5xLRLtEjMckBn5lnXIZrjuoFdT7AmFB5QTMwNyW+735cAizBMvZCG2cMJUOR2JDq7ms/m5llIFLbyLek4sbuhmcJKMItR6oaBFZKPrOQh7KGZy7GApCdZgmOWlbyQLDdw057UPE7uysJKMhoODytdLx/DYgwjkNwNSQuDkT9stYcdSnQY0sMrZD9Za+SJJ+bmW9RzZRRYD04oUhK5BGli5FREsRuky930NDox07UbO2ToGadPJh/xmvmwmQrsut+QUN74iQmR4SrJsygMcJDSP4oBe953lq0TBFZ3vc5dw3+cnFhLj2Stlayz1AkfuCdTrN2vLJwlRH1vdWDDxu5iijDpFdc4FnKxKHyg3WpXldjJlbzQhRIJe0Yzj+k0SZ57UBhRtiBNd0dmNIbVvT1BI23ZyZOBraSEizH+cDg5OnknKfjjAW0EldlrNzJZSGEWkwGPgtq8bOUG5nYaSZouB4gQiW8CUgwJ6UcSHdFyNkPRgCh1VVwJS9SOAYAkHgJI8IolfEpS7G9c/GDyudgWsYTHIpZHgxHyB/mHaCXtjo/9MH4qlfZGJWkYevYauX2da9FUcFIiCT2MSWb7Qn1sbV5RID3pOTz01JKwEW2z0eJW3HftOBSRaO2dmklRFJnLmMTcdBjS3l60SLBYXoTDFlqCRe7vfEKItcAiqlbRsA46+hhOxZwS/0gEkm5JMyEx6GLAKVX7e6EFskcgSStYnZWPbM7Mz/pbX5pQoqYLsBNNt6O5rRyoH+QZy3yCjR9jnITeBjvXER0plOPH//o3XRLw3CT9hsjIK6F/seEp+Ze2OjOHfUJ/0Alv/BAdoNg/KBsk+gVLnI9PWeo0zjD7MGTKhjAOLm6+TozDEmpDmZQi78vPtyzpkiX9/t9//PGTmgG04SfjzliDfwFxMLPts3MXeWT83mHD0Yu34eyMOMYl3mCvw4Tj12EC8WuU4tVTpzu9gqJg/dQ8W+DHiNRaGlVNPdd3AzbGN446DKNaXrxtl2EYfQ3i0PPo4s6rNuUiC2yWLiC2vHprzkIHX4Wv38HuniL8CSXYOfVclJwGyHtK3OR12zRPSc23z7yMBPbxq/e0WZAQCVZ15vYaO9nrbwq+kZ4/jN0f/Q30EnnJy7fljIYyq7+hODiN8TSOX7kxlyhYnYUBDd5RYOMOaw5HsYQutWnZwQEOZvTfmb2k+1U6DPjTze31/7HOZ7d/quw2ocJ0ccVa0P0krr18FVZeb3Acu06Xpa+iQSAjgumjjflQa/KqqxAx5fbubrZ/I0D9itDpqT2qPkV/Gobt8xzYb7FMH8lIJx/Md5jVZ1KdOkt+d/t1Sv/9449/kB//ePtTyz7i8+nF6dfLu759xJr78Payaj7CjAiou87pZM8Z8rzPMYrWPZ47Ss1DSYL9hZ6jlhgHp3+/xctZQEJXEoy/2laElAExhpRL3DXHc/j4CqIIzVbjRfRIZ2c3YTILnNswcvfuT+ATVq6fjxu+hHP3ByaxKhkeITdIu8rntdiWF9LDMxQSVJU5i+2vgZvScumcTxyn0gM3wdVqf7bG9v23/cdzsCaRkGP6iO1XXkdu8b8yN8Y3dBEnfYrw/us8sKOd02XNDiNGG7nBLkZ9vs0CuipOIsw5pms6r3gpgQzeLrwQpXPsI2KUvX//AmyKP7npdezgeM9NMWj8RWr6Kkb+NEjjp0u0wB53sdde7S9JFJNO4ziMk6njdq6CHo5TQrBt8jx1yHCR9ZKvtrbw0co0cLpqymsYq1yGq1vsuPH8yV+E3usOh2ek4ts4ScL4KnRwV/A1TocC2z1ef/6ULZc4xs4djumitHedpVH22pswEk+e4+Xr7R/be5cOc160Jechbb1ed0GQputrkCXYuYjRysf/DQbzMY5IC3bpBl0zka+lot+hxTxCtht0DVMmoxgB6l5slDULluE0oCe1OwwZbbwFasstevhEehG+CvAa2ysyMjn13FXQwf3lDxJJyEvoY+fGI/372Rp1LfmPYwmoM11H6Xbd9SKMOxf8X0trVZu565y0ew2GnKEEz3GQuKm7cdOnfbdZsNbcoBW+xMEqXXfY8eEVjK9OszS8dBf/DfqQWrU/9bzw4VWbQwYiJM7a6/ocYGc4C0gVR963gvQrnH44D4kdHdxfS8ROd/HdYh/FXbNYr8AGvoT4JTx/CqhXveoSISOofBfKK63Xvaug48SGwCHIbBWEMebzuz0F8WpiQ7pJt7f3fjWWXBL9v7Er6joseR0dN90vkOBT0mh1T4i+eEuIEWek0fJe8zJbsYdYdEL0xRdKMauYB1f5lqFXbQ3f4xiSogm9fc/9wIYp9OzUHNs9JXKQ4sd0FEtAi+Quxig9TUjYuM/CAF/IiUM6i5W86gYsStn01bfla+/brwPv6ZT81bUUPZ4dsOuet3dn7Doiupm9ax7uT3fX15d/nd2xgzjf8/+5gV38Wv5yfukuLI5nfaFHk7yD7UzSS3RKEhRcZJ5HxwCv3B9ZrNm9+vMqjhfx0T3bb9Nhxos3YWbb/FjrOU7SvUf94xyY7Paq11Av6DGNvddt6E6TDL+eo8uED4yLk+vjjO/pz8vo8Ih1ZHu2LovYrRa00qgeXCups9Q3p7f04YPv9OTai2gP8s0S9B6PV7/1g95tE0Xsjgs8tIv4dYw7SSvBzXnV5UJ6nWITyL5LY7RjrH17bl+Hb/HWmi+7vPK9hHx08gxLkSOcE4ped4t1Ga76p5d0zq/foMMTNiHyDEFzEQsouFeNOlQYAFpqf8U46t+6PornwZbSf6MGjdSifMfLf48zN156i1cuvRKK34/wqguHjNsEjqa/EmPyaXQ6JbDPmg97eOjTU9q9fefi4kVbUCzG3mJ6KzWmprCTg6/brfIppoTfyxXGr7eWkKK5Cb2uPaCHj0dHh5NXsNuY9CgjXCq0dxu+4QDvf+PFCLP6r9uE4o6ivddq4AEXffrpWc4JjdGHd1+A+PJNIFX7KnSy/TdQwPOP9ArHDhPGOas1wsJK/zzKa6nb3JTsGa7xGmWCvqfzfh2WkMrBTjt8uzx93a0tGfZd4XiFz7PIy6e6NOpK9/WFV9fnXy+nxe2FMfbDDaa3BTLQ7XWB08e8K67fOThnjwmyT7+/zR+nqrzBTWdMD9aUWPEliiKLOFqE49TF24eoq0kWqWe59HK8JbKxZS+HvraSif2unoa9qsZemrDYqyKtenbeKOtLRV8la/u6+aJ29Tv2MLKDl4j0/60JWh7Vrn6deBZ7YY9+SbcEdiWysyQNffoSTUbyJM3ohdjNR65bJXrT8IxLHjq5Vd7BsxzbsUXSYT8TScZeuxNI5/Wkq76Y15WmeCbPYk+XWRviC4NJN/Qh265UjTfsupLlDx11fdv5uFqXRO0ttK5Ere+qd6dJ3a5EietHHia2OvS/w85k5WNKXSnqL7N3JOKvuFj569cWe4h7IC13XfaS0EDKVYwJA559/SlJo2WxB2cG0hWP/Vi0Ebfoq7JDAqwJtdh7rK1Ji3Q0OysJaCvs82CWdANvfyEE6cWvH694hPvm0feC5GP+6a+0I1inafTRNB8eHg74Wzy02zSTxLzhiQ4wbTFpyjd58/5rNSh+4zrs78w+4HoPEpxm0UFm84Wxg/wFbfYo6YHLD02/iRy/hvKX79+DN29+YY9VsdfR3kTsLVOu6+B/0p8mTfSL2bDoLyxTil6V96m0q9brtIq7wQ/suGzByK8vKn8L+VeYwS8mF/N+eI5TutUxeY15+f3t7fT0/Gp64Du8fWDc7crvvN3Ie0ibxFj5t8UnFYEVtu9Ji+bcW+8Ojg6O2h71bcYfObyMJO2lxcToC4M7Ac8qckMxvjVxpnVAbPixYPYWYjLEvh8np0VxxPiovbna/q0g9TaVOW95le1W9r3lbPuJm1jlAK6d8zCAa9t0CKUqnr/VqSJPRxm2f3ysIOtHmUVYbz4oyKY/WDXBj10VTO4J8PL1dgvZfgQNibvqkTKinz3a0DQXpP4OupA8ZmoDY9p+BoxIx2/QkCR5sAyhUX1EkBM7dsmoebC1kAWPvK5OThUSgxcVb3+BQZekwYcuqlVE4mhwTBeephta9EF0YNz1Ej5L6ZwGMKQ7gS4jF4G3Ja6N7DUGBqVjcxsNdvmSqB5poUaAfFwg6NaugKVTlHQlBhoes7kfaNQRapUHX6t85HqL8BEaNULrBXyI4ifQ9dXfQIdmkR1AN9BRDO3yBNFK3FVABvbAyCTgQam9jpADDYzHcdUEPO5JSGtdrgUBgsKH52O0e9kYDd8YkeTGQdD5SVdSYCEXk8nh8ujk+L3rvxsce4tB+/nCFAgaccuUIJZ8tUD5DKKZ0Ie6sqgCOjBXIwTaJDqAuQjD1AvpeqOJIpeuBhNwPme2XRUesrYBQheEMd39aYfOYPa3yJaLyZLk67Iaeq0Ixclwi9ELkZDRMFppmVBiyPOIcYJTS2S4XxOubgVo/DlkCF+1L6ZG6X6c4ZasIZOGvjvYVNVl+F9yMjhwXBSQ+HrQr5ty2WCgV5dI6NYPSZEUpZkosXxSOM9ssQLKZTg1MZHygpFy4putlguS7JAmLroSmN/dASkmwjmFAQPyCXW2/FyoL7dRDKmuCedqt8Jimj3sOPGmUE3+ElRal9uu78uJ56SpnBTdwke2agfEsU/FKp6MRZp+LkU35TAZ+ouCSLGhR0V0jQanFzvE+DKLirAX2vcScp67oP8x0bOr42OL7k9DwuK0KBvbntjuqnxnm1C51oG2xisIM+MH5ajNzIt8wY6kJiI0wd+QGGxxa+nttTs4nK4LDA++munZAhySs1ysN2yIxAL1tCIgMH9eTy80pmkRUckAkdnomoDATEszvQovgZmNWvoY+csskKMWSxZMIlfuYqP9pggZi0iJyDuL4DpxTUZk/MoFaMNVNilC7VYuQWu8VHpaD2UEsKSCvB7KiPRs9mgXoLVJJj2tFjLpY0mbE7kszf1VRkQ+U5nvDQiQIZcbrXGMPOax2z8Fp8cq8lTrrvyA/hg5bmj6yDbpHs+Yvi/6rwxngw3GVs6jGzgN8pvBImYFQXERqoX0yN5gcNwQIZ0lCiSFSOCTGrX92YKCKjI+PaZmBDh9COPBkLEuGiH7HqsxjdaDI7u6AHsUWEKEWSVVwmwTtJ89lhuiye960mT0GSBfwqFFFia3qbMokvFixoq2EcXeV/I7+yzGHkYJLv9m03qPfE03Lr4dGg00dNDglU+8mgXcI/+WfmMlEbbd5fA8TBOVj/3o3+qSebTPJw8tOoQU9KtWsCVGaRZrQfjLwfClR1qiYpTykZet3IDA4Ed6b0Zg4wKy8pE+ZkRf87ZD0r9gjD8cTo5O3lmZXU1i8E/FugoYVUpWRYi05EEeBSalS7/bPWCRxRucWEeHzkK2UBVVTcBU8fMhxZ+8GVArGRFgKMY0F3glGAEYOheqmEo8tx6AgtRy3E3dLfIP1fgKYmvy3lbQOnyl4pLggETV9GqiPSjjp3vwBg/vNBjSFqXuzmkq3aJoxZTkWbSNCw/zT8kvqhiVHGVfbv9WRfzxgDY5L/brEA7pvNkKZeVE4HbWfXtI0KazgIMdoyCYyEZZQSiBqS1BJJFtgYJQInuhBKGCzXBY1wZVrn00jpcmg62vIBo9hAoGxo6ZgqF5oGisBAShqsdli9KsfiZaki04rj5QblwNR8WwFhy2wiCe5S1wdfv4gnowvNRTIBYni4tcL/7WlbeE5kIGUQSWLkUwLDf1rcG9NoNImcCE7TCIyLTvIMpGg4sLlzeuZubkVaL0OsF60CWfe50uSoxTFK9wSqIyZ3haeBBum8m6SJnADOwwiMg87iDKRobLzm0XzH3Iv4bYMt4wThHHqSNRAyuM5Cxb59PXKBFuORuS271JannSgoPprToAfMpNWgaKBteCZeDIoCdwkBcGwtG2AKoqVJamypluh3GKH/1j03HRKiBVRDz4bCINn1rqkMRL/3hi+a4dC3eZTQR/8vhosO10hoOXwqOWHRh+/03lMglZCIG9Kt2SGtLMieIsShODZacijMDmpQ5JVnx6DQCHEJqP7UNQlC2+F1yO6UCJSbug3HKVDqwoTz52lT2IC2ti1K7yoT65yo/2r8NQfDKhgcruuzFq9zQZlCZOjCN4SNWq0wKpgET78gVKMGnMSDIb03dfFHp0BrPTL2vj1PtTQLhKfwqHqghFOzI1yUofqgaA/QUxgK7tqsmzzYPJQaIknDddapr5nVT8Q3kItt+ipQUR2QLUhVZuq62jyXEL7KgWrAfDlyd0IBRBOkWQ48Au5Fo2cod/KMklR6rnTI4kyKl2ZVrBqfahKKdhJLmZmDY8F4Janl11JKXsakOSG/gL4MnNy7UBNnKNesgGpcLDk+0FdtsTFsUnyhiuHkh5nqLEEMyfPgyW1UKbDoXRxHZ+dcK5DTzhnGJ76sri4qfTei6hEgOgN+PiJLEQu4ZVEqrInwoX0VxpA2hwEYSq3bRYWMc/RNHgMqIAimTDNIxkoWXb/aSayPIhrSgeXD5WMHkkbwkPDmSBhYcIdeDcI/mHdJSn5IU1FMnuqB+pUsqCeJmDPfRU5Bj/SzRvctmcRC4rp7cmy24Ee++zkzcdAXC5Ys6uBqVHJ+nM0ftDM99lagzcDDYovyY/PBwnRn7tqrHCASYj4O6zWdKQ+tzsxX1nXy6Owq6ANVigAGmlTxpptALOOn+58tyFvs35Jl9gduzqW2zgH0lExsHZAgjRTZ/AWRJM/VxM4yxJDRvTYTokQ56Crqfoc/zRfaNZJwj7adjI8xaoZ+fMkHzvVE2nMBlWGmwnlpoL8Vm/yoRM3xqZMIpEFixj5GNauYqNtPn1zfR4e/mdVWQuPLBsrkvBQrPt3WynjMqGDuBZkF/+LeOSXcB0KqWSt2qQ+QZBNuo22NxH+w3o44KrlB3dvWiiJZ1BMljMJoFCZApyj/T3x56JrBZxppp2UOyH0XfHwrA0s8igH7p915YMAw2tnPciVHtdMCDJtrcdpHcBrAul6J7LXwzkOPRFXIPfAShJagdOgk/pYEaC6NUEBn82Qzmrt3iyXq/i6qWMeANDrxx3zCLkZy8tGOwsUPxkFOvrBhmWGOV9PwbdrWuw2X6LnbSy8tCSNJexG0W4A67rEFErId4KLVDi2iJ02tIr6CPDJxw42JFQ2RSR0sqjJhqusCZFP+M7ABVIMZ8VyYbd5HLaSOSa38tPvQYgC9oBpUithEzv57FSyw+aj0X10ebQAiZNRiwvGkmltZBvYMytAEmT4M+yGOxZFmGj24SkNOcHaTfIcx0kqLhDRkpv2dkWCumFLQa9IVe9BLox5ahJFsQAKd0S2g7O82GqMpUmkgqNeDIxkiyi11fr5003piA1Zkb+FIbZv/usT5JvHqi9qGHk9wmJhpNDeIIBUQ2G74vpOa8+LMzLWU48xrkBtfP5MhF6P5I8HS4eoUBujqcVQc2MrTzPVyVfq+JIiW5HsggnBhYOr5vStu1Tj+hc9BgQJ/U2JH053+1i0OUnNZy82tdDWMUMybHYvI7hhasV8TZaxHR6VIte8Y7jml6lKDro4lCriMZf5LvHJz4IUZBOaNelKqzso25+HSx1M1LRlGRrwy81hHxHmprwUyo/RVKHoMs8Bn8m08DByu3eqt4PU9Q2JeG+C196JXmLizx2JozkRc8tHQI4vRuJROQzEo/ZT7aiK3CQSoujDkJvHiXjc9KIZd2nuwVw2CSTMXTmThRIXV5Nkt480rdPelhaSXIlNzlXFy5iQhVZeoGPh54Us4uvqaq5rtTSaUNUOVyqI8iGjoV0EfLRnQOobwdSL0qMHgydDJScQG0IV4ZdagBsrNV3w3SveHWpVgmgDJLYZJJ8HN/AqQVIK+G54AaW5yk3wlRWvgkQulCrVbLc+cJOtpg9D8K1ipfT+LvBgHH0/vj+SH4g0Qc5+QAO6STIoG+DwKNucOwun8binKOD4qqDuQH5gLguvaxLHqb4ozoHxJclssjp2RjcDuZ5rBZRFp33SvZKCowL+BoWf4HBoo/hmvxNXHaBp7nIlsvKpmf+p8H/9LtX1lVA+y5klMLjm/WLGwP5l0q4rAm1GC/+uwbH/I74cj+hR371vLBr/7IiWA+zdO3GDn0HglYYVldMElQ6qZdsY4j87+6mUxopdrueKpOGSoKuTaoqUA+ksveWpAQePYT2vutOImkw0oJ3bhmQBqMzuX2vZsgC2sjHngdWqGTEDIW0RuT/k0NQuCj0uoJReUBM9/YMtsQykOwOXCiw7nBLGopdJ25MDrquNJUHpLlmRQmY24W0kydtOz39AYWZxpYTL6AKt28aRh4Lqj131lD1FdtO12MTClBgnoHtf0aoc8+3PFrXdhppJPpafQTVGPVN68hircCa8PW90zVLJQ1FWjPI2pj/C9t++13TvfJAJ1BIPLDMA2rImDKgFy2FNCKHaosCN0mt+wcgtNCFKo2o84UIaaSuCSB5IDs56jqJpQIG5W/FnA0wHGS/XmJSQShMElceHR+C5SI/dGwh2+5+A04aNEGQJscuqRfO0XuoAD0G6/KTNYIaWBKoycl7OLATsEqbJFAFmdBHCnveSlfCYyOZJCNDcij3ZbBheO9C8kxd2oEBAabrGKOeY4rSeK4PB9b/CJEs2uPJ4c+AUJYdQ3lzDgdVphwu0Y2tSdubfwUGZNGpoNQN2GNfYQJQ01qwSUfku6m7gcTufZxMCQ8ghK/g8Ycm+4+v6cCyU9bJKMXW1DFG8RHgWLenrsABBYwVxATn+QAI6f6AzMLeDSwKeH2LsgpwG+Rlynj5Tg+25NCzEiKCkARH7JVrABy+OKCHky8KaILwxQBNkIBux9YsoHz+GqANLRH59LWebRzEeohR13FcFSRNw3S6gi1IdYpa07Qq1tDl8aqgG5S4nQ9qCIMWk+h6BjvarQmbntaHsHy38z1WCRwy1tXlols9MD3lyZ4UAgAqXNBCna9cy8GBOF8xx65pH0exotDzIKH0bNtOiOtR8rsuHxEHgGhi/SjRi7irQDqrIVWcuO8WMRkgEjF3XggiikPns/VKKkJOz8vuwiid788KI9xrA0DEBwWKZnbcQ8So0T1EhFqOpWBg+GyxJlaC8hgTDMhCpFoCo2n6wBYNJAbexYPj57ndl2qr4NFHwcHY5fMXtFpGuPPlbQBgMMb6cVgDDIzZGiW6AW8TDYwbUHxXRVRehW4BozunwHJOfRtWCxg/RmW5fqQbP1ZBtUcjDTAwZvr9ag0LjpcXplZlzzQcyQYwHOM0jOkpHjimOaAeQ+ItdMhorbEH0C6zhV89C/MFX20QutCrCcIeZqQHmPPMsbbXRWpmE91erj+NwdZPveTo2GL3c+iBbddO9XKNLUzqQxAvx0g7Hi+XNkFgdJuZcilTH4YNVoAo5VjSvNh2AD8KA0wvGsTNG6y3n0h6pjCuhdIUsyPJ0pMW4jo0dplLKFEZZEjAj8vewUs3kF6vEsdX26krjq8QWouDlxOzCm20uBYCToqBbVobszJQNeyWYvltMeJK6IFLlGbSw1pxDSrLteLobNIGEtxt8ycgDcU7FdvGGqYT2MGtNdZj6VCa/BGHV1vOEMdXmDEQB280EWOqKZuIsZRsm4ixNCjMvPaD1ypxmABX4B10a4FiMoJNNfWQcQqPGK38crn6RXHF1Qp0m7SHY/3OZ0hf4hWn0umB8hHV0pYX4URhOVUE2bb9sZDpquQ40PlBrpHQV6NlSVkzFCZ0hPDX6Ggs6mwyZDzwk6PJWODlxyOAl3MVI5Cn7WnxGdsnYilsXJFRQophBHTi9PIbAIWAvSIMIt187DwgzU64U0vhPnrgdMKUrz0xz6GbLFU2JwjAlgM9dm0RdhQnaIc0ZQvPtYsvlDaKDmhgLzCWH6ntCRFQUW4SVln/lcIHmFwZ0AA4+hbQBNaZ9WqSXzUTgw8j9K8MW8ssYG8hjuC8WyX64/wuBWmMgoTI0dtsxjWlqmk8e/LDScSLI3qTbGB33/upoKh4KZZ84qaJFWz8Y7hmvXw1dqfNGlNFz5OgmgrSWHPg3IrcaG5HxC9OLrH5zhH1AMz1DGgAnDER0KS8mi2lSX5nhRQ8zMRMl5K8WR/bketqRvSzuqKxiibXsgdvrvZVYxdSi64RS6pFm/ZkrYSusVyjqmoP/tEaZQgqYi/XLVnM4oZJGmPk89fshC+4yRFyITm1Spqo5U2ugmoTvGKTu+z58I2LH8z59PPn6W3+jyiRARjr9u4OiBGD4qx85DL3+Qf9PXQyD39/+/H721+iOPwnttOPV1fswzePvhckH/NPf/3+/fvbdZpGH03z4eHhgN/NeECcykwS84YnOsB0tytN+SaPMpgYGXDzD12H/Z3ZB1zvQYLTLDooPXPO/sznrO0YO8mBi2ImGjl+Desv378Hb978wg5nUp9N3kR0ASvmGg/+J/1p0kS/mA27/sIyIedHLKeIf/z07+9vY+yHG+yQj5bIS/A20fSRnQBNyDf/9Y/tx3N24yn79PtblKXhCgfm7d3UOivsKUL04kv6Vg+Ol66HLXpW8sC1l7Xvi5mW/Pa3/OMGSG1vcU86UstRFHmuzdoLNjbZTbEIEfGg/B2YatBcSVMWj0WgkBeudmF4kTF5y6ZHKJJdGH61aP6G7tDXOxrKespTtODvpOjGYDzZrbeBPZwwS0gFqyTv1tyafAedX9ZqFS9AsA0aefaVl1ZWkjecgnUJ7PBBZ7GzZ7cri5YdOU7fLmLraJaLMf5wODk6eWdF6yfSE3i0MosJ8Bdc+ZuzOxIJ3YeLicVOX/61pqpbVTweu8zfo1+zg0cdqfjwsnwO2HJc0oem9nonE4bTt+Kz5x9FwbsStyLnz+GKYncnX7+g5j2z77BPj8zg19i0P1s2lhtJSD4d4IfogO8JJCHZPnLtH29/ejufXd1czs5md79b87uv57Nr6+b07jfr2+nt7PTT5XT+9uNbkrckJmE5Q7s1Yrb5LfQyHyfm5xgTT125qbkiSczvb/9ohzy/okC//AfJyO/f3+Qh6K/f3x4dHH5/Sz4hYWhI15LIR1/vLowP39/+BzGD2JGbQZIEyMe/tjneGd9Yt+N2FJeIR5hETnOb/EukC7i3DJ0kIP//ZRl6pJ3ZquCNcC1NkZKYv01H221+seB2bx/5ttyg/GtecPRDFhXQT5hv8lLqBd+JAEDRKfXHyYm19MgAykrWWeqED4GFeb82jsJq/ODYjj2SmrznXSPPenDC1Uha1svHsGVrJ6SK3TfDR1LEXn2n1x2MZUk9VhnfuzxaOOOo2YZHJMfG0EHn5ctYfQT8IqqgZT4GPhmOWHmrS3qxPRQ29rMxtGCfdMXsYGfxgB68jrypykNT2hKPoGQ7NWDRnnKkVqp4Z8SiGGzZYdxWMX+cz2KPkIykio+b6TViceiN5snUt5KHsdqrPLtIjSwGEqOo4QO2cVt4O0vS0K+NDUdSQezIlshOiUdTFxtRYV48KxpG593kSH38dvhN/jscSUs5ScLjyA1p2cb164SN4Sz2INGILTQNJsfvydZ7CVvQGCoWqccPRZBqQwpiOTK6lUzsd6Aq6hNwo9WLTaY/vvrF5APW6kf5/YU3KF2TP0m79WsxVi9G6p+8jL2ilazN2LVJxxaaPps7MNmI2eSOaC5i593Rhz/bxZbvQnU5ocD+ejPOSL57Ckl5LJ9PpgkN5tvnyUmScgZnW0C7pSbiB21z9WD4u6sSkNRbFwggFbQvL0Bq2Fl9GA8cmHnbsseo+GPx312UGU9Ny5LO/pQBWza4nASmrHt5EtIekfUuSH2dq2VgSnpXbCFNEVjRG11dYz0QUl/XauLoOiCLqXUPABi6yMLg/pRBlo3QWu0etY1gW89S8b5UjWBV25q9io79jG3KQcHexjZDu5+UxzeNLWOt45yGSHGxZUvaDolzRrczfYfUnD/ze4kWyYBoB8D04vZ4cvV58k5IvIsFmyGSQGh1c77jzsLL+Hjirybv8jrEnTFJM8cNP5p0Bbx8rZ3nmVnJBLO0x+SkzDbU3RonRzQlcWgWgTNtgxWn2lKtJYtxxhsB3XIs+S8mk8Pl0cnxe9d/9yFvrVTzKOdmdoNrFmoJbCHbj6DZlqBwLMtwCpAkx4Tj6GeP9gh5WcKCMV1kMfLBiZaokDxTewyeHBWMp+1n4CxzTDCOdH8MOMkCFI4l0b+dfwAkusWF4+ojgpvYsUuG6DE85R14OOYRfyYBlm8OCsYSj1CrMHCt4tvb4GmWsGBMl0lsw9erEhWM5yqyY/iGqkQF5OnCZ2cBCsrSotdvjEK1RAbju16O4aUlKiDPxzFoPsKydCfwNSnHhOOIRohLClA4luVDvrA8S1gwpnSjnI0CcKoVXDCuHolxwIkWoKAsHxcIPsKrAoOzrV7fOwrrqgI49pjtGocnvcWF4zpKX+WB91XeGH2VB91X+cj1FuEjONEKLhzXCK0XY0yhVIHh2CbwHWyOCcdxAz9xlmOCcYzsAD6MLkDhWMbwTX6OCcmRXynjjcK1ig3GObFjutgZ8UvtQCnXoeEY47Ha1BoyHN8R5nsS4PmehATB5VZkQJolLCTTMSbPt7BgTMeJ+ODjvWycgC+Dj/jGmZSEn5PcOAjeQwtQMJb0zC84ywJUl6Wfb9uEIljF09040NyLAEOxDXaUfQNCSQcSDX29e1EA3Tkmuy/GDWzB/TA7xwfS0HcF6iDnVVwBvpUSyfiWne2B46IgwIlA+FfXXJdU1Z4JjNyaejPhQVlLLicJFmmQG7lcSqlp3V7xLKN1K6WmNfHcRNrUUkhRZ4rSTNqXtlL9WsXagWadTGLlOsnLfXCXVW5NfgvvVkqn3CSVlkJj5GAahp69Ru5Qc6hZAF0Zwi9iEc6Rkm150X0pL1QgEv2SavPfb6kV45Ur0V5sDS4ehmjCSPTKXbmvSUa4SXmGrn578ka2u69fiKHSytQRhn18y9Wsi5q7SGM0BShyVcysnfKVtNI1d6QVGtb6OePKY8HqTKooCoyqB0YrBTdY0RqUumEUc4k932GHjsBIpiV3atK65aTEoCat7SkRihORSZFeR9mCgHmuHqEKiiKjGCc4tcS2CLZQqYtrtVSyzf3Z1Xw2l23pz+iNf0rRj/zu9kZu237iJuyMtuuJeCKzz6SEy5H6LoRyRMCh8vMzGmQqCMpc0h/sBh/8KDDMaSFSF9fMEde2USwwmu3MkC2AOhN6o5XtHx+r0ahKK3Pwo8widmwEDl60cKhJv9R4kd+7LtuCsNugnmcAVV5ENRzv5HfKM4li/FQTf+lDqC3ZQf+r2ZqPVmri+3LAjqzwsOPEm+dxGaJb2Fk4z8JbckmdIef2DLcihzrAS3dZSlPUWXM7c2/NJYHyWo1DHeClttkk/FY551q5uEatHuo3Zzs35wwWU26rWZHdNm9tcDr+07z5F4ye/ImmfnJCh1gEuUkfXhm+HA6Mm/ze9X5yYpsWBcnJb1bsJxdsRNbMBMkVYGP3F/rhXOOy7WQy3E+25UEZ37XiAVY8SIZbOMjqB8mwggdZCSEpevAUWe2B4leAPXMEXr0J/nni8CoD8dytShXZ20TSKffaDfn0AlUZ1xwiVwHU4OjWMcvHOIQ7ixaaPZgvfYxRK321PMh7zCYSWBlp0dqFeuamo7hC8HmajUK7eK0sJIoaWUXQaSrKqxTZzIo+ny0OCCt6O7ub+tYHAGY1LBB2MU5RvMKplaSEDwDFXUAQnvTmYwB2BQwMpwSIVALJagOUVRuZvHrOjqdsR4Rb99LmvMOpIgC2RNp8tjhaXWBL86FKrQsMuKXUzzl4dpnQPvtBYpn0xvq+EtUi1YID2C4CZJX8IYTBdlGf1QY0r4SWkUS8/QUEpNvnLp4hJN3uADEktoEVObulzvrBLjDlIm8DNFAUgTIsAGFZ0huOHeSFAWx2NnAhOOfb2QFYbpHUd0rEEnNVDSa5rHqeoAQbMSZqbOxvb9lWyJIWIGVWjotWAWmxZCbxGnzqEMpMsL8ghRytBXZ8dxCpISjzYE+FJAeJIomtuDKDmNTBUGIM32CwFVffYcUufua4yjyaIC9tyLK7VOwKdpI9OcdRxKOHSp6x+IGJm1uUfV7Ia4dxih/9Y908qDQIqvlQUDHrWPvMDdGIqScj1hqeQP9d78EHhuM1VQu6wODjNUiGBeBo8Roo2TouYLwGwFLuIOMQL4yjOJSYTurmtUVS5oUSdSa5rHqeZGmqU0CluFYUrdywy94CunMrgH88sXzXjiWG6A0ODQyNiHXy+GiwIw2Gg5cSW7SahFqANFjxV44r7xGqMKqDKLPR7AK1dLNmMs6iNDFYkSsTaQNSZiW05bKDiO7GT+bzuk18E0STDX00Ub3qNDD0uOix0NJfaDBqjxLLM2nB0R2HqlLZiqszKJpEdRJVBPXJYYhRnd6ZJzqYNmqvWBsUFifGkTKvIdAx2Kq3wkOgkGwhSeouS1QerKYd0Srmh37XYSizK7zpksO4L2PhIn/KDSXrZ1i/IFpVJ7C3vNlkWB3ppU2FdRkt610Vo/lQZw0RJ1AYMmRLQzuUb4NbKFWxXoaT0zpILyR7rkNfNRIqE75McHsUbAfvRTt8C2WFZpVnwW7bKnPR3PieRh+QfL62lGiX9q6ccdmK5hgv2qMKnrJuVNhatFSB+Ltj47tORIKZdPmsTRSnIO1CXKzRPG2xXrQr7RCW9anc+HrDtMV6Zt+qveL9PL5VoyDuWzWxwrd2sHQC//oL55IbqYfpwWypbj7DLncoRIAl0LGQOijx/w1KJRZj2oj2gL70JqXup4q5kDcpO1jQPg9ID2jzLmD2tYA9c5PM7/d9nrY4v1uYHgYUb0S4UHkJRB1C65IEDkXGizZOEgvZdIJEk9cu2EtvK6oZKuzque3FZRF1CPgy0eO1C/bcVdDDOGIX6D9TNSz1S3h7KbO9nLaKolXoJRIPB/gbCCDUGoCALPkzx3AkSzytrqsOKlFxmvTaoF58U7b1SBXDy8uyqyhApaFBqAnzzI0X3/f5rEM6ToGu+glXvxrrogbWcHSahho6CCmgMWYJVlmvAqJXR3zpTQOnjSJXvCLWzc8bhxoOnMtAkAIaotXALLTMP5DduDBMtA0b2teB6MKt9rZAgnllKyo0Wb4kb0nsShBmXIUeibbE9gRZ2sKbFEbsmzMHe+jpeTplrlu8d+Hpi25lK61T8hyF3TX7noxHUSx+zqeNTgPopfdxeR4Ke3hucu7aW+mXetsj9ocvTlV78WmMAsFil+0zo6ov52Cpa/bHa0uCjeBRIdiWhKqlITk9Z1fs7vDc4F4kruZ5SRFYPe6HUm5nGCwdsS89lKzVWNXE9ZjQ+z7VSBSSL7pdqxaiaG1iZtK61BTWymkl7dpaxaZx2uzW3V/fcFRVDltxAD9XIlFIju3nnrtQ93MizMieXR0fs4ADSZhKhM02gJfbkw/nFdSLb9gXnaplrPKj5nLTsbsqbT+TVJhLKKoLY4GrIur6chE1hVjaPqxjHxa896uuUeqSr12lq0jkdraaykJETaGfyHppLqGmjj47L6cul1BTF0u7TKzjMolshUg0qgNfaZRVWAqpKVWpE5pVQmwDcU2j2B5hxes4BSPLri5BIJyglvAjk1sZxTZ67QpsGa1pLETU+yBJfeI34LeqY49RIaE4va61IqimXPQJ4JpirReAmUMInNBpuJDqG36sxxY7tVHPXJ33hmkbjPxlFshWlYqUmlrhp8hqaiWfH+uIo2QzOFZ9cS+PiuT0SbxS0RlHSWqUuhSwS6la27AjqxHKyWkuRNRDOTl9uYSyOrX8rQuqx5FyWnMJ9ThSsjXSqTKJbIOQaDQHJCS0lwLLlnWFpZBW8CqtNBfSCV7ldGq2Q2JHv2oaxU53Ac+ORDh2ozWOB2+ogpoi2SoU3nu3FWFxfivCC4r4d/kN+kHFQnbzQhvCXt0iRoSkrEfEyPUs0YlJncWz1myn2odzmhlmFkyLtbBCVuN+CwLoLwUatm4ChbweCT7O4I9oW3R5T6C/7OHUDqdHUfCalh5W+pe0MJglRmkWa3Kpgow9618cN9e5nHLhybwk3Z15BEc63wr+JhE2qyj7vI3RxRh/OJwcnbwDyYctnHp2bDHMFsx9Zs6PB7SB8Q+GpJ4lTNysI42SETr1kc6Z6dRFvIyPJwq53QbzuJo8SkN1Fx81zUoibLtLkctXmw0kkTYZLbMkZ7bjiheqqo/vxxdQloYrLBfA7C7qsjyKsYdRol0NC7iiBN7RpdoCfHjNt1GkuX1mg6Q5qOXF1drIy1auVkExg7O01lJrX/dMsrQF1kpSZN9beEOvZ5duTZmlZhuuKahPunqKWRWtn6yE+Ii9H6Pq6vbZoUbIsMMgnyxO4Np6eX8bLp8IWXYWb+i+6ENnIT+YyUumbnLZATRKp0WZrK/JWDTZp0UTVYuk/a01CyiRLV3eMg9PswiZ3gWt2Uxssw6abAMVgOeO+TBO1QUNlLN8zAzOuA0a2BdgySrx1O8GKq1E6oKGCgRPtbrUQMw2VMjen0Jq9/WtRJ+tLFGQWo47dE5ALptyTP0yzYHMLnTIsi1gtcu3l/Sey9kO8aObpDiwVYZi+lN3vXiV4DaT2fI+WK4Vq418DkrRFStIbVNdhLfZrkwtDhS1RtFH1axRj2oVI0HVAFJ3NUasDCAyP598b6C+umkktTVJH4muSbZ1Wn4mM0XY0eATECvG9EPR0iSkzULUbIfROYlZwOnSGWUFp/GMhOPG2E6Nf2U4k8q+XUmFfQkevR7MIHAymmtCOkoNwSvYWlQbUnetNd9jIPL22vUE3srYqq4JqSolDRUK5NVuxRQVLwmw8OsPdeUNUUUCarq11UbIvseqlu8Iq5JYCxyLbqhei5+F3lUotZxeqJRaQW8qzbzUlW1GakKKlnKMAKcPYSxwPq9u8Y6wAonERgLbhLd6i/QKqrIokm+ra0LjbBjq/qIZcaxR7DyguHvstLs1ISQie9qHRvp9pq7/gsjCBpOlLW5sqAuq+FGBYYdBGode//GvPhJNgBe0D67JsdORG/bld0TsyOrkc++Nk336xe6ZBN5958TuZvC+s5YhG31iLcvfXgkJAn03/nkuaLHD7uN+ZXZzM8123oWb50gv+t6AnOagf/UbnPtdjvTMN3L4j5MTfpreStZZ6oQPiveayHrSzvWlVguV/KgGwLxrC7iw47bIFl7bzbnjW8m7OfazUUL3GexnKDvROthWdnkFlC+7Z92aNn4gR+fgxYO4dO2SfjMi2TV0OdhuDxY/Ralij+UvsJN6Mhss2rdfxWJXmvV4JsLdfR/NSrOSQyY32czZmzkFM8fQXkl1em8yEWVTwdFkhJLgiKjqOS8vnENVJABWD7GbwrAqkTRZLVCC33cvvohS2sJo8rHZmRRtPlsYED7WQ4y6X4KSI1ViATLTrXsNLE1muOfVLFFGWPzVrH4m+YYMCEIVKG1eTvc9a+KMHMnb1rq4JAiCDEcBKDH2fHWAPAv13JAmU25NQE2OvqOdXRxCmwdM7a/g6PYm7irIum+NEe5NShhdPoHlZ91zQsJ8ShjdWKnnSh3hOEn8hp0+Jt1XLAoTEb5rsZcHTKRWwdFmBBOlVXC0GcHEHxUc3VaazpdG3XcjCzfOWxwYRlYUeh4UrRJMN1JLY8uJF933TAmHaRUgTU5rH9kwpGpIkKWo3fM3wHS3Iq7RkXZmFSD6XCYn7yHY5DD6fE6OujfUS/DJYXRrXBgkKd3QSd+Y0a92TTRNduk6xsjpe7lElFkNSbeXyVd69buZChAQJ7ZDF4xYiabrZWts31tcmcXXW/RH4u2Y2vWh96I18Yogc/WaaP0sh2cA/LpggfluUOL2nDtX5buFBZhfsHy358oumUmGEglkbA+Ud00w3bF0lAxdRyg8nK5BAfBi96KA0CqRAFjF/RvgZGjFCs8ldfJKY9SzBVyGVokENH7TXiG5h5qniRNE58KsNfYi3HPZnSizFjzdiDLx+NvHBaa1wgGOUYq7t7oKh5n92ADMQZreKhAAJwJ9dGzd4yf94t6F0+QXuvpTqjmGJpPHk8OftakUIABcSCiIEcBsVAMLhpl+SF4FguHUvc1SkpPka9w9nBL99cwqEAAnNjMJllk1NDh2QNlWQ9Nk5wAsJDowuy5Ij1uMEj2XXqOiPTpuQwRjCUgPNvcQiT0h867AAyxfmC0RrYhwLPmWNxagshAQkG4LNBzvxAvT/FFMH7gatUAD8k7DmACD8t1CwvGE2AyyCwfHb9335J0CwbX0G3hDDOlJG0CCORwcvxhg+8guHGBNga0kwPWD9RfaMwO7eOD9DyDHLSIgy76HLlQ4SryCIcaw2Y0Bkm2Bhm3BAbnmcMAtOCDBtfTrjkMMwSa9OzABmaagfpnDwfaFgPwkTgqL8YtR4IS+5fqR/mpWNyxs3w3Jk8OB9t2A9MQfMhFk1wjwIanuQsOPHSD5biH3es16YHuZA3BzlvzJnp6sRj1XJQzlbW5R+TeSfYOgj1cSHMERy8HAmPHtkpD0SkQQjvkZFyiCWzgQdjb5x/Nc9ea8ya8KCMNQbxyxw095ENHKTifKbVJTDHE7eDnq0e0uMUcptO1iphE9tFBTCx5aufnqY+omMV9pON3B6gSQ1gkYr9iNsO8cvT8EY1dDBOHIds5C0SvAoJjRXbSA3HI4KHZ0Ty0guxwOpk/lJ33A+tQSDoRd1POIoCy1SPxtwUFefe9tyfKSfmyrh1dxnAOsT9jiwUQgxfkJsBikAgjCcHuYAopiDREmVo8Bo8wCDKY1yVyP3qa07H4aV7pFqUHCeKEN16rkWDC81oj8fwIXBFQBARlGoQfXxNQhgViyLfx65wF2edZBYZjqTKfuMFScTG1nxl5wNiYH3fftSvOrQQKxpMVhRYDDoDokFMvK8SVAonVUoMim7/Ze+dhG4kLfYW5ruHY7xwIah/8zQvdwJVvBg+GndXxhh53qEYZWbivAvngF2Bev750lXAiYg8HMYXBQ6P5tFxaGLfbD+MlaZMslji3keSFch9eBDcI7wKmVhPSuaLiRXgMThqebpNb9AxzHLR4IP3ooAIpbjgUzs6B+X9rOxILSlWkdrOwEcK5oCwfGDm7+tESD4VaceQajVwEEZQgbBe6gwnJlB7XBuRaoMFzJ0PHo+BDQMSuAMAxjd4NSbCHbxglcd7ILC8M2QcDFXgGEWS0BHO4pbphp5ZUkcJmWY0Hxsmxkr+FanRoiHEe2oJxkbgo4vd4GDMc4DO9d4GwtIcFYpi6NOUFZbiFBWG6vUYEiWUOE4ej6oARLOBB2+QuoYPQqeCD82IlcKHIFGBgzdgIWkl0BCMkQrgZXAQEZJnCTTFVA6W2XQI8jkrgF6GVEZqt23hA+5hYKZmaa7x2la2ypG9BLU6IwAel+t2Q70MfgTyJi303dzTj86+iQ/PnKCCTnLSIsT5ApxxpP2PW02mkczeuEWujuAI/COkjxY5qMVBv7tYxpzzi1s18LpD0EPtYfeFaol4CQLMEmwipEwefCyuMgefFBkq2BgrJ1f8C6bgkIyjKNMxu0L9kiQvLsf89SgabUW5eiLDfIy2BpbhFHj2v39H4Um7QgnUiAA5n3nlofksoXIZMsikKl16NaX8uDeuCcYhkO3rg2Nuisq4f5627S/lHNMnPX7nwTitmvEXAHjZF4BqdmIM/bp239ip9r6Cf3nF1P9hL7i1uwi7fJpO9CGMrQ/DG6Nj0wU4ilyrGoV+BhGGNL5XkuIbYlNOhmDnb4xlJ6lUaEdbsaUAuStfwlJDLUc/znahHkHknsyS/iPUrP6gzlFX3WsIINtVF6NK4VbLCttOORrYBDtVAax9ZFKO9oADsENlouV8EBD4aNybcCD3hYbEzGFXjo6GAUxjV42MXG0bJ5RwPUVtnRGK+AW+N8C/NofBv4L2koXeTH7uiWboQRevRdBA5uhOIyYmms8BxKs6i2FuahfR0bqMFxK3osN3Dl74wU5N1QMQb9fClhXAO2SsBMIOFFvkXAcnCEAwcHtgsw5moxpEcVpDl5XhWrfexi9XGs6dA0gjEEWudqVSlzdnWNZBBpB+nGR3ecatOnawSDlG4/ljJD9T5kAfIqF6NKcVe8KlWAeuKuApRmANNxvQbU1IxghuLV1FI2qF9W3WdAGqMgIaQIg70Y06tvZMOUrjhWNkv1AmRJo0ZsuXq0jWzUeC1at7KxTNpLX9mvENK0MEL/yvbQ9bTqGcGQvRRPp67xSmbUVrxL1XjmjNjMtSuCmpWjOt00sYKNfwxvwA78a1yYaW74zRaeq4rWVwyKu0h6CoHOgXG65o4ORQdSK4+urFTeO92aj8VLoqS7yZIUO8oX6A5laYLMPl1qWdtqktqlDAL8de9n0PMDgbkuYJs7lYw+1zWCIT2qxpp8GMeKhobxhr6j0ge+4rZ3fmlUQ3Z1jT/bOLpBY6xv70w/jWoF5I1d9aBymQU2LeqxWqk2NSOYobZLWMoE2H3DLcPisYuiU9dYBo1ZKK16XsPybrHd5mWt7VpbXppjwBKnGADWkaFGrVtUfmfEaKRL+BGYg0yB9HEHn/iogheX/o5Hv6JhBP4As+195IGn16vQoFOCfTaMNh/YVLJGgeO52jtLhmypqhnBEqjFwj4zxlgprOKjNMVJOrZjNbRARiCFijBB8nc19FvQij8Wd2tBohsfp+NbUdf0Gidoe6IZqLzLN5nWkUeofw5euoF22NzDu6phBP4QQX8fe+hh2E6oNx510MvN6tDlZDTbJDaeCTt6xmj9CiXAdnTqGCOy17laXrw4RrlsvqFidBtGZQ8x+dvLHnrmt238Mx596IdbWoZA45FXff9XgDnonHufDaNNuHcOfca1papm1BHWeGbUdIw8whrPioaWlzQ1KpRULNHOfoKYdOxLoXGE5nRqc+dBmKQxRr7FGYgPnXl6NjRrwRApNp07OeQGXQM2CztzbjN12hYMcJublyyrlI9kkbTqlM0f0SxRqyoJXomuQuzKPiUp9jcuftC5yGU+/fx5equwDlLLXI5i3d7diRcqt93cmmFyFLMOJt1otjETL/YBVkrNeGdeQbEqwMSZ7bmnGPp6x7ddzyVjEstDi6FXxttkiRTpomOxl853XzfnT5XILxG2nLbmD5301omqrWaFvFnnYdbgJEq6i1Sv88mTGqPTaBRM/niMdsF4eIXsJyNC9F5sg6MqZkedktmFrFxcHML4V4azgXBblGITUZea6CYiSX7y+4V0PAtv6B4GlifqbsVAtIqqQsNsoIHlgGpL3f3FbvwfpqEdep05uSPxw10t8FDO7zb0Kalmak38Mib/PoSxmHhraSOcGNhedLbtRS6Y3DiTsTVLxWZFXrkK2rZvENzu3QtDJKoAyiw4tsXeD7TsNQoC3D1tPMSoC0yTncEADfyY0n263Rtpxei1oOny49XdC2mcR4okWxgr3L34K0izE1Q9fEjjMFgZMQqc0DdQ5CpTbEUau50vLsfVGTH5rh2HugMm1LM+155zBXWT6TeR7ALcni4YzW9R1YiasU2yJO2ecG/PnuL21qq4emjjBvRGICNFC6+7L+8nsoOh38qrEamKK3NYRUb/onI/h6q4etsTZrGNjTjMUtVCaUIoc8H+gjSpOlnSQFDvPzxPi0dNHiI/jMGlY+GMMdRWiNu46ZAByJn+p5pFMkTheea2U2wEp3sSdIBHVV6PhQ4DvbZ07Xqy0V/ZkBaymr6APObUKTb6zqyI+MQOkq6XZumTYT/Zyp1eG4wmJ7Z+ZhsDV+WL0NpBUmbm4yTpO9Haz6Yirc4g81LXCHBKY2lVHk0MTTbRWjVoq8krs8gtMWiU3L+y28+mFUdjxESwSUe27H5UaiBmqQEo82AnpA0b0x5VkUkTQn9Mzu7KZ0pUo5d2JGVmMXow9Gp3A0GZCZ0f8n1Vp6lIq4+CnkjHQics3bTvBPXAMGgHRLM/qEwY6HQGdRhlTp67iFGs2u5VpNXbXmQbHnpSrtQ1eXVfCcPUC3tOqA94SUVcPbZb3OPigQocrNxAtQq3A4HO8NF5OK0Wrw1N3YeWK+KKqg5UCmuNYdUrdEV67PnDVaQ+sUXnQMJ7HBgDu3nbjV1FZguAznwO0fP4pDTFxbk05HWoJG5wr8GkLj62D0g/U9TajXGULO4/5NVudf4qTweQevup4pe1F4L0AlTm2yrBYM6hAaBJRH40U6OhO5hpKVw69YLISEk2FOt2lxri2PWmmJlXrzm7/TJb1JKsPQWPlm6+hAOMQYyj98f3R9BE66CQdCcfRqBbB4Wk6yTI2ODYXT5Bc25BhiZOd7mPQbuGO1Juj+InnfjKRrgB0UoCRDt09FqLVqDxYw3BTYyttvMWvzbNp5IFfGtSD5buvCFSqgR8O+IOAgCZgXcehOioPOMwXHzSPX97yUFM9hIbNYYzjdwCG9eUkFp89hEOkVGres2mQ17q8N2vXrSbSeTMmqzesrN6+RdEVApeK9dFdhr2mF3dQMCHnEYWOUh6Q0LxRx/c2HnhI41zR7yuyC9gEgmzJruvja0dmYAisSkdoC2kO/077SV0N5PleyaJKVbJauixombpEOHqvlAmbA4Aax6EaUVnXmJJ7KsVJ16FHoW6h3E0Bu8CdwzSA/f8aruJ/nmpVnQ2/T0C6xJ3lLwm44eFzPSWRG5XoGGoB3YNH6ZCtoGOsoW1sGxn/29Gxpn6tz7y/d/sbCjYfUm1ne8MWjHLuZFmhaPZCQ91tL4FXc3Jhcm/sPP0HY5CV76194ovDVJveKismKvs2FET58XtHZfMLIgZ5nZ/znEM5DgxThLDRva6+z7Btqzn57yKuaNuQM22WnqzfDe30Tyio7Dwj0RmMbXbfGxQKLkZpDIbqKjZBqNZMAyr0CpfOozWDgaEs+RmalLrggJkKLenvZue+sXULSWKg8zXKc1CHoILa90V9me10GqBenGdA/Yn7w811g5JHIoCx2B3I+E4MYrzOSsc4BiluPvhqLYMZGxMMVCNBfl2eKmi7meqt+GqCbqKMV36Dh/4niS4fO0E1phcJ4pkZ/q3DJvi6tuDcewijx90WSKb1EIUywX+nFAnjvp2ajvimynku1ZOaRcAztO0ev4OJ9MLAzoY2yEpkUe50VCdXwUBzMsU6LRB6Na+fNJCru+qVcAqApx30ZVpiEa2wIFjJrlTs4cbwLbNXUy27x28V+2AheOdL4uCE+/CBW4H6cgSlHc7Khzr6kESWObdyHDsf3hyw6YOqjkMvC9AkAM5Rr9rMt+7TniAZGANbezV0kcSzqgPP6i0lM1UwCyklEuAAsjO3Zea5efnd5UrzFqW+pVmKlsoJMiPPGzYpGUIfY3pjy2xAcSxXVHWE0daBJGsEZC1g5ZEvlKgWFGkS0G+2MbbtLDIXM9R27ZQu5bEyA+gkTFGTMYY/rHhotjAy/h44q8m74wYuZ7B9o9ZbM+GlQc0VpLGbhRhMQ6tRd7K4wAJ+gDLABPWlnY4SmkP9bmcOXq+EmlhIVkekHa0ge2jLPjC4wIlri1ig3p2tyiSzG5Jqm3p95ejxV1p+8jUpi6lfJUh3CGyj9wlCovT77S2PGP70cFEMvOh7ekC3EfZrKJnLI6tcskSAGBt1pXvo/8UY63XOypnqThBc1fP6C0Im0mlywVsBfA5W5B2JrItCLA9XYD7KJv8IukN8ly6K3xcF+9QJpn9CpS7ZPaRw9tJpHytav9u36QgmeFgFuwg7avtpgqfd9xTYaDQtEPwbwLt0ffjycRIsigizJ+xGLrJqNUHSKt6MPdRTuVyTGGHRy+8oK8/PkM5dZORLKcRrOrB3Es5VU9zPV9NaqMhWzaQlrSi7atvkbVErx8ByHoV0p1C+xs/sHWRUfN3V4/SwECUaEty0NwEfIej7aPmJXFufZcb/fqj+S30Mh8n5icvY+czk7UZuzaKndD06duFsWnH2ElMPn9iFihmtyKe0mJi+gqbaAKKcWP3nJZevLuFrrnEzaitlRXmx6NKmEFV6rbVVPVbdTs9Pb+aHviObkZWgGrq8qvbblC61lIADlscyB2ErTU3xdMM59zqOX/f55I+7zO9uD2eXH2evDNnxcsIath58bHHIqUQ1sTKB0QfWgrJbwoAJYXilkb69pYugokiVxXl7Go+m5tn9MoGtUwts8SJ3Q0t++qlWFa4oQ/QPoQ6WZUDs3UBHZwEx9UWyQ3cVAcO+068UXelCg7pEiHsWi8fw+oDurp4xVOmAGXnYYdmFgAp/iqctUYeIBovRIu2ZKAUrQcnBHHZHJJuJIIluX25VhKw60FnMnZxUi8pLhQFRs2DRyDU+uPTnpVrsfJpCbO4nXIvyjQ6o7yS+Y+TE2vpEQexknWWOuFDULyj3fKVhbOE8NNr/YKNf6zjjREmw9o1jmFqMzvTotECdrxbDIMCWMearhQlyMp9YF9KzChbkMBMtcRiRD4z6dDQop2fXqTYACsHrAtPOUDsgnQxxh8OJ0cn76CRfzygDRRde+1GJhuB85+Pq8kjFF++UZD9TT3Hgs8RriFC9LAO8baEhJHJmNhlHgFbsM2jKJUNz8UqJYZs6wY0JLG2hq6Ht1VwBd9U1hwgpmHo2WvkasX3Re/E7QZBopcYpa4PE+azneGQ4waS2ENPKkgCjzWCQKoFpyKX8wBA5oezAcysXKsGaOjurTIgZOlzANos+TZ6bZjySD9oxvErWWDIba9nAeyy9MhBeAGIJ6nRqecMvVqR5Y6faYZO7GZIuA4OJIfAgOSNEziB0kAkOuLwHC/pfB2J176XM+tXp3d301vr7Prq6vqL9eX0asqm2DfIy+jX/+NfWZj+7ys2I00+Pscb+vP0jPw8fLy4uDgyDx8/HB6e8HSSSm9ur8+/nt1Zs/OaTo4oifVt+uX8+nYXinKUhPr7yeHP1vTvd9Mv89n1l3kNUBjrZn5qnd3+fnN3TcycfbmDQbHOpreKULfT+fT22/TcOv12Ors8/XQ5ta6mV9e3v9fhDg+b3WYnYrmS8GkyObw4Ojl+P7t690FUen5pnd7cUB+4ITbNpnMJwU/Xp7fnXc766fb83dGHP5/JuWSJejv91gJ6engkjUfq1M31lykttdO708vrz8RYUgjUFwQxWGRv3d7dWaeXs89frqZNPzrcGW91l9bVJ4J1ekFyfUZMvb67vD49J58Qr5reXpyeTUWBzq5v76Z/vzqWTW9NL66OJ9bV7Oz2WkGW+Jpwrfntd+uWOLlw+svTu4vr2yvrtynNkpbiL7ojY43pWtHBWtoZLqefT89+t347vbSmX1jt+9vp3dlv59ef1aozKc3zu8s5cbIvF7PP1sXsslEXvPR/F7OjxW3Wf5EFrzQ/fXrorBYf+cqrIllDi8q6nH2yrr5e3s1Ig3B3fXZ9ac2/3txcN1o74bapgP16R37cnBb02wqYGEDG65WJBiRvBa2iX+dT63R+pcb37Ov87vrKurv+6/RLtxsSnrWBpoWW+Qdqfkkpf/kmXpW/nlmfvs4uz6XbnC9nN2puzhFIzzU7vTwiLeH87E64o5j+5/zG+np6K9zefrkmhfhJjhrzWevL9O5v17d/teZ3t7Obm6lwBhE3/c/Z50/TqUXbrPn0ckrCofnd6dlfW92/mW35Ss4F3yshttBARyrkP/q7dXZ1fGy5KG7uIxIHbgyBUJaGKxzwJSbyWYw9jBJc/l3OElKtxbfy2l/M4VtFqvs+l6pIc4TznFpMRjgBqcjnuQ4FKtId9wSdRiUAOYOmWobPdCxLke6Ix5gUGe3vnI+Gh+3jKIxe/j3TuRBF0s97SEKV9N5PD2h47Gh77bXaScBd6r/QFcHrKI+E6R8z51f6ymnx6UFmH5SrhiwADtnnfckO7Cirxcqco+EfN0c3o2hfNrQvo82JsbP0MY5qL0SphRZujQDd16SgndY8uuLbp5qnyf+Z26RWpDXVfyJ+9E9sp5XRAE1J9z1bCxrvu3ZzO5AINbqiTiAGyBWpDpZZYLPds6R1Sfn2hwrHNM6ak/cjcCCdLgLVL1E8AQpCy6ajsuewPPTdlD+sYkUhu6L1GUiQDMCPNo6eq/iJ/jhN3T0XfHHJ5BWKWEu/f7tt+rJV4LAWqNoi//zzHnQ/PnZo/1//66g5fzKC/gcUB2QkTiIX+pzi3rO+VE8GvjF6TgIkUkJB6tr1bhF5yT5JoBhbOI7DOHkOGjSF7/5ghzhq+hP3h5h6OjeHHyJih98dGLQmOri4+ToxDmtq30vr7DK4Lc3BzLbPzl3kkf6ud9YSWO3ZGQG7xBtcr29iYZ+e1nlKG9rVUyOfxzaYbZKaZwv8GNHHe0jiqUccLWCOZhyp1XplOpdhGH0N4tDz6AzkvrVf5GHeLCDqn4PAWejgq/BZcv7uKcKfSEDtnHouSk4D5D0lbrJ3GvOUOJ595mUJCfOeowhmARmbZ8wN5vYaO9mzeOI30u6Fcd7cN7SLdzgaDRJpe1d/Iz3faYyncbx//ZcoWJ2FAV0XQoFdDzybC6HDytsj3t0UBzP678xe7gS7f7q5vf4/1vns9k/aI1EtYtcbEoK4jmIkrtMdT8vRz2Tf7kC0397dzSD0ymW41rCHz4YdkMI6yCcxmmrzc69hVI/oykmwxWRyuKR7oVx/Zy9Uu04f3WPqkcySld0dZfpu0vY+NoO9dJO0hC5IGb7tN/N7UGYZhAad+EvdwGg7uiUFkCghEDFsJ7/SGYwD9quk/N8IgyzISMdoRIjOQaTNQwxCECS/E9qRLF3sOQZbu0ceidxjFT4F2CJGNlYBYM1qKinYPHdpbl1w2DGJHx7wTbOsQiTu8YT7p5Me8A0oDpshZoOOg1WQHVTGPrR5bTpwBbCRmic6oB5+EKZrHHvEnP8nfP3/+2oh2PqyQ1/e81d4sOHhYJWuf22GGGP7ehTJeXs1/TP5+/93thfhbCJB1WxKJ/Cui7lrqe5z1zPk+dUnk0rH3ZwcvDs4aovFOgRyT0eOw7a+Ie9rguPnMWsn0GoPLOXDrL95PxnGyja2Kz0AJNdhkgKHg//PVH9Nv0BJgv0FSJY/kj9KOOPBTdcG6Qj2HZXl46OBXkoWznZjO/NQ7OCI7rEL7Ce1QdfLsSggdc7ZWTEVH7WqRRHtzZAOlkzR/GLmI13215tf/uPR92hSfrCfzmYf8NltghLSTabko693FwYZ3P4HByhGyuWu5sw+8EMnIzUqwWkWHTh4iTIvneM0Zasy+UZHfvEb6TsYPEGJcJw+zW3yLwEpx9/meMQy+4YnkaRU9YTm7ZP5VFNbM1G/0+7Aju3ipIEd83WyfCxRFhH5qHwzsL1KVW9aHKEo2dI96bUPipiF7+lxcdLFd6Ac3/70dj67urmcnc3ufrfmd1/PZ9eVQ2BvP779dzHJwkvj+9uP38ln37+/TdAGO/M0tO+/EQZ0W3ZCP/5If9AE9H9v6S0J11FQ/Pmx+KVjgib/9qfiF0LaJUqc+8vQ5ut2TaAVtu9DK3HuLRIIkVAo//gP/oMgvT3n7v7KiP9BSoaD0OmzhBTEf/2bCuXeR4BoEf9UFig7nEpNLOZWa4dotjeaWNH6yUowXRWklzwSgDB2Vy7xqRwhyDyPfJp7Kfng6CdqDnE8eij+4/H7yc9/Pnx/8v6Pn2D4sB2mFt4QeCVCR0eT48mffz78+WcFRolLH+qzPOxYbkD3KZCgR4mFcXT084cPhx9OjlQyppXGWoHG5OTo+M8nk3fSJFpn4hVy4fjD+z+/nxx9OJYlwPc45t5QPNtsOW4SodRe07NUKtlxdPjzh3fvf35/BE5HzUl+PiH5c3jyTjV78kv9oPLH+HD8/uTn45/fSdedYT5Kdfnkw7uTyYefjyaKfNirpECZc/SB0Pnw7sPJuz/+8faP/wtgk4ej + + diff --git a/silabs_examples/credentials/device/brd4187c/device-creds.project.mak b/silabs_examples/credentials/device/brd4187c/device-creds.project.mak new file mode 100644 index 00000000000000..7e2dbf9e8bd817 --- /dev/null +++ b/silabs_examples/credentials/device/brd4187c/device-creds.project.mak @@ -0,0 +1,1798 @@ +#################################################################### +# Automatically-generated file. Do not edit! # +# Makefile Version 10 # +#################################################################### + +UNAME:=$(shell uname -s | sed -e 's/^\(CYGWIN\).*/\1/' | sed -e 's/^\(MINGW\).*/\1/') +ifeq ($(UNAME),MINGW) +# Translate "C:/super" into "/C/super" for MinGW make. +SDK_PATH := /$(shell echo $(BASE_SDK_PATH) | sed s/://) +endif +SDK_PATH ?= $(BASE_SDK_PATH) +COPIED_SDK_PATH = ../../common/gsdk + +# This uses the explicit build rules below +PROJECT_SOURCE_FILES = + +C_SOURCE_FILES += $(filter %.c, $(PROJECT_SOURCE_FILES)) +CXX_SOURCE_FILES += $(filter %.cpp, $(PROJECT_SOURCE_FILES)) +CXX_SOURCE_FILES += $(filter %.cc, $(PROJECT_SOURCE_FILES)) +ASM_SOURCE_FILES += $(filter %.s, $(PROJECT_SOURCE_FILES)) +ASM_SOURCE_FILES += $(filter %.S, $(PROJECT_SOURCE_FILES)) +LIB_FILES += $(filter %.a, $(PROJECT_SOURCE_FILES)) + +C_DEFS += \ + '-DMATTER_COMMON_NAME="Matter Dev DAC 0xFFF1/0x8005"' \ + '-DMATTER_PRODUCT_ID=0x8005' \ + '-DMATTER_VENDOR_ID=0xFFF1' \ + '-DMATTER_X509_EXTENSIONS=1' \ + '-DPSA_CRYPTO_PRINT=1' \ + '-DPSA_CRYPTO_PRINT_CERT=1' \ + '-DRESERVED_AVAILABLE_MEMORY=1000' \ + '-DEFR32MG24B220F1536IM48=1' \ + '-DSL_APP_PROPERTIES=1' \ + '-DSL_BOARD_NAME="BRD4187C"' \ + '-DSL_BOARD_REV="A01"' \ + '-DSL_COMPONENT_CATALOG_PRESENT=1' \ + '-DSEGGER_RTT_ALIGNMENT=1024' \ + '-DEMBER_AF_API_BOOTLOADER_INTERFACE=1' \ + '-DCORTEXM3=1' \ + '-DCORTEXM3_EFM32_MICRO=1' \ + '-DCORTEXM3_EFR32=1' \ + '-DPHY_RAIL=1' \ + '-DPLATFORM_HEADER="platform-header.h"' \ + '-DSL_LEGACY_HAL_ENABLE_WATCHDOG=1' \ + '-DMBEDTLS_CONFIG_FILE=' \ + '-DMBEDTLS_PSA_CRYPTO_CONFIG_FILE=' \ + '-DSL_RAIL_LIB_MULTIPROTOCOL_SUPPORT=0' \ + '-DSL_RAIL_UTIL_PA_CONFIG_HEADER=' \ + '-DRTT_USE_ASM=0' \ + '-DSEGGER_RTT_SECTION="SEGGER_RTT"' \ + '-DCUSTOM_TOKEN_HEADER="sl_token_manager_af_token_header.h"' \ + '-DUSE_NVM3=1' \ + '-DUC_BUILD=1' \ + '-DEMBER_AF_NCP=1' \ + '-DEMBER_SERIAL1_RTSCTS=1' \ + '-DEZSP_UART=1' \ + '-DNO_USB=1' \ + '-DEMBER_MULTI_NETWORK_STRIPPED=1' \ + '-DSL_ZIGBEE_PHY_SELECT_STACK_SUPPORT=1' + +ASM_DEFS += \ + '-DMATTER_COMMON_NAME="Matter Dev DAC 0xFFF1/0x8005"' \ + '-DMATTER_PRODUCT_ID=0x8005' \ + '-DMATTER_VENDOR_ID=0xFFF1' \ + '-DMATTER_X509_EXTENSIONS=1' \ + '-DPSA_CRYPTO_PRINT=1' \ + '-DPSA_CRYPTO_PRINT_CERT=1' \ + '-DRESERVED_AVAILABLE_MEMORY=1000' \ + '-DEFR32MG24B220F1536IM48=1' \ + '-DSL_APP_PROPERTIES=1' \ + '-DSL_BOARD_NAME="BRD4187C"' \ + '-DSL_BOARD_REV="A01"' \ + '-DSL_COMPONENT_CATALOG_PRESENT=1' \ + '-DSEGGER_RTT_ALIGNMENT=1024' \ + '-DEMBER_AF_API_BOOTLOADER_INTERFACE=1' \ + '-DCORTEXM3=1' \ + '-DCORTEXM3_EFM32_MICRO=1' \ + '-DCORTEXM3_EFR32=1' \ + '-DPHY_RAIL=1' \ + '-DPLATFORM_HEADER="platform-header.h"' \ + '-DSL_LEGACY_HAL_ENABLE_WATCHDOG=1' \ + '-DMBEDTLS_CONFIG_FILE=' \ + '-DMBEDTLS_PSA_CRYPTO_CONFIG_FILE=' \ + '-DSL_RAIL_LIB_MULTIPROTOCOL_SUPPORT=0' \ + '-DSL_RAIL_UTIL_PA_CONFIG_HEADER=' \ + '-DRTT_USE_ASM=0' \ + '-DSEGGER_RTT_SECTION="SEGGER_RTT"' \ + '-DCUSTOM_TOKEN_HEADER="sl_token_manager_af_token_header.h"' \ + '-DUSE_NVM3=1' \ + '-DUC_BUILD=1' \ + '-DEMBER_AF_NCP=1' \ + '-DEMBER_SERIAL1_RTSCTS=1' \ + '-DEZSP_UART=1' \ + '-DNO_USB=1' \ + '-DEMBER_MULTI_NETWORK_STRIPPED=1' \ + '-DSL_ZIGBEE_PHY_SELECT_STACK_SUPPORT=1' + +INCLUDES += \ + -Iconfig \ + -Iautogen \ + -I.. \ + -I../../common \ + -I$(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG24/Include \ + -I$(SDK_PATH)/platform/common/inc \ + -I$(SDK_PATH)/hardware/board/inc \ + -I$(SDK_PATH)/platform/bootloader \ + -I$(SDK_PATH)/platform/bootloader/api \ + -I$(SDK_PATH)/platform/CMSIS/Core/Include \ + -I$(SDK_PATH)/hardware/driver/configuration_over_swo/inc \ + -I$(SDK_PATH)/platform/driver/debug/inc \ + -I$(SDK_PATH)/platform/service/device_init/inc \ + -I$(SDK_PATH)/platform/emdrv/common/inc \ + -I$(SDK_PATH)/platform/emlib/inc \ + -I$(SDK_PATH)/platform/service/hfxo_manager/inc \ + -I$(SDK_PATH)/platform/service/iostream/inc \ + -I$(SDK_PATH)/platform/driver/leddrv/inc \ + -I$(SDK_PATH)/platform/service/legacy_hal/inc \ + -I$(SDK_PATH)/platform/service/legacy_common_ash/inc \ + -I$(SDK_PATH)/platform/service/legacy_hal_wdog/inc \ + -I$(SDK_PATH)/platform/service/legacy_ncp_ash/inc \ + -I$(SDK_PATH)/platform/service/legacy_printf/inc \ + -I$(COPIED_SDK_PATH)/util/third_party/crypto/mbedtls/include \ + -I$(SDK_PATH)/util/third_party/crypto/mbedtls/include \ + -I$(SDK_PATH)/util/third_party/crypto/mbedtls/library \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/config \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/inc \ + -I$(SDK_PATH)/hardware/driver/mx25_flash_shutdown/inc/sl_mx25_flash_shutdown_eusart \ + -I$(SDK_PATH)/platform/emdrv/nvm3/inc \ + -I$(SDK_PATH)/platform/peripheral/inc \ + -I$(SDK_PATH)/platform/service/power_manager/inc \ + -I$(SDK_PATH)/util/third_party/printf \ + -I$(SDK_PATH)/util/third_party/printf/inc \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/inc \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/inc/public \ + -I$(SDK_PATH)/platform/radio/rail_lib/common \ + -I$(SDK_PATH)/platform/radio/rail_lib/protocol/ble \ + -I$(SDK_PATH)/platform/radio/rail_lib/protocol/ieee802154 \ + -I$(SDK_PATH)/platform/radio/rail_lib/protocol/zwave \ + -I$(SDK_PATH)/platform/radio/rail_lib/chip/efr32/efr32xg2x \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_ieee802154 \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/efr32xg24 \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_pti \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/inc \ + -I$(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src \ + -I$(SDK_PATH)/util/third_party/segger/systemview/SEGGER \ + -I$(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager \ + -I$(SDK_PATH)/platform/common/toolchain/inc \ + -I$(SDK_PATH)/platform/service/system/inc \ + -I$(SDK_PATH)/platform/service/sleeptimer/inc \ + -I$(SDK_PATH)/platform/service/token_manager/inc \ + -I$(SDK_PATH)/platform/service/udelay/inc \ + -I$(SDK_PATH)/protocol/zigbee/stack/platform/micro \ + -I$(SDK_PATH)/protocol/zigbee/stack/include \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/common \ + -I$(SDK_PATH)/protocol/zigbee/app/em260 \ + -I$(SDK_PATH)/protocol/zigbee/stack/framework \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print \ + -I$(SDK_PATH)/protocol/zigbee/stack/gp \ + -I$(SDK_PATH)/protocol/zigbee/app/xncp \ + -I$(SDK_PATH)/protocol/zigbee/app/util/ezsp \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/util \ + -I$(SDK_PATH)/protocol/zigbee/app/util/security \ + -I$(SDK_PATH)/platform/radio/rail_lib/plugin \ + -I$(SDK_PATH)/protocol/zigbee \ + -I$(SDK_PATH)/protocol/zigbee/stack \ + -I$(SDK_PATH)/protocol/zigbee/stack/zigbee \ + -I$(SDK_PATH)/platform/radio/mac/rail_mux \ + -I$(SDK_PATH)/platform/radio/mac \ + -I$(SDK_PATH)/util/silicon_labs/silabs_core \ + -I$(SDK_PATH)/protocol/zigbee/stack/core \ + -I$(SDK_PATH)/protocol/zigbee/stack/mac \ + -I$(SDK_PATH)/protocol/zigbee/app/ncp/plugin/xncp + +GROUP_START =-Wl,--start-group +GROUP_END =-Wl,--end-group + +PROJECT_LIBS = \ + -lgcc \ + -lc \ + -lm \ + -lnosys \ + $(SDK_PATH)/platform/emdrv/nvm3/lib/libnvm3_CM33_gcc.a \ + $(SDK_PATH)/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg24_gcc_release.a \ + $(SDK_PATH)/protocol/zigbee/build/binding-table-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/binding-table-library.a \ + $(SDK_PATH)/protocol/zigbee/build/ncp-binding-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/ncp-binding-library.a \ + $(SDK_PATH)/protocol/zigbee/build/debug-basic-library-cortexm3-gcc-efr32mg24-rail/debug-basic-library.a \ + $(SDK_PATH)/protocol/zigbee/build/debug-extended-library-cortexm3-gcc-efr32mg24-rail/debug-extended-library.a \ + $(SDK_PATH)/protocol/zigbee/build/end-device-bind-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/end-device-bind-library.a \ + $(SDK_PATH)/protocol/zigbee/build/gp-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/gp-library.a \ + $(SDK_PATH)/protocol/zigbee/build/ncp-gp-library-cortexm3-gcc-efr32mg24-rail/ncp-gp-library.a \ + $(SDK_PATH)/protocol/zigbee/build/em260-uart-util-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/em260-uart-util-library.a \ + $(SDK_PATH)/protocol/zigbee/build/packet-validate-library-cortexm3-gcc-efr32mg24-rail/packet-validate-library.a \ + $(SDK_PATH)/protocol/zigbee/build/zigbee-pro-stack-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/zigbee-pro-stack.a \ + $(SDK_PATH)/protocol/zigbee/build/ncp-pro-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/ncp-pro-library.a \ + $(SDK_PATH)/protocol/zigbee/build/zigbee-r22-support-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/zigbee-r22-support-library.a \ + $(SDK_PATH)/protocol/zigbee/build/security-library-link-keys-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/security-library-link-keys.a \ + $(SDK_PATH)/protocol/zigbee/build/source-route-library-cortexm3-gcc-efr32mg24-rail-ember_multi_network_stripped/source-route-library.a \ + $(SDK_PATH)/protocol/zigbee/build/ncp-source-route-library-cortexm3-gcc-efr32mg24-rail/ncp-source-route-library.a \ + $(SDK_PATH)/protocol/zigbee/build/em260-xncp-library-cortexm3-gcc-efr32mg24-rail/em260-xncp-library.a + +LIBS += $(GROUP_START) $(PROJECT_LIBS) $(GROUP_END) + +LIB_FILES += $(filter %.a, $(PROJECT_LIBS)) + +C_FLAGS += \ + -mcpu=cortex-m33 \ + -mthumb \ + -mfpu=fpv5-sp-d16 \ + -mfloat-abi=hard \ + -std=c99 \ + -Wall \ + -Wextra \ + -Os \ + -fdata-sections \ + -ffunction-sections \ + -fomit-frame-pointer \ + -imacros sl_gcc_preinclude.h \ + -mcmse \ + -fno-builtin-printf \ + -fno-builtin-sprintf \ + --specs=nano.specs \ + -Wno-unused-parameter \ + -Wno-missing-field-initializers \ + -Wno-missing-braces \ + -Wno-format \ + -g + +CXX_FLAGS += \ + -mcpu=cortex-m33 \ + -mthumb \ + -mfpu=fpv5-sp-d16 \ + -mfloat-abi=hard \ + -std=c++11 \ + -fno-rtti \ + -fno-exceptions \ + -Wall \ + -Wextra \ + -Os \ + -fdata-sections \ + -ffunction-sections \ + -fomit-frame-pointer \ + -imacros sl_gcc_preinclude.h \ + -mcmse \ + -fno-builtin-printf \ + -fno-builtin-sprintf \ + --specs=nano.specs \ + -Wno-unused-parameter \ + -Wno-missing-field-initializers \ + -Wno-missing-braces \ + -Wno-format \ + -g + +ASM_FLAGS += \ + -mcpu=cortex-m33 \ + -mthumb \ + -mfpu=fpv5-sp-d16 \ + -mfloat-abi=hard \ + -imacros sl_gcc_preinclude.h \ + -x assembler-with-cpp + +LD_FLAGS += \ + -mcpu=cortex-m33 \ + -mthumb \ + -mfpu=fpv5-sp-d16 \ + -mfloat-abi=hard \ + -T"autogen/linkerfile_base.ld" \ + --specs=nano.specs \ + -Xlinker -Map=$(OUTPUT_DIR)/$(PROJECTNAME).map \ + -Wl,--gc-sections + + +#################################################################### +# SDK Build Rules # +#################################################################### +$(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_control_gpio.o: $(SDK_PATH)/hardware/board/src/sl_board_control_gpio.c + @echo 'Building $(SDK_PATH)/hardware/board/src/sl_board_control_gpio.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/hardware/board/src/sl_board_control_gpio.c +CDEPS += $(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_control_gpio.d +OBJS += $(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_control_gpio.o + +$(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_init.o: $(SDK_PATH)/hardware/board/src/sl_board_init.c + @echo 'Building $(SDK_PATH)/hardware/board/src/sl_board_init.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/hardware/board/src/sl_board_init.c +CDEPS += $(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_init.d +OBJS += $(OUTPUT_DIR)/sdk/hardware/board/src/sl_board_init.o + +$(OUTPUT_DIR)/sdk/hardware/driver/configuration_over_swo/src/sl_cos.o: $(SDK_PATH)/hardware/driver/configuration_over_swo/src/sl_cos.c + @echo 'Building $(SDK_PATH)/hardware/driver/configuration_over_swo/src/sl_cos.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/hardware/driver/configuration_over_swo/src/sl_cos.c +CDEPS += $(OUTPUT_DIR)/sdk/hardware/driver/configuration_over_swo/src/sl_cos.d +OBJS += $(OUTPUT_DIR)/sdk/hardware/driver/configuration_over_swo/src/sl_cos.o + +$(OUTPUT_DIR)/sdk/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_eusart/sl_mx25_flash_shutdown.o: $(SDK_PATH)/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_eusart/sl_mx25_flash_shutdown.c + @echo 'Building $(SDK_PATH)/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_eusart/sl_mx25_flash_shutdown.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_eusart/sl_mx25_flash_shutdown.c +CDEPS += $(OUTPUT_DIR)/sdk/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_eusart/sl_mx25_flash_shutdown.d +OBJS += $(OUTPUT_DIR)/sdk/hardware/driver/mx25_flash_shutdown/src/sl_mx25_flash_shutdown_eusart/sl_mx25_flash_shutdown.o + +$(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface.o: $(SDK_PATH)/platform/bootloader/api/btl_interface.c + @echo 'Building $(SDK_PATH)/platform/bootloader/api/btl_interface.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/bootloader/api/btl_interface.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface.d +OBJS += $(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface.o + +$(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface_storage.o: $(SDK_PATH)/platform/bootloader/api/btl_interface_storage.c + @echo 'Building $(SDK_PATH)/platform/bootloader/api/btl_interface_storage.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/bootloader/api/btl_interface_storage.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface_storage.d +OBJS += $(OUTPUT_DIR)/sdk/platform/bootloader/api/btl_interface_storage.o + +$(OUTPUT_DIR)/sdk/platform/bootloader/app_properties/app_properties.o: $(SDK_PATH)/platform/bootloader/app_properties/app_properties.c + @echo 'Building $(SDK_PATH)/platform/bootloader/app_properties/app_properties.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/bootloader/app_properties/app_properties.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/bootloader/app_properties/app_properties.d +OBJS += $(OUTPUT_DIR)/sdk/platform/bootloader/app_properties/app_properties.o + +$(OUTPUT_DIR)/sdk/platform/common/src/sl_assert.o: $(SDK_PATH)/platform/common/src/sl_assert.c + @echo 'Building $(SDK_PATH)/platform/common/src/sl_assert.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/common/src/sl_assert.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_assert.d +OBJS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_assert.o + +$(OUTPUT_DIR)/sdk/platform/common/src/sl_slist.o: $(SDK_PATH)/platform/common/src/sl_slist.c + @echo 'Building $(SDK_PATH)/platform/common/src/sl_slist.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/common/src/sl_slist.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_slist.d +OBJS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_slist.o + +$(OUTPUT_DIR)/sdk/platform/common/toolchain/src/sl_memory.o: $(SDK_PATH)/platform/common/toolchain/src/sl_memory.c + @echo 'Building $(SDK_PATH)/platform/common/toolchain/src/sl_memory.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/common/toolchain/src/sl_memory.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/common/toolchain/src/sl_memory.d +OBJS += $(OUTPUT_DIR)/sdk/platform/common/toolchain/src/sl_memory.o + +$(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG24/Source/startup_efr32mg24.o: $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG24/Source/startup_efr32mg24.c + @echo 'Building $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG24/Source/startup_efr32mg24.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG24/Source/startup_efr32mg24.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG24/Source/startup_efr32mg24.d +OBJS += $(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG24/Source/startup_efr32mg24.o + +$(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG24/Source/system_efr32mg24.o: $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG24/Source/system_efr32mg24.c + @echo 'Building $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG24/Source/system_efr32mg24.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/Device/SiliconLabs/EFR32MG24/Source/system_efr32mg24.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG24/Source/system_efr32mg24.d +OBJS += $(OUTPUT_DIR)/sdk/platform/Device/SiliconLabs/EFR32MG24/Source/system_efr32mg24.o + +$(OUTPUT_DIR)/sdk/platform/driver/debug/src/sl_debug_swo.o: $(SDK_PATH)/platform/driver/debug/src/sl_debug_swo.c + @echo 'Building $(SDK_PATH)/platform/driver/debug/src/sl_debug_swo.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/driver/debug/src/sl_debug_swo.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/driver/debug/src/sl_debug_swo.d +OBJS += $(OUTPUT_DIR)/sdk/platform/driver/debug/src/sl_debug_swo.o + +$(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_led.o: $(SDK_PATH)/platform/driver/leddrv/src/sl_led.c + @echo 'Building $(SDK_PATH)/platform/driver/leddrv/src/sl_led.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/driver/leddrv/src/sl_led.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_led.d +OBJS += $(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_led.o + +$(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_simple_led.o: $(SDK_PATH)/platform/driver/leddrv/src/sl_simple_led.c + @echo 'Building $(SDK_PATH)/platform/driver/leddrv/src/sl_simple_led.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/driver/leddrv/src/sl_simple_led.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_simple_led.d +OBJS += $(OUTPUT_DIR)/sdk/platform/driver/leddrv/src/sl_simple_led.o + +$(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_default_common_linker.o: $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_default_common_linker.c + @echo 'Building $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_default_common_linker.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_default_common_linker.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_default_common_linker.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_default_common_linker.o + +$(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_hal_flash.o: $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_hal_flash.c + @echo 'Building $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_hal_flash.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_hal_flash.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_hal_flash.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_hal_flash.o + +$(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_lock.o: $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_lock.c + @echo 'Building $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_lock.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emdrv/nvm3/src/nvm3_lock.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_lock.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emdrv/nvm3/src/nvm3_lock.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_burtc.o: $(SDK_PATH)/platform/emlib/src/em_burtc.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_burtc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_burtc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_burtc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_burtc.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_cmu.o: $(SDK_PATH)/platform/emlib/src/em_cmu.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_cmu.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_cmu.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_cmu.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_cmu.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_core.o: $(SDK_PATH)/platform/emlib/src/em_core.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_core.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_core.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_core.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_core.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_emu.o: $(SDK_PATH)/platform/emlib/src/em_emu.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_emu.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_emu.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_emu.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_emu.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_eusart.o: $(SDK_PATH)/platform/emlib/src/em_eusart.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_eusart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_eusart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_eusart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_eusart.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_gpio.o: $(SDK_PATH)/platform/emlib/src/em_gpio.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_gpio.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_gpio.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_gpio.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_gpio.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_msc.o: $(SDK_PATH)/platform/emlib/src/em_msc.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_msc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_msc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_msc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_msc.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_prs.o: $(SDK_PATH)/platform/emlib/src/em_prs.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_prs.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_prs.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_prs.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_prs.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_rmu.o: $(SDK_PATH)/platform/emlib/src/em_rmu.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_rmu.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_rmu.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_rmu.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_rmu.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_se.o: $(SDK_PATH)/platform/emlib/src/em_se.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_se.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_se.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_se.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_se.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_system.o: $(SDK_PATH)/platform/emlib/src/em_system.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_system.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_system.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_system.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_system.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_usart.o: $(SDK_PATH)/platform/emlib/src/em_usart.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_usart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_usart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_usart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_usart.o + +$(OUTPUT_DIR)/sdk/platform/emlib/src/em_wdog.o: $(SDK_PATH)/platform/emlib/src/em_wdog.c + @echo 'Building $(SDK_PATH)/platform/emlib/src/em_wdog.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/emlib/src/em_wdog.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_wdog.d +OBJS += $(OUTPUT_DIR)/sdk/platform/emlib/src/em_wdog.o + +$(OUTPUT_DIR)/sdk/platform/peripheral/src/peripheral_sysrtc.o: $(SDK_PATH)/platform/peripheral/src/peripheral_sysrtc.c + @echo 'Building $(SDK_PATH)/platform/peripheral/src/peripheral_sysrtc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/peripheral/src/peripheral_sysrtc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/peripheral/src/peripheral_sysrtc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/peripheral/src/peripheral_sysrtc.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/coexistence/protocol/ieee802154_uc/coexistence-802154.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_conversions_efr32.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/pa-conversions/pa_curves_efr32.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_ant_div/sl_rail_util_ant_div.o + +$(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.o: $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.c + @echo 'Building $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.d +OBJS += $(OUTPUT_DIR)/sdk/platform/radio/rail_lib/plugin/rail_util_pti/sl_rail_util_pti.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_dcdc_s2.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_dcdc_s2.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_dcdc_s2.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_dcdc_s2.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_dcdc_s2.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_dcdc_s2.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_emu_s2.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_emu_s2.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_emu_s2.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_emu_s2.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_emu_s2.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_emu_s2.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_hfxo_s2.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_hfxo_s2.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_hfxo_s2.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_hfxo_s2.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_hfxo_s2.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_hfxo_s2.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_lfxo_s2.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_lfxo_s2.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_lfxo_s2.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_lfxo_s2.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_lfxo_s2.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_lfxo_s2.o + +$(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_nvic.o: $(SDK_PATH)/platform/service/device_init/src/sl_device_init_nvic.c + @echo 'Building $(SDK_PATH)/platform/service/device_init/src/sl_device_init_nvic.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/device_init/src/sl_device_init_nvic.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_nvic.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/device_init/src/sl_device_init_nvic.o + +$(OUTPUT_DIR)/sdk/platform/service/hfxo_manager/src/sl_hfxo_manager.o: $(SDK_PATH)/platform/service/hfxo_manager/src/sl_hfxo_manager.c + @echo 'Building $(SDK_PATH)/platform/service/hfxo_manager/src/sl_hfxo_manager.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/hfxo_manager/src/sl_hfxo_manager.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/hfxo_manager/src/sl_hfxo_manager.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/hfxo_manager/src/sl_hfxo_manager.o + +$(OUTPUT_DIR)/sdk/platform/service/hfxo_manager/src/sl_hfxo_manager_hal_s2.o: $(SDK_PATH)/platform/service/hfxo_manager/src/sl_hfxo_manager_hal_s2.c + @echo 'Building $(SDK_PATH)/platform/service/hfxo_manager/src/sl_hfxo_manager_hal_s2.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/hfxo_manager/src/sl_hfxo_manager_hal_s2.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/hfxo_manager/src/sl_hfxo_manager_hal_s2.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/hfxo_manager/src/sl_hfxo_manager_hal_s2.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_debug.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_debug.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_debug.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_debug.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_debug.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_debug.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_retarget_stdio.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_retarget_stdio.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_retarget_stdio.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_retarget_stdio.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_retarget_stdio.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_retarget_stdio.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_swo_itm_8.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_swo_itm_8.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_swo_itm_8.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_swo_itm_8.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_swo_itm_8.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_swo_itm_8.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_uart.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_uart.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_uart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_uart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_uart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_uart.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_usart.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_usart.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_usart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_usart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_usart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_usart.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_vuart.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_vuart.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_vuart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_vuart.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_vuart.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_vuart.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_common_ash/src/ash-common.o: $(SDK_PATH)/platform/service/legacy_common_ash/src/ash-common.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_common_ash/src/ash-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_common_ash/src/ash-common.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_common_ash/src/ash-common.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_common_ash/src/ash-common.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/base-replacement.o: $(SDK_PATH)/platform/service/legacy_hal/src/base-replacement.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/base-replacement.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/base-replacement.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/base-replacement.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/base-replacement.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-common.o: $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-common.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-common.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-common.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-common.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-app.o: $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-app.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-app.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-app.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-app.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-app.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-standalone.o: $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-standalone.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-standalone.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface-standalone.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-standalone.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface-standalone.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface.o: $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/bootloader-interface.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/bootloader-interface.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/crc.o: $(SDK_PATH)/platform/service/legacy_hal/src/crc.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/crc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/crc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/crc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/crc.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/diagnostic.o: $(SDK_PATH)/platform/service/legacy_hal/src/diagnostic.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/diagnostic.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/diagnostic.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/diagnostic.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/diagnostic.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/ember-phy.o: $(SDK_PATH)/platform/service/legacy_hal/src/ember-phy.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/ember-phy.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/ember-phy.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/ember-phy.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/ember-phy.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/faults.o: $(SDK_PATH)/platform/service/legacy_hal/src/faults.s + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/faults.s' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/faults.s +ASMDEPS_s += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/faults.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/faults.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/random.o: $(SDK_PATH)/platform/service/legacy_hal/src/random.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/random.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/random.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/random.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/random.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/token_legacy.o: $(SDK_PATH)/platform/service/legacy_hal/src/token_legacy.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/token_legacy.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/token_legacy.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/token_legacy.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/token_legacy.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.o: $(SDK_PATH)/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal_wdog/src/sl_legacy_hal_wdog.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_ncp_ash/src/ash-ncp.o: $(SDK_PATH)/platform/service/legacy_ncp_ash/src/ash-ncp.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_ncp_ash/src/ash-ncp.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_ncp_ash/src/ash-ncp.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_ncp_ash/src/ash-ncp.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_ncp_ash/src/ash-ncp.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_printf/src/sl_legacy_printf.o: $(SDK_PATH)/platform/service/legacy_printf/src/sl_legacy_printf.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_printf/src/sl_legacy_printf.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_printf/src/sl_legacy_printf.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_printf/src/sl_legacy_printf.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_printf/src/sl_legacy_printf.o + +$(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager.o: $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager.c + @echo 'Building $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager.o + +$(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_debug.o: $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_debug.c + @echo 'Building $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_debug.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_debug.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_debug.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_debug.o + +$(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_hal_s2.o: $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_hal_s2.c + @echo 'Building $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_hal_s2.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/power_manager/src/sl_power_manager_hal_s2.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_hal_s2.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/power_manager/src/sl_power_manager_hal_s2.o + +$(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer.o: $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer.c + @echo 'Building $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer.o + +$(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_burtc.o: $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_burtc.c + @echo 'Building $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_burtc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_burtc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_burtc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_burtc.o + +$(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_sysrtc.o: $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_sysrtc.c + @echo 'Building $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_sysrtc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/sleeptimer/src/sl_sleeptimer_hal_sysrtc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_sysrtc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/sleeptimer/src/sl_sleeptimer_hal_sysrtc.o + +$(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_init.o: $(SDK_PATH)/platform/service/system/src/sl_system_init.c + @echo 'Building $(SDK_PATH)/platform/service/system/src/sl_system_init.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/system/src/sl_system_init.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_init.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_init.o + +$(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_process_action.o: $(SDK_PATH)/platform/service/system/src/sl_system_process_action.c + @echo 'Building $(SDK_PATH)/platform/service/system/src/sl_system_process_action.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/system/src/sl_system_process_action.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_process_action.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_process_action.o + +$(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_def.o: $(SDK_PATH)/platform/service/token_manager/src/sl_token_def.c + @echo 'Building $(SDK_PATH)/platform/service/token_manager/src/sl_token_def.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/token_manager/src/sl_token_def.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_def.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_def.o + +$(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manager.o: $(SDK_PATH)/platform/service/token_manager/src/sl_token_manager.c + @echo 'Building $(SDK_PATH)/platform/service/token_manager/src/sl_token_manager.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/token_manager/src/sl_token_manager.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manager.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manager.o + +$(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manufacturing.o: $(SDK_PATH)/platform/service/token_manager/src/sl_token_manufacturing.c + @echo 'Building $(SDK_PATH)/platform/service/token_manager/src/sl_token_manufacturing.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/token_manager/src/sl_token_manufacturing.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manufacturing.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_manufacturing.o + +$(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay.o: $(SDK_PATH)/platform/service/udelay/src/sl_udelay.c + @echo 'Building $(SDK_PATH)/platform/service/udelay/src/sl_udelay.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/udelay/src/sl_udelay.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay.o + +$(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay_armv6m_gcc.o: $(SDK_PATH)/platform/service/udelay/src/sl_udelay_armv6m_gcc.S + @echo 'Building $(SDK_PATH)/platform/service/udelay/src/sl_udelay_armv6m_gcc.S' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $(SDK_PATH)/platform/service/udelay/src/sl_udelay_armv6m_gcc.S +ASMDEPS_S += $(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay_armv6m_gcc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/udelay/src/sl_udelay_armv6m_gcc.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-binding-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-binding-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-binding-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-binding-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-binding-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-binding-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-green-power-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-green-power-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-green-power-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-green-power-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-green-power-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-green-power-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-messaging-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-messaging-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-messaging-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-messaging-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-messaging-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-messaging-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-networking-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-networking-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-networking-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-networking-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-networking-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-networking-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-secure-ezsp-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-security-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-security-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-security-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-security-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-security-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-security-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-trust-center-generated.o: $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-trust-center-generated.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-trust-center-generated.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/command-handlers-trust-center-generated.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-trust-center-generated.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/command-handlers-trust-center-generated.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/em260-common.o: $(SDK_PATH)/protocol/zigbee/app/em260/em260-common.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/em260-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/em260-common.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/em260-common.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/em260-common.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/ncp-stack-stub.o: $(SDK_PATH)/protocol/zigbee/app/em260/ncp-stack-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/ncp-stack-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/ncp-stack-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/ncp-stack-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/ncp-stack-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/serial-interface-uart.o: $(SDK_PATH)/protocol/zigbee/app/em260/serial-interface-uart.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/em260/serial-interface-uart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/em260/serial-interface-uart.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/serial-interface-uart.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/em260/serial-interface-uart.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_common.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_common.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_common.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_common.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_common.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_sleep.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_stack_cb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_ncp_framework_cb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.o: $(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.o: $(SDK_PATH)/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/security/security-address-cache.o: $(SDK_PATH)/protocol/zigbee/app/util/security/security-address-cache.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/security/security-address-cache.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/security/security-address-cache.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/security/security-address-cache.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/security/security-address-cache.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/xncp/xncp_cb.o: $(SDK_PATH)/protocol/zigbee/app/xncp/xncp_cb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/xncp/xncp_cb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/xncp/xncp_cb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/xncp/xncp_cb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/xncp/xncp_cb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/config/ember-configuration.o: $(SDK_PATH)/protocol/zigbee/stack/config/ember-configuration.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/config/ember-configuration.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/config/ember-configuration.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/config/ember-configuration.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/config/ember-configuration.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/ember-multi-network-stub.o: $(SDK_PATH)/protocol/zigbee/stack/core/ember-multi-network-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/core/ember-multi-network-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/core/ember-multi-network-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/ember-multi-network-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/ember-multi-network-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-common.o: $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-common.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-common.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-common.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-common.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-stub.o: $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/core/multi-pan-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/core/multi-pan-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/aes-ecb.o: $(SDK_PATH)/protocol/zigbee/stack/framework/aes-ecb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/framework/aes-ecb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/framework/aes-ecb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/aes-ecb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/aes-ecb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/ccm-star.o: $(SDK_PATH)/protocol/zigbee/stack/framework/ccm-star.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/framework/ccm-star.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/framework/ccm-star.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/ccm-star.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/ccm-star.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/strong-random-api.o: $(SDK_PATH)/protocol/zigbee/stack/framework/strong-random-api.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/framework/strong-random-api.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/framework/strong-random-api.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/strong-random-api.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/strong-random-api.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.o: $(SDK_PATH)/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/framework/zigbee-event-logger-stub-gen.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-163k1-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-283k1-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-sign-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-283k1-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-dsa-verify-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/cbke-crypto-engine-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/cbke-crypto-engine-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/install-code-stub.o: $(SDK_PATH)/protocol/zigbee/stack/security/install-code-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/security/install-code-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/security/install-code-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/install-code-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/security/install-code-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/stack/zll/zll-stubs.o: $(SDK_PATH)/protocol/zigbee/stack/zll/zll-stubs.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/stack/zll/zll-stubs.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/stack/zll/zll-stubs.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/zll/zll-stubs.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/stack/zll/zll-stubs.o + +$(OUTPUT_DIR)/sdk/util/silicon_labs/silabs_core/memory_manager/sl_malloc.o: $(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager/sl_malloc.c + @echo 'Building $(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager/sl_malloc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager/sl_malloc.c +CDEPS += $(OUTPUT_DIR)/sdk/util/silicon_labs/silabs_core/memory_manager/sl_malloc.d +OBJS += $(OUTPUT_DIR)/sdk/util/silicon_labs/silabs_core/memory_manager/sl_malloc.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/aes.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/aes.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/aes.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/aes.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/aes.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/aes.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1parse.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1parse.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1parse.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1parse.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1parse.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1parse.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1write.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1write.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1write.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/asn1write.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1write.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/asn1write.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/base64.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/base64.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/base64.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/base64.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/base64.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/base64.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/bignum.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/bignum.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/bignum.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/bignum.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/bignum.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/bignum.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher_wrap.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher_wrap.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher_wrap.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/cipher_wrap.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher_wrap.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/cipher_wrap.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/constant_time.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/constant_time.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/constant_time.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/constant_time.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/constant_time.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/constant_time.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ctr_drbg.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ctr_drbg.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ctr_drbg.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ctr_drbg.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ctr_drbg.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ctr_drbg.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/des.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/des.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/des.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/des.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/des.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/des.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdh.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdh.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdh.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdh.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdh.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdh.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdsa.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdsa.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdsa.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecdsa.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdsa.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecdsa.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp_curves.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp_curves.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp_curves.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/ecp_curves.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp_curves.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/ecp_curves.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy_poll.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy_poll.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy_poll.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/entropy_poll.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy_poll.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/entropy_poll.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/hmac_drbg.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/hmac_drbg.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/hmac_drbg.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/hmac_drbg.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/hmac_drbg.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/hmac_drbg.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/md.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/md.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/md.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/md.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/md.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/md.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/oid.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/oid.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/oid.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/oid.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/oid.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/oid.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pem.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pem.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pem.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pem.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pem.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pem.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk_wrap.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk_wrap.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk_wrap.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pk_wrap.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk_wrap.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pk_wrap.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkparse.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkparse.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkparse.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkparse.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkparse.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkparse.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkwrite.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkwrite.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkwrite.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/pkwrite.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkwrite.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/pkwrite.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform_util.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform_util.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform_util.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/platform_util.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform_util.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/platform_util.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_aead.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_aead.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_aead.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_aead.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_aead.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_aead.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_client.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_client.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_client.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_client.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_client.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_client.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_driver_wrappers.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_ecp.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_hash.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_hash.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_hash.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_hash.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_hash.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_hash.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_mac.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_mac.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_mac.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_mac.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_mac.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_mac.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_rsa.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_se.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_se.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_se.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_se.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_se.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_se.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_slot_management.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_storage.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_storage.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_storage.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/psa_crypto_storage.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_storage.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/psa_crypto_storage.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha1.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha1.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha1.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha1.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha1.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha1.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha256.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha256.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha256.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha256.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha256.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha256.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha512.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha512.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha512.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/sha512.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha512.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/sha512.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/threading.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/threading.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/threading.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/threading.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/threading.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/threading.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509.o + +$(OUTPUT_DIR)/project/_/_/common/gsdk/util/third_party/crypto/mbedtls/library/x509_create.o: $(COPIED_SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_create.c + @echo 'Building $(COPIED_SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_create.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(COPIED_SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_create.c +CDEPS += $(OUTPUT_DIR)/project/_/_/common/gsdk/util/third_party/crypto/mbedtls/library/x509_create.d +OBJS += $(OUTPUT_DIR)/project/_/_/common/gsdk/util/third_party/crypto/mbedtls/library/x509_create.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crl.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crl.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crl.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crl.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crl.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crl.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crt.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crt.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crt.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_crt.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crt.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_crt.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_csr.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_csr.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_csr.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509_csr.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_csr.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509_csr.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_crt.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_crt.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_crt.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_crt.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_crt.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_crt.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_csr.o: $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_csr.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_csr.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/mbedtls/library/x509write_csr.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_csr.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/mbedtls/library/x509write_csr.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_attestation.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_attestation.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_attestation.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_attestation.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_attestation.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_attestation.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_cipher.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_entropy.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_entropy.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_entropy.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_entropy.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_entropy.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_entropy.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_hash.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_hash.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_hash.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_hash.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_hash.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_hash.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_derivation.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_derivation.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_derivation.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_derivation.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_derivation.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_derivation.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_handling.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_handling.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_handling.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_handling.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_handling.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_key_handling.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_signature.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_signature.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_signature.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_signature.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_signature.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_signature.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_util.o: $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_util.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_util.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_util.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_util.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/se_manager/src/sl_se_manager_util.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_ecdsa_ecdh.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_ecdsa_ecdh.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_ecdsa_ecdh.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_ecdsa_ecdh.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_ecdsa_ecdh.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_ecdsa_ecdh.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/mbedtls_sha.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/se_aes.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/se_aes.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/se_aes.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/se_aes.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/se_aes.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/se_aes.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_entropy_hardware.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_mbedtls_support/src/sl_mbedtls.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sl_psa_its_nvm3.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_common.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_driver_init.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_psa_trng.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_aead.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_aead.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_aead.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_aead.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_aead.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_aead.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_builtin_keys.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_builtin_keys.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_builtin_keys.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_builtin_keys.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_builtin_keys.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_builtin_keys.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_cipher.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_derivation.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_derivation.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_derivation.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_derivation.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_derivation.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_derivation.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_management.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_management.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_management.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_management.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_management.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_key_management.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_mac.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_mac.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_mac.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_mac.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_mac.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_mac.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_signature.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_signature.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_signature.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_signature.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_signature.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_driver_signature.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_aead.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_aead.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_aead.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_aead.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_aead.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_aead.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_cipher.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_mac.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_mac.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_mac.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_mac.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_mac.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_driver_mac.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_key_derivation.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_key_derivation.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_key_derivation.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_key_derivation.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_key_derivation.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_opaque_key_derivation.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_aead.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_aead.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_aead.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_aead.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_aead.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_aead.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_cipher.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_cipher.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_cipher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_cipher.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_cipher.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_cipher.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_hash.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_hash.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_hash.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_hash.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_hash.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_hash.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_mac.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_mac.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_mac.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_mac.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_mac.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_driver_mac.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_key_derivation.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_key_derivation.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_key_derivation.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_key_derivation.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_key_derivation.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_transparent_key_derivation.o + +$(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.o: $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.c + @echo 'Building $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/crypto/sl_component/sl_psa_driver/src/sli_se_version_dependencies.o + +$(OUTPUT_DIR)/sdk/util/third_party/printf/printf.o: $(SDK_PATH)/util/third_party/printf/printf.c + @echo 'Building $(SDK_PATH)/util/third_party/printf/printf.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/printf/printf.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/printf/printf.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/printf/printf.o + +$(OUTPUT_DIR)/sdk/util/third_party/printf/src/iostream_printf.o: $(SDK_PATH)/util/third_party/printf/src/iostream_printf.c + @echo 'Building $(SDK_PATH)/util/third_party/printf/src/iostream_printf.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/printf/src/iostream_printf.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/printf/src/iostream_printf.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/printf/src/iostream_printf.o + +$(OUTPUT_DIR)/sdk/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.o: $(SDK_PATH)/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.c + @echo 'Building $(SDK_PATH)/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/segger/systemview/SEGGER/SEGGER_RTT.o + +$(OUTPUT_DIR)/project/_/_/common/creds.o: ../../common/creds.c + @echo 'Building ../../common/creds.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../../common/creds.c +CDEPS += $(OUTPUT_DIR)/project/_/_/common/creds.d +OBJS += $(OUTPUT_DIR)/project/_/_/common/creds.o + +$(OUTPUT_DIR)/project/_/device_cert.o: ../device_cert.c + @echo 'Building ../device_cert.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../device_cert.c +CDEPS += $(OUTPUT_DIR)/project/_/device_cert.d +OBJS += $(OUTPUT_DIR)/project/_/device_cert.o + +$(OUTPUT_DIR)/project/_/device_creds.o: ../device_creds.c + @echo 'Building ../device_creds.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../device_creds.c +CDEPS += $(OUTPUT_DIR)/project/_/device_creds.d +OBJS += $(OUTPUT_DIR)/project/_/device_creds.o + +$(OUTPUT_DIR)/project/_/main.o: ../main.c + @echo 'Building ../main.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../main.c +CDEPS += $(OUTPUT_DIR)/project/_/main.d +OBJS += $(OUTPUT_DIR)/project/_/main.o + +$(OUTPUT_DIR)/project/autogen/sl_board_default_init.o: autogen/sl_board_default_init.c + @echo 'Building autogen/sl_board_default_init.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_board_default_init.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_board_default_init.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_board_default_init.o + +$(OUTPUT_DIR)/project/autogen/sl_device_init_clocks.o: autogen/sl_device_init_clocks.c + @echo 'Building autogen/sl_device_init_clocks.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_device_init_clocks.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_device_init_clocks.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_device_init_clocks.o + +$(OUTPUT_DIR)/project/autogen/sl_event_handler.o: autogen/sl_event_handler.c + @echo 'Building autogen/sl_event_handler.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_event_handler.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_event_handler.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_event_handler.o + +$(OUTPUT_DIR)/project/autogen/sl_iostream_handles.o: autogen/sl_iostream_handles.c + @echo 'Building autogen/sl_iostream_handles.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_iostream_handles.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_iostream_handles.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_iostream_handles.o + +$(OUTPUT_DIR)/project/autogen/sl_iostream_init_usart_instances.o: autogen/sl_iostream_init_usart_instances.c + @echo 'Building autogen/sl_iostream_init_usart_instances.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_iostream_init_usart_instances.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_iostream_init_usart_instances.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_iostream_init_usart_instances.o + +$(OUTPUT_DIR)/project/autogen/sl_power_manager_handler.o: autogen/sl_power_manager_handler.c + @echo 'Building autogen/sl_power_manager_handler.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_power_manager_handler.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_power_manager_handler.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_power_manager_handler.o + +$(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_phy_select.o: autogen/sl_rail_util_ieee802154_phy_select.c + @echo 'Building autogen/sl_rail_util_ieee802154_phy_select.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_rail_util_ieee802154_phy_select.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_phy_select.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_phy_select.o + +$(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_stack_event.o: autogen/sl_rail_util_ieee802154_stack_event.c + @echo 'Building autogen/sl_rail_util_ieee802154_stack_event.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_rail_util_ieee802154_stack_event.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_stack_event.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_rail_util_ieee802154_stack_event.o + +$(OUTPUT_DIR)/project/autogen/sl_simple_led_instances.o: autogen/sl_simple_led_instances.c + @echo 'Building autogen/sl_simple_led_instances.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_simple_led_instances.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_simple_led_instances.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_simple_led_instances.o + +$(OUTPUT_DIR)/project/autogen/zigbee_common_callback_dispatcher.o: autogen/zigbee_common_callback_dispatcher.c + @echo 'Building autogen/zigbee_common_callback_dispatcher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/zigbee_common_callback_dispatcher.c +CDEPS += $(OUTPUT_DIR)/project/autogen/zigbee_common_callback_dispatcher.d +OBJS += $(OUTPUT_DIR)/project/autogen/zigbee_common_callback_dispatcher.o + +$(OUTPUT_DIR)/project/autogen/zigbee_ncp_callback_dispatcher.o: autogen/zigbee_ncp_callback_dispatcher.c + @echo 'Building autogen/zigbee_ncp_callback_dispatcher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/zigbee_ncp_callback_dispatcher.c +CDEPS += $(OUTPUT_DIR)/project/autogen/zigbee_ncp_callback_dispatcher.d +OBJS += $(OUTPUT_DIR)/project/autogen/zigbee_ncp_callback_dispatcher.o + +$(OUTPUT_DIR)/project/autogen/zigbee_stack_callback_dispatcher.o: autogen/zigbee_stack_callback_dispatcher.c + @echo 'Building autogen/zigbee_stack_callback_dispatcher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/zigbee_stack_callback_dispatcher.c +CDEPS += $(OUTPUT_DIR)/project/autogen/zigbee_stack_callback_dispatcher.d +OBJS += $(OUTPUT_DIR)/project/autogen/zigbee_stack_callback_dispatcher.o + +# Automatically-generated Simplicity Studio Metadata +# Please do not edit or delete these lines! +# SIMPLICITY_STUDIO_METADATA=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END_SIMPLICITY_STUDIO_METADATA +# END OF METADATA \ No newline at end of file diff --git a/silabs_examples/credentials/device/device_cert.c b/silabs_examples/credentials/device/device_cert.c new file mode 100644 index 00000000000000..88a7a4700295db --- /dev/null +++ b/silabs_examples/credentials/device/device_cert.c @@ -0,0 +1,131 @@ +#include "device_creds.h" +#include +#include +#include +#include +#include + +//------------------------------------------------------------------------------ +// Private +//------------------------------------------------------------------------------ + +static int key_destroy(psa_key_id_t key_id) +{ + psa_key_handle_t key_handle; + + int err = psa_open_key(key_id, &key_handle); + if (err) + { + psa_close_key(key_id); + } + else + { + err = psa_destroy_key(key_id); + } + return err; +} + +int key_generate(psa_key_id_t key_id) +{ + psa_key_attributes_t key_attr = psa_key_attributes_init(); + + key_destroy(key_id); + + psa_set_key_id(&key_attr, key_id); + psa_set_key_type(&key_attr, PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1)); + psa_set_key_bits(&key_attr, 256); + psa_set_key_algorithm(&key_attr, PSA_ALG_ECDSA(PSA_ALG_SHA_256)); + psa_set_key_usage_flags(&key_attr, + PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH | + PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE); + psa_set_key_lifetime(&key_attr, + PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION( + PSA_KEY_LIFETIME_PERSISTENT, + PSA_KEY_LOCATION_LOCAL_STORAGE)); + + int err = psa_generate_key(&key_attr, &key_id); + ASSERT(!err, return err, "psa_generate_key error %d", err); + + return 0; +} + +int key_import(psa_key_id_t key_id, const uint8_t *key_value, size_t key_size) +{ + key_destroy(key_id); + + psa_key_attributes_t key_attr = psa_key_attributes_init(); + psa_set_key_id(&key_attr, key_id); + psa_set_key_type(&key_attr, PSA_KEY_TYPE_ECC_KEY_PAIR(PSA_ECC_FAMILY_SECP_R1)); + psa_set_key_bits(&key_attr, 256); + psa_set_key_algorithm(&key_attr, PSA_ALG_ECDSA(PSA_ALG_SHA_256)); + psa_set_key_usage_flags( + &key_attr, PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_SIGN_MESSAGE | PSA_KEY_USAGE_VERIFY_MESSAGE); + psa_set_key_lifetime( + &key_attr, PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(PSA_KEY_LIFETIME_PERSISTENT, PSA_KEY_LOCATION_LOCAL_STORAGE)); + + int err = psa_import_key(&key_attr, key_value, key_size, &key_id); + psa_reset_key_attributes(&key_attr); + return err; +} + +//------------------------------------------------------------------------------ +// Public +//------------------------------------------------------------------------------ + +int device_csr_generate(creds_file_t *csr) +{ + psa_key_id_t key_id = EFR32_CREDENTIALS_DAC_KEY_ID; + mbedtls_pk_context key_ctx; + + // Initialize + csr->offset = 0; + csr->size = 0; + + // + // Key + // + + // int err = key_import(key_id, _examples_dac_priv_raw, sizeof(_examples_dac_priv_raw)); + // ASSERT(!err, return err, "Key generation error %d", err); + + int err = key_generate(key_id); + ASSERT(!err, return err, "Key generation error %d", err); + + // + // CSR + // + + static mbedtls_x509write_csr csr_ctx; + + mbedtls_x509write_csr_init(&csr_ctx); + + // Subject name + + char subject_name[512]; +#if MATTER_X509_EXTENSIONS + snprintf(subject_name, sizeof(subject_name), "CN=%s,VID=%04X,PID=%04X", MATTER_COMMON_NAME, MATTER_VENDOR_ID, MATTER_PRODUCT_ID); +#else + snprintf(subject_name, sizeof(subject_name), "CN=%s", MATTER_COMMON_NAME); +#endif + + mbedtls_x509write_csr_set_md_alg(&csr_ctx, MBEDTLS_MD_SHA256); + err = mbedtls_x509write_csr_set_subject_name(&csr_ctx, subject_name); + ASSERT(!err, return err, "mbedtls_x509write_csr_set_subject_name() error %d", err); + + mbedtls_pk_init(&key_ctx); + err = mbedtls_pk_setup_opaque(&key_ctx, key_id); + ASSERT(!err, return err, "mbedtls_pk_setup_opaque() error %d", err); + + // Signing key + + mbedtls_x509write_csr_set_key(&csr_ctx, &key_ctx); + + // Generate + + err = mbedtls_x509write_csr_pem(&csr_ctx, csr->data, csr->max, NULL, NULL); + ASSERT(!err, return err, "mbedtls_x509write_csr_pem() error %d", err); + csr->size = strlen((char *)csr->data); + + mbedtls_x509write_csr_free(&csr_ctx); + return err; +} diff --git a/silabs_examples/credentials/device/device_creds.c b/silabs_examples/credentials/device/device_creds.c new file mode 100644 index 00000000000000..163b1ecd8fd19f --- /dev/null +++ b/silabs_examples/credentials/device/device_creds.c @@ -0,0 +1,153 @@ + +#include "device_creds.h" +#include +#include +#include +#include +#include +#include +#include + +//------------------------------------------------------------------------------ +// Private +//------------------------------------------------------------------------------ + +typedef enum +{ + CREDS_STATE_START = 0x00, + CREDS_STATE_CSR_GENERATE = 0x01, + CREDS_STATE_CSR_READY = 0x02, + CREDS_STATE_CSR_SENT = 0x03, + CREDS_STATE_FAILURE = 0xff, + +} creds_state_t; + +static uint8_t _csr_buff[CREDS_CSR_LENGTH_MAX] = {0}; +static creds_file_t _csr; + +static sl_zigbee_event_t _creds_event; +static uint32_t _event_period = MILLISECOND_TICKS_PER_SECOND; +static creds_state_t _state = CREDS_STATE_START; + +static void credsEventHandler(sl_zigbee_event_t *event) +{ + sl_zigbee_event_set_delay_ms(&_creds_event, _event_period); +} + +//------------------------------------------------------------------------------ +// Public +//------------------------------------------------------------------------------ + +int device_creds_init() +{ + // Initialize PSA Crypto + int err = psa_crypto_init(); + ASSERT(!err, return err, "psa_crypto_init() error %d", err); + + // Initialize CSR buffer + creds_file_init(&_csr, _csr_buff, sizeof(_csr_buff)); + + return 0; +} + +int device_creds_action() +{ + return 0; +} + +/** @brief Main Init + * + * This function is called when the application starts and can be used to + * perform any additional initialization required at system startup. + */ +void emberAfMainInitCallback(void) +{ + device_creds_init(); + + sl_zigbee_event_init(&_creds_event, credsEventHandler); + sl_zigbee_event_set_active(&_creds_event); +} + +/** @brief Incoming Custom EZSP Message Callback + * + * This function is called when the NCP receives a custom EZSP message from the + * HOST. The message length and payload is passed to the callback in the first + * two arguments. The implementation can then fill in the reply and set + * the replayPayloadLength to the number of bytes in the reply. + * See documentation for the function ezspCustomFrame on sending these messages + * from the HOST. + * + * @param payload_size The length of the payload. + * @param payload The custom message that was sent from the HOST. + * Ver.: always + * @param replay_size The length of the reply. This needs to be + * set by the implementation in order for a properly formed respose to be sent + * back to the HOST. Ver.: always + * @param reply The custom message to send back to the HOST in respose + * to the custom message. Ver.: always + * + * @return An ::EmberStatus indicating the result of the custom message + * handling. This returned status is always the first byte of the EZSP + * response. + */ +EmberStatus emberAfPluginXncpIncomingCustomFrameCallback(uint8_t payload_size, + uint8_t *payload, + uint8_t *replay_size, + uint8_t *reply) +{ + EmberStatus status = EMBER_INVALID_CALL; + int err = 0; + + if (CREDS_STATE_FAILURE == _state) + { + _state = CREDS_STATE_START; + return EMBER_ERR_FATAL; + } + + // First byte is the command ID. + creds_command_t command_id = payload[0]; + + switch (command_id) + { + case CREDS_COMMAND_CSR_GENERATE: + ASSERT(CREDS_STATE_START == _state || CREDS_STATE_CSR_SENT == _state, return EMBER_INVALID_CALL, "Invalid command %d for state $d\n", command_id, _state); + + err = device_csr_generate(&_csr); + ASSERT(!err, return EMBER_ERR_FATAL, "CSR generate error %d\n", err); + + // File size in big endian format + reply[0] = (_csr.size >> 8) & 0xff; + reply[1] = (_csr.size & 0xff); + *replay_size = 2; + status = EMBER_SUCCESS; + _state = CREDS_STATE_CSR_READY; + break; + + case CREDS_COMMAND_CSR_READ: + ASSERT(CREDS_STATE_CSR_READY == _state, return EMBER_INVALID_CALL, "Invalid command %d for state $d\n", command_id, _state); + + if (_csr.offset < _csr.size) + { + size_t segment_size = CREDS_FRAME_LENGTH_MAX; + if (_csr.offset + segment_size > _csr.size) + { + // Partial segment + segment_size = _csr.size - _csr.offset; + } + memcpy(reply, &_csr.data[_csr.offset], segment_size); + _csr.offset += segment_size; + *replay_size = segment_size; + } + if (_csr.offset >= _csr.size) + { + _state = CREDS_STATE_CSR_SENT; + } + status = EMBER_SUCCESS; + break; + + default: + break; + } + + return status; +} \ No newline at end of file diff --git a/silabs_examples/credentials/device/device_creds.h b/silabs_examples/credentials/device/device_creds.h new file mode 100644 index 00000000000000..0bda9c976a6076 --- /dev/null +++ b/silabs_examples/credentials/device/device_creds.h @@ -0,0 +1,14 @@ +#ifndef MATTER_DEVICE_CREDS_H +#define MATTER_DEVICE_CREDS_H + +#include + +#ifndef EFR32_CREDENTIALS_DAC_KEY_ID +#define EFR32_CREDENTIALS_DAC_KEY_ID PSA_KEY_ID_USER_MIN + 1 +#endif + +int device_creds_init(); +int device_creds_action(); +int device_csr_generate(creds_file_t *csr); + +#endif // MATTER_DEVICE_CREDS_H \ No newline at end of file diff --git a/silabs_examples/credentials/device/device_creds.slcp b/silabs_examples/credentials/device/device_creds.slcp new file mode 100644 index 00000000000000..50ed30401e012f --- /dev/null +++ b/silabs_examples/credentials/device/device_creds.slcp @@ -0,0 +1,123 @@ +project_name: "device-creds" +label: "Matter Credentials Device" +package: "Zigbee" +category: "Matter Tool" +quality: "production" + +description: > + Host application that drives the injection of Matter credentials into the target device. +author: "Silicon Laboratories, Inc." + +component: + - id: "iostream_usart" + instance: + - vcom + - id: "zigbee_debug_print" + - id: "iostream_vuart" + - id: "token_manager" + - id: "zigbee_pro_stack" + - id: "zigbee_source_route" + - id: "zigbee_binding_table" + - id: "zigbee_end_device_bind" + - id: "zigbee_packet_validate" + - id: "zigbee_gp" + - id: "zigbee_r22_support" + - id: "zigbee_security_link_keys" + - id: "zigbee_xncp" + - id: "zigbee_app_framework_common" + - id: "zigbee_debug_extended" + - id: "zigbee_ncp_uart_hardware" + - id: "zigbee_debug_basic" + - id: "zigbee_debug_extended" + - id: simple_led + instance: + - led0 + - id: "mbedtls_x509" + - id: "psa_crypto_ecc_secp256r1" + - id: "psa_crypto_ecc_secp192r1" + - id: "psa_crypto_ecc_secp384r1" + - id: "psa_crypto_ecc_secp521r1" + - id: "psa_crypto_sha1" + - id: "psa_crypto_sha224" + - id: "psa_crypto_sha256" + - id: "psa_crypto_sha384" + - id: "psa_crypto_sha512" + - id: "psa_crypto_ecdsa" + - id: "psa_its" + - id: "device_init" + - id: "sl_system" + - id: "printf" + - id: "iostream_retarget_stdio" + - id: "iostream_recommended_stream" + + - id: "nvm3_lib" + + +configuration: + - name: SL_BOARD_ENABLE_VCOM + value: 1 + - name: SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE + value: usartHwFlowControlCtsAndRts + - name: SL_CLI_MAX_INPUT_ARGUMENTS + value: 16 + - name: EMBER_BINDING_TABLE_SIZE + value: 32 + - name: EMBER_MAX_END_DEVICE_CHILDREN + value: 32 + - name: EMBER_KEY_TABLE_SIZE + value: 12 + - name: SL_CLI_EXAMPLE_IOSTREAM_HANDLE + value: sl_iostream_vuart_handle + - name: NVM3_DEFAULT_NVM_SIZE + value: 36864 + condition: + - device_series_1 + - name: NVM3_DEFAULT_NVM_SIZE + value: 32768 + condition: + - device_series_2 + +source: + - path: "main.c" + - path: "device_creds.c" + - path: "device_cert.c" + +include: + - path: "./" + - path: ../common + file_list: + - path: creds.h + - path: creds.c + +define: + - name: "MATTER_X509_EXTENSIONS" + value: "1" + - name: "MATTER_COMMON_NAME" + value: "\"Matter Dev DAC 0xFFF1/0x8005\"" + - name: "MATTER_VENDOR_ID" + value: "0xFFF1" + - name: MATTER_PRODUCT_ID + value: "0x8005" + - name: "RESERVED_AVAILABLE_MEMORY" + value: "1000" + - name: "PSA_CRYPTO_PRINT" + value: "1" + - name: "PSA_CRYPTO_PRINT_CERT" + value: "1" + +readme: + - path: ./README.md + +ui_hints: + highlight: + - path: README.md + focus: false + +filter: + - name: "Wireless Technology" + value: ["Zigbee"] + - name: "Device Type" + value: ["NCP"] + - name: "Project Difficulty" + value: ["Advanced"] + diff --git a/silabs_examples/credentials/device/main.c b/silabs_examples/credentials/device/main.c new file mode 100644 index 00000000000000..cf5f734702484b --- /dev/null +++ b/silabs_examples/credentials/device/main.c @@ -0,0 +1,65 @@ +/***************************************************************************//** + * @file main.c + * @brief main() function. + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include "device_creds.h" +#include "sl_component_catalog.h" +#include "sl_system_init.h" +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) +#include "sl_power_manager.h" +#endif +#if defined(SL_CATALOG_KERNEL_PRESENT) +#include "sl_system_kernel.h" +#else +#include "sl_system_process_action.h" +#endif // SL_CATALOG_KERNEL_PRESENT + +#ifdef EMBER_TEST +#define main nodeMain +#endif + +int main(void) +{ + // Initialize Silicon Labs device, system, service(s) and protocol stack(s). + // Note that if the kernel is present, processing task(s) will be created by + // this call. + sl_system_init(); + + // Initialize the application + int err = device_creds_init(); + ASSERT(!err, return err, "device_creds_init() error %d\n", err); + +#if defined(SL_CATALOG_KERNEL_PRESENT) + // Start the kernel. Task(s) created in app_init() will start running. + sl_system_kernel_start(); +#else // SL_CATALOG_KERNEL_PRESENT + while (1) { + // Do not remove this call: Silicon Labs components process action routine + // must be called from the super loop. + sl_system_process_action(); + + // Application process. + device_creds_action(); + + // Let the CPU go to sleep if the system allow it. +#if defined(SL_CATALOG_POWER_MANAGER_PRESENT) + sl_power_manager_sleep(); +#endif // SL_CATALOG_POWER_MANAGER_PRESENT + } +#endif // SL_CATALOG_KERNEL_PRESENT + + return 0; +} diff --git a/silabs_examples/credentials/efr32_creds.tmpl b/silabs_examples/credentials/efr32_creds.tmpl new file mode 100644 index 00000000000000..73517770eb9155 --- /dev/null +++ b/silabs_examples/credentials/efr32_creds.tmpl @@ -0,0 +1,14 @@ +/** + * To enable these credentias, compile the app with option "chip_build_device_attestation_credentials=true". + */ + +#define EFR32_CREDENTIALS_DAC_KEY_ID PSA_KEY_ID_USER_MIN + 1 + +#define EFR32_CREDENTIALS_PAI_OFFSET {{pai_offset}} +#define EFR32_CREDENTIALS_PAI_SIZE {{pai_size}} + +#define EFR32_CREDENTIALS_DAC_OFFSET {{dac_offset}} +#define EFR32_CREDENTIALS_DAC_SIZE {{dac_size}} + +#define EFR32_CREDENTIALS_CD_OFFSET {{cd_offset}} +#define EFR32_CREDENTIALS_CD_SIZE {{cd_size}} diff --git a/silabs_examples/credentials/host/app/autogen/RTE_Components.h b/silabs_examples/credentials/host/app/autogen/RTE_Components.h new file mode 100644 index 00000000000000..3b6ea30c43423f --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/RTE_Components.h @@ -0,0 +1,22 @@ +// This file is autogenerated by Silicon Labs SLC. +// The contents of this file will be replaced in their entirety upon regeneration. +// +// Source template file: RTE_Components.h.jinja + + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + +/* standard device header from emlib */ +#define CMSIS_device_header "em_device.h" + +/* components are auto-generated here */ + + +#endif /* RTE_COMPONENTS_H */ + +/* This file is autogenerated by Silicon Labs SLC. */ +/* The contents of this file will be replaced in their entirety upon regeneration. */ +/* */ +/* Source template file: RTE_Components.h.jinja */ + diff --git a/silabs_examples/credentials/host/app/autogen/sl_cli_command_table.c b/silabs_examples/credentials/host/app/autogen/sl_cli_command_table.c new file mode 100644 index 00000000000000..842201c162bc2b --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/sl_cli_command_table.c @@ -0,0 +1,1045 @@ +/***************************************************************************//** + * @file sl_cli_command_table.c + * @brief Declarations of relevant command structs for cli framework. + * @version x.y.z + ******************************************************************************* + * # License + * Copyright 2018 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#include + +#include "sl_cli_config.h" +#include "sl_cli_command.h" +#include "sl_cli_arguments.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/******************************************************************************* + ***************************** TEMPLATED FILE ****************************** + ******************************************************************************/ + +/******************************************************************************* + * Example syntax (.slcc or .slcp) for populating this file: + * + * template_contribution: + * - name: cli_command # Register a command + * value: + * name: status # Name of command + * handler: status_command # Function to be called. Must be defined + * help: "Prints status" # Optional help description + * shortcuts: # Optional shorcut list + * - name: st + * argument: # Argument list, if apliccable + * - type: uint8 # Variable type + * help: "Channel" # Optional description + * - type: string + * help: "Text" + * - name: cli_group # Register a group + * value: + * name: shell # Group name + * help: "Shell commands" # Optional help description + * shortcuts: # Optional shorcuts + * - name: sh + * - name: cli_command + * value: + * name: repeat + * handler: repeat_cmd + * help: "Repeat commands" + * shortcuts: + * - name: r + * - name: rep + * group: shell # Associate command with group + * argument: + * - type: string + * help: "Text" + * - type: additional + * help: "More text" + * + * For subgroups, an optional unique id can be used to allow a particular name to + * be used more than once. In the following case, from the command line the + * following commands are available: + * + * > root_1 shell status + * > root_2 shell status + * + * - name: cli_group # Register a group + * value: + * name: root_1 # Group name + * + * - name: cli_group # Register a group + * value: + * name: root_2 # Group name + * + * - name: cli_group # Register a group + * value: + * name: shell # Group name + * id: shell_root_1 # Optional unique id for group + * group: root_1 # Add group to root_1 group + * + * - name: cli_group # Register a group + * value: + * name: shell # Group name + * id: shell_root_2 # Optional unique id for group + * group: root_2 # Add group to root_1 group + * + * - name: cli_command # Register a command + * value: + * name: status + * handler: status_1 + * group: shell_root_1 # id of subgroup + * + * - name: cli_command # Register a command + * value: + * name: status + * handler: status_2 + * group: shell_root_2 # id of subgroup + * + ******************************************************************************/ + +// Provide function declarations +void emAfCliInfoCommand(sl_cli_command_arg_t *arguments); +void printAllLibraryStatus(sl_cli_command_arg_t *arguments); +void emAfCliBsendCommand(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_send_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_zcl_read_cli_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_zcl_write_cli_command(sl_cli_command_arg_t *arguments); +void resetCommand(sl_cli_command_arg_t *arguments); +void emAfCliRawCommand(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_send_command(sl_cli_command_arg_t *arguments); +void emAfCliSendUsingMulticastBindingCommand(sl_cli_command_arg_t *arguments); +void emAfCliTimesyncCommand(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_config_cca_mode_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_version_command(sl_cli_command_arg_t *arguments); +void endpointPrint(sl_cli_command_arg_t *arguments); +void enableDisableEndpoint(sl_cli_command_arg_t *arguments); +void enableDisableEndpoint(sl_cli_command_arg_t *arguments); +void printEvents(sl_cli_command_arg_t *arguments); +void getSetMfgToken(sl_cli_command_arg_t *arguments); +void getSetMfgToken(sl_cli_command_arg_t *arguments); +void sli_zigbee_debug_print_enable_stack_type_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_debug_print_enable_core_type_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_debug_print_enable_app_type_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_debug_print_enable_zcl_type_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_debug_print_enable_legacy_af_debug_type_command(sl_cli_command_arg_t *arguments); +void emberAfPluginGatewaySupportTimeSyncLocal(sl_cli_command_arg_t *arguments); +void networkFormCommand(sl_cli_command_arg_t *arguments); +void networkJoinCommand(sl_cli_command_arg_t *arguments); +void networkPermitJoinCommand(sl_cli_command_arg_t *arguments); +void networkLeaveCommand(sl_cli_command_arg_t *arguments); +void networkRejoinCommand(sl_cli_command_arg_t *arguments); +void networkRejoinDiffDeviceTypeCommand(sl_cli_command_arg_t *arguments); +void networkExtendedPanIdCommand(sl_cli_command_arg_t *arguments); +void networkCheckPjoinCommand(sl_cli_command_arg_t *arguments); +void networkPermitJoinCommand(sl_cli_command_arg_t *arguments); +void findJoinableNetworkCommand(sl_cli_command_arg_t *arguments); +void findUnusedPanIdCommand(sl_cli_command_arg_t *arguments); +void networkChangeChannelCommand(sl_cli_command_arg_t *arguments); +void networkSetCommand(sl_cli_command_arg_t *arguments); +void networkInitCommand(sl_cli_command_arg_t *arguments); +void networkIdCommand(sl_cli_command_arg_t *arguments); +void changeKeepAliveModeCommand(sl_cli_command_arg_t *arguments); +void networkChangeChildTimeoutOptionMaskCommand(sl_cli_command_arg_t *arguments); +void networkMultiPhyStartCommand(sl_cli_command_arg_t *arguments); +void networkMultiPhyStopCommand(sl_cli_command_arg_t *arguments); +void keysPrintCommand(sl_cli_command_arg_t *arguments); +void keysDeleteCommand(sl_cli_command_arg_t *arguments); +void keysClearCommand(sl_cli_command_arg_t *arguments); +void optionBindingTablePrintCommand(sl_cli_command_arg_t *arguments); +void optionBindingTableClearCommand(sl_cli_command_arg_t *arguments); +void optionBindingTableSetCommand(sl_cli_command_arg_t *arguments); +void optionPrintRxCommand(sl_cli_command_arg_t *arguments); +void optionPrintRxCommand(sl_cli_command_arg_t *arguments); +void optionRegisterCommand(sl_cli_command_arg_t *arguments); +void optionDiscoveryTargetCommand(sl_cli_command_arg_t *arguments); +void optionDiscoverCommand(sl_cli_command_arg_t *arguments); +void optionEndDeviceBindCommand(sl_cli_command_arg_t *arguments); +void optionApsRetryCommand(sl_cli_command_arg_t *arguments); +void optionApsRetryCommand(sl_cli_command_arg_t *arguments); +void optionApsRetryCommand(sl_cli_command_arg_t *arguments); +void optionApsSecurityCommand(sl_cli_command_arg_t *arguments); +void optionApsSecurityCommand(sl_cli_command_arg_t *arguments); +void optionSecurityAllowTrustCenterRejoinUsingWellKnownKey(sl_cli_command_arg_t *arguments); +void optionSecurityAllowTrustCenterRejoinUsingWellKnownKeyTimeout(sl_cli_command_arg_t *arguments); +void optionSecuritySetKeyRequestPolicy(sl_cli_command_arg_t *arguments); +void changeKeyCommand(sl_cli_command_arg_t *arguments); +void changeKeyCommand(sl_cli_command_arg_t *arguments); +void optionLinkCommand(sl_cli_command_arg_t *arguments); +void optionInstallCodeCommand(sl_cli_command_arg_t *arguments); +void zdoRouteRequestCommand(sl_cli_command_arg_t *arguments); +void zdoPowerDescriptorRequestCommand(sl_cli_command_arg_t *arguments); +void zdoMgmtLqiCommand(sl_cli_command_arg_t *arguments); +void zdoMgmtBindCommand(sl_cli_command_arg_t *arguments); +void zdoLeaveRequestCommand(sl_cli_command_arg_t *arguments); +void zdoUnbindGroupCommand(sl_cli_command_arg_t *arguments); +void zdoUnbindUnicastCommand(sl_cli_command_arg_t *arguments); +void zdoActiveEpCommand(sl_cli_command_arg_t *arguments); +void zdoBindCommand(sl_cli_command_arg_t *arguments); +void zdoNodeCommand(sl_cli_command_arg_t *arguments); +void zdoMatchCommand(sl_cli_command_arg_t *arguments); +void zdoSimpleCommand(sl_cli_command_arg_t *arguments); +void zdoIeeeAddressRequestCommand(sl_cli_command_arg_t *arguments); +void zdoNwkAddressRequestCommand(sl_cli_command_arg_t *arguments); +void zdoNetworkUpdateScanCommand(sl_cli_command_arg_t *arguments); +void zdoNetworkUpdateSetCommand(sl_cli_command_arg_t *arguments); +void zdoNetworkUpdateScanCommand(sl_cli_command_arg_t *arguments); +void zdoNetworkUpdateChannelCommand(sl_cli_command_arg_t *arguments); +void zdoNetworkUpdateChannelCommand(sl_cli_command_arg_t *arguments); +void zdoAddClusterCommand(sl_cli_command_arg_t *arguments); +void zdoClearClusterCommand(sl_cli_command_arg_t *arguments); +void zdoAddClusterCommand(sl_cli_command_arg_t *arguments); +void zdoClearClusterCommand(sl_cli_command_arg_t *arguments); +void emberAfPrintAttributeTable(sl_cli_command_arg_t *arguments); +void printTimeCommand(sl_cli_command_arg_t *arguments); + +// Command structs. Names are in the format : cli_cmd_{command group name}_{command name} +// In order to support hyphen in command and group name, every occurence of it while +// building struct names will be replaced by "_hyphen_" +static const sl_cli_command_info_t cli_cmd__info = \ + SL_CLI_COMMAND(emAfCliInfoCommand, + "Prints information about the network state, clusters, and endpoints.", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd__libs = \ + SL_CLI_COMMAND(printAllLibraryStatus, + "Lists which optional libraries of the stack are implemented on this device.", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd__bsend = \ + SL_CLI_COMMAND(emAfCliBsendCommand, + "Sends a message.", + "Source endpoint" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd__send = \ + SL_CLI_COMMAND(sli_zigbee_cli_send_command, + "Sends a message.", + "Destination" SL_CLI_UNIT_SEPARATOR "Source endpoint" SL_CLI_UNIT_SEPARATOR "Destination endpoint" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_UINT8, SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd__read = \ + SL_CLI_COMMAND(sli_zigbee_zcl_read_cli_command, + "Reads a message.", + "Endpoint" SL_CLI_UNIT_SEPARATOR "Cluster ID" SL_CLI_UNIT_SEPARATOR "Attribute ID" SL_CLI_UNIT_SEPARATOR "1 if server direction, 0 if client direction" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_UINT16, SL_CLI_ARG_UINT16, SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd__write = \ + SL_CLI_COMMAND(sli_zigbee_zcl_write_cli_command, + "Writes a message.", + "Endpoint" SL_CLI_UNIT_SEPARATOR "Cluster ID" SL_CLI_UNIT_SEPARATOR "Attribute ID" SL_CLI_UNIT_SEPARATOR "Mask" SL_CLI_UNIT_SEPARATOR "Data type" SL_CLI_UNIT_SEPARATOR "Data byte" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_UINT16, SL_CLI_ARG_UINT16, SL_CLI_ARG_UINT8, SL_CLI_ARG_UINT8, SL_CLI_ARG_HEX, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd__reset = \ + SL_CLI_COMMAND(resetCommand, + "Resets the node.", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd__raw = \ + SL_CLI_COMMAND(emAfCliRawCommand, + "Creates a message by specifying the raw bytes. Use the send command to send the message once it has been created. Ex: raw 0x000F {00 0A 00 11 22 33 44 55} sends a message to cluster 15 (0x000F) of length 8 which includes the ZCL header.", + "ClusterId" SL_CLI_UNIT_SEPARATOR "Data" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_HEX, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd__send_multicast = \ + SL_CLI_COMMAND(sli_zigbee_cli_send_command, + "Sends a pre-buffered multicast message to a given group ID from a given endpoint.", + "groupId" SL_CLI_UNIT_SEPARATOR "src-endpoint" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd__send_hyphen_using_hyphen_multicast_hyphen_binding = \ + SL_CLI_COMMAND(emAfCliSendUsingMulticastBindingCommand, + "When sending using a binding, specifies whether a multicast binding should be used.", + "useMulticastBinding" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd__timesync = \ + SL_CLI_COMMAND(emAfCliTimesyncCommand, + "Sends a read attr for the time of the device specified. It sets a flag so when it gets the response it writes the time to its own time attr.", + "Id" SL_CLI_UNIT_SEPARATOR "srcEndpoint" SL_CLI_UNIT_SEPARATOR "destEndpoint" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_UINT8, SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd__config_hyphen_cca_hyphen_mode = \ + SL_CLI_COMMAND(sli_zigbee_cli_config_cca_mode_command, + "Set the configured 802.15.4 CCA mode in the radio. See documentation regarding RAIL_IEEE802154_CcaMode_t.", + "A RAIL_IEEE802154_CcaMode_t value" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd__version = \ + SL_CLI_COMMAND(sli_zigbee_cli_version_command, + "Shows the version of the software.", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_endpoints_print = \ + SL_CLI_COMMAND(endpointPrint, + "Print status of endpoints.", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_endpoints_enable = \ + SL_CLI_COMMAND(enableDisableEndpoint, + "Enables the endpoint for ZCL messages.", + "Endpoint index" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_endpoints_disable = \ + SL_CLI_COMMAND(enableDisableEndpoint, + "Disable the endpoint for ZCL messages.", + "Endpoint index" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd__events = \ + SL_CLI_COMMAND(printEvents, + "Print active events.", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_mfg_hyphen_token_get = \ + SL_CLI_COMMAND(getSetMfgToken, + "Print MFG token.", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_mfg_hyphen_token_set = \ + SL_CLI_COMMAND(getSetMfgToken, + "Set MFG token, CANNOT BE UNSET BY CLI.", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_enable_type_stack = \ + SL_CLI_COMMAND(sli_zigbee_debug_print_enable_stack_type_command, + "Enable/disable debug `stack` print type.", + "Enable/disable" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_enable_type_core = \ + SL_CLI_COMMAND(sli_zigbee_debug_print_enable_core_type_command, + "Enable/disable debug `core` print type.", + "Enable/disable" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_enable_type_app = \ + SL_CLI_COMMAND(sli_zigbee_debug_print_enable_app_type_command, + "Enable/disable debug `app` print type.", + "Enable/disable" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_enable_type_zcl = \ + SL_CLI_COMMAND(sli_zigbee_debug_print_enable_zcl_type_command, + "Enable/disable debug `zcl` print type.", + "Enable/disable" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_enable_type_legacy_af_debug = \ + SL_CLI_COMMAND(sli_zigbee_debug_print_enable_legacy_af_debug_type_command, + "Enable/disable debug `legacy app framework debug` print type.", + "Enable/disable" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_gateway_time_hyphen_sync_hyphen_local = \ + SL_CLI_COMMAND(emberAfPluginGatewaySupportTimeSyncLocal, + "", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_network_form = \ + SL_CLI_COMMAND(networkFormCommand, + "Forms a network on a given channel, with a given TX Power and PAN ID.", + "The channel on which to form the network" SL_CLI_UNIT_SEPARATOR "One-byte signed value indicating the TX Power that the radio should be set to" SL_CLI_UNIT_SEPARATOR "The PAN ID on which to form the network" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_INT8, SL_CLI_ARG_UINT16, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_network_join = \ + SL_CLI_COMMAND(networkJoinCommand, + "Joins a network on a given channel, with a given TX Power and PAN ID.", + "The channel on which to join the network" SL_CLI_UNIT_SEPARATOR "One-byte signed value indicating the TX Power that the radio should be set to" SL_CLI_UNIT_SEPARATOR "The PAN ID on which to join the network" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_INT8, SL_CLI_ARG_UINT16, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_network_pjoin = \ + SL_CLI_COMMAND(networkPermitJoinCommand, + "Turns permit joining on for the amount of time indicated.", + "A single byte indicating how long the device should have permit joining turn on for. A value of 0xff turns permit join indefinitely." SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_network_leave = \ + SL_CLI_COMMAND(networkLeaveCommand, + "Leaves a network.", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_network_rejoin = \ + SL_CLI_COMMAND(networkRejoinCommand, + "ReJoins a network.", + "Boolean network key availability" SL_CLI_UNIT_SEPARATOR "Channel mask" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_INT32, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_network_rejoin_hyphen_diff_hyphen_device_hyphen_type = \ + SL_CLI_COMMAND(networkRejoinDiffDeviceTypeCommand, + "Rejoins an existing network in a secure or insecure manner with a different device type.", + "Boolean network key availability" SL_CLI_UNIT_SEPARATOR "Channel mask" SL_CLI_UNIT_SEPARATOR "An enumeration indicating the device type to rejoin as.The stack only accepts EMBER_END_DEVICE and EMBER_SLEEPY_END_DEVICE." SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_INT32, SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_network_extpanid = \ + SL_CLI_COMMAND(networkExtendedPanIdCommand, + "Writes the extended pan ID for the device.", + "extpanid" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_HEX, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_network_isopen = \ + SL_CLI_COMMAND(networkCheckPjoinCommand, + "Checks network pjoin status.", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_network_broad_hyphen_pjoin = \ + SL_CLI_COMMAND(networkPermitJoinCommand, + "Permits joining on the network for a given number of seconds AND broadcasts a ZDO Mgmt Permit Joining request to all routers.", + "A single byte indicating how long the device should have permit joining turned on for. A value of 0xff turns on permit join indefinitely." SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_find_joinable = \ + SL_CLI_COMMAND(findJoinableNetworkCommand, + "findJoinableNetwork", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_find_unused = \ + SL_CLI_COMMAND(findUnusedPanIdCommand, + "findUnusedPanId", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_network_change_hyphen_channel = \ + SL_CLI_COMMAND(networkChangeChannelCommand, + "Attempts to change device over to a different channel given in the channel argument.", + "The channel to change to" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_network_set = \ + SL_CLI_COMMAND(networkSetCommand, + "Sets the network index used by all future CLI commands. Before executing a CLI command, the framework switches to this network. After the command finishes executing, the framework switches back to the previous network. The CLI uses the same network index until the device resets or it is changed through this command.", + "index" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_network_init = \ + SL_CLI_COMMAND(networkInitCommand, + "Initializes a network; this is a test command used for tc-swap-out testing.", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_network_id = \ + SL_CLI_COMMAND(networkIdCommand, + "Prints the current Node ID, EUI64, and Pan ID.", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_network_change_hyphen_keep_hyphen_alive_hyphen_mode = \ + SL_CLI_COMMAND(changeKeepAliveModeCommand, + "Switches between different keep alive modes supported by a router.", + "Keep alive mode" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_network_timeout_hyphen_option_hyphen_mask = \ + SL_CLI_COMMAND(networkChangeChildTimeoutOptionMaskCommand, + "Attempts to change the child timeout option mask to filter out undesirable values (e.g. no more than 3 days).", + "timeout option mask" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_network_multi_hyphen_phy_hyphen_start = \ + SL_CLI_COMMAND(networkMultiPhyStartCommand, + "Used to start multi-PHY interface other than native and form the network. The stack uses same PanId as native radio network.", + "page" SL_CLI_UNIT_SEPARATOR "channel" SL_CLI_UNIT_SEPARATOR "power" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_UINT8, SL_CLI_ARG_INT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_network_multi_hyphen_phy_hyphen_stop = \ + SL_CLI_COMMAND(networkMultiPhyStopCommand, + "Terminates the multi-PHY interface", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_keys_print = \ + SL_CLI_COMMAND(keysPrintCommand, + "Prints all security keys.", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_keys_delete = \ + SL_CLI_COMMAND(keysDeleteCommand, + "Delete the specified link key index.", + "index" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_keys_clear = \ + SL_CLI_COMMAND(keysClearCommand, + "Clears all security keys.", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_binding_hyphen_table_print = \ + SL_CLI_COMMAND(optionBindingTablePrintCommand, + "Prints the binding table to the command line.", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_binding_hyphen_table_clear = \ + SL_CLI_COMMAND(optionBindingTableClearCommand, + "Clears the binding table.", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_binding_hyphen_table_set = \ + SL_CLI_COMMAND(optionBindingTableSetCommand, + "Sets the binding table", + "index" SL_CLI_UNIT_SEPARATOR "cluster" SL_CLI_UNIT_SEPARATOR "localEp" SL_CLI_UNIT_SEPARATOR "remoteEp" SL_CLI_UNIT_SEPARATOR "eui64" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_UINT16, SL_CLI_ARG_UINT8, SL_CLI_ARG_UINT8, SL_CLI_ARG_HEX, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_print_hyphen_rx_hyphen_msgs_enable = \ + SL_CLI_COMMAND(optionPrintRxCommand, + "Enables printing of Rx messages.", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_print_hyphen_rx_hyphen_msgs_disable = \ + SL_CLI_COMMAND(optionPrintRxCommand, + "Disables printing of Rx messages.", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_option_register = \ + SL_CLI_COMMAND(optionRegisterCommand, + "", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_option_target = \ + SL_CLI_COMMAND(optionDiscoveryTargetCommand, + "", + "targetId" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_option_disc = \ + SL_CLI_COMMAND(optionDiscoverCommand, + "", + "profileId" SL_CLI_UNIT_SEPARATOR "clusterId" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_UINT16, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_option_edb = \ + SL_CLI_COMMAND(optionEndDeviceBindCommand, + "", + "endpointId" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_apsretry_on = \ + SL_CLI_COMMAND(optionApsRetryCommand, + "", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_apsretry_off = \ + SL_CLI_COMMAND(optionApsRetryCommand, + "", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_apsretry_default = \ + SL_CLI_COMMAND(optionApsRetryCommand, + "", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_aps_on = \ + SL_CLI_COMMAND(optionApsSecurityCommand, + "", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_aps_off = \ + SL_CLI_COMMAND(optionApsSecurityCommand, + "", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_security_set_hyphen_allow_hyphen_trust_hyphen_center_hyphen_rejoin_hyphen_using_hyphen_well_hyphen_known_hyphen_key = \ + SL_CLI_COMMAND(optionSecurityAllowTrustCenterRejoinUsingWellKnownKey, + "", + "Bool: allow trust center rejoin using well-known key" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_security_set_hyphen_allow_hyphen_trust_hyphen_center_hyphen_rejoin_hyphen_using_hyphen_well_hyphen_known_hyphen_key_hyphen_timeout = \ + SL_CLI_COMMAND(optionSecurityAllowTrustCenterRejoinUsingWellKnownKeyTimeout, + "", + "timeout" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_security_set_hyphen_key_hyphen_request_hyphen_policy = \ + SL_CLI_COMMAND(optionSecuritySetKeyRequestPolicy, + "", + "TC link key request policy" SL_CLI_UNIT_SEPARATOR "App link key request policy" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_changekey_link = \ + SL_CLI_COMMAND(changeKeyCommand, + "", + "key" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_HEX, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_changekey_network = \ + SL_CLI_COMMAND(changeKeyCommand, + "", + "key" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_HEX, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_option_link = \ + SL_CLI_COMMAND(optionLinkCommand, + "", + "index" SL_CLI_UNIT_SEPARATOR "eui64" SL_CLI_UNIT_SEPARATOR "key" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_HEX, SL_CLI_ARG_HEX, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_option_install_hyphen_code = \ + SL_CLI_COMMAND(optionInstallCodeCommand, + "", + "index" SL_CLI_UNIT_SEPARATOR "eui64" SL_CLI_UNIT_SEPARATOR "installCode" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_HEX, SL_CLI_ARG_HEX, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_zdo_route = \ + SL_CLI_COMMAND(zdoRouteRequestCommand, + "Sends a ZDO route request command to the target.", + "target" SL_CLI_UNIT_SEPARATOR "index" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_zdo_power = \ + SL_CLI_COMMAND(zdoPowerDescriptorRequestCommand, + "Sends a ZDO Power Descriptor Request to the target device.", + "target" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_zdo_mgmt_hyphen_lqi = \ + SL_CLI_COMMAND(zdoMgmtLqiCommand, + "Sends a ZDO MGMT-LQI (LQI Table) Request to the target device.", + "target" SL_CLI_UNIT_SEPARATOR "startIndex" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_zdo_mgmt_hyphen_bind = \ + SL_CLI_COMMAND(zdoMgmtBindCommand, + "Sends a ZDO MGMT-Bind (Binding Table) Request to the target device.", + "target" SL_CLI_UNIT_SEPARATOR "startIndex" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_zdo_leave = \ + SL_CLI_COMMAND(zdoLeaveRequestCommand, + "Sends a ZDO Management Leave command to the target device.", + "target" SL_CLI_UNIT_SEPARATOR "removeChildren" SL_CLI_UNIT_SEPARATOR "rejoin" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_UINT8, SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_unbind_group = \ + SL_CLI_COMMAND(zdoUnbindGroupCommand, + "Sends an unbind request for a multicast binding to the target device.", + "target" SL_CLI_UNIT_SEPARATOR "source eui64" SL_CLI_UNIT_SEPARATOR "source endpoint" SL_CLI_UNIT_SEPARATOR "clusterID" SL_CLI_UNIT_SEPARATOR "groupAddress" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_HEX, SL_CLI_ARG_UINT8, SL_CLI_ARG_UINT16, SL_CLI_ARG_UINT16, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_unbind_unicast = \ + SL_CLI_COMMAND(zdoUnbindUnicastCommand, + "Sends an unbind request for a unicast binding to the target device.", + "target" SL_CLI_UNIT_SEPARATOR "source eui64" SL_CLI_UNIT_SEPARATOR "source endpoint" SL_CLI_UNIT_SEPARATOR "clusterID" SL_CLI_UNIT_SEPARATOR "destinationEUI64" SL_CLI_UNIT_SEPARATOR "destination endpoint" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_HEX, SL_CLI_ARG_UINT8, SL_CLI_ARG_UINT16, SL_CLI_ARG_HEX, SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_zdo_active = \ + SL_CLI_COMMAND(zdoActiveEpCommand, + "Sends an active endpoint request to the device with the given short ID.", + "nodeId" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_zdo_bind = \ + SL_CLI_COMMAND(zdoBindCommand, + "Sends a ZDO Bind command to a device specified in the command arguments.", + "Destination" SL_CLI_UNIT_SEPARATOR "Source endpoint" SL_CLI_UNIT_SEPARATOR "Destination endpoint" SL_CLI_UNIT_SEPARATOR "clusterID" SL_CLI_UNIT_SEPARATOR "remoteEUI64" SL_CLI_UNIT_SEPARATOR "destEUI64" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_UINT8, SL_CLI_ARG_UINT8, SL_CLI_ARG_UINT16, SL_CLI_ARG_HEX, SL_CLI_ARG_HEX, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_zdo_node = \ + SL_CLI_COMMAND(zdoNodeCommand, + "Sends a node descriptor request to a given target device.", + "target" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_zdo_match = \ + SL_CLI_COMMAND(zdoMatchCommand, + "Sends a matchDescriptorsRequest to the given destination with the given profile.", + "nodeId" SL_CLI_UNIT_SEPARATOR "profile" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_UINT16, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_zdo_simple = \ + SL_CLI_COMMAND(zdoSimpleCommand, + "Sends a simple descriptor request for the short address and endpoint specified.", + "dest" SL_CLI_UNIT_SEPARATOR "targetEndpoint" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_zdo_ieee = \ + SL_CLI_COMMAND(zdoIeeeAddressRequestCommand, + "Requests an IEEE address based on a given node ID.", + "nodeId" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_zdo_nwk = \ + SL_CLI_COMMAND(zdoNwkAddressRequestCommand, + "Sends a network address request for the given IEEE address.", + "ieee" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_HEX, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_nwk_hyphen_upd_scan_hyphen_chan_hyphen_mask = \ + SL_CLI_COMMAND(zdoNetworkUpdateScanCommand, + "Performs an energy scan on given channel mask.", + "targetNodeId" SL_CLI_UNIT_SEPARATOR "scanDuration" SL_CLI_UNIT_SEPARATOR "scanCount" SL_CLI_UNIT_SEPARATOR "channelMask" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_UINT8, SL_CLI_ARG_UINT16, SL_CLI_ARG_UINT32, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_nwk_hyphen_upd_set = \ + SL_CLI_COMMAND(zdoNetworkUpdateSetCommand, + "Broadcasts the ID of the new network manager and active channels.", + "nwkMgeId" SL_CLI_UNIT_SEPARATOR "channelMask" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_UINT32, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_nwk_hyphen_upd_scan = \ + SL_CLI_COMMAND(zdoNetworkUpdateScanCommand, + "Performs an energy scan.", + "targetNodeId" SL_CLI_UNIT_SEPARATOR "scanDuration" SL_CLI_UNIT_SEPARATOR "scanCount" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_UINT8, SL_CLI_ARG_UINT16, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_nwk_hyphen_upd_chanPg = \ + SL_CLI_COMMAND(zdoNetworkUpdateChannelCommand, + "Sends an update channel page req. The stack sends nwk enhanced update req for non-zero page.", + "channel" SL_CLI_UNIT_SEPARATOR "page" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_nwk_hyphen_upd_chan = \ + SL_CLI_COMMAND(zdoNetworkUpdateChannelCommand, + "Sends an update channel request.", + "channel" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT8, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_out_hyphen_cl_hyphen_list_add = \ + SL_CLI_COMMAND(zdoAddClusterCommand, + "Adds clusters to the known client (out) clusters on this device.", + "clusterId" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_out_hyphen_cl_hyphen_list_clear = \ + SL_CLI_COMMAND(zdoClearClusterCommand, + "Clears the ZDO list of client (out) clusters.", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_in_hyphen_cl_hyphen_list_add = \ + SL_CLI_COMMAND(zdoAddClusterCommand, + "Adds clusters to the known client (in) clusters on this device.", + "clusterId" SL_CLI_UNIT_SEPARATOR, + {SL_CLI_ARG_UINT16, SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_in_hyphen_cl_hyphen_list_clear = \ + SL_CLI_COMMAND(zdoClearClusterCommand, + "Clears the ZDO list of client (in) clusters.", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_print_attr = \ + SL_CLI_COMMAND(emberAfPrintAttributeTable, + "Prints attribute.", + "", + {SL_CLI_ARG_END, }); + +static const sl_cli_command_info_t cli_cmd_print_time = \ + SL_CLI_COMMAND(printTimeCommand, + "Prints time.", + "", + {SL_CLI_ARG_END, }); + + +// Create group command tables and structs if cli_groups given +// in template. Group name is suffixed with _group_table for tables +// and group commands are cli_cmd_grp_( group name ) +static const sl_cli_command_entry_t endpoints_group_table[] = { + { "print", &cli_cmd_endpoints_print, false }, + { "enable", &cli_cmd_endpoints_enable, false }, + { "disable", &cli_cmd_endpoints_disable, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_endpoints = \ + SL_CLI_COMMAND_GROUP(endpoints_group_table, "endpoint related commands."); + +static const sl_cli_command_entry_t mfg_hyphen_token_group_table[] = { + { "get", &cli_cmd_mfg_hyphen_token_get, false }, + { "set", &cli_cmd_mfg_hyphen_token_set, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_mfg_hyphen_token = \ + SL_CLI_COMMAND_GROUP(mfg_hyphen_token_group_table, "Get/set MFG token."); + +static const sl_cli_command_entry_t aps_group_table[] = { + { "on", &cli_cmd_aps_on, false }, + { "off", &cli_cmd_aps_off, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_aps = \ + SL_CLI_COMMAND_GROUP(aps_group_table, "Security aps related commands."); + +static const sl_cli_command_entry_t security_group_table[] = { + { "set-allow-trust-center-rejoin-using-well-known-key", &cli_cmd_security_set_hyphen_allow_hyphen_trust_hyphen_center_hyphen_rejoin_hyphen_using_hyphen_well_hyphen_known_hyphen_key, false }, + { "set-allow-trust-center-rejoin-using-well-known-key-timeout", &cli_cmd_security_set_hyphen_allow_hyphen_trust_hyphen_center_hyphen_rejoin_hyphen_using_hyphen_well_hyphen_known_hyphen_key_hyphen_timeout, false }, + { "set-key-request-policy", &cli_cmd_security_set_hyphen_key_hyphen_request_hyphen_policy, false }, + { "mfg-token", &cli_cmd_grp_mfg_hyphen_token, false }, + { "aps", &cli_cmd_grp_aps, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_security = \ + SL_CLI_COMMAND_GROUP(security_group_table, "security related commands"); + +static const sl_cli_command_entry_t enable_type_group_table[] = { + { "stack", &cli_cmd_enable_type_stack, false }, + { "core", &cli_cmd_enable_type_core, false }, + { "app", &cli_cmd_enable_type_app, false }, + { "zcl", &cli_cmd_enable_type_zcl, false }, + { "legacy_af_debug", &cli_cmd_enable_type_legacy_af_debug, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_enable_type = \ + SL_CLI_COMMAND_GROUP(enable_type_group_table, ""); + +static const sl_cli_command_entry_t zigbee_print_group_table[] = { + { "enable_type", &cli_cmd_grp_enable_type, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_zigbee_print = \ + SL_CLI_COMMAND_GROUP(zigbee_print_group_table, ""); + +static const sl_cli_command_entry_t gateway_group_table[] = { + { "time-sync-local", &cli_cmd_gateway_time_hyphen_sync_hyphen_local, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_gateway = \ + SL_CLI_COMMAND_GROUP(gateway_group_table, "gateway related commands"); + +static const sl_cli_command_entry_t plugin_group_table[] = { + { "gateway", &cli_cmd_grp_gateway, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_plugin = \ + SL_CLI_COMMAND_GROUP(plugin_group_table, ""); + +static const sl_cli_command_entry_t find_group_table[] = { + { "joinable", &cli_cmd_find_joinable, false }, + { "unused", &cli_cmd_find_unused, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_find = \ + SL_CLI_COMMAND_GROUP(find_group_table, "network find commands."); + +static const sl_cli_command_entry_t network_group_table[] = { + { "form", &cli_cmd_network_form, false }, + { "join", &cli_cmd_network_join, false }, + { "pjoin", &cli_cmd_network_pjoin, false }, + { "leave", &cli_cmd_network_leave, false }, + { "rejoin", &cli_cmd_network_rejoin, false }, + { "rejoin-diff-device-type", &cli_cmd_network_rejoin_hyphen_diff_hyphen_device_hyphen_type, false }, + { "extpanid", &cli_cmd_network_extpanid, false }, + { "isopen", &cli_cmd_network_isopen, false }, + { "broad-pjoin", &cli_cmd_network_broad_hyphen_pjoin, false }, + { "change-channel", &cli_cmd_network_change_hyphen_channel, false }, + { "set", &cli_cmd_network_set, false }, + { "init", &cli_cmd_network_init, false }, + { "id", &cli_cmd_network_id, false }, + { "change-keep-alive-mode", &cli_cmd_network_change_hyphen_keep_hyphen_alive_hyphen_mode, false }, + { "timeout-option-mask", &cli_cmd_network_timeout_hyphen_option_hyphen_mask, false }, + { "multi-phy-start", &cli_cmd_network_multi_hyphen_phy_hyphen_start, false }, + { "multi-phy-stop", &cli_cmd_network_multi_hyphen_phy_hyphen_stop, false }, + { "find", &cli_cmd_grp_find, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_network = \ + SL_CLI_COMMAND_GROUP(network_group_table, "Network related commands."); + +static const sl_cli_command_entry_t keys_group_table[] = { + { "print", &cli_cmd_keys_print, false }, + { "delete", &cli_cmd_keys_delete, false }, + { "clear", &cli_cmd_keys_clear, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_keys = \ + SL_CLI_COMMAND_GROUP(keys_group_table, "Security keys related commands."); + +static const sl_cli_command_entry_t binding_hyphen_table_group_table[] = { + { "print", &cli_cmd_binding_hyphen_table_print, false }, + { "clear", &cli_cmd_binding_hyphen_table_clear, false }, + { "set", &cli_cmd_binding_hyphen_table_set, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_binding_hyphen_table = \ + SL_CLI_COMMAND_GROUP(binding_hyphen_table_group_table, "Binding table related commands."); + +static const sl_cli_command_entry_t print_hyphen_rx_hyphen_msgs_group_table[] = { + { "enable", &cli_cmd_print_hyphen_rx_hyphen_msgs_enable, false }, + { "disable", &cli_cmd_print_hyphen_rx_hyphen_msgs_disable, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_print_hyphen_rx_hyphen_msgs = \ + SL_CLI_COMMAND_GROUP(print_hyphen_rx_hyphen_msgs_group_table, "Enables/Disables printing of Rx messages."); + +static const sl_cli_command_entry_t apsretry_group_table[] = { + { "on", &cli_cmd_apsretry_on, false }, + { "off", &cli_cmd_apsretry_off, false }, + { "default", &cli_cmd_apsretry_default, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_apsretry = \ + SL_CLI_COMMAND_GROUP(apsretry_group_table, "APS retry flag force commands"); + +static const sl_cli_command_entry_t option_group_table[] = { + { "register", &cli_cmd_option_register, false }, + { "target", &cli_cmd_option_target, false }, + { "disc", &cli_cmd_option_disc, false }, + { "edb", &cli_cmd_option_edb, false }, + { "link", &cli_cmd_option_link, false }, + { "install-code", &cli_cmd_option_install_hyphen_code, false }, + { "binding-table", &cli_cmd_grp_binding_hyphen_table, false }, + { "print-rx-msgs", &cli_cmd_grp_print_hyphen_rx_hyphen_msgs, false }, + { "apsretry", &cli_cmd_grp_apsretry, false }, + { "security", &cli_cmd_grp_security, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_option = \ + SL_CLI_COMMAND_GROUP(option_group_table, "Option related commands."); + +static const sl_cli_command_entry_t changekey_group_table[] = { + { "link", &cli_cmd_changekey_link, false }, + { "network", &cli_cmd_changekey_network, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_changekey = \ + SL_CLI_COMMAND_GROUP(changekey_group_table, "changekey related commands."); + +static const sl_cli_command_entry_t unbind_group_table[] = { + { "group", &cli_cmd_unbind_group, false }, + { "unicast", &cli_cmd_unbind_unicast, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_unbind = \ + SL_CLI_COMMAND_GROUP(unbind_group_table, "Zdo unbind related commands."); + +static const sl_cli_command_entry_t nwk_hyphen_upd_group_table[] = { + { "scan-chan-mask", &cli_cmd_nwk_hyphen_upd_scan_hyphen_chan_hyphen_mask, false }, + { "set", &cli_cmd_nwk_hyphen_upd_set, false }, + { "scan", &cli_cmd_nwk_hyphen_upd_scan, false }, + { "chanPg", &cli_cmd_nwk_hyphen_upd_chanPg, false }, + { "chan", &cli_cmd_nwk_hyphen_upd_chan, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_nwk_hyphen_upd = \ + SL_CLI_COMMAND_GROUP(nwk_hyphen_upd_group_table, "Zdo nwk-upd related commands."); + +static const sl_cli_command_entry_t out_hyphen_cl_hyphen_list_group_table[] = { + { "add", &cli_cmd_out_hyphen_cl_hyphen_list_add, false }, + { "clear", &cli_cmd_out_hyphen_cl_hyphen_list_clear, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_out_hyphen_cl_hyphen_list = \ + SL_CLI_COMMAND_GROUP(out_hyphen_cl_hyphen_list_group_table, "Zdo out-cl-list related commands."); + +static const sl_cli_command_entry_t in_hyphen_cl_hyphen_list_group_table[] = { + { "add", &cli_cmd_in_hyphen_cl_hyphen_list_add, false }, + { "clear", &cli_cmd_in_hyphen_cl_hyphen_list_clear, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_in_hyphen_cl_hyphen_list = \ + SL_CLI_COMMAND_GROUP(in_hyphen_cl_hyphen_list_group_table, "Zdo in-cl-list related commands."); + +static const sl_cli_command_entry_t zdo_group_table[] = { + { "route", &cli_cmd_zdo_route, false }, + { "power", &cli_cmd_zdo_power, false }, + { "mgmt-lqi", &cli_cmd_zdo_mgmt_hyphen_lqi, false }, + { "mgmt-bind", &cli_cmd_zdo_mgmt_hyphen_bind, false }, + { "leave", &cli_cmd_zdo_leave, false }, + { "active", &cli_cmd_zdo_active, false }, + { "bind", &cli_cmd_zdo_bind, false }, + { "node", &cli_cmd_zdo_node, false }, + { "match", &cli_cmd_zdo_match, false }, + { "simple", &cli_cmd_zdo_simple, false }, + { "ieee", &cli_cmd_zdo_ieee, false }, + { "nwk", &cli_cmd_zdo_nwk, false }, + { "unbind", &cli_cmd_grp_unbind, false }, + { "nwk-upd", &cli_cmd_grp_nwk_hyphen_upd, false }, + { "out-cl-list", &cli_cmd_grp_out_hyphen_cl_hyphen_list, false }, + { "in-cl-list", &cli_cmd_grp_in_hyphen_cl_hyphen_list, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_zdo = \ + SL_CLI_COMMAND_GROUP(zdo_group_table, "Zdo related commands."); + +static const sl_cli_command_entry_t print_group_table[] = { + { "attr", &cli_cmd_print_attr, false }, + { "time", &cli_cmd_print_time, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_info_t cli_cmd_grp_print = \ + SL_CLI_COMMAND_GROUP(print_group_table, "print related commands."); + +// Create root command table +const sl_cli_command_entry_t sl_cli_default_command_table[] = { + { "info", &cli_cmd__info, false }, + { "libs", &cli_cmd__libs, false }, + { "bsend", &cli_cmd__bsend, false }, + { "send", &cli_cmd__send, false }, + { "read", &cli_cmd__read, false }, + { "write", &cli_cmd__write, false }, + { "reset", &cli_cmd__reset, false }, + { "raw", &cli_cmd__raw, false }, + { "send_multicast", &cli_cmd__send_multicast, false }, + { "send-using-multicast-binding", &cli_cmd__send_hyphen_using_hyphen_multicast_hyphen_binding, false }, + { "timesync", &cli_cmd__timesync, false }, + { "config-cca-mode", &cli_cmd__config_hyphen_cca_hyphen_mode, false }, + { "version", &cli_cmd__version, false }, + { "events", &cli_cmd__events, false }, + { "endpoints", &cli_cmd_grp_endpoints, false }, + { "security", &cli_cmd_grp_security, false }, + { "zigbee_print", &cli_cmd_grp_zigbee_print, false }, + { "plugin", &cli_cmd_grp_plugin, false }, + { "network", &cli_cmd_grp_network, false }, + { "net", &cli_cmd_grp_network, true }, + { "keys", &cli_cmd_grp_keys, false }, + { "option", &cli_cmd_grp_option, false }, + { "opt", &cli_cmd_grp_option, true }, + { "plugin", &cli_cmd_grp_plugin, false }, + { "plug", &cli_cmd_grp_plugin, true }, + { "changekey", &cli_cmd_grp_changekey, false }, + { "changek", &cli_cmd_grp_changekey, true }, + { "zdo", &cli_cmd_grp_zdo, false }, + { "print", &cli_cmd_grp_print, false }, + { NULL, NULL, false }, +}; + + +#ifdef __cplusplus +} +#endif diff --git a/silabs_examples/credentials/host/app/autogen/sl_cli_command_table.html b/silabs_examples/credentials/host/app/autogen/sl_cli_command_table.html new file mode 100644 index 00000000000000..992759bbbeb10f --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/sl_cli_command_table.html @@ -0,0 +1,2854 @@ + + + + +CLI Command Reference + + + + + + + + + +

CLI Command Reference

+ + + +
+ + + +
+
+
+ info + emAfCliInfoCommand +
+
+
Prints information about the network state, clusters, and endpoints.
+ + +
+
+ + + +
+
+
+ libs + printAllLibraryStatus +
+
+
Lists which optional libraries of the stack are implemented on this device.
+ + +
+
+ + + +
+
+
+ bsend + u8 + emAfCliBsendCommand +
+
+
Sends a message.
+ + +
+
Arguments
+
    +
  • + u8Source endpoint +
  • +
+
+ +
+
+ + + +
+
+
+ send + u16 + u8 + u8 + sli_zigbee_cli_send_command +
+
+
Sends a message.
+ + +
+
Arguments
+
    +
  • + u16Destination +
  • +
  • + u8Source endpoint +
  • +
  • + u8Destination endpoint +
  • +
+
+ +
+
+ + + +
+
+
+ read + u8 + u16 + u16 + u8 + sli_zigbee_zcl_read_cli_command +
+
+
Reads a message.
+ + +
+
Arguments
+
    +
  • + u8Endpoint +
  • +
  • + u16Cluster ID +
  • +
  • + u16Attribute ID +
  • +
  • + u81 if server direction, 0 if client direction +
  • +
+
+ +
+
+ + + +
+
+
+ write + u8 + u16 + u16 + u8 + u8 + hex + sli_zigbee_zcl_write_cli_command +
+
+
Writes a message.
+ + +
+
Arguments
+
    +
  • + u8Endpoint +
  • +
  • + u16Cluster ID +
  • +
  • + u16Attribute ID +
  • +
  • + u8Mask +
  • +
  • + u8Data type +
  • +
  • + hexData byte +
  • +
+
+ +
+
+ + + +
+
+
+ reset + resetCommand +
+
+
Resets the node.
+ + +
+
+ + + +
+
+
+ raw + u16 + hex + emAfCliRawCommand +
+
+
Creates a message by specifying the raw bytes. Use the send command to send the message once it has been created. Ex: raw 0x000F {00 0A 00 11 22 33 44 55} sends a message to cluster 15 (0x000F) of length 8 which includes the ZCL header.
+ + +
+
Arguments
+
    +
  • + u16ClusterId +
  • +
  • + hexData +
  • +
+
+ +
+
+ + + +
+
+
+ send_multicast + u16 + u8 + sli_zigbee_cli_send_command +
+
+
Sends a pre-buffered multicast message to a given group ID from a given endpoint.
+ + +
+
Arguments
+
    +
  • + u16groupId +
  • +
  • + u8src-endpoint +
  • +
+
+ +
+
+ + + +
+
+
+ send-using-multicast-binding + u8 + emAfCliSendUsingMulticastBindingCommand +
+
+
When sending using a binding, specifies whether a multicast binding should be used.
+ + +
+
Arguments
+
    +
  • + u8useMulticastBinding +
  • +
+
+ +
+
+ + + +
+
+
+ timesync + u16 + u8 + u8 + emAfCliTimesyncCommand +
+
+
Sends a read attr for the time of the device specified. It sets a flag so when it gets the response it writes the time to its own time attr.
+ + +
+
Arguments
+
    +
  • + u16Id +
  • +
  • + u8srcEndpoint +
  • +
  • + u8destEndpoint +
  • +
+
+ +
+
+ + + +
+
+
+ config-cca-mode + u8 + sli_zigbee_cli_config_cca_mode_command +
+
+
Set the configured 802.15.4 CCA mode in the radio. See documentation regarding RAIL_IEEE802154_CcaMode_t.
+ + +
+
Arguments
+
    +
  • + u8A RAIL_IEEE802154_CcaMode_t value +
  • +
+
+ +
+
+ + + +
+
+
+ version + sli_zigbee_cli_version_command +
+
+
Shows the version of the software.
+ + +
+
+ + + +
+
+
+ events + printEvents +
+
+
Print active events.
+ + +
+
+
+
+

endpoints

+
+
+ endpoint related commands. + +
+ + + +
+
+
+ endpoints print + endpointPrint +
+
+
Print status of endpoints.
+ + +
+
+ + + +
+
+
+ endpoints enable + u8 + enableDisableEndpoint +
+
+
Enables the endpoint for ZCL messages.
+ + +
+
Arguments
+
    +
  • + u8Endpoint index +
  • +
+
+ +
+
+ + + +
+
+
+ endpoints disable + u8 + enableDisableEndpoint +
+
+
Disable the endpoint for ZCL messages.
+ + +
+
Arguments
+
    +
  • + u8Endpoint index +
  • +
+
+ +
+
+
+
+
+
+
+

security

+
+
+ security related commands + +
+ + + +
+
+
+ security set-allow-trust-center-rejoin-using-well-known-key + u8 + optionSecurityAllowTrustCenterRejoinUsingWellKnownKey +
+
+
+ + +
+
Arguments
+
    +
  • + u8Bool: allow trust center rejoin using well-known key +
  • +
+
+ +
+
+ + + +
+
+
+ security set-allow-trust-center-rejoin-using-well-known-key-timeout + u16 + optionSecurityAllowTrustCenterRejoinUsingWellKnownKeyTimeout +
+
+
+ + +
+
Arguments
+
    +
  • + u16timeout +
  • +
+
+ +
+
+ + + +
+
+
+ security set-key-request-policy + u8 + u8 + optionSecuritySetKeyRequestPolicy +
+
+
+ + +
+
Arguments
+
    +
  • + u8TC link key request policy +
  • +
  • + u8App link key request policy +
  • +
+
+ +
+
+ +
+
+

security mfg-token

+
+
+ Get/set MFG token. + +
+ + + +
+
+
+ security mfg-token get + getSetMfgToken +
+
+
Print MFG token.
+ + +
+
+ + + +
+
+
+ security mfg-token set + getSetMfgToken +
+
+
Set MFG token, CANNOT BE UNSET BY CLI.
+ + +
+
+
+
+
+
+
+

aps

+
+
+ Security aps related commands. + +
+ + + +
+
+
+ aps on + optionApsSecurityCommand +
+
+
+ + +
+
+ + + +
+
+
+ aps off + optionApsSecurityCommand +
+
+
+ + +
+
+
+
+
+
+
+
+
+

zigbee_print

+
+
+ + +
+ +
+
+

zigbee_print enable_type

+
+
+ + +
+ + + +
+
+
+ zigbee_print enable_type stack + u8 + sli_zigbee_debug_print_enable_stack_type_command +
+
+
Enable/disable debug `stack` print type.
+ + +
+
Arguments
+
    +
  • + u8Enable/disable +
  • +
+
+ +
+
+ + + +
+
+
+ zigbee_print enable_type core + u8 + sli_zigbee_debug_print_enable_core_type_command +
+
+
Enable/disable debug `core` print type.
+ + +
+
Arguments
+
    +
  • + u8Enable/disable +
  • +
+
+ +
+
+ + + +
+
+
+ zigbee_print enable_type app + u8 + sli_zigbee_debug_print_enable_app_type_command +
+
+
Enable/disable debug `app` print type.
+ + +
+
Arguments
+
    +
  • + u8Enable/disable +
  • +
+
+ +
+
+ + + +
+
+
+ zigbee_print enable_type zcl + u8 + sli_zigbee_debug_print_enable_zcl_type_command +
+
+
Enable/disable debug `zcl` print type.
+ + +
+
Arguments
+
    +
  • + u8Enable/disable +
  • +
+
+ +
+
+ + + +
+
+
+ zigbee_print enable_type legacy_af_debug + u8 + sli_zigbee_debug_print_enable_legacy_af_debug_type_command +
+
+
Enable/disable debug `legacy app framework debug` print type.
+ + +
+
Arguments
+
    +
  • + u8Enable/disable +
  • +
+
+ +
+
+
+
+
+
+
+
+
+

plugin

+
+
+ + +
+ +
+
+

plugin gateway

+
+
+ gateway related commands + +
+ + + +
+
+
+ plugin gateway time-sync-local + emberAfPluginGatewaySupportTimeSyncLocal +
+
+
+ + +
+
+
+
+
+
+
+
+
+

network

+
+
+ Network related commands. + +
+ + + +
+
+
+ network form + u8 + i8 + u16 + networkFormCommand +
+
+
Forms a network on a given channel, with a given TX Power and PAN ID.
+ +
+ Alias + net form +
+ + +
+
Arguments
+
    +
  • + u8The channel on which to form the network +
  • +
  • + i8One-byte signed value indicating the TX Power that the radio should be set to +
  • +
  • + u16The PAN ID on which to form the network +
  • +
+
+ +
+
+ + + +
+
+
+ network join + u8 + i8 + u16 + networkJoinCommand +
+
+
Joins a network on a given channel, with a given TX Power and PAN ID.
+ +
+ Alias + net join +
+ + +
+
Arguments
+
    +
  • + u8The channel on which to join the network +
  • +
  • + i8One-byte signed value indicating the TX Power that the radio should be set to +
  • +
  • + u16The PAN ID on which to join the network +
  • +
+
+ +
+
+ + + +
+
+
+ network pjoin + u8 + networkPermitJoinCommand +
+
+
Turns permit joining on for the amount of time indicated.
+ +
+ Alias + net pjoin +
+ + +
+
Arguments
+
    +
  • + u8A single byte indicating how long the device should have permit joining turn on for. A value of 0xff turns permit join indefinitely. +
  • +
+
+ +
+
+ + + +
+
+
+ network leave + networkLeaveCommand +
+
+
Leaves a network.
+ +
+ Alias + net leave +
+ + +
+
+ + + +
+
+
+ network rejoin + u8 + i32 + networkRejoinCommand +
+
+
ReJoins a network.
+ +
+ Alias + net rejoin +
+ + +
+
Arguments
+
    +
  • + u8Boolean network key availability +
  • +
  • + i32Channel mask +
  • +
+
+ +
+
+ + + +
+
+
+ network rejoin-diff-device-type + u8 + i32 + u8 + networkRejoinDiffDeviceTypeCommand +
+
+
Rejoins an existing network in a secure or insecure manner with a different device type.
+ +
+ Alias + net rejoin-diff-device-type +
+ + +
+
Arguments
+
    +
  • + u8Boolean network key availability +
  • +
  • + i32Channel mask +
  • +
  • + u8An enumeration indicating the device type to rejoin as.The stack only accepts EMBER_END_DEVICE and EMBER_SLEEPY_END_DEVICE. +
  • +
+
+ +
+
+ + + +
+
+
+ network extpanid + hex + networkExtendedPanIdCommand +
+
+
Writes the extended pan ID for the device.
+ +
+ Alias + net extpanid +
+ + +
+
Arguments
+
    +
  • + hexextpanid +
  • +
+
+ +
+
+ + + +
+
+
+ network isopen + networkCheckPjoinCommand +
+
+
Checks network pjoin status.
+ +
+ Alias + net isopen +
+ + +
+
+ + + +
+
+
+ network broad-pjoin + u8 + networkPermitJoinCommand +
+
+
Permits joining on the network for a given number of seconds AND broadcasts a ZDO Mgmt Permit Joining request to all routers.
+ +
+ Alias + net broad-pjoin +
+ + +
+
Arguments
+
    +
  • + u8A single byte indicating how long the device should have permit joining turned on for. A value of 0xff turns on permit join indefinitely. +
  • +
+
+ +
+
+ + + +
+
+
+ network change-channel + u8 + networkChangeChannelCommand +
+
+
Attempts to change device over to a different channel given in the channel argument.
+ +
+ Alias + net change-channel +
+ + +
+
Arguments
+
    +
  • + u8The channel to change to +
  • +
+
+ +
+
+ + + +
+
+
+ network set + u8 + networkSetCommand +
+
+
Sets the network index used by all future CLI commands. Before executing a CLI command, the framework switches to this network. After the command finishes executing, the framework switches back to the previous network. The CLI uses the same network index until the device resets or it is changed through this command.
+ +
+ Alias + net set +
+ + +
+
Arguments
+
    +
  • + u8index +
  • +
+
+ +
+
+ + + +
+
+
+ network init + networkInitCommand +
+
+
Initializes a network; this is a test command used for tc-swap-out testing.
+ +
+ Alias + net init +
+ + +
+
+ + + +
+
+
+ network id + networkIdCommand +
+
+
Prints the current Node ID, EUI64, and Pan ID.
+ +
+ Alias + net id +
+ + +
+
+ + + +
+
+
+ network change-keep-alive-mode + u8 + changeKeepAliveModeCommand +
+
+
Switches between different keep alive modes supported by a router.
+ +
+ Alias + net change-keep-alive-mode +
+ + +
+
Arguments
+
    +
  • + u8Keep alive mode +
  • +
+
+ +
+
+ + + +
+
+
+ network timeout-option-mask + u16 + networkChangeChildTimeoutOptionMaskCommand +
+
+
Attempts to change the child timeout option mask to filter out undesirable values (e.g. no more than 3 days).
+ +
+ Alias + net timeout-option-mask +
+ + +
+
Arguments
+
    +
  • + u16timeout option mask +
  • +
+
+ +
+
+ + + +
+
+
+ network multi-phy-start + u8 + u8 + i8 + networkMultiPhyStartCommand +
+
+
Used to start multi-PHY interface other than native and form the network. The stack uses same PanId as native radio network.
+ +
+ Alias + net multi-phy-start +
+ + +
+
Arguments
+
    +
  • + u8page +
  • +
  • + u8channel +
  • +
  • + i8power +
  • +
+
+ +
+
+ + + +
+
+
+ network multi-phy-stop + networkMultiPhyStopCommand +
+
+
Terminates the multi-PHY interface
+ +
+ Alias + net multi-phy-stop +
+ + +
+
+ +
+
+

network find

+
+
+ network find commands. + +
+ + + +
+
+
+ network find joinable + findJoinableNetworkCommand +
+
+
findJoinableNetwork
+ +
+ Alias + net find joinable +
+ + +
+
+ + + +
+
+
+ network find unused + findUnusedPanIdCommand +
+
+
findUnusedPanId
+ +
+ Alias + net find unused +
+ + +
+
+
+
+
+
+
+
+
+

keys

+
+
+ Security keys related commands. + +
+ + + +
+
+
+ keys print + keysPrintCommand +
+
+
Prints all security keys.
+ + +
+
+ + + +
+
+
+ keys delete + u8 + keysDeleteCommand +
+
+
Delete the specified link key index.
+ + +
+
Arguments
+
    +
  • + u8index +
  • +
+
+ +
+
+ + + +
+
+
+ keys clear + keysClearCommand +
+
+
Clears all security keys.
+ + +
+
+
+
+
+
+
+

option

+
+
+ Option related commands. + +
+ + + +
+
+
+ option register + optionRegisterCommand +
+
+
+ +
+ Alias + opt register +
+ + +
+
+ + + +
+
+
+ option target + u16 + optionDiscoveryTargetCommand +
+
+
+ +
+ Alias + opt target +
+ + +
+
Arguments
+
    +
  • + u16targetId +
  • +
+
+ +
+
+ + + +
+
+
+ option disc + u16 + u16 + optionDiscoverCommand +
+
+
+ +
+ Alias + opt disc +
+ + +
+
Arguments
+
    +
  • + u16profileId +
  • +
  • + u16clusterId +
  • +
+
+ +
+
+ + + +
+
+
+ option edb + u8 + optionEndDeviceBindCommand +
+
+
+ +
+ Alias + opt edb +
+ + +
+
Arguments
+
    +
  • + u8endpointId +
  • +
+
+ +
+
+ + + +
+
+
+ option link + u8 + hex + hex + optionLinkCommand +
+
+
+ +
+ Alias + opt link +
+ + +
+
Arguments
+
    +
  • + u8index +
  • +
  • + hexeui64 +
  • +
  • + hexkey +
  • +
+
+ +
+
+ + + +
+
+
+ option install-code + u8 + hex + hex + optionInstallCodeCommand +
+
+
+ +
+ Alias + opt install-code +
+ + +
+
Arguments
+
    +
  • + u8index +
  • +
  • + hexeui64 +
  • +
  • + hexinstallCode +
  • +
+
+ +
+
+ +
+
+

option binding-table

+
+
+ Binding table related commands. + +
+ + + +
+
+
+ option binding-table print + optionBindingTablePrintCommand +
+
+
Prints the binding table to the command line.
+ +
+ Alias + opt binding-table print +
+ + +
+
+ + + +
+
+
+ option binding-table clear + optionBindingTableClearCommand +
+
+
Clears the binding table.
+ +
+ Alias + opt binding-table clear +
+ + +
+
+ + + +
+
+
+ option binding-table set + u8 + u16 + u8 + u8 + hex + optionBindingTableSetCommand +
+
+
Sets the binding table
+ +
+ Alias + opt binding-table set +
+ + +
+
Arguments
+
    +
  • + u8index +
  • +
  • + u16cluster +
  • +
  • + u8localEp +
  • +
  • + u8remoteEp +
  • +
  • + hexeui64 +
  • +
+
+ +
+
+
+
+
+
+
+

print-rx-msgs

+
+
+ Enables/Disables printing of Rx messages. + +
+ + + +
+
+
+ print-rx-msgs enable + optionPrintRxCommand +
+
+
Enables printing of Rx messages.
+ + +
+
+ + + +
+
+
+ print-rx-msgs disable + optionPrintRxCommand +
+
+
Disables printing of Rx messages.
+ + +
+
+
+
+
+
+
+

apsretry

+
+
+ APS retry flag force commands + +
+ + + +
+
+
+ apsretry on + optionApsRetryCommand +
+
+
+ + +
+
+ + + +
+
+
+ apsretry off + optionApsRetryCommand +
+
+
+ + +
+
+ + + +
+
+
+ apsretry default + optionApsRetryCommand +
+
+
+ + +
+
+
+
+
+
+
+
+
+

changekey

+
+
+ changekey related commands. + +
+ + + +
+
+
+ changekey link + hex + changeKeyCommand +
+
+
+ +
+ Alias + changek link +
+ + +
+
Arguments
+
    +
  • + hexkey +
  • +
+
+ +
+
+ + + +
+
+
+ changekey network + hex + changeKeyCommand +
+
+
+ +
+ Alias + changek network +
+ + +
+
Arguments
+
    +
  • + hexkey +
  • +
+
+ +
+
+
+
+
+
+
+

zdo

+
+
+ Zdo related commands. + +
+ + + +
+
+
+ zdo route + u16 + u8 + zdoRouteRequestCommand +
+
+
Sends a ZDO route request command to the target.
+ + +
+
Arguments
+
    +
  • + u16target +
  • +
  • + u8index +
  • +
+
+ +
+
+ + + +
+
+
+ zdo power + u16 + zdoPowerDescriptorRequestCommand +
+
+
Sends a ZDO Power Descriptor Request to the target device.
+ + +
+
Arguments
+
    +
  • + u16target +
  • +
+
+ +
+
+ + + +
+
+
+ zdo mgmt-lqi + u16 + u8 + zdoMgmtLqiCommand +
+
+
Sends a ZDO MGMT-LQI (LQI Table) Request to the target device.
+ + +
+
Arguments
+
    +
  • + u16target +
  • +
  • + u8startIndex +
  • +
+
+ +
+
+ + + +
+
+
+ zdo mgmt-bind + u16 + u8 + zdoMgmtBindCommand +
+
+
Sends a ZDO MGMT-Bind (Binding Table) Request to the target device.
+ + +
+
Arguments
+
    +
  • + u16target +
  • +
  • + u8startIndex +
  • +
+
+ +
+
+ + + +
+
+
+ zdo leave + u16 + u8 + u8 + zdoLeaveRequestCommand +
+
+
Sends a ZDO Management Leave command to the target device.
+ + +
+
Arguments
+
    +
  • + u16target +
  • +
  • + u8removeChildren +
  • +
  • + u8rejoin +
  • +
+
+ +
+
+ + + +
+
+
+ zdo active + u16 + zdoActiveEpCommand +
+
+
Sends an active endpoint request to the device with the given short ID.
+ + +
+
Arguments
+
    +
  • + u16nodeId +
  • +
+
+ +
+
+ + + +
+
+
+ zdo bind + u16 + u8 + u8 + u16 + hex + hex + zdoBindCommand +
+
+
Sends a ZDO Bind command to a device specified in the command arguments.
+ + +
+
Arguments
+
    +
  • + u16Destination +
  • +
  • + u8Source endpoint +
  • +
  • + u8Destination endpoint +
  • +
  • + u16clusterID +
  • +
  • + hexremoteEUI64 +
  • +
  • + hexdestEUI64 +
  • +
+
+ +
+
+ + + +
+
+
+ zdo node + u16 + zdoNodeCommand +
+
+
Sends a node descriptor request to a given target device.
+ + +
+
Arguments
+
    +
  • + u16target +
  • +
+
+ +
+
+ + + +
+
+
+ zdo match + u16 + u16 + zdoMatchCommand +
+
+
Sends a matchDescriptorsRequest to the given destination with the given profile.
+ + +
+
Arguments
+
    +
  • + u16nodeId +
  • +
  • + u16profile +
  • +
+
+ +
+
+ + + +
+
+
+ zdo simple + u16 + u8 + zdoSimpleCommand +
+
+
Sends a simple descriptor request for the short address and endpoint specified.
+ + +
+
Arguments
+
    +
  • + u16dest +
  • +
  • + u8targetEndpoint +
  • +
+
+ +
+
+ + + +
+
+
+ zdo ieee + u16 + zdoIeeeAddressRequestCommand +
+
+
Requests an IEEE address based on a given node ID.
+ + +
+
Arguments
+
    +
  • + u16nodeId +
  • +
+
+ +
+
+ + + +
+
+
+ zdo nwk + hex + zdoNwkAddressRequestCommand +
+
+
Sends a network address request for the given IEEE address.
+ + +
+
Arguments
+
    +
  • + hexieee +
  • +
+
+ +
+
+ +
+
+

zdo unbind

+
+
+ Zdo unbind related commands. + +
+ + + +
+
+
+ zdo unbind group + u16 + hex + u8 + u16 + u16 + zdoUnbindGroupCommand +
+
+
Sends an unbind request for a multicast binding to the target device.
+ + +
+
Arguments
+
    +
  • + u16target +
  • +
  • + hexsource eui64 +
  • +
  • + u8source endpoint +
  • +
  • + u16clusterID +
  • +
  • + u16groupAddress +
  • +
+
+ +
+
+ + + +
+
+
+ zdo unbind unicast + u16 + hex + u8 + u16 + hex + u8 + zdoUnbindUnicastCommand +
+
+
Sends an unbind request for a unicast binding to the target device.
+ + +
+
Arguments
+
    +
  • + u16target +
  • +
  • + hexsource eui64 +
  • +
  • + u8source endpoint +
  • +
  • + u16clusterID +
  • +
  • + hexdestinationEUI64 +
  • +
  • + u8destination endpoint +
  • +
+
+ +
+
+
+
+
+
+
+

nwk-upd

+
+
+ Zdo nwk-upd related commands. + +
+ + + +
+
+
+ nwk-upd scan-chan-mask + u16 + u8 + u16 + u32 + zdoNetworkUpdateScanCommand +
+
+
Performs an energy scan on given channel mask.
+ + +
+
Arguments
+
    +
  • + u16targetNodeId +
  • +
  • + u8scanDuration +
  • +
  • + u16scanCount +
  • +
  • + u32channelMask +
  • +
+
+ +
+
+ + + +
+
+
+ nwk-upd set + u16 + u32 + zdoNetworkUpdateSetCommand +
+
+
Broadcasts the ID of the new network manager and active channels.
+ + +
+
Arguments
+
    +
  • + u16nwkMgeId +
  • +
  • + u32channelMask +
  • +
+
+ +
+
+ + + +
+
+
+ nwk-upd scan + u16 + u8 + u16 + zdoNetworkUpdateScanCommand +
+
+
Performs an energy scan.
+ + +
+
Arguments
+
    +
  • + u16targetNodeId +
  • +
  • + u8scanDuration +
  • +
  • + u16scanCount +
  • +
+
+ +
+
+ + + +
+
+
+ nwk-upd chanPg + u8 + u8 + zdoNetworkUpdateChannelCommand +
+
+
Sends an update channel page req. The stack sends nwk enhanced update req for non-zero page.
+ + +
+
Arguments
+
    +
  • + u8channel +
  • +
  • + u8page +
  • +
+
+ +
+
+ + + +
+
+
+ nwk-upd chan + u8 + zdoNetworkUpdateChannelCommand +
+
+
Sends an update channel request.
+ + +
+
Arguments
+
    +
  • + u8channel +
  • +
+
+ +
+
+
+
+
+
+
+

out-cl-list

+
+
+ Zdo out-cl-list related commands. + +
+ + + +
+
+
+ out-cl-list add + u16 + zdoAddClusterCommand +
+
+
Adds clusters to the known client (out) clusters on this device.
+ + +
+
Arguments
+
    +
  • + u16clusterId +
  • +
+
+ +
+
+ + + +
+
+
+ out-cl-list clear + zdoClearClusterCommand +
+
+
Clears the ZDO list of client (out) clusters.
+ + +
+
+
+
+
+
+
+

in-cl-list

+
+
+ Zdo in-cl-list related commands. + +
+ + + +
+
+
+ in-cl-list add + u16 + zdoAddClusterCommand +
+
+
Adds clusters to the known client (in) clusters on this device.
+ + +
+
Arguments
+
    +
  • + u16clusterId +
  • +
+
+ +
+
+ + + +
+
+
+ in-cl-list clear + zdoClearClusterCommand +
+
+
Clears the ZDO list of client (in) clusters.
+ + +
+
+
+
+
+
+
+
+
+

print

+
+
+ print related commands. + +
+ + + +
+
+
+ print attr + emberAfPrintAttributeTable +
+
+
Prints attribute.
+ + +
+
+ + + +
+
+
+ print time + printTimeCommand +
+
+
Prints time.
+ + +
+
+
+
+
+ + + + diff --git a/silabs_examples/credentials/host/app/autogen/sl_cli_handles.h b/silabs_examples/credentials/host/app/autogen/sl_cli_handles.h new file mode 100644 index 00000000000000..65410edba38efd --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/sl_cli_handles.h @@ -0,0 +1,29 @@ +#ifndef SL_CLI_HANDLES_H +#define SL_CLI_HANDLES_H + +#include "sl_cli.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// CLI instances present in the project. +#define SL_CLI_EXAMPLE_PRESENT + + +// CLI handles. +extern sl_cli_handle_t sl_cli_example_handle; + + +// CLI command groups. +extern sl_cli_command_group_t sl_cli_example_command_group; + + +extern const sl_cli_handle_t sl_cli_handles[]; +extern const uint32_t sl_cli_handles_count; + +#ifdef __cplusplus +} +#endif + +#endif // ifndef SL_CLI_HANDLES_H \ No newline at end of file diff --git a/silabs_examples/credentials/host/app/autogen/sl_cli_instances.c b/silabs_examples/credentials/host/app/autogen/sl_cli_instances.c new file mode 100644 index 00000000000000..6b15e3afae71fc --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/sl_cli_instances.c @@ -0,0 +1,114 @@ +#if defined(SL_COMPONENT_CATALOG_PRESENT) +#include "sl_component_catalog.h" +#endif +#include "sl_cli_instances.h" +#include "sl_cli.h" +#include "sl_string.h" +#include +#if defined(SL_CATALOG_KERNEL_PRESENT) +#include "cmsis_os2.h" +#include "sl_cmsis_os2_common.h" +#endif // defined(SL_CATALOG_KERNEL_PRESENT) + +#include "sl_cli_config_example.h" + + +#include "sl_iostream_handles.h" + +//**************************************************************************** +// Macros + +#define ELEVENTH_ARGUMENT(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, ...) a11 +#define COUNT_ARGUMENTS(...) ELEVENTH_ARGUMENT(dummy, ## __VA_ARGS__, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) +#define ISEMPTY(...) (COUNT_ARGUMENTS(__VA_ARGS__) == 0) + +//**************************************************************************** +// Variables + +extern const sl_cli_command_entry_t sl_cli_default_command_table[]; + +#if !ISEMPTY(SL_CLI_EXAMPLE_COMMAND_GROUP) +extern sl_cli_command_group_t *SL_CLI_EXAMPLE_COMMAND_GROUP; +#endif + + +// Instance variables for example +#if defined(SL_CATALOG_KERNEL_PRESENT) +__ALIGNED(8) static uint8_t example_task_stack[(SL_CLI_EXAMPLE_TASK_STACK_SIZE * sizeof(void *)) & 0xFFFFFFF8u]; +__ALIGNED(4) static uint8_t example_thread_cb[osThreadCbSize]; +static osThreadId_t example_thread_id; +#endif +static sl_cli_t sl_cli_example; +sl_cli_handle_t sl_cli_example_handle = &sl_cli_example; +sl_cli_command_group_t sl_cli_example_command_group = +{ + { NULL }, + false, + sl_cli_default_command_table +}; + + + +const sl_cli_handle_t sl_cli_handles[] = { + + &sl_cli_example, + +}; + +const uint32_t sl_cli_handles_count = sizeof(sl_cli_handles) / sizeof(sl_cli_handle_t); + +//**************************************************************************** +// Global functions + +void sl_cli_instances_init(void) +{ + sl_cli_instance_parameters_t instance_parameters; + + // ==== Initialize example ==== + sl_cli_default_handle = sl_cli_example_handle; + sl_cli_default_command_group = &sl_cli_example_command_group; + instance_parameters.task_name = "CLI instance example"; + instance_parameters.iostream_handle = SL_CLI_EXAMPLE_IOSTREAM_HANDLE; +#if ISEMPTY(SL_CLI_EXAMPLE_COMMAND_GROUP) + sl_cli_default_command_group = NULL; +#else + sl_cli_default_command_group = SL_CLI_EXAMPLE_COMMAND_GROUP; +#endif + instance_parameters.default_command_group = sl_cli_default_command_group; +#if defined(SL_CATALOG_KERNEL_PRESENT) + instance_parameters.thread_id = &example_thread_id; + instance_parameters.thread_cb = example_thread_cb; + instance_parameters.stack = example_task_stack; + instance_parameters.stack_size = (SL_CLI_EXAMPLE_TASK_STACK_SIZE * sizeof(void *)) & 0xFFFFFFF8u; + EFM_ASSERT(SL_CLI_EXAMPLE_TASK_PRIORITY < osPriorityISR); + instance_parameters.prio = (osPriority_t)SL_CLI_EXAMPLE_TASK_PRIORITY; + instance_parameters.start_delay_ms = SL_CLI_EXAMPLE_TASK_START_DELAY_MS; + instance_parameters.loop_delay_ms = SL_CLI_EXAMPLE_TASK_LOOP_DELAY_MS; +#endif + sl_cli_instance_init(sl_cli_example_handle, &instance_parameters); + +} + +#if !defined(SL_CATALOG_KERNEL_PRESENT) +bool sl_cli_instances_is_ok_to_sleep(void) +{ + + if (sl_cli_is_ok_to_sleep(sl_cli_example_handle) == false) { + return false; + } + + + return true; +} + +void sl_cli_instances_tick(void) +{ +sl_iostream_t *previous = sl_iostream_get_default(); + + // Handle example + sl_iostream_set_default(sl_cli_example_handle->iostream_handle); + sl_cli_tick_instance(sl_cli_example_handle); + + sl_iostream_set_default(previous); +} +#endif diff --git a/silabs_examples/credentials/host/app/autogen/sl_cli_instances.h b/silabs_examples/credentials/host/app/autogen/sl_cli_instances.h new file mode 100644 index 00000000000000..2c5491ecac9bc3 --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/sl_cli_instances.h @@ -0,0 +1,23 @@ +#ifndef SL_CLI_INSTANCES_H +#define SL_CLI_INSTANCES_H + +#if defined(SL_COMPONENT_CATALOG_PRESENT) +#include "sl_component_catalog.h" +#endif +#include "sl_cli.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void sl_cli_instances_init(void); +#if !defined(SL_CATALOG_KERNEL_PRESENT) +bool sl_cli_instances_is_ok_to_sleep(void); +void sl_cli_instances_tick(void); +#endif + +#ifdef __cplusplus +} +#endif + +#endif // SL_CLI_INSTANCES_H \ No newline at end of file diff --git a/silabs_examples/credentials/host/app/autogen/sl_cluster_service_gen.c b/silabs_examples/credentials/host/app/autogen/sl_cluster_service_gen.c new file mode 100644 index 00000000000000..37c7789ce25b67 --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/sl_cluster_service_gen.c @@ -0,0 +1,26 @@ +/***************************************************************************//** + * @file sl_cluster_service_gen.c + * @brief Cluster Service generated code. + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// This template contains a pre-generated ZCL command specific init block of the +// service functions. + +#include PLATFORM_HEADER +#include "sl_service_function.h" +#include "af.h" + + + diff --git a/silabs_examples/credentials/host/app/autogen/sl_cluster_service_gen.h b/silabs_examples/credentials/host/app/autogen/sl_cluster_service_gen.h new file mode 100644 index 00000000000000..19f8eb37d22f26 --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/sl_cluster_service_gen.h @@ -0,0 +1,30 @@ +/***************************************************************************//** + * @file sl_cluster_service_gen.h + * @brief Cluster Service generated code. + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef __SL_CLUSTER_SERVICE_GEN__ +#define __SL_CLUSTER_SERVICE_GEN__ 1 + +// This template contains a pre-generated header for the cluster service. +#include "sl_service_function.h" + +// Refers to a pregenerated cluster service entries block +extern sl_service_function_entry_t sli_cluster_service_entries[]; + +// Number of items in the cluster service entries block +#define SL_CLUSTER_SERVICE_ENTRY_COUNT (0) + +#endif // __SL_CLUSTER_SERVICE_GEN__ diff --git a/silabs_examples/credentials/host/app/autogen/sl_component_catalog.h b/silabs_examples/credentials/host/app/autogen/sl_component_catalog.h new file mode 100644 index 00000000000000..b7f3340e1fcda9 --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/sl_component_catalog.h @@ -0,0 +1,27 @@ +#ifndef SL_COMPONENT_CATALOG_H +#define SL_COMPONENT_CATALOG_H + +// APIs present in project +#define SL_CATALOG_CLI_PRESENT +#define SL_CATALOG_EMLIB_CORE_DEBUG_CONFIG_PRESENT +#define SL_CATALOG_LEGACY_COMMON_ASH_PRESENT +#define SL_CATALOG_LEGACY_HAL_PRESENT +#define SL_CATALOG_LEGACY_HAL_HOST_PRESENT +#define SL_CATALOG_LEGACY_HOST_ASH_PRESENT +#define SL_CATALOG_PRINTF_PRESENT +#define SL_CATALOG_ZIGBEE_CLI_PRESENT +#define SL_CATALOG_ZIGBEE_CORE_CLI_PRESENT +#define SL_CATALOG_ZIGBEE_DEBUG_PRINT_PRESENT +#define SL_CATALOG_ZIGBEE_DEVICE_CONFIG_PRESENT +#define SL_CATALOG_ZIGBEE_EZSP_PRESENT +#define SL_CATALOG_ZIGBEE_EZSP_UART_PRESENT +#define SL_CATALOG_ZIGBEE_FILE_DESCRIPTOR_DISPATCH_PRESENT +#define SL_CATALOG_ZIGBEE_GATEWAY_PRESENT +#define SL_CATALOG_ZIGBEE_APP_FRAMEWORK_COMMON_PRESENT +#define SL_CATALOG_ZIGBEE_HOST_UNIX_LIBRARY_PRESENT +#define SL_CATALOG_ZIGBEE_HOST_UNIX_PRINTF_PRESENT +#define SL_CATALOG_ZIGBEE_SIGNATURE_DECODE_PRESENT +#define SL_CATALOG_ZIGBEE_ZCL_CLI_PRESENT +#define SL_CATALOG_ZIGBEE_ZCL_FRAMEWORK_CORE_PRESENT + +#endif // SL_COMPONENT_CATALOG_H diff --git a/silabs_examples/credentials/host/app/autogen/sl_event_handler.c b/silabs_examples/credentials/host/app/autogen/sl_event_handler.c new file mode 100644 index 00000000000000..44af978ca68465 --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/sl_event_handler.c @@ -0,0 +1,55 @@ +#include "sl_event_handler.h" + +#include "zigbee_app_framework_common.h" +#include "sl_iostream_stdio.h" +#include "sl_cli_instances.h" +#include "sl_iostream_init_instances.h" +#include "sl_cli_threaded_host.h" + +void sl_platform_init(void) +{ +} + +void sl_driver_init(void) +{ +} + +void sl_service_init(void) +{ + sl_iostream_init_instances(); + sl_cli_instances_init(); + sli_cli_threaded_host_init(); +} + +void sl_stack_init(void) +{ + sli_zigbee_app_framework_init_callback(); +} + +void sl_internal_app_init(void) +{ +} + +void sl_platform_process_action(void) +{ +} + +void sl_service_process_action(void) +{ + sl_cli_instances_tick(); +} + +void sl_stack_process_action(void) +{ + sli_zigbee_app_framework_tick_callback(); +} + +void sl_internal_app_process_action(void) +{ +} + +void sl_iostream_init_instances(void) +{ + sl_iostream_stdio_init(); +} + diff --git a/silabs_examples/credentials/host/app/autogen/sl_event_handler.h b/silabs_examples/credentials/host/app/autogen/sl_event_handler.h new file mode 100644 index 00000000000000..9ac6fcdb22b424 --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/sl_event_handler.h @@ -0,0 +1,15 @@ +#ifndef SL_EVENT_HANDLER_H +#define SL_EVENT_HANDLER_H + +void sl_platform_init(void); +void sl_driver_init(void); +void sl_service_init(void); +void sl_stack_init(void); +void sl_internal_app_init(void); +void sl_platform_process_action(void); +void sl_service_process_action(void); +void sl_stack_process_action(void); +void sl_internal_app_process_action(void); +void sl_iostream_init_instances(void); + +#endif // SL_EVENT_HANDLER_H diff --git a/silabs_examples/credentials/host/app/autogen/sl_iostream_handles.c b/silabs_examples/credentials/host/app/autogen/sl_iostream_handles.c new file mode 100644 index 00000000000000..c3878ee99ad8e7 --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/sl_iostream_handles.c @@ -0,0 +1,27 @@ +#include "sl_iostream.h" +#include "sl_iostream_handles.h" +#include "string.h" + +const sl_iostream_instance_info_t *sl_iostream_instances_info[] = { + + &sl_iostream_instance_stdio_info, + +}; + +const uint32_t sl_iostream_instances_count = sizeof(sl_iostream_instances_info) / sizeof(sl_iostream_instances_info[0]); + +/***************************************************************************//** + * Get iostream instance handle for a given name + * + * @return Instance handle if it exist, NULL otherwise. + ******************************************************************************/ +sl_iostream_t *sl_iostream_get_handle(char *name) +{ + for (uint32_t i = 0; i < sl_iostream_instances_count; i++) { + if (strcmp(sl_iostream_instances_info[i]->name, name) == 0) { + return sl_iostream_instances_info[i]->handle; + } + } + + return NULL; +} \ No newline at end of file diff --git a/silabs_examples/credentials/host/app/autogen/sl_iostream_handles.h b/silabs_examples/credentials/host/app/autogen/sl_iostream_handles.h new file mode 100644 index 00000000000000..e5b1b03a76f26e --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/sl_iostream_handles.h @@ -0,0 +1,20 @@ +#ifndef SL_IOSTREAM_HANDLES_H +#define SL_IOSTREAM_HANDLES_H +#include "sl_iostream.h" +#include "sl_iostream_stdio.h" + + +#ifdef __cplusplus +extern "C" { +#endif + +extern const sl_iostream_instance_info_t *sl_iostream_instances_info[]; +extern const uint32_t sl_iostream_instances_count; + +sl_iostream_t *sl_iostream_get_handle(char *name); + +#ifdef __cplusplus +} +#endif + +#endif // SL_IOSTREAM_HANDLES_H diff --git a/silabs_examples/credentials/host/app/autogen/sl_iostream_init_instances.h b/silabs_examples/credentials/host/app/autogen/sl_iostream_init_instances.h new file mode 100644 index 00000000000000..c092c37eec59a0 --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/sl_iostream_init_instances.h @@ -0,0 +1,16 @@ +#ifndef SL_IOSTREAM_INIT_INSTANCES_H +#define SL_IOSTREAM_INIT_INSTANCES_H + +#include "sl_iostream.h" +#ifdef __cplusplus +extern "C" { +#endif + +// Initialize iostream component(s) / instance(s) +void sl_iostream_init_instances(void); + +#ifdef __cplusplus +} +#endif + +#endif // SL_IOSTREAM_INIT_INSTANCES_H \ No newline at end of file diff --git a/silabs_examples/credentials/host/app/autogen/sli_cli_hooks.c b/silabs_examples/credentials/host/app/autogen/sli_cli_hooks.c new file mode 100644 index 00000000000000..6b33e01a8c8e99 --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/sli_cli_hooks.c @@ -0,0 +1,22 @@ +#include "sl_cli.h" + +/******************************************************************************* + ***************************** TEMPLATED FILE ****************************** + ******************************************************************************/ + +/******************************************************************************* + * Example syntax (.slcc or .slcp) for populating this file: + * + * template_contribution: + * - name: cli_hook # Register a hook + * value: + * pre_hook: # Register a pre command execution hook + * handler: test_pre_hook # Name of the C hook function + * post_hook: # Register a post command execution hook + * handler: test_post_hook # Name of the C hook function + * + ******************************************************************************/ + + + + diff --git a/silabs_examples/credentials/host/app/autogen/zigbee_af_cluster_functions.h b/silabs_examples/credentials/host/app/autogen/zigbee_af_cluster_functions.h new file mode 100644 index 00000000000000..4cedb803c7cba9 --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/zigbee_af_cluster_functions.h @@ -0,0 +1,41 @@ +/******************************************************************************* + * @file zigbee_af_cluster_functions.h + * @brief Cluster action callback definitions + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +// +// *** Generated file. Do not edit! *** +// + +#include "af.h" + + + +// Array of cluster function (aka cluster action callbacks) structures. +// Last entry is a dummy, otherwise an empty array would fail IAR builds. +#define GENERATED_FUNCTION_STRUCTURES_ARRAY { \ + { 0x8000u,\ + 0x00u,\ + (EmberAfGenericClusterFunction)((void *)0)\ + }\ +} + + +// The following structure is not used anywhere in the code, its purpose is +// compile-time detection of duplicate cluster action callbacks. +// Only a single instance of a given callback type (e.g. default_response_function) +// can exist for a given cluster and side (client/server). +// A compilation error in this structure indicates a duplicate "cluster_functions" +// template contribution. + diff --git a/silabs_examples/credentials/host/app/autogen/zigbee_af_token_headers.h b/silabs_examples/credentials/host/app/autogen/zigbee_af_token_headers.h new file mode 100644 index 00000000000000..c00813a9092a3a --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/zigbee_af_token_headers.h @@ -0,0 +1,23 @@ +/***************************************************************************//** + * @file zigbee_af_token_headers.h + * @brief ZCL callback dispatcher declarations. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +/* + * This file includes token headers for the components selected in the project + */ +// +// *** Generated file. Do not edit! *** +// + diff --git a/silabs_examples/credentials/host/app/autogen/zigbee_common_callback_dispatcher.c b/silabs_examples/credentials/host/app/autogen/zigbee_common_callback_dispatcher.c new file mode 100644 index 00000000000000..eda72d2ae68ecf --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/zigbee_common_callback_dispatcher.c @@ -0,0 +1,47 @@ +/***************************************************************************//** + * @file zigbee_common_callback_dispatcher.c + * @brief ZigBee common dispatcher definitions. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "zigbee_app_framework_common.h" +#include "zigbee_common_callback_dispatcher.h" + +void emAfEventInit(void) +{ + emAfZclFrameworkCoreInitEventsCallback(SL_ZIGBEE_INIT_LEVEL_EVENT); + emAfServiceDiscoveryInitEventsCallback(SL_ZIGBEE_INIT_LEVEL_EVENT); +} + +void emAfLocalDataInit(void) +{ +} + +void emAfInitDone(void) +{ + emAfInitCallback(SL_ZIGBEE_INIT_LEVEL_DONE); + sli_zigbee_zcl_cli_init(SL_ZIGBEE_INIT_LEVEL_DONE); + emberAfInit(SL_ZIGBEE_INIT_LEVEL_DONE); + emberAfPluginGatewayInitCallback(SL_ZIGBEE_INIT_LEVEL_DONE); + emAfNetworkInit(SL_ZIGBEE_INIT_LEVEL_DONE); +} + + +void emAfTick(void) +{ + emberAfPluginGatewayTickCallback(); + emAfHostFrameworkTick(); +} diff --git a/silabs_examples/credentials/host/app/autogen/zigbee_common_callback_dispatcher.h b/silabs_examples/credentials/host/app/autogen/zigbee_common_callback_dispatcher.h new file mode 100644 index 00000000000000..864148c43cf9d0 --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/zigbee_common_callback_dispatcher.h @@ -0,0 +1,43 @@ +/***************************************************************************//** + * @file zigbee_common_callback_dispatcher.h + * @brief ZigBee common dispatcher declarations. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_ZIGBEE_COMMON_CALLBACK_DISPATCHER_H +#define SL_ZIGBEE_COMMON_CALLBACK_DISPATCHER_H + +#include PLATFORM_HEADER +#include "stack/include/ember.h" + +// Event Init +void emAfEventInit(void); +void emAfZclFrameworkCoreInitEventsCallback(uint8_t init_level); +void emAfServiceDiscoveryInitEventsCallback(uint8_t init_level); +// Local data Init +void emAfLocalDataInit(void); +// Init done +void emAfInitDone(void); +void emAfInitCallback(uint8_t init_level); +void sli_zigbee_zcl_cli_init(uint8_t init_level); +void emberAfInit(uint8_t init_level); +void emberAfPluginGatewayInitCallback(uint8_t init_level); +void emAfNetworkInit(uint8_t init_level); + +// Tick +void emAfTick(void); +void emberAfPluginGatewayTickCallback(void); +void emAfHostFrameworkTick(void); + +#endif // SL_ZIGBEE_COMMON_CALLBACK_DISPATCHER_H \ No newline at end of file diff --git a/silabs_examples/credentials/host/app/autogen/zigbee_host_callback_dispatcher.c b/silabs_examples/credentials/host/app/autogen/zigbee_host_callback_dispatcher.c new file mode 100644 index 00000000000000..8c386a1cb79fb4 --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/zigbee_host_callback_dispatcher.c @@ -0,0 +1,24 @@ +/***************************************************************************//** + * @file zigbee_host_callback_dispatcher.c + * @brief ZigBee host dispatcher definitions. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include PLATFORM_HEADER +#include "zigbee_host_callback_dispatcher.h" + + +void emAfNcpInit(bool memoryAllocation) +{ +} diff --git a/silabs_examples/credentials/host/app/autogen/zigbee_host_callback_dispatcher.h b/silabs_examples/credentials/host/app/autogen/zigbee_host_callback_dispatcher.h new file mode 100644 index 00000000000000..ff59f323236596 --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/zigbee_host_callback_dispatcher.h @@ -0,0 +1,24 @@ +/***************************************************************************//** + * @file zigbee_host_callback_dispatcher.h + * @brief ZigBee host dispatcher declarations. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_ZIGBEE_HOST_CALLBACK_DISPATCHER_H +#define SL_ZIGBEE_HOST_CALLBACK_DISPATCHER_H + + +// NCP Init +void emAfNcpInit(bool memoryAllocation); +#endif // SL_ZIGBEE_HOST_CALLBACK_DISPATCHER_H \ No newline at end of file diff --git a/silabs_examples/credentials/host/app/autogen/zigbee_stack_callback_dispatcher.c b/silabs_examples/credentials/host/app/autogen/zigbee_stack_callback_dispatcher.c new file mode 100644 index 00000000000000..8551aaab896826 --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/zigbee_stack_callback_dispatcher.c @@ -0,0 +1,963 @@ +/*****************************************************************************/ +/** + * Copyright 2020 Silicon Laboratories, Inc. + * + *****************************************************************************/ +// +// *** Generated file. Do not edit! *** +// + +#include PLATFORM_HEADER +#include "stack/include/ember.h" +#include "zigbee_stack_callback_dispatcher.h" + + + +#ifdef EZSP_HOST +// Incoming Message +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // The link quality + uint8_t lastHopLqi, + // The energy level + int8_t lastHopRssi, + // The sender of the message. + EmberNodeId sender, + // The index of a binding that matches the message + // matching binding. + uint8_t bindingIndex, + // The index of the entry in the address table + uint8_t addressIndex, + // The message length + uint8_t messageLength, + // message + uint8_t *messageContents) +{ +(void) type; +(void) apsFrame; +(void) lastHopLqi; +(void) lastHopRssi; +(void) sender; +(void) bindingIndex; +(void) addressIndex; +(void) messageLength; +(void) messageContents; + +emAfIncomingMessageCallback(type, apsFrame, lastHopLqi, lastHopRssi, sender, bindingIndex, addressIndex, messageLength, messageContents); +} +#else // !EZSP_HOST +// Incoming Message +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message) +{ +(void)type; +(void)apsFrame; +(void)message; + +emAfIncomingMessageCallback(type, apsFrame, message); +} +#endif // EZSP_HOST + + +// Message Sent +#ifdef EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // Message tag + uint8_t messageTag, + // Message delivery status + EmberStatus status, + // The length of the messageContents + uint8_t messageLength, + // Message data + uint8_t *messageContents) +{ +(void)type; +(void)indexOrDestination; +(void)apsFrame; +(void)messageTag; +(void)status; +(void) messageLength; +(void) messageContents; + +emAfMessageSentCallback(type, indexOrDestination, apsFrame, messageTag, status, messageLength, messageContents); +} +#else // !EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message, + // Message delivery status + EmberStatus status) +{ +(void)type; +(void)indexOrDestination; +(void)apsFrame; +(void)message; +(void)status; + +emAfMessageSentCallback(type, indexOrDestination, apsFrame, message, status); +} +#endif // EZSP_HOST + + + +// Trust Center Join +void emAfTrustCenterJoin( + // Joining node's id + EmberNodeId newNodeId, + // Joining node's Eui64 + EmberEUI64 newNodeEui64, + // Status + EmberDeviceUpdate status, + // Parent Id of the joining node + EmberNodeId parentOfNewNode) +{ +(void)newNodeId; +(void)newNodeEui64; +(void)status; +(void)parentOfNewNode; + +} + + + +// Mark Buffers +void emAfMarkBuffers(void) +{ + +} + + + +// Packet Handoff Incoming +void emAfPacketHandoffIncoming( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +{ +(void)packetType; +(void)packetBuffer; +(void)index; +(void)data; + +} + + + +// Packet Handoff Outgoing +void emAfPacketHandoffOutgoing( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +{ +(void)packetType; +(void)packetBuffer; +(void)index; +(void)data; + +} + + + +// Incoming Mfg Test Message +void emAfIncomingMfgTestMessage( + uint8_t messageType, + uint8_t dataLength, + // Return: + uint8_t *data) +{ +(void)messageType; +(void)dataLength; +(void)data; + +} + + + +// Override Incoming Route Record +void emAfOverrideIncomingRouteRecord( + EmberNodeId source, + EmberEUI64 sourceEui, + uint8_t relayCount, + EmberMessageBuffer header, + uint8_t relayListIndex, + // Return: + bool *consumed) +{ +(void)source; +(void)sourceEui; +(void)relayCount; +(void)header; +(void)relayListIndex; +(void)consumed; + +} + + + +// Override Append Source Route +// Return: Added bytes +void emAfOverrideAppendSourceRoute( + EmberNodeId destination, + // Return: + EmberMessageBuffer *header, + // Return: + bool *consumed) +{ +(void)destination; +(void)header; +(void)consumed; + +} + + + +// Override Furthur Index For Source Route Add Entry +void emAfOverrideFurthurIndexForSourceRouteAddEntry( + EmberNodeId id, + // Return: + uint8_t *furtherIndex) +{ +(void)id; +(void)furtherIndex; + +} + + + +// Stack Status +void emAfStackStatus( + // Stack status + EmberStatus status) +{ +(void)status; + +emAfStackStatusCallback(status); +} + + + +// Energy Scan Result +void emAfEnergyScanResult( + // The 802.15.4 channel number that was scanned. + uint8_t channel, + // The maximum RSSI value found on the channel. + int8_t maxRssiValue) +{ +(void)channel; +(void)maxRssiValue; + +} + + + +// Network Found +void emAfNetworkFound( + // The parameters associated with the network found. + EmberZigbeeNetwork *networkFound, + // The link quality indication of the network found. + uint8_t lqi, + // The received signal strength indication of the network found. + int8_t rssi) +{ +(void)networkFound; +(void)lqi; +(void)rssi; + +} + + + +// Scan Complete +void emAfScanComplete( + // The channel on which the current error occurred. Undefined for the case + // of EMBER_SUCCESS. + uint8_t channel, + // The error condition that occurred on the current channel. Value will be + // EMBER_SUCCESS when the scan has completed. + EmberStatus status) +{ +(void)channel; +(void)status; + +} + + + +// Unused Pan Id Found +void emAfUnusedPanIdFound( + // The unused panID which has been found. + EmberPanId panId, + // The channel that the unused panID was found on. + uint8_t channel) +{ +(void)panId; +(void)channel; + +} + + + +// Child Join +#ifdef EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining, + // The node ID of the child. + EmberNodeId childId, + // The EUI64 of the child. + EmberEUI64 childEui64, + // The node type of the child. + EmberNodeType childType) +{ +(void)index; +(void)joining; +(void)childId; +(void)childEui64; +(void)childType; + +} +#else // !EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining) +{ +(void)index; +(void)joining; + +} +#endif // EZSP_HOST + + + +// Duty Cycle +#ifdef EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state, + // The total number of connected end devices that are being monitored for + // duty cycle. + uint8_t totalDevices, + // Consumed duty cycles of end devices that are being monitored. The first + // entry always be the local stack's nodeId, and thus the total aggregate + // duty cycle for the device. + EmberPerDeviceDutyCycle *arrayOfDeviceDutyCycles) +{ +(void)channelPage; +(void)channel; +(void)state; +(void)totalDevices; +(void)arrayOfDeviceDutyCycles; + +} +#else // !EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state) +{ +(void)channelPage; +(void)channel; +(void)state; + +} +#endif // EZSP_HOST + + + +// Remote Set Binding +// Return: ZDO response status. +void emAfRemoteSetBinding( + // Return: The contents of the binding entry. + EmberBindingTableEntry *entry) +{ +(void)entry; + +} + + + +// Remote Delete Binding +// Return: ZDO response status +void emAfRemoteDeleteBinding( + // The index of the binding whose deletion was requested. + uint8_t index) +{ +(void)index; + +} + + + +// Poll Complete +void emAfPollComplete( + // An EmberStatus value: EMBER_SUCCESS - Data was received in response to + // the poll. EMBER_MAC_NO_DATA - No data was pending. + // EMBER_DELIVERY_FAILED - The poll message could not be sent. + // EMBER_MAC_NO_ACK_RECEIVED - The poll message was sent but not + // acknowledged by the parent. + EmberStatus status) +{ +(void)status; + +} + + + +// Poll +void emAfPoll( + // The node ID of the child that is requesting data. + EmberNodeId childId, + // True if transmit expected, false otherwise. + bool transmitExpected) +{ +(void)childId; +(void)transmitExpected; + +} + + + +// Debug +void emAfDebug( + // debug message + EmberMessageBuffer message) +{ +(void)message; + +} + + + +// Incoming Many To One Route Request +void emAfIncomingManyToOneRouteRequest( + // The short id of the concentrator. + EmberNodeId source, + // The EUI64 of the concentrator. + EmberEUI64 longId, + // The path cost to the concentrator. The cost may decrease as additional + // route request packets for this discovery arrive, but the callback is + // made only once. + uint8_t cost) +{ +(void)source; +(void)longId; +(void)cost; + +} + + + +// Incoming Route Error +void emAfIncomingRouteError( + // EMBER_SOURCE_ROUTE_FAILURE or EMBER_MANY_TO_ONE_ROUTE_FAILURE. + EmberStatus status, + // The short id of the remote node. + EmberNodeId target) +{ +(void)status; +(void)target; + +} + + + +// Incoming Network Status +void emAfIncomingNetworkStatus( + // One byte over-the-air error code from network status message + uint8_t errorCode, + // The short ID of the remote node + EmberNodeId target) +{ +(void)errorCode; +(void)target; + +} + + + +// Incoming Route Record +void emAfIncomingRouteRecord( + // The source of the route record. + EmberNodeId source, + // The EUI64 of the source. + EmberEUI64 sourceEui, + // The number of relays in relayList. + uint8_t relayCount, + // Header. + EmberMessageBuffer header, + // The relay List Index. + uint8_t relayListIndex) +{ +(void)source; +(void)sourceEui; +(void)relayCount; +(void)header; +(void)relayListIndex; + +} + + + +// Id Conflict +void emAfIdConflict( + // The short id for which a conflict was detected + EmberNodeId conflictingId) +{ +(void)conflictingId; + +} + + + +// Mac Passthrough Message +void emAfMacPassthroughMessage( + // The type of MAC passthrough message received. + EmberMacPassthroughType messageType, + // The raw message that was received. + EmberMessageBuffer message) +{ +(void)messageType; +(void)message; + +} + + + +// Stack Token Changed +void emAfStackTokenChanged( + // The address of the stack token that has changed. + uint16_t tokenAddress) +{ +(void)tokenAddress; + +} + + + +// Timer +void emAfTimer( + // Which timer generated the callback (0 or 1). + uint8_t timerId) +{ +(void)timerId; + +} + + + +// Counter Rollover +void emAfCounterRollover( + // Type of Counter + EmberCounterType type) +{ +(void)type; + +} + + + +// Raw Transmit Complete +void emAfRawTransmitComplete( + // message + EmberMessageBuffer message, + // EMBER_SUCCESS if the transmission was successful, or + // EMBER_DELIVERY_FAILED if not + EmberStatus status) +{ +(void)message; +(void)status; + +} + + + +// Switch Network Key +void emAfSwitchNetworkKey( + // The sequence number of the new network key. + uint8_t sequenceNumber) +{ +(void)sequenceNumber; + +} + + + +// Zigbee Key Establishment +void emAfZigbeeKeyEstablishment( + // This is the IEEE address of the partner that the device successfully + // established a key with. This value is all zeros on a failure. + EmberEUI64 partner, + // This is the status indicating what was established or why the key + // establishment failed. + EmberKeyStatus status) +{ +(void)partner; +(void)status; + +} + + + +// Generate Cbke Keys +void emAfGenerateCbkeKeys( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKeyData *ephemeralPublicKey) +{ +(void)status; +(void)ephemeralPublicKey; + +} + + + +// Calculate Smacs +void emAfCalculateSmacs( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +{ +(void)status; +(void)initiatorSmac; +(void)responderSmac; + +} + + + +// Dsa Sign +void emAfDsaSign( + // The result of the DSA signing operation. + EmberStatus status, + // The message and attached which includes the original message and the + // appended signature. + EmberMessageBuffer signedMessage) +{ +(void)status; +(void)signedMessage; + +} + + + +// Dsa Verify +void emAfDsaVerify( + // The result of the DSA verification operation. + EmberStatus status) +{ +(void)status; + +} + + + +// Incoming Bootload Message +void emAfIncomingBootloadMessage( + // The EUI64 of the sending node. + EmberEUI64 longId, + // The bootload message that was sent. + EmberMessageBuffer message) +{ +(void)longId; +(void)message; + +} + + + +// Bootload Transmit Complete +void emAfBootloadTransmitComplete( + // The bootload message that was sent. + EmberMessageBuffer message, + // An EmberStatus value of EMBER_SUCCESS if an ACK was received from the + // destination or EMBER_DELIVERY_FAILED if no ACK was received. + EmberStatus status) +{ +(void)message; +(void)status; + +} + + + +// Zll Network Found +void emAfZllNetworkFound( + // Return: Information about the network. + const EmberZllNetwork *networkInfo, + // Return: Device specific information. + const EmberZllDeviceInfoRecord *deviceInfo) +{ +(void)networkInfo; +(void)deviceInfo; + +} + + + +// Zll Scan Complete +void emAfZllScanComplete( + // Status of the operation. + EmberStatus status) +{ +(void)status; + +} + + + +// Zll Address Assignment +void emAfZllAddressAssignment( + // Return: Address assignment information. + const EmberZllAddressAssignment *addressInfo) +{ +(void)addressInfo; + +} + + + +// Zll Touch Link Target +void emAfZllTouchLinkTarget( + // Return: Information about the network. + const EmberZllNetwork *networkInfo) +{ +(void)networkInfo; + +} + + + +// Mac Filter Match Message +void emAfMacFilterMatchMessage( + // Return: macFilterMatchStruct. + const EmberMacFilterMatchStruct *macFilterMatchStruct) +{ +(void)macFilterMatchStruct; + +} + + + +// D Gp Sent +void emAfDGpSent( + // An EmberStatus value indicating success or the reason for failure. + EmberStatus status, + // The handle of the GPDF. + uint8_t gpepHandle) +{ +(void)status; +(void)gpepHandle; + +} + + + +// Pan Id Conflict +// Return: An EmberStatus value indicating success or the reason for failure. +void emAfPanIdConflict( + // Number of conflict reports + int8_t conflictCount) +{ +(void)conflictCount; + +} + + + +// Orphan Notification +void emAfOrphanNotification( + // The 8 byte EUI64 of the sender. + EmberEUI64 longId) +{ +(void)longId; + +} + + + +// Counter +void emAfCounter( + // Type of Counter + EmberCounterType type, + // Counter Info and value + EmberCounterInfo Info) +{ +(void)type; +(void)Info; + +} + + + +// Mac Passthrough Filter +// Return: True if mac passthrough filter was matched. False otherwise. +void emAfMacPassthroughFilter( + // Return: Mac Header of the matched messgae + uint8_t *macHeader) +{ +(void)macHeader; + +} + + + +// Generate Cbke Keys Handler283k1 +void emAfGenerateCbkeKeysHandler283k1( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKey283k1Data *ephemeralPublicKey) +{ +(void)status; +(void)ephemeralPublicKey; + +} + + + +// Calculate Smacs Handler283k1 +void emAfCalculateSmacsHandler283k1( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +{ +(void)status; +(void)initiatorSmac; +(void)responderSmac; + +} + + + +// Gpep Incoming Message +void emAfGpepIncomingMessage( + // The status of the GPDF receive. + EmberStatus status, + // The gpdLink value of the received GPDF. + uint8_t gpdLink, + // The GPDF sequence number. + uint8_t sequenceNumber, + // The address of the source GPD. + EmberGpAddress *addr, + // The security level of the received GPDF. + EmberGpSecurityLevel gpdfSecurityLevel, + // The securityKeyType used to decrypt/authenticate the incoming GPDF. + EmberGpKeyType gpdfSecurityKeyType, + // Whether the incoming GPDF had the auto-commissioning bit set. + bool autoCommissioning, + // Bidirectional information represented in bitfields, where bit0 holds + // the rxAfterTx of incoming gpdf and bit1 holds if tx queue is available + // for outgoing gpdf. + uint8_t bidirectionalInfo, + // The security frame counter of the incoming GDPF. + uint32_t gpdSecurityFrameCounter, + // The gpdCommandId of the incoming GPDF. + uint8_t gpdCommandId, + // The received MIC of the GPDF. + uint32_t mic, + // The proxy table index of the corresponding proxy table entry to the + // incoming GPDF. + uint8_t proxyTableIndex, + // The length of the GPD command payload. + uint8_t gpdCommandPayloadLength, + // The GPD command payload. + uint8_t *gpdCommandPayload) +{ +(void)status; +(void)gpdLink; +(void)sequenceNumber; +(void)addr; +(void)gpdfSecurityLevel; +(void)gpdfSecurityKeyType; +(void)autoCommissioning; +(void)bidirectionalInfo; +(void)gpdSecurityFrameCounter; +(void)gpdCommandId; +(void)mic; +(void)proxyTableIndex; +(void)gpdCommandPayloadLength; +(void)gpdCommandPayload; + +} + + + +// Rtos Idle +// Return: True or False. +void emAfRtosIdle( + // Return: Idle time duration + uint32_t *idleTimeMs) +{ +(void)idleTimeMs; + +} + + + +// Rtos Stack Wakeup Isr +void emAfRtosStackWakeupIsr(void) +{ + +} + + + +// Radio Needs Calibrating +void emAfRadioNeedsCalibrating(void) +{ + +} + + + +// Scan Error +void emAfScanError( + // The error status of a scan + EmberStatus status) +{ +(void)status; + +} + diff --git a/silabs_examples/credentials/host/app/autogen/zigbee_stack_callback_dispatcher.h b/silabs_examples/credentials/host/app/autogen/zigbee_stack_callback_dispatcher.h new file mode 100644 index 00000000000000..2e2e6ba6a07309 --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/zigbee_stack_callback_dispatcher.h @@ -0,0 +1,644 @@ +/*****************************************************************************/ +/** + * Copyright 2020 Silicon Laboratories, Inc. + * + *****************************************************************************/ +// +// *** Generated file. Do not edit! *** +// + +#include PLATFORM_HEADER +#ifdef EZSP_HOST +#include "stack/include/ember-types.h" +#else +#include "stack/include/ember.h" +#endif // EZSP_HOST + + + +// Incoming Message +#ifdef EZSP_HOST +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // The link quality + uint8_t lastHopLqi, + // The energy level + int8_t lastHopRssi, + // The sender of the message. + EmberNodeId sender, + // The index of a binding that matches the message + // matching binding. + uint8_t bindingIndex, + // The index of the entry in the address table + uint8_t addressIndex, + // The message length + uint8_t messageLength, + // message + uint8_t *messageContents) +; +void emAfIncomingMessageCallback( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // The link quality + uint8_t lastHopLqi, + // The energy level + int8_t lastHopRssi, + // The sender of the message. + EmberNodeId sender, + // The index of a binding that matches the message + // matching binding. + uint8_t bindingIndex, + // The index of the entry in the address table + uint8_t addressIndex, + // The message length + uint8_t messageLength, + // message + uint8_t *messageContents) +; +#else // !EZSP_HOST +void emAfIncomingMessage( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message) +; +void emAfIncomingMessageCallback( + // Incoming message type + EmberIncomingMessageType type, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message) +; +#endif // EZSP_HOST + + +// Message Sent +#ifdef EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // Message tag + uint8_t messageTag, + // Message delivery status + EmberStatus status, + // The length of the messageContents + uint8_t messageLength, + // Message data + uint8_t *messageContents) +; +void emAfMessageSentCallback( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // Message tag + uint8_t messageTag, + // Message delivery status + EmberStatus status, + // The length of the messageContents + uint8_t messageLength, + // Message data + uint8_t *messageContents) +; +#else // !EZSP_HOST +void emAfMessageSent( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message, + // Message delivery status + EmberStatus status) +; +void emAfMessageSentCallback( + // Outgoing message type + EmberOutgoingMessageType type, + // Index or destination of the message + uint16_t indexOrDestination, + // The aps Frame + EmberApsFrame *apsFrame, + // message + EmberMessageBuffer message, + // Message delivery status + EmberStatus status) +; +#endif // EZSP_HOST + + + +// Trust Center Join +void emAfTrustCenterJoin( + // Joining node's id + EmberNodeId newNodeId, + // Joining node's Eui64 + EmberEUI64 newNodeEui64, + // Status + EmberDeviceUpdate status, + // Parent Id of the joining node + EmberNodeId parentOfNewNode) +; + +// Mark Buffers +void emAfMarkBuffers(void) +; + +// Packet Handoff Incoming +void emAfPacketHandoffIncoming( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +; + +// Packet Handoff Outgoing +void emAfPacketHandoffOutgoing( + EmberZigbeePacketType packetType, + EmberMessageBuffer packetBuffer, + uint8_t index, + // Return: + void *data) +; + +// Incoming Mfg Test Message +void emAfIncomingMfgTestMessage( + uint8_t messageType, + uint8_t dataLength, + // Return: + uint8_t *data) +; + +// Override Incoming Route Record +void emAfOverrideIncomingRouteRecord( + EmberNodeId source, + EmberEUI64 sourceEui, + uint8_t relayCount, + EmberMessageBuffer header, + uint8_t relayListIndex, + // Return: + bool *consumed) +; + +// Override Append Source Route +// Return: Added bytes +void emAfOverrideAppendSourceRoute( + EmberNodeId destination, + // Return: + EmberMessageBuffer *header, + // Return: + bool *consumed) +; + +// Override Furthur Index For Source Route Add Entry +void emAfOverrideFurthurIndexForSourceRouteAddEntry( + EmberNodeId id, + // Return: + uint8_t *furtherIndex) +; + +// Stack Status +void emAfStackStatus( + // Stack status + EmberStatus status) +; +void emAfStackStatusCallback( + // Stack status + EmberStatus status) +; + +// Energy Scan Result +void emAfEnergyScanResult( + // The 802.15.4 channel number that was scanned. + uint8_t channel, + // The maximum RSSI value found on the channel. + int8_t maxRssiValue) +; + +// Network Found +void emAfNetworkFound( + // The parameters associated with the network found. + EmberZigbeeNetwork *networkFound, + // The link quality indication of the network found. + uint8_t lqi, + // The received signal strength indication of the network found. + int8_t rssi) +; + +// Scan Complete +void emAfScanComplete( + // The channel on which the current error occurred. Undefined for the case + // of EMBER_SUCCESS. + uint8_t channel, + // The error condition that occurred on the current channel. Value will be + // EMBER_SUCCESS when the scan has completed. + EmberStatus status) +; + +// Unused Pan Id Found +void emAfUnusedPanIdFound( + // The unused panID which has been found. + EmberPanId panId, + // The channel that the unused panID was found on. + uint8_t channel) +; + +// Child Join +#ifdef EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining, + // The node ID of the child. + EmberNodeId childId, + // The EUI64 of the child. + EmberEUI64 childEui64, + // The node type of the child. + EmberNodeType childType) +; +#else // !EZSP_HOST +void emAfChildJoin( + // The index of the child of interest. + uint8_t index, + // True if the child is joining. False the child is leaving. + bool joining) +; +#endif // EZSP_HOST + + + +// Duty Cycle +#ifdef EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state, + // The total number of connected end devices that are being monitored for + // duty cycle. + uint8_t totalDevices, + // Consumed duty cycles of end devices that are being monitored. The first + // entry always be the local stack's nodeId, and thus the total aggregate + // duty cycle for the device. + EmberPerDeviceDutyCycle *arrayOfDeviceDutyCycles) +; +#else // !EZSP_HOST +void emAfDutyCycle( + // The channel page whose duty cycle state has changed. + uint8_t channelPage, + // The channel number whose duty cycle state has changed. + uint8_t channel, + // The current duty cycle state. + EmberDutyCycleState state) +; +#endif // EZSP_HOST + + + +// Remote Set Binding +// Return: ZDO response status. +void emAfRemoteSetBinding( + // Return: The contents of the binding entry. + EmberBindingTableEntry *entry) +; + +// Remote Delete Binding +// Return: ZDO response status +void emAfRemoteDeleteBinding( + // The index of the binding whose deletion was requested. + uint8_t index) +; + +// Poll Complete +void emAfPollComplete( + // An EmberStatus value: EMBER_SUCCESS - Data was received in response to + // the poll. EMBER_MAC_NO_DATA - No data was pending. + // EMBER_DELIVERY_FAILED - The poll message could not be sent. + // EMBER_MAC_NO_ACK_RECEIVED - The poll message was sent but not + // acknowledged by the parent. + EmberStatus status) +; + +// Poll +void emAfPoll( + // The node ID of the child that is requesting data. + EmberNodeId childId, + // True if transmit expected, false otherwise. + bool transmitExpected) +; + +// Debug +void emAfDebug( + // debug message + EmberMessageBuffer message) +; + +// Incoming Many To One Route Request +void emAfIncomingManyToOneRouteRequest( + // The short id of the concentrator. + EmberNodeId source, + // The EUI64 of the concentrator. + EmberEUI64 longId, + // The path cost to the concentrator. The cost may decrease as additional + // route request packets for this discovery arrive, but the callback is + // made only once. + uint8_t cost) +; + +// Incoming Route Error +void emAfIncomingRouteError( + // EMBER_SOURCE_ROUTE_FAILURE or EMBER_MANY_TO_ONE_ROUTE_FAILURE. + EmberStatus status, + // The short id of the remote node. + EmberNodeId target) +; + +// Incoming Network Status +void emAfIncomingNetworkStatus( + // One byte over-the-air error code from network status message + uint8_t errorCode, + // The short ID of the remote node + EmberNodeId target) +; + +// Incoming Route Record +void emAfIncomingRouteRecord( + // The source of the route record. + EmberNodeId source, + // The EUI64 of the source. + EmberEUI64 sourceEui, + // The number of relays in relayList. + uint8_t relayCount, + // Header. + EmberMessageBuffer header, + // The relay List Index. + uint8_t relayListIndex) +; + +// Id Conflict +void emAfIdConflict( + // The short id for which a conflict was detected + EmberNodeId conflictingId) +; + +// Mac Passthrough Message +void emAfMacPassthroughMessage( + // The type of MAC passthrough message received. + EmberMacPassthroughType messageType, + // The raw message that was received. + EmberMessageBuffer message) +; + +// Stack Token Changed +void emAfStackTokenChanged( + // The address of the stack token that has changed. + uint16_t tokenAddress) +; + +// Timer +void emAfTimer( + // Which timer generated the callback (0 or 1). + uint8_t timerId) +; + +// Counter Rollover +void emAfCounterRollover( + // Type of Counter + EmberCounterType type) +; + +// Raw Transmit Complete +void emAfRawTransmitComplete( + // message + EmberMessageBuffer message, + // EMBER_SUCCESS if the transmission was successful, or + // EMBER_DELIVERY_FAILED if not + EmberStatus status) +; + +// Switch Network Key +void emAfSwitchNetworkKey( + // The sequence number of the new network key. + uint8_t sequenceNumber) +; + +// Zigbee Key Establishment +void emAfZigbeeKeyEstablishment( + // This is the IEEE address of the partner that the device successfully + // established a key with. This value is all zeros on a failure. + EmberEUI64 partner, + // This is the status indicating what was established or why the key + // establishment failed. + EmberKeyStatus status) +; + +// Generate Cbke Keys +void emAfGenerateCbkeKeys( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKeyData *ephemeralPublicKey) +; + +// Calculate Smacs +void emAfCalculateSmacs( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +; + +// Dsa Sign +void emAfDsaSign( + // The result of the DSA signing operation. + EmberStatus status, + // The message and attached which includes the original message and the + // appended signature. + EmberMessageBuffer signedMessage) +; + +// Dsa Verify +void emAfDsaVerify( + // The result of the DSA verification operation. + EmberStatus status) +; + +// Incoming Bootload Message +void emAfIncomingBootloadMessage( + // The EUI64 of the sending node. + EmberEUI64 longId, + // The bootload message that was sent. + EmberMessageBuffer message) +; + +// Bootload Transmit Complete +void emAfBootloadTransmitComplete( + // The bootload message that was sent. + EmberMessageBuffer message, + // An EmberStatus value of EMBER_SUCCESS if an ACK was received from the + // destination or EMBER_DELIVERY_FAILED if no ACK was received. + EmberStatus status) +; + +// Zll Network Found +void emAfZllNetworkFound( + // Return: Information about the network. + const EmberZllNetwork *networkInfo, + // Return: Device specific information. + const EmberZllDeviceInfoRecord *deviceInfo) +; + +// Zll Scan Complete +void emAfZllScanComplete( + // Status of the operation. + EmberStatus status) +; + +// Zll Address Assignment +void emAfZllAddressAssignment( + // Return: Address assignment information. + const EmberZllAddressAssignment *addressInfo) +; + +// Zll Touch Link Target +void emAfZllTouchLinkTarget( + // Return: Information about the network. + const EmberZllNetwork *networkInfo) +; + +// Mac Filter Match Message +void emAfMacFilterMatchMessage( + // Return: macFilterMatchStruct. + const EmberMacFilterMatchStruct *macFilterMatchStruct) +; + +// D Gp Sent +void emAfDGpSent( + // An EmberStatus value indicating success or the reason for failure. + EmberStatus status, + // The handle of the GPDF. + uint8_t gpepHandle) +; + +// Pan Id Conflict +// Return: An EmberStatus value indicating success or the reason for failure. +void emAfPanIdConflict( + // Number of conflict reports + int8_t conflictCount) +; + +// Orphan Notification +void emAfOrphanNotification( + // The 8 byte EUI64 of the sender. + EmberEUI64 longId) +; + +// Counter +void emAfCounter( + // Type of Counter + EmberCounterType type, + // Counter Info and value + EmberCounterInfo Info) +; + +// Mac Passthrough Filter +// Return: True if mac passthrough filter was matched. False otherwise. +void emAfMacPassthroughFilter( + // Return: Mac Header of the matched messgae + uint8_t *macHeader) +; + +// Generate Cbke Keys Handler283k1 +void emAfGenerateCbkeKeysHandler283k1( + // The result of the CBKE operation. + EmberStatus status, + // Return: The generated ephemeral public key. + EmberPublicKey283k1Data *ephemeralPublicKey) +; + +// Calculate Smacs Handler283k1 +void emAfCalculateSmacsHandler283k1( + // The Result of the CBKE operation. + EmberStatus status, + // Return: The calculated value of the initiator's SMAC + EmberSmacData *initiatorSmac, + // Return: The calculated value of the responder's SMAC + EmberSmacData *responderSmac) +; + +// Gpep Incoming Message +void emAfGpepIncomingMessage( + // The status of the GPDF receive. + EmberStatus status, + // The gpdLink value of the received GPDF. + uint8_t gpdLink, + // The GPDF sequence number. + uint8_t sequenceNumber, + // The address of the source GPD. + EmberGpAddress *addr, + // The security level of the received GPDF. + EmberGpSecurityLevel gpdfSecurityLevel, + // The securityKeyType used to decrypt/authenticate the incoming GPDF. + EmberGpKeyType gpdfSecurityKeyType, + // Whether the incoming GPDF had the auto-commissioning bit set. + bool autoCommissioning, + // Bidirectional information represented in bitfields, where bit0 holds + // the rxAfterTx of incoming gpdf and bit1 holds if tx queue is available + // for outgoing gpdf. + uint8_t bidirectionalInfo, + // The security frame counter of the incoming GDPF. + uint32_t gpdSecurityFrameCounter, + // The gpdCommandId of the incoming GPDF. + uint8_t gpdCommandId, + // The received MIC of the GPDF. + uint32_t mic, + // The proxy table index of the corresponding proxy table entry to the + // incoming GPDF. + uint8_t proxyTableIndex, + // The length of the GPD command payload. + uint8_t gpdCommandPayloadLength, + // The GPD command payload. + uint8_t *gpdCommandPayload) +; + +// Rtos Idle +// Return: True or False. +void emAfRtosIdle( + // Return: Idle time duration + uint32_t *idleTimeMs) +; + +// Rtos Stack Wakeup Isr +void emAfRtosStackWakeupIsr(void) +; + +// Radio Needs Calibrating +void emAfRadioNeedsCalibrating(void) +; + +// Scan Error +void emAfScanError( + // The error status of a scan + EmberStatus status) +; diff --git a/silabs_examples/credentials/host/app/autogen/zigbee_zcl_callback_dispatcher.c b/silabs_examples/credentials/host/app/autogen/zigbee_zcl_callback_dispatcher.c new file mode 100644 index 00000000000000..51463fa3006946 --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/zigbee_zcl_callback_dispatcher.c @@ -0,0 +1,83 @@ +/***************************************************************************//** + * @file zigbee_zcl_callback_dispatcher.c + * @brief ZCL callback dispatcher definitions. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include PLATFORM_HEADER +#include "af.h" +#include "zigbee_zcl_callback_dispatcher.h" + +// Reset Attributes +void emAfResetAttributes(uint8_t endpointId) +{ + (void)endpointId; + +} + +// Pre command received +bool emAfPreCommandReceived(EmberAfClusterCommand* cmd) +{ + return ( +emberAfPreCommandReceivedCallback(cmd) +); +} + +// Pre ZDO message received +bool emAfPreZDOMessageReceived(EmberNodeId nodeId, EmberApsFrame* apsFrame, uint8_t* message, uint16_t length) +{ + return ( +emberAfPreZDOMessageReceivedCallback(nodeId, apsFrame, message, length) +); +} + +// ZDO message received +void emAfZDOMessageReceived(EmberNodeId sender, EmberApsFrame* apsFrame, uint8_t* message, uint16_t length) +{ + (void)sender; + (void)apsFrame; + (void)message; + (void)length; +} + +// Retrieve attribute and craft response +bool emAfRetrieveAttributeAndCraftResponse(uint8_t endpoint, EmberAfClusterId clusterId, EmberAfAttributeId attrId, uint8_t mask, uint16_t maunfacturerCode, uint16_t readLength) +{ + (void)endpoint; + (void)clusterId; + (void)attrId; + (void)mask; + (void)maunfacturerCode; + (void)readLength; + +return (false + +); +} + +// Read attributes response +bool emAfReadAttributesResponse(EmberAfClusterId clusterId, uint8_t* buffer, uint16_t bufLen) +{ + return ( +emberAfReadAttributesResponseCallback(clusterId, buffer, bufLen) +); +} + +// Report attributes +bool emAfReportAttributes(EmberAfClusterId clusterId, uint8_t * buffer, uint16_t bufLen) +{ + return ( +emberAfReportAttributesCallback(clusterId, buffer, bufLen) +); +} \ No newline at end of file diff --git a/silabs_examples/credentials/host/app/autogen/zigbee_zcl_callback_dispatcher.h b/silabs_examples/credentials/host/app/autogen/zigbee_zcl_callback_dispatcher.h new file mode 100644 index 00000000000000..3d74c4031da112 --- /dev/null +++ b/silabs_examples/credentials/host/app/autogen/zigbee_zcl_callback_dispatcher.h @@ -0,0 +1,49 @@ +/***************************************************************************//** + * @file zigbee_zcl_callback_dispatcher.h + * @brief ZCL callback dispatcher declarations. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef SL_ZIGBEE_AF_CALLBACK_DISPATCHER_H +#define SL_ZIGBEE_AF_CALLBACK_DISPATCHER_H + +#include PLATFORM_HEADER +#include "af.h" + +// Reset Attributes +void emAfResetAttributes(uint8_t endpointId); + +// Pre command received +bool emAfPreCommandReceived(EmberAfClusterCommand* cmd); +bool emberAfPreCommandReceivedCallback(EmberAfClusterCommand* cmd); + +// Pre ZDO message received +bool emAfPreZDOMessageReceived(EmberNodeId nodeId, EmberApsFrame* apsFrame, uint8_t* message, uint16_t length); +bool emberAfPreZDOMessageReceivedCallback(EmberNodeId nodeId, EmberApsFrame* apsFrame, uint8_t* message, uint16_t length); + +// ZDO message received +void emAfZDOMessageReceived(EmberNodeId sender, EmberApsFrame* apsFrame, uint8_t* message, uint16_t length); + +// Retrieve attribute and craft response +bool emAfRetrieveAttributeAndCraftResponse(uint8_t endpoint, EmberAfClusterId clusterId, EmberAfAttributeId attrId, uint8_t mask, uint16_t maunfacturerCode, uint16_t readLength); + +bool emAfReadAttributesResponse(EmberAfClusterId clusterId, uint8_t* buffer, uint16_t bufLen); +// Read attributes response +bool emberAfReadAttributesResponseCallback(EmberAfClusterId clusterId, uint8_t* buffer, uint16_t bufLen); + +// Report attributes +bool emAfReportAttributes(EmberAfClusterId clusterId, uint8_t * buffer, uint16_t bufLen); +bool emberAfReportAttributesCallback(EmberAfClusterId clusterId, uint8_t * buffer, uint16_t bufLen); + +#endif // SL_ZIGBEE_AF_CALLBACK_DISPATCHER_H \ No newline at end of file diff --git a/silabs_examples/credentials/host/app/config/emlib_core_debug_config.h b/silabs_examples/credentials/host/app/config/emlib_core_debug_config.h new file mode 100644 index 00000000000000..50dbbed9bc4f59 --- /dev/null +++ b/silabs_examples/credentials/host/app/config/emlib_core_debug_config.h @@ -0,0 +1,46 @@ +/***************************************************************************//** + * @file + * @brief emlib_core Configuration + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +#ifndef EM_CORE_DEBUG_CONFIG_H +#define EM_CORE_DEBUG_CONFIG_H + +// <<< Use Configuration Wizard in Context Menu >>> + +// Core Configuration + +// Enables measuring of interrupt disable time for debugging purposes. +// Default: 0 +// If Enabled, either cycle_counter or systemview component must be added to project. +#define SL_EMLIB_CORE_ENABLE_INTERRUPT_DISABLED_TIMING 0 + +// + +// <<< end of configuration section >>> +#endif // EM_CORE_CONFIG_H diff --git a/silabs_examples/credentials/host/app/config/gateway-config.h b/silabs_examples/credentials/host/app/config/gateway-config.h new file mode 100644 index 00000000000000..01148833da4b31 --- /dev/null +++ b/silabs_examples/credentials/host/app/config/gateway-config.h @@ -0,0 +1,38 @@ +/***************************************************************************//** + * @brief Zigbee Gateway Support component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Gateway Support configuration + +// Max File Descriptors to Monitor <3-255> +// Default: 10 +// The maximum number of file descriptors that the gateway application can monitor for activity with select(). +#define EMBER_AF_PLUGIN_GATEWAY_MAX_FDS 10 + +// TCP Port Offset <1-65535> +// Default: 4900 +// The gateway application supports remote CLI connections via TCP. This option defines the starting TCP port on the local system where the gateway will accept connections. The first port X (i.e. 4900 by default) will be used for the CLI, while the X+1 port (i.e. 4901 by default) will be used for the raw connection. The raw port is used to send/receive binary data. +#define EMBER_AF_PLUGIN_GATEWAY_TCP_PORT_OFFSET 4900 + +// Maximum Time to Wait for Events (milliseconds) <1-4294967295> +// Default: 0xFFFFFFFF +// Maximum amount of time the Gateway Support plugin will allow the framework to yield the processor. In other words, the max timeout to select(). Normally the framework limits its yield time due to whatever App Framework events and user created events are scheduled to run. This further limits it to allow the main loop to run more frequently at the expense of CPU cycles. This is a simpler way of insuring the main loop periodically runs. The recommended way is to schedule an event through the framework. +#define EMBER_AF_PLUGIN_GATEWAY_MAX_WAIT_FOR_EVENT_TIMEOUT_MS 0xFFFFFFFF + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/host/app/config/legacy_common_ash_config.h b/silabs_examples/credentials/host/app/config/legacy_common_ash_config.h new file mode 100644 index 00000000000000..ce1ad5d7ad4eb4 --- /dev/null +++ b/silabs_examples/credentials/host/app/config/legacy_common_ash_config.h @@ -0,0 +1,43 @@ +/***************************************************************************//** + * @file + * @brief Legacy Host ASH configuration file. + ******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef LEGACY_NCP_ASH_CONFIG_H +#define LEGACY_NCP_ASH_CONFIG_H + +// The USART used for ASH communications in COM_Port_t format, as defined in platform/service/legacy_hal/inc/serial.h (see defined names for USART ports) <-1..3:1> +// Default: (-1) +// The default value of -1 causes the ASH code to try to use the USART assigned to the "VCOM" instance of SL_IOSTREAM_USART. Otherwise the value is passed to Legacy HAL, which attempts to find an instance of SL_IOSTREAM_USART which uses that USART. +#define LEGACY_NCP_ASH_SERIAL_PORT (-1) + +#endif /* LEGACY_NCP_ASH_CONFIG_H */ + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/host/app/config/sl_cli_config.h b/silabs_examples/credentials/host/app/config/sl_cli_config.h new file mode 100644 index 00000000000000..0016d98800564b --- /dev/null +++ b/silabs_examples/credentials/host/app/config/sl_cli_config.h @@ -0,0 +1,117 @@ +/***************************************************************************//** + * @file + * @brief Configuration file for CLI. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_CLI_CONFIG_H +#define SL_CLI_CONFIG_H + +/******************************************************************************* + ****************************** DEFINES ************************************ + ******************************************************************************/ + +// CLI Framework Configuration + +// String of the ascii unit separator. +// Default: "\x1f" +// Define the string that separates two commands. +#define SL_CLI_UNIT_SEPARATOR "\x1f" + +// Char of the ascii unit separator. +// Default: 0x1fU +// Define the command prompt indicating that a new command may be written. +#define SL_CLI_UNIT_SEPARATOR_CHAR 0x1fU + +// Max number of input arguments <0-32> +// Default: 8 +// Define the number of input arguments the application needs. +#define SL_CLI_MAX_INPUT_ARGUMENTS 16 + +// Size of input buffer <8-256> +// Default: 128 +// Define the maximum number of input characters needed by a command, +// including the arguments. +#define SL_CLI_INPUT_BUFFER_SIZE 128 + +// Size of output buffer <8-256> +// Default: 128 +// Define the maximum number of characters in an output string. +#define SL_CLI_OUTPUT_BUFFER_SIZE 128 + +// New command prompt +// Default: "> " +// Define the command prompt indicating that a new command may be written. +#define SL_CLI_PROMPT_STRING "host> " + +// Enable help descriptions +// Default: 1 +// If enabled, 'help' command will print out help messages for commands +#define SL_CLI_HELP_DESCRIPTION_ENABLED 1 + +// Indentation size when printing help +// Default: "2" +// Define the indentation size for help message printouts. +#define SL_CLI_HELP_CMD_PRE 2 + +// Size of command name +// Default: "30" +// Define the size of command names when printing help messages. +#define SL_CLI_HELP_CMD_SIZE 30 + +// Enable local echo +// Default: 1 +// If enabled, what is written in the terminal will be echoed back, so the +// user will see what is written. +#define SL_CLI_LOCAL_ECHO 1 + +// Enable advanced input handling +// Default: 1 +// If enabled, the CLI is extended with arrow handling, autocompletion +// of commands, and delete/backspace in the middle of words. +#define SL_CLI_ADVANCED_INPUT_HANDLING 1 + +// Max number of bytes of history <0-4096> +// Default: 512 +// Define the number of bytes of history that are saved. +#define SL_CLI_NUM_HISTORY_BYTES 512 +// + +#if SL_CLI_NUM_HISTORY_BYTES < SL_CLI_INPUT_BUFFER_SIZE && SL_CLI_NUM_HISTORY_BYTES != 0 + #error "Number of history bytes needs to be zero or bigger than input buffer" +#endif + +// Ignore command case +// Default: 1 +// If enabled, the CLI will ignore the case for commands. +#define SL_CLI_IGNORE_COMMAND_CASE 1 + +#endif // SL_CLI_CONFIG_H + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/host/app/config/sl_cli_config_example.h b/silabs_examples/credentials/host/app/config/sl_cli_config_example.h new file mode 100644 index 00000000000000..01d892dddae8d6 --- /dev/null +++ b/silabs_examples/credentials/host/app/config/sl_cli_config_example.h @@ -0,0 +1,129 @@ +/***************************************************************************//** + * @file + * @brief Configuration file for CLI. + * @version x.y.z + ******************************************************************************* + * # License + * Copyright 2018 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * SPDX-License-Identifier: Zlib + * + * The licensor of this software is Silicon Laboratories Inc. + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +#ifndef SL_CLI_CONFIG_EXAMPLE_H +#define SL_CLI_CONFIG_EXAMPLE_H + +/******************************************************************************* + ****************************** DEFINES ************************************ + ******************************************************************************/ + +// CLI instance task priority +// low + 1 +// low + 2 +// low + 3 +// low + 4 +// low + 5 +// low + 6 +// low + 7 +// below normal +// below normal + 1 +// below normal + 2 +// below normal + 3 +// below normal + 4 +// below normal + 5 +// below normal + 6 +// below normal + 7 +// normal +// normal + 1 +// normal + 2 +// normal + 3 +// normal + 4 +// normal + 5 +// normal + 6 +// normal + 7 +// above normal +// above normal + 1 +// above normal + 2 +// above normal + 3 +// above normal + 4 +// above normal + 5 +// above normal + 6 +// above normal + 7 +// high +// high + 1 +// high + 2 +// high + 3 +// high + 4 +// high + 5 +// high + 6 +// high + 7 +// realtime +// realtime + 1 +// realtime + 2 +// realtime + 3 +// realtime + 4 +// realtime + 5 +// realtime + 6 +// realtime + 7 +// Default: osPriorityNormal1 +// Priority of the CLI instance task using the CMSIS order and using the enum name + #define SL_CLI_EXAMPLE_TASK_PRIORITY osPriorityNormal1 + +// Task stack size +// Default: 400 +// Stack size for the CLI task in words. + #define SL_CLI_EXAMPLE_TASK_STACK_SIZE 400 + +// CLI task start delay +// Default: 0 +// Specifies the delay in milliseconds before the cli task start to poll for input. + #define SL_CLI_EXAMPLE_TASK_START_DELAY_MS 0 + +// CLI task loop delay +// Default: 50 +// Specifies the delay in milliseconds after the cli task has polled the input. + #define SL_CLI_EXAMPLE_TASK_LOOP_DELAY_MS 50 + +// The iostream handle used by the cli instance +// Default: sl_iostream_get_default() + #define SL_CLI_EXAMPLE_IOSTREAM_HANDLE sl_iostream_get_default() + +// The default command group. +// Default: sl_cli_default_command_group. +// Specifies a pointer to the command group that shall be used as the +// default command group for the cli instance. +// The template file that is creating cli instances will also create one +// command group for each cli instance. During initialization, the +// sl_cli_default_command_group will be updated for each instance to point +// to the instance version of the command group. This makes it possible to +// use the same variable for all instances, but each getting its own +// command group. +// The application can provide a group created elsewhere in the +// application or use an empty definition for no default group. +// Please note: A command group can only be used once. + #define SL_CLI_EXAMPLE_COMMAND_GROUP sl_cli_default_command_group + +#endif // SL_CLI_CONFIG_EXAMPLE_H + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/host/app/config/sl_zigbee_debug_print_config.h b/silabs_examples/credentials/host/app/config/sl_zigbee_debug_print_config.h new file mode 100644 index 00000000000000..9c901f40481767 --- /dev/null +++ b/silabs_examples/credentials/host/app/config/sl_zigbee_debug_print_config.h @@ -0,0 +1,74 @@ +/***************************************************************************//** + * @brief ZigBee Debug Print component configuration header. + * + ******************************************************************************* + * # License + * Copyright 2019 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// ZigBee Debug Print configuration + +// Stack group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "stack" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_STACK_GROUP_ENABLED (1) + +// Stack group runtime default +// Default: 1 +// If this option is enabled, prints belonging to the "stack" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_STACK_GROUP_RUNTIME_DEFAULT (1) + +// Core group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "core" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_CORE_GROUP_ENABLED (1) + +// Core group runtime default +// Default: 1 +// If this option is enabled, prints belonging to the "core" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_CORE_GROUP_RUNTIME_DEFAULT (1) + +// App group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "app" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_APP_GROUP_ENABLED (1) + +// App group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "app" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_APP_GROUP_RUNTIME_DEFAULT (1) + +// ZCL group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "zcl" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_ZCL_GROUP_ENABLED (1) + +// ZCL group enabled +// Default: 1 +// If this option is enabled, prints belonging to the "zcl" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_ZCL_GROUP_RUNTIME_DEFAULT (1) + +// Legacy App Framework Debug group enabled +// Default: 0 +// If both this option and ZIGBEE_DEBUG_ZCL_GROUP_ENABLED are enabled, prints belonging to the "legacy app framework debug" group shall be included in the build. +#define SL_ZIGBEE_DEBUG_PRINTS_ZCL_LEGACY_AF_DEBUG_ENABLED (0) + +// Legacy App Framework Debug runtime default +// Default: 0 +// If both this option and ZIGBEE_DEBUG_ZCL_GROUP_ENABLED are enabled, prints belonging to the "legacy app framework debug" group shall be runtime enabled by default. +#define SL_ZIGBEE_DEBUG_PRINTS_ZCL_LEGACY_AF_DEBUG_RUNTIME_DEFAULT (0) + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/host/app/config/unix-library-config.h b/silabs_examples/credentials/host/app/config/unix-library-config.h new file mode 100644 index 00000000000000..9d6d14b02f4908 --- /dev/null +++ b/silabs_examples/credentials/host/app/config/unix-library-config.h @@ -0,0 +1,28 @@ +/***************************************************************************//** + * @brief Zigbee Unix Library component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee Unix Library configuration + +// Token support (experimental) +// Default: CONF.ISAPIPROVIDED("MFGLIB-CLI") +// Indicates whether the application will include experimental support for a file-based token system. +#define EMBER_AF_PLUGIN_UNIX_LIBRARY_TOKEN_SUPPORT 0 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/host/app/config/zcl-framework-core-config.h b/silabs_examples/credentials/host/app/config/zcl-framework-core-config.h new file mode 100644 index 00000000000000..cac0808d00efce --- /dev/null +++ b/silabs_examples/credentials/host/app/config/zcl-framework-core-config.h @@ -0,0 +1,28 @@ +/***************************************************************************//** + * @brief Zigbee ZCL Framework Core component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee ZCL Framework Core configuration + +// Enable Command Line for Legacy CLI +// Default: TRUE +// Enable the command line when using Legacy CLI generation. This does not do anything if Legacy CLI generation is unselected. +#define EMBER_AF_PLUGIN_ZCL_FRAMEWORK_CORE_CLI_ENABLED 1 + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/host/app/config/zigbee_core_cli_config.h b/silabs_examples/credentials/host/app/config/zigbee_core_cli_config.h new file mode 100644 index 00000000000000..7ed91fc09e1f2f --- /dev/null +++ b/silabs_examples/credentials/host/app/config/zigbee_core_cli_config.h @@ -0,0 +1,28 @@ +/***************************************************************************//** + * @brief Zigbee Application Framework common component configuration header. + *\n******************************************************************************* + * # License + * Copyright 2021 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// Zigbee core CLI configuration +// Event Debug Info <0-1> +// Default: False +// Enable/Disable debug info for the "events" CLI command. +// Debug info includes event name, nwk index, endpoint and remaining time. +#define SL_ZIGBEE_EVENT_DEBUG_ENABLED (0) + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/host/app/config/zigbee_device_config.h b/silabs_examples/credentials/host/app/config/zigbee_device_config.h new file mode 100644 index 00000000000000..12116b9050799d --- /dev/null +++ b/silabs_examples/credentials/host/app/config/zigbee_device_config.h @@ -0,0 +1,118 @@ +/***************************************************************************//** + * @brief ZigBee device configuration header. + * + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// <<< Use Configuration Wizard in Context Menu >>> + +// ZigBee device configuration + +#ifndef SILABS_ZIGBEE_DEVICE_CONFIG_H +#define SILABS_ZIGBEE_DEVICE_CONFIG_H + +// Mirrors the legacy EmberNodeType enum +#define SLI_ZIGBEE_NETWORK_DEVICE_TYPE_COORDINATOR_OR_ROUTER 0x01 +#define SLI_ZIGBEE_NETWORK_DEVICE_TYPE_ROUTER 0x02 +#define SLI_ZIGBEE_NETWORK_DEVICE_TYPE_END_DEVICE 0x03 +#define SLI_ZIGBEE_NETWORK_DEVICE_TYPE_SLEEPY_END_DEVICE 0x04 + +// Mirrors the legacy EmberAfSecurityProfile enum +#define SLI_ZIGBEE_NETWORK_SECURITY_TYPE_NO_SECURITY 0x00 +#define SLI_ZIGBEE_NETWORK_SECURITY_TYPE_HA 0x01 +#define SLI_ZIGBEE_NETWORK_SECURITY_TYPE_HA_1_2 0x02 +#define SLI_ZIGBEE_NETWORK_SECURITY_TYPE_SE_TEST 0x03 +#define SLI_ZIGBEE_NETWORK_SECURITY_TYPE_SE_FULL 0x04 +#define SLI_ZIGBEE_NETWORK_SECURITY_TYPE_3_0 0x05 +#define SLI_ZIGBEE_NETWORK_SECURITY_TYPE_CUSTOM 0xFF + +#define SLI_ZIGBEE_DEFAULT_NETWORK_PRIMARY 0x00 +#define SLI_ZIGBEE_DEFAULT_NETWORK_SECONDARY 0x01 + +#define SLI_ZIGBEE_TX_POWER_MODE_DEFAULT EMBER_TX_POWER_MODE_DEFAULT +#define SLI_ZIGBEE_TX_POWER_MODE_BOOST EMBER_TX_POWER_MODE_BOOST +#define SLI_ZIGBEE_TX_POWER_MODE_ALTERNATE EMBER_TX_POWER_MODE_ALTERNATE +#define SLI_ZIGBEE_TX_POWER_MODE_BOOST_AND_ALTERNATE EMBER_TX_POWER_MODE_BOOST_AND_ALTERNATE +#define SLI_ZIGBEE_TX_POWER_MODE_USE_TOKEN EMBER_TX_POWER_MODE_USE_TOKEN + +// Primary Network Device Type +// The ZigBee Primary Network Device Type +// Coordinator or Router +// Router +// End Device +// Sleepy End Device +// Default: SLI_ZIGBEE_NETWORK_DEVICE_TYPE_ROUTER +#define SLI_ZIGBEE_PRIMARY_NETWORK_DEVICE_TYPE SLI_ZIGBEE_NETWORK_DEVICE_TYPE_ROUTER + +// Primary Network Security Type +// The ZigBee Primary Network Security Type +// No Security +// Home Automation Security +// Home Automation Security 1.2 +// Smart Energy Security Full (compliant) +// Smart Energy Security Test (dev only) +// ZigBee 3.0 Security +// Custom Security +// Default: SLI_ZIGBEE_NETWORK_SECURITY_TYPE_3_0 +#define SLI_ZIGBEE_PRIMARY_NETWORK_SECURITY_TYPE SLI_ZIGBEE_NETWORK_SECURITY_TYPE_3_0 + +// Enable Secondary Network +// Default: 0 +// Enable/Disable the ZigBee Secondary Network +#define SLI_ZIGBEE_SECONDARY_NETWORK_ENABLED (0) + +// Secondary Network Device Type +// The ZigBee Secondary Network Device Type +// Coordinator or Router +// Router +// End Device +// Sleepy End Device +// Default: SLI_ZIGBEE_NETWORK_DEVICE_TYPE_ROUTER +#define SLI_ZIGBEE_SECONDARY_NETWORK_DEVICE_TYPE SLI_ZIGBEE_NETWORK_DEVICE_TYPE_SLEEPY_END_DEVICE + +// Secondary Network Security Type +// The ZigBee Secondary Network Security Type +// No Security +// Home Automation Security +// Smart Energy Security Full (compliant) +// Smart Energy Security Test (dev only) +// ZigBee 3.0 Security +// Custom Security +// Default: SLI_ZIGBEE_NETWORK_SECURITY_TYPE_3_0 +#define SLI_ZIGBEE_SECONDARY_NETWORK_SECURITY_TYPE SLI_ZIGBEE_NETWORK_SECURITY_TYPE_3_0 + +// Default Network +// The ZigBee Default Network +// Primary Network +// Secondary Network +// Default: SLI_ZIGBEE_NETWORK_SECURITY_TYPE_3_0 +#define SLI_ZIGBEE_DEFAULT_NETWORK SLI_ZIGBEE_DEFAULT_NETWORK_PRIMARY + +// TX power mode +// The ZigBee node transmission power mode +// Default +// Boost +// Alternate +// Boost & Alternate +// Use token +// Default: SLI_ZIGBEE_TX_POWER_MODE_USE_TOKEN +#define SLI_ZIGBEE_TX_POWER_MODE SLI_ZIGBEE_TX_POWER_MODE_USE_TOKEN + +// + +#endif // SILABS_ZIGBEE_DEVICE_CONFIG_H + +// + +// <<< end of configuration section >>> diff --git a/silabs_examples/credentials/host/app/host-creds.Makefile b/silabs_examples/credentials/host/app/host-creds.Makefile new file mode 100644 index 00000000000000..e29fc9a051c7a8 --- /dev/null +++ b/silabs_examples/credentials/host/app/host-creds.Makefile @@ -0,0 +1,170 @@ +#################################################################### +# User Makefile for Host Systems # +# This will not be overwritten. Edit as desired. # +#################################################################### +.SUFFIXES: # ignore builtin rules +.PHONY: all debug release clean + +# Default goal +all: debug + +#################################################################### +# Definitions # +#################################################################### + +# Values set by the initial generation +PROJECTNAME = host-creds + +#################################################################### +# Definitions of toolchain. # +# You might need to do changes to match your system setup # +#################################################################### + +AR = "ar" +CC = "gcc" +CXX = "g++" +LD = "gcc" +RM = "rm" + +# Command output is hidden by default, it can be enabled by +# setting VERBOSE=true on the commandline. +ifeq ($(VERBOSE),) + ECHO = @ +endif + +# Build Directories +BUILD_DIR = build +LST_DIR = lst + +ifneq ($(filter $(MAKECMDGOALS),release),) + OUTPUT_DIR = $(BUILD_DIR)/release +else + OUTPUT_DIR = $(BUILD_DIR)/debug +endif + +# Values that should be appended by the sub-makefiles +C_SOURCE_FILES = +CXX_SOURCE_FILES = +ASM_SOURCE_FILES = + +LIBS = + +C_DEFS = +ASM_DEFS = + +INCLUDES = + +C_FLAGS = +C_FLAGS_DEBUG = +C_FLAGS_RELEASE = +CXX_FLAGS = +CXX_FLAGS_DEBUG = +CXX_FLAGS_RELEASE = +ASM_FLAGS = +ASM_FLAGS_DEBUG = +ASM_FLAGS_RELEASE = +LD_FLAGS = + +OBJS = + +#################################################################### +# Include sub-makefiles # +# Define a makefile here to add files/settings to the build. # +#################################################################### +-include host-creds.project.mak + + +#################################################################### +# Rules # +#################################################################### + +# -MMD : Don't generate dependencies on system header files. +# -MP : Add phony targets, useful when a h-file is removed from a project. +# -MF : Specify a file to write the dependencies to. +DEPFLAGS = -MMD -MP -MF $(@:.o=.d) + +CSOURCES = $(notdir $(C_SOURCE_FILES)) +CXXSOURCES = $(notdir $(filter %.cpp, $(CXX_SOURCE_FILES))) +CCSOURCES = $(notdir $(filter %.cc, $(CXX_SOURCE_FILES))) +ASMSOURCES_s = $(notdir $(filter %.s, $(ASM_SOURCE_FILES))) +ASMSOURCES_S = $(notdir $(filter %.S, $(ASM_SOURCE_FILES))) + +COBJS = $(addprefix $(OUTPUT_DIR)/,$(CSOURCES:.c=.o)) +CXXOBJS = $(addprefix $(OUTPUT_DIR)/,$(CXXSOURCES:.cpp=.o)) +CCOBJS = $(addprefix $(OUTPUT_DIR)/,$(CCSOURCES:.cc=.o)) +ASMOBJS_s = $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_s:.s=.o)) +ASMOBJS_S = $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_S:.S=.o)) +OBJS += $(COBJS) $(CXXOBJS) $(CCOBJS) $(ASMOBJS_s) $(ASMOBJS_S) + +CDEPS += $(addprefix $(OUTPUT_DIR)/,$(CSOURCES:.c=.d)) +CXXDEPS += $(addprefix $(OUTPUT_DIR)/,$(CXXSOURCES:.cpp=.d)) +CXXDEPS += $(addprefix $(OUTPUT_DIR)/,$(CCSOURCES:.cc=.d)) +ASMDEPS_s += $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_s:.s=.d)) +ASMDEPS_S += $(addprefix $(OUTPUT_DIR)/,$(ASMSOURCES_S:.S=.d)) + +C_PATHS = $(subst \,/,$(sort $(dir $(C_SOURCE_FILES)))) +CXX_PATHS = $(subst \,/,$(sort $(dir $(CXX_SOURCE_FILES)))) +ASM_PATHS = $(subst \,/,$(sort $(dir $(ASM_SOURCE_FILES)))) + +vpath %.c $(C_PATHS) +vpath %.cpp $(CXX_PATHS) +vpath %.cc $(CXX_PATHS) +vpath %.s $(ASM_PATHS) +vpath %.S $(ASM_PATHS) + +override CFLAGS = $(C_FLAGS) $(C_DEFS) $(INCLUDES) $(DEPFLAGS) +override CXXFLAGS = $(CXX_FLAGS) $(C_DEFS) $(INCLUDES) $(DEPFLAGS) +override ASMFLAGS = $(ASM_FLAGS) $(ASM_DEFS) $(INCLUDES) $(DEPFLAGS) + +debug: C_FLAGS += $(C_FLAGS_DEBUG) +debug: CXX_FLAGS += $(CXX_FLAGS_DEBUG) +debug: ASM_FLAGS += $(ASM_FLAGS_DEBUG) +debug: $(OUTPUT_DIR)/$(PROJECTNAME).out + +release: C_FLAGS += $(C_FLAGS_RELEASE) +release: CXX_FLAGS += $(CXX_FLAGS_RELEASE) +release: ASM_FLAGS += $(ASM_FLAGS_RELEASE) +release: $(OUTPUT_DIR)/$(PROJECTNAME).out + +# include auto-generated dependency files (explicit rules) +ifneq (clean,$(findstring clean, $(MAKECMDGOALS))) +-include $(CDEPS) +-include $(CXXDEPS) +-include $(ASMDEPS_s) +-include $(ASMDEPS_S) +endif + +$(OUTPUT_DIR)/$(PROJECTNAME).out: $(OBJS) $(LIB_FILES) + @echo 'Linking $(OUTPUT_DIR)/$(PROJECTNAME)' + $(ECHO)$(LD) $(LD_FLAGS) $(OBJS) $(LIBS) -o $(OUTPUT_DIR)/$(PROJECTNAME) + @echo 'Done.' + +$(OBJS): + +$(OUTPUT_DIR)/%.o: %.c + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.cpp + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CXX) $(CXXFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.cc + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CXX) $(CXXFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.s + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $< + +$(OUTPUT_DIR)/%.o: %.S + @echo 'Building $<' + @mkdir -p $(@D) + $(ECHO)$(CC) $(ASMFLAGS) -c -o $@ $< + +clean: + $(RM) -rf $(BUILD_DIR) diff --git a/silabs_examples/credentials/host/app/host-creds.project.mak b/silabs_examples/credentials/host/app/host-creds.project.mak new file mode 100644 index 00000000000000..a5c7645ef62936 --- /dev/null +++ b/silabs_examples/credentials/host/app/host-creds.project.mak @@ -0,0 +1,858 @@ +#################################################################### +# Automatically-generated file. Do not edit! # +# Makefile Version 10 # +#################################################################### + +UNAME:=$(shell uname -s | sed -e 's/^\(CYGWIN\).*/\1/' | sed -e 's/^\(MINGW\).*/\1/') +ifeq ($(UNAME),MINGW) +# Translate "C:/super" into "/C/super" for MinGW make. +SDK_PATH := /$(shell echo $(BASE_SDK_PATH) | sed s/://) +endif +SDK_PATH ?= $(BASE_SDK_PATH) +COPIED_SDK_PATH ?= gecko_sdk_4.1.1 + +# This uses the explicit build rules below +PROJECT_SOURCE_FILES = + +C_SOURCE_FILES += $(filter %.c, $(PROJECT_SOURCE_FILES)) +CXX_SOURCE_FILES += $(filter %.cpp, $(PROJECT_SOURCE_FILES)) +CXX_SOURCE_FILES += $(filter %.cc, $(PROJECT_SOURCE_FILES)) +ASM_SOURCE_FILES += $(filter %.s, $(PROJECT_SOURCE_FILES)) +ASM_SOURCE_FILES += $(filter %.S, $(PROJECT_SOURCE_FILES)) +LIB_FILES += $(filter %.a, $(PROJECT_SOURCE_FILES)) + +C_DEFS += \ + '-DSL_COMPONENT_CATALOG_PRESENT=1' \ + '-DPLATFORM_HEADER="platform-header.h"' \ + '-DEZSP_HOST=1' \ + '-DGATEWAY_APP=1' \ + '-DUC_BUILD=1' \ + '-DEZSP_ASH=1' \ + '-DEZSP_UART=1' \ + '-DUSE_ZAP_CONFIG=1' \ + '-DCONFIGURATION_HEADER="app/framework/util/config.h"' + +ASM_DEFS += \ + '-DSL_COMPONENT_CATALOG_PRESENT=1' \ + '-DPLATFORM_HEADER="platform-header.h"' \ + '-DEZSP_HOST=1' \ + '-DGATEWAY_APP=1' \ + '-DUC_BUILD=1' \ + '-DEZSP_ASH=1' \ + '-DEZSP_UART=1' \ + '-DUSE_ZAP_CONFIG=1' \ + '-DCONFIGURATION_HEADER="app/framework/util/config.h"' + +INCLUDES += \ + -Iconfig \ + -Iautogen \ + -I.. \ + -I../zap \ + -I../../common \ + -I$(SDK_PATH)/platform/service/cli/inc \ + -I$(SDK_PATH)/platform/service/cli/src \ + -I$(SDK_PATH)/platform/CMSIS/Core/Include \ + -I$(SDK_PATH)/platform/emlib/inc \ + -I$(SDK_PATH)/platform/emlib/host/inc \ + -I$(SDK_PATH)/platform/common/inc \ + -I$(SDK_PATH)/platform/service/iostream/inc \ + -I$(SDK_PATH)/platform/service/legacy_common_ash/inc \ + -I$(SDK_PATH)/platform/service/legacy_hal/inc \ + -I$(SDK_PATH)/util/third_party/printf \ + -I$(SDK_PATH)/util/third_party/printf/inc \ + -I$(SDK_PATH)/util/silicon_labs/silabs_core \ + -I$(SDK_PATH)/util/silicon_labs/silabs_core/event_queue \ + -I$(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager \ + -I$(SDK_PATH)/platform/service/system/inc \ + -I$(SDK_PATH)/protocol/zigbee/app/util/serial \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/service-function \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print \ + -I$(SDK_PATH)/. \ + -I$(SDK_PATH)/protocol/zigbee \ + -I$(SDK_PATH)/protocol/zigbee/app/ezsp-host \ + -I$(SDK_PATH)/protocol/zigbee/app/util/gateway \ + -I$(SDK_PATH)/protocol/zigbee/app/util/ezsp \ + -I$(SDK_PATH)/protocol/zigbee/app/util/zigbee-framework \ + -I$(SDK_PATH)/protocol/zigbee/stack \ + -I$(SDK_PATH)/protocol/zigbee/stack/platform/host \ + -I$(SDK_PATH)/protocol/zigbee/stack/include \ + -I$(SDK_PATH)/platform/radio/mac \ + -I$(SDK_PATH)/platform/service/token_manager/inc \ + -I$(SDK_PATH)/protocol/zigbee/app/ezsp-host/ash \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/file-descriptor-dispatch \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/gateway \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/common \ + -I$(SDK_PATH)/platform/service/legacy_host/inc \ + -I$(SDK_PATH)/protocol/zigbee/stack/config \ + -I$(SDK_PATH)/protocol/zigbee/stack/zll \ + -I$(SDK_PATH)/protocol/zigbee/stack/core \ + -I$(SDK_PATH)/platform/service/legacy_printf/inc \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/signature-decode \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/include \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/util \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/security \ + -I$(SDK_PATH)/protocol/zigbee/app/util/counters \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/cli \ + -I$(SDK_PATH)/protocol/zigbee/app/util/common \ + -I$(SDK_PATH)/protocol/zigbee/app/util/security \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/plugin/ota-storage-common \ + -I$(SDK_PATH)/protocol/zigbee/app/framework/plugin/zcl-framework-core + +GROUP_START = +GROUP_END = + +PROJECT_LIBS = \ + -lpthread \ + -lc \ + -lm + +LIBS += $(GROUP_START) $(PROJECT_LIBS) $(GROUP_END) + +LIB_FILES += $(filter %.a, $(PROJECT_LIBS)) + +C_FLAGS += \ + -std=c99 \ + -Wall \ + -Wextra \ + -Os \ + -Wno-unused-parameter \ + -Wno-missing-field-initializers \ + -Wno-missing-braces \ + -Wno-format + +CXX_FLAGS += \ + -std=c++11 \ + -Wall \ + -Wextra \ + -Os \ + -Wno-unused-parameter \ + -Wno-missing-field-initializers \ + -Wno-missing-braces \ + -Wno-format + +ASM_FLAGS += \ + +LD_FLAGS += \ + + +#################################################################### +# SDK Build Rules # +#################################################################### +$(OUTPUT_DIR)/sdk/platform/common/src/sl_assert.o: $(SDK_PATH)/platform/common/src/sl_assert.c + @echo 'Building $(SDK_PATH)/platform/common/src/sl_assert.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/common/src/sl_assert.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_assert.d +OBJS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_assert.o + +$(OUTPUT_DIR)/sdk/platform/common/src/sl_slist.o: $(SDK_PATH)/platform/common/src/sl_slist.c + @echo 'Building $(SDK_PATH)/platform/common/src/sl_slist.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/common/src/sl_slist.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_slist.d +OBJS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_slist.o + +$(OUTPUT_DIR)/sdk/platform/common/src/sl_string.o: $(SDK_PATH)/platform/common/src/sl_string.c + @echo 'Building $(SDK_PATH)/platform/common/src/sl_string.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/common/src/sl_string.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_string.d +OBJS += $(OUTPUT_DIR)/sdk/platform/common/src/sl_string.o + +$(OUTPUT_DIR)/sdk/platform/service/cli/src/sl_cli.o: $(SDK_PATH)/platform/service/cli/src/sl_cli.c + @echo 'Building $(SDK_PATH)/platform/service/cli/src/sl_cli.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/cli/src/sl_cli.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/cli/src/sl_cli.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/cli/src/sl_cli.o + +$(OUTPUT_DIR)/sdk/platform/service/cli/src/sl_cli_arguments.o: $(SDK_PATH)/platform/service/cli/src/sl_cli_arguments.c + @echo 'Building $(SDK_PATH)/platform/service/cli/src/sl_cli_arguments.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/cli/src/sl_cli_arguments.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/cli/src/sl_cli_arguments.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/cli/src/sl_cli_arguments.o + +$(OUTPUT_DIR)/sdk/platform/service/cli/src/sl_cli_command.o: $(SDK_PATH)/platform/service/cli/src/sl_cli_command.c + @echo 'Building $(SDK_PATH)/platform/service/cli/src/sl_cli_command.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/cli/src/sl_cli_command.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/cli/src/sl_cli_command.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/cli/src/sl_cli_command.o + +$(OUTPUT_DIR)/sdk/platform/service/cli/src/sl_cli_input.o: $(SDK_PATH)/platform/service/cli/src/sl_cli_input.c + @echo 'Building $(SDK_PATH)/platform/service/cli/src/sl_cli_input.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/cli/src/sl_cli_input.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/cli/src/sl_cli_input.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/cli/src/sl_cli_input.o + +$(OUTPUT_DIR)/sdk/platform/service/cli/src/sl_cli_io.o: $(SDK_PATH)/platform/service/cli/src/sl_cli_io.c + @echo 'Building $(SDK_PATH)/platform/service/cli/src/sl_cli_io.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/cli/src/sl_cli_io.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/cli/src/sl_cli_io.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/cli/src/sl_cli_io.o + +$(OUTPUT_DIR)/sdk/platform/service/cli/src/sl_cli_threaded_host.o: $(SDK_PATH)/platform/service/cli/src/sl_cli_threaded_host.c + @echo 'Building $(SDK_PATH)/platform/service/cli/src/sl_cli_threaded_host.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/cli/src/sl_cli_threaded_host.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/cli/src/sl_cli_threaded_host.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/cli/src/sl_cli_threaded_host.o + +$(OUTPUT_DIR)/sdk/platform/service/cli/src/sl_cli_tokenize.o: $(SDK_PATH)/platform/service/cli/src/sl_cli_tokenize.c + @echo 'Building $(SDK_PATH)/platform/service/cli/src/sl_cli_tokenize.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/cli/src/sl_cli_tokenize.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/cli/src/sl_cli_tokenize.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/cli/src/sl_cli_tokenize.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream.o + +$(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_stdio.o: $(SDK_PATH)/platform/service/iostream/src/sl_iostream_stdio.c + @echo 'Building $(SDK_PATH)/platform/service/iostream/src/sl_iostream_stdio.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/iostream/src/sl_iostream_stdio.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_stdio.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/iostream/src/sl_iostream_stdio.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_common_ash/src/ash-common.o: $(SDK_PATH)/platform/service/legacy_common_ash/src/ash-common.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_common_ash/src/ash-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_common_ash/src/ash-common.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_common_ash/src/ash-common.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_common_ash/src/ash-common.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/crc.o: $(SDK_PATH)/platform/service/legacy_hal/src/crc.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/crc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/crc.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/crc.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/crc.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/ember-printf-convert.o: $(SDK_PATH)/platform/service/legacy_hal/src/ember-printf-convert.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/ember-printf-convert.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/ember-printf-convert.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/ember-printf-convert.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/ember-printf-convert.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/micro_host.o: $(SDK_PATH)/platform/service/legacy_hal/src/micro_host.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/micro_host.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/micro_host.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/micro_host.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/micro_host.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/random.o: $(SDK_PATH)/platform/service/legacy_hal/src/random.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/random.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/random.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/random.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/random.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/system-timer.o: $(SDK_PATH)/platform/service/legacy_hal/src/system-timer.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_hal/src/system-timer.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_hal/src/system-timer.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/system-timer.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_hal/src/system-timer.o + +$(OUTPUT_DIR)/sdk/platform/service/legacy_host/src/token.o: $(SDK_PATH)/platform/service/legacy_host/src/token.c + @echo 'Building $(SDK_PATH)/platform/service/legacy_host/src/token.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/legacy_host/src/token.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/legacy_host/src/token.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/legacy_host/src/token.o + +$(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_init.o: $(SDK_PATH)/platform/service/system/src/sl_system_init.c + @echo 'Building $(SDK_PATH)/platform/service/system/src/sl_system_init.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/system/src/sl_system_init.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_init.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_init.o + +$(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_process_action.o: $(SDK_PATH)/platform/service/system/src/sl_system_process_action.c + @echo 'Building $(SDK_PATH)/platform/service/system/src/sl_system_process_action.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/system/src/sl_system_process_action.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_process_action.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/system/src/sl_system_process_action.o + +$(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_def.o: $(SDK_PATH)/platform/service/token_manager/src/sl_token_def.c + @echo 'Building $(SDK_PATH)/platform/service/token_manager/src/sl_token_def.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/platform/service/token_manager/src/sl_token_def.c +CDEPS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_def.d +OBJS += $(OUTPUT_DIR)/sdk/platform/service/token_manager/src/sl_token_def.o + +# $(OUTPUT_DIR)/sdk/protocol/zigbee/app/ezsp-host/ash/ash-host-ui.o: $(SDK_PATH)/protocol/zigbee/app/ezsp-host/ash/ash-host-ui.c +# @echo 'Building $(SDK_PATH)/protocol/zigbee/app/ezsp-host/ash/ash-host-ui.c' +# @mkdir -p $(@D) +# $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/ezsp-host/ash/ash-host-ui.c +# CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/ezsp-host/ash/ash-host-ui.d +# OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/ezsp-host/ash/ash-host-ui.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/ezsp-host/ash/ash-host.o: $(SDK_PATH)/protocol/zigbee/app/ezsp-host/ash/ash-host.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/ezsp-host/ash/ash-host.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/ezsp-host/ash/ash-host.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/ezsp-host/ash/ash-host.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/ezsp-host/ash/ash-host.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/ezsp-host/ezsp-host-io.o: $(SDK_PATH)/protocol/zigbee/app/ezsp-host/ezsp-host-io.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/ezsp-host/ezsp-host-io.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/ezsp-host/ezsp-host-io.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/ezsp-host/ezsp-host-io.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/ezsp-host/ezsp-host-io.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/ezsp-host/ezsp-host-queues.o: $(SDK_PATH)/protocol/zigbee/app/ezsp-host/ezsp-host-queues.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/ezsp-host/ezsp-host-queues.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/ezsp-host/ezsp-host-queues.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/ezsp-host/ezsp-host-queues.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/ezsp-host/ezsp-host-queues.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/ezsp-host/ezsp-host-ui.o: $(SDK_PATH)/protocol/zigbee/app/ezsp-host/ezsp-host-ui.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/ezsp-host/ezsp-host-ui.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/ezsp-host/ezsp-host-ui.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/ezsp-host/ezsp-host-ui.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/ezsp-host/ezsp-host-ui.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/cli/core-cli.o: $(SDK_PATH)/protocol/zigbee/app/framework/cli/core-cli.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/cli/core-cli.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/cli/core-cli.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/cli/core-cli.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/cli/core-cli.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/cli/network-cli.o: $(SDK_PATH)/protocol/zigbee/app/framework/cli/network-cli.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/cli/network-cli.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/cli/network-cli.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/cli/network-cli.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/cli/network-cli.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/cli/option-cli.o: $(SDK_PATH)/protocol/zigbee/app/framework/cli/option-cli.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/cli/option-cli.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/cli/option-cli.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/cli/option-cli.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/cli/option-cli.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/cli/security-cli.o: $(SDK_PATH)/protocol/zigbee/app/framework/cli/security-cli.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/cli/security-cli.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/cli/security-cli.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/cli/security-cli.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/cli/security-cli.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/cli/zcl-cli.o: $(SDK_PATH)/protocol/zigbee/app/framework/cli/zcl-cli.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/cli/zcl-cli.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/cli/zcl-cli.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/cli/zcl-cli.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/cli/zcl-cli.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/cli/zdo-cli.o: $(SDK_PATH)/protocol/zigbee/app/framework/cli/zdo-cli.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/cli/zdo-cli.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/cli/zdo-cli.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/cli/zdo-cli.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/cli/zdo-cli.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_common.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_common.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_common.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_common.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_common.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_host_cb.o: $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_host_cb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_host_cb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/common/zigbee_app_framework_host_cb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_host_cb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/common/zigbee_app_framework_host_cb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin-host/ezsp/ezsp-cb.o: $(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/ezsp/ezsp-cb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/ezsp/ezsp-cb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/ezsp/ezsp-cb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin-host/ezsp/ezsp-cb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin-host/ezsp/ezsp-cb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin-host/file-descriptor-dispatch/file-descriptor-dispatch-cb.o: $(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/file-descriptor-dispatch/file-descriptor-dispatch-cb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/file-descriptor-dispatch/file-descriptor-dispatch-cb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/file-descriptor-dispatch/file-descriptor-dispatch-cb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin-host/file-descriptor-dispatch/file-descriptor-dispatch-cb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin-host/file-descriptor-dispatch/file-descriptor-dispatch-cb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin-host/file-descriptor-dispatch/file-descriptor-dispatch.o: $(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/file-descriptor-dispatch/file-descriptor-dispatch.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/file-descriptor-dispatch/file-descriptor-dispatch.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/file-descriptor-dispatch/file-descriptor-dispatch.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin-host/file-descriptor-dispatch/file-descriptor-dispatch.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin-host/file-descriptor-dispatch/file-descriptor-dispatch.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin-host/gateway/backchannel-support.o: $(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/gateway/backchannel-support.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/gateway/backchannel-support.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/gateway/backchannel-support.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin-host/gateway/backchannel-support.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin-host/gateway/backchannel-support.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin-host/gateway/gateway-cb.o: $(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/gateway/gateway-cb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/gateway/gateway-cb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/gateway/gateway-cb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin-host/gateway/gateway-cb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin-host/gateway/gateway-cb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin-host/gateway/gateway-support-cli.o: $(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/gateway/gateway-support-cli.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/gateway/gateway-support-cli.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/gateway/gateway-support-cli.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin-host/gateway/gateway-support-cli.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin-host/gateway/gateway-support-cli.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin-host/gateway/gateway-support.o: $(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/gateway/gateway-support.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/gateway/gateway-support.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/plugin-host/gateway/gateway-support.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin-host/gateway/gateway-support.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin-host/gateway/gateway-support.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.o: $(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/debug-print/sl_zigbee_debug_print.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/zcl-framework-core/zcl-framework-core-cb.o: $(SDK_PATH)/protocol/zigbee/app/framework/plugin/zcl-framework-core/zcl-framework-core-cb.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/plugin/zcl-framework-core/zcl-framework-core-cb.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/plugin/zcl-framework-core/zcl-framework-core-cb.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/zcl-framework-core/zcl-framework-core-cb.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/zcl-framework-core/zcl-framework-core-cb.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/zcl_cli/zigbee-zcl-cli.o: $(SDK_PATH)/protocol/zigbee/app/framework/plugin/zcl_cli/zigbee-zcl-cli.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/plugin/zcl_cli/zigbee-zcl-cli.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/plugin/zcl_cli/zigbee-zcl-cli.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/zcl_cli/zigbee-zcl-cli.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/zcl_cli/zigbee-zcl-cli.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/zcl_cli/zigbee-zcl-custom-cluster-cli.o: $(SDK_PATH)/protocol/zigbee/app/framework/plugin/zcl_cli/zigbee-zcl-custom-cluster-cli.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/plugin/zcl_cli/zigbee-zcl-custom-cluster-cli.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/plugin/zcl_cli/zigbee-zcl-custom-cluster-cli.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/zcl_cli/zigbee-zcl-custom-cluster-cli.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/zcl_cli/zigbee-zcl-custom-cluster-cli.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/zcl_cli/zigbee-zcl-global-cli.o: $(SDK_PATH)/protocol/zigbee/app/framework/plugin/zcl_cli/zigbee-zcl-global-cli.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/plugin/zcl_cli/zigbee-zcl-global-cli.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/plugin/zcl_cli/zigbee-zcl-global-cli.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/zcl_cli/zigbee-zcl-global-cli.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/plugin/zcl_cli/zigbee-zcl-global-cli.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/security/af-node.o: $(SDK_PATH)/protocol/zigbee/app/framework/security/af-node.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/security/af-node.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/security/af-node.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/security/af-node.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/security/af-node.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/security/af-security-common.o: $(SDK_PATH)/protocol/zigbee/app/framework/security/af-security-common.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/security/af-security-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/security/af-security-common.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/security/af-security-common.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/security/af-security-common.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/security/af-trust-center.o: $(SDK_PATH)/protocol/zigbee/app/framework/security/af-trust-center.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/security/af-trust-center.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/security/af-trust-center.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/security/af-trust-center.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/security/af-trust-center.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/security/crypto-state.o: $(SDK_PATH)/protocol/zigbee/app/framework/security/crypto-state.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/security/crypto-state.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/security/crypto-state.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/security/crypto-state.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/security/crypto-state.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/service-function/sl_service_function.o: $(SDK_PATH)/protocol/zigbee/app/framework/service-function/sl_service_function.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/service-function/sl_service_function.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/service-function/sl_service_function.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/service-function/sl_service_function.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/service-function/sl_service_function.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/signature-decode/sl_signature_decode.o: $(SDK_PATH)/protocol/zigbee/app/framework/signature-decode/sl_signature_decode.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/signature-decode/sl_signature_decode.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/signature-decode/sl_signature_decode.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/signature-decode/sl_signature_decode.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/signature-decode/sl_signature_decode.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/af-common.o: $(SDK_PATH)/protocol/zigbee/app/framework/util/af-common.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/util/af-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/util/af-common.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/af-common.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/af-common.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/af-event.o: $(SDK_PATH)/protocol/zigbee/app/framework/util/af-event.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/util/af-event.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/util/af-event.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/af-event.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/af-event.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/af-host.o: $(SDK_PATH)/protocol/zigbee/app/framework/util/af-host.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/util/af-host.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/util/af-host.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/af-host.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/af-host.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/attribute-size.o: $(SDK_PATH)/protocol/zigbee/app/framework/util/attribute-size.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/util/attribute-size.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/util/attribute-size.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/attribute-size.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/attribute-size.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/attribute-storage.o: $(SDK_PATH)/protocol/zigbee/app/framework/util/attribute-storage.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/util/attribute-storage.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/util/attribute-storage.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/attribute-storage.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/attribute-storage.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/attribute-table.o: $(SDK_PATH)/protocol/zigbee/app/framework/util/attribute-table.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/util/attribute-table.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/util/attribute-table.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/attribute-table.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/attribute-table.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/client-api.o: $(SDK_PATH)/protocol/zigbee/app/framework/util/client-api.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/util/client-api.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/util/client-api.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/client-api.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/client-api.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/global-callback.o: $(SDK_PATH)/protocol/zigbee/app/framework/util/global-callback.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/util/global-callback.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/util/global-callback.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/global-callback.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/global-callback.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/global-other-callback.o: $(SDK_PATH)/protocol/zigbee/app/framework/util/global-other-callback.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/util/global-other-callback.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/util/global-other-callback.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/global-other-callback.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/global-other-callback.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/message.o: $(SDK_PATH)/protocol/zigbee/app/framework/util/message.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/util/message.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/util/message.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/message.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/message.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/multi-network.o: $(SDK_PATH)/protocol/zigbee/app/framework/util/multi-network.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/util/multi-network.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/util/multi-network.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/multi-network.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/multi-network.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/print-formatter.o: $(SDK_PATH)/protocol/zigbee/app/framework/util/print-formatter.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/util/print-formatter.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/util/print-formatter.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/print-formatter.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/print-formatter.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/print.o: $(SDK_PATH)/protocol/zigbee/app/framework/util/print.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/util/print.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/util/print.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/print.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/print.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/process-cluster-message.o: $(SDK_PATH)/protocol/zigbee/app/framework/util/process-cluster-message.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/util/process-cluster-message.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/util/process-cluster-message.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/process-cluster-message.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/process-cluster-message.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/process-global-message.o: $(SDK_PATH)/protocol/zigbee/app/framework/util/process-global-message.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/util/process-global-message.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/util/process-global-message.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/process-global-message.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/process-global-message.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/service-discovery-common.o: $(SDK_PATH)/protocol/zigbee/app/framework/util/service-discovery-common.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/util/service-discovery-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/util/service-discovery-common.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/service-discovery-common.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/service-discovery-common.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/service-discovery-host.o: $(SDK_PATH)/protocol/zigbee/app/framework/util/service-discovery-host.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/util/service-discovery-host.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/util/service-discovery-host.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/service-discovery-host.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/service-discovery-host.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/time-util.o: $(SDK_PATH)/protocol/zigbee/app/framework/util/time-util.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/util/time-util.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/util/time-util.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/time-util.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/time-util.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/util.o: $(SDK_PATH)/protocol/zigbee/app/framework/util/util.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/framework/util/util.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/framework/util/util.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/util.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/framework/util/util.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/common/library.o: $(SDK_PATH)/protocol/zigbee/app/util/common/library.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/common/library.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/common/library.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/common/library.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/common/library.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/ezsp-callbacks.o: $(SDK_PATH)/protocol/zigbee/app/util/ezsp/ezsp-callbacks.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/ezsp/ezsp-callbacks.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/ezsp/ezsp-callbacks.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/ezsp-callbacks.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/ezsp-callbacks.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/ezsp-enum-decode.o: $(SDK_PATH)/protocol/zigbee/app/util/ezsp/ezsp-enum-decode.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/ezsp/ezsp-enum-decode.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/ezsp/ezsp-enum-decode.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/ezsp-enum-decode.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/ezsp-enum-decode.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/ezsp-frame-utilities.o: $(SDK_PATH)/protocol/zigbee/app/util/ezsp/ezsp-frame-utilities.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/ezsp/ezsp-frame-utilities.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/ezsp/ezsp-frame-utilities.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/ezsp-frame-utilities.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/ezsp-frame-utilities.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/ezsp.o: $(SDK_PATH)/protocol/zigbee/app/util/ezsp/ezsp.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/ezsp/ezsp.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/ezsp/ezsp.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/ezsp.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/ezsp.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.o: $(SDK_PATH)/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/secure-ezsp-stub.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/serial-interface-uart.o: $(SDK_PATH)/protocol/zigbee/app/util/ezsp/serial-interface-uart.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/ezsp/serial-interface-uart.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/ezsp/serial-interface-uart.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/serial-interface-uart.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/ezsp/serial-interface-uart.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/security/security-address-cache.o: $(SDK_PATH)/protocol/zigbee/app/util/security/security-address-cache.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/security/security-address-cache.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/security/security-address-cache.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/security/security-address-cache.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/security/security-address-cache.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/serial/linux-serial.o: $(SDK_PATH)/protocol/zigbee/app/util/serial/linux-serial.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/serial/linux-serial.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/serial/linux-serial.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/serial/linux-serial.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/serial/linux-serial.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/serial/sl_zigbee_command_interpreter.o: $(SDK_PATH)/protocol/zigbee/app/util/serial/sl_zigbee_command_interpreter.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/serial/sl_zigbee_command_interpreter.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/serial/sl_zigbee_command_interpreter.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/serial/sl_zigbee_command_interpreter.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/serial/sl_zigbee_command_interpreter.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/zigbee-framework/zigbee-device-common.o: $(SDK_PATH)/protocol/zigbee/app/util/zigbee-framework/zigbee-device-common.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/zigbee-framework/zigbee-device-common.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/zigbee-framework/zigbee-device-common.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/zigbee-framework/zigbee-device-common.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/zigbee-framework/zigbee-device-common.o + +$(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/zigbee-framework/zigbee-device-host.o: $(SDK_PATH)/protocol/zigbee/app/util/zigbee-framework/zigbee-device-host.c + @echo 'Building $(SDK_PATH)/protocol/zigbee/app/util/zigbee-framework/zigbee-device-host.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/protocol/zigbee/app/util/zigbee-framework/zigbee-device-host.c +CDEPS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/zigbee-framework/zigbee-device-host.d +OBJS += $(OUTPUT_DIR)/sdk/protocol/zigbee/app/util/zigbee-framework/zigbee-device-host.o + +$(OUTPUT_DIR)/sdk/util/silicon_labs/silabs_core/event_queue/event-queue.o: $(SDK_PATH)/util/silicon_labs/silabs_core/event_queue/event-queue.c + @echo 'Building $(SDK_PATH)/util/silicon_labs/silabs_core/event_queue/event-queue.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/silicon_labs/silabs_core/event_queue/event-queue.c +CDEPS += $(OUTPUT_DIR)/sdk/util/silicon_labs/silabs_core/event_queue/event-queue.d +OBJS += $(OUTPUT_DIR)/sdk/util/silicon_labs/silabs_core/event_queue/event-queue.o + +$(OUTPUT_DIR)/sdk/util/silicon_labs/silabs_core/memory_manager/sl_malloc.o: $(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager/sl_malloc.c + @echo 'Building $(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager/sl_malloc.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/silicon_labs/silabs_core/memory_manager/sl_malloc.c +CDEPS += $(OUTPUT_DIR)/sdk/util/silicon_labs/silabs_core/memory_manager/sl_malloc.d +OBJS += $(OUTPUT_DIR)/sdk/util/silicon_labs/silabs_core/memory_manager/sl_malloc.o + +$(OUTPUT_DIR)/sdk/util/third_party/printf/printf.o: $(SDK_PATH)/util/third_party/printf/printf.c + @echo 'Building $(SDK_PATH)/util/third_party/printf/printf.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/printf/printf.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/printf/printf.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/printf/printf.o + +$(OUTPUT_DIR)/sdk/util/third_party/printf/src/iostream_printf.o: $(SDK_PATH)/util/third_party/printf/src/iostream_printf.c + @echo 'Building $(SDK_PATH)/util/third_party/printf/src/iostream_printf.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ $(SDK_PATH)/util/third_party/printf/src/iostream_printf.c +CDEPS += $(OUTPUT_DIR)/sdk/util/third_party/printf/src/iostream_printf.d +OBJS += $(OUTPUT_DIR)/sdk/util/third_party/printf/src/iostream_printf.o + +$(OUTPUT_DIR)/project/_/_/common/creds.o: ../../common/creds.c + @echo 'Building ../../common/creds.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../../common/creds.c +CDEPS += $(OUTPUT_DIR)/project/_/_/common/creds.d +OBJS += $(OUTPUT_DIR)/project/_/_/common/creds.o + +$(OUTPUT_DIR)/project/_/host_creds.o: ../host_creds.c + @echo 'Building ../host_creds.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../host_creds.c +CDEPS += $(OUTPUT_DIR)/project/_/host_creds.d +OBJS += $(OUTPUT_DIR)/project/_/host_creds.o + +$(OUTPUT_DIR)/project/_/host_ui.o: ../host_ui.c + @echo 'Building ../host_ui.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../host_ui.c +CDEPS += $(OUTPUT_DIR)/project/_/host_ui.d +OBJS += $(OUTPUT_DIR)/project/_/host_ui.o + +$(OUTPUT_DIR)/project/_/main.o: ../main.c + @echo 'Building ../main.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ ../main.c +CDEPS += $(OUTPUT_DIR)/project/_/main.d +OBJS += $(OUTPUT_DIR)/project/_/main.o + +$(OUTPUT_DIR)/project/autogen/sl_cli_command_table.o: autogen/sl_cli_command_table.c + @echo 'Building autogen/sl_cli_command_table.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_cli_command_table.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_cli_command_table.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_cli_command_table.o + +$(OUTPUT_DIR)/project/autogen/sl_cli_instances.o: autogen/sl_cli_instances.c + @echo 'Building autogen/sl_cli_instances.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_cli_instances.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_cli_instances.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_cli_instances.o + +$(OUTPUT_DIR)/project/autogen/sl_cluster_service_gen.o: autogen/sl_cluster_service_gen.c + @echo 'Building autogen/sl_cluster_service_gen.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_cluster_service_gen.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_cluster_service_gen.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_cluster_service_gen.o + +$(OUTPUT_DIR)/project/autogen/sl_event_handler.o: autogen/sl_event_handler.c + @echo 'Building autogen/sl_event_handler.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_event_handler.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_event_handler.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_event_handler.o + +$(OUTPUT_DIR)/project/autogen/sl_iostream_handles.o: autogen/sl_iostream_handles.c + @echo 'Building autogen/sl_iostream_handles.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sl_iostream_handles.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sl_iostream_handles.d +OBJS += $(OUTPUT_DIR)/project/autogen/sl_iostream_handles.o + +$(OUTPUT_DIR)/project/autogen/sli_cli_hooks.o: autogen/sli_cli_hooks.c + @echo 'Building autogen/sli_cli_hooks.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/sli_cli_hooks.c +CDEPS += $(OUTPUT_DIR)/project/autogen/sli_cli_hooks.d +OBJS += $(OUTPUT_DIR)/project/autogen/sli_cli_hooks.o + +$(OUTPUT_DIR)/project/autogen/zigbee_common_callback_dispatcher.o: autogen/zigbee_common_callback_dispatcher.c + @echo 'Building autogen/zigbee_common_callback_dispatcher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/zigbee_common_callback_dispatcher.c +CDEPS += $(OUTPUT_DIR)/project/autogen/zigbee_common_callback_dispatcher.d +OBJS += $(OUTPUT_DIR)/project/autogen/zigbee_common_callback_dispatcher.o + +$(OUTPUT_DIR)/project/autogen/zigbee_host_callback_dispatcher.o: autogen/zigbee_host_callback_dispatcher.c + @echo 'Building autogen/zigbee_host_callback_dispatcher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/zigbee_host_callback_dispatcher.c +CDEPS += $(OUTPUT_DIR)/project/autogen/zigbee_host_callback_dispatcher.d +OBJS += $(OUTPUT_DIR)/project/autogen/zigbee_host_callback_dispatcher.o + +$(OUTPUT_DIR)/project/autogen/zigbee_stack_callback_dispatcher.o: autogen/zigbee_stack_callback_dispatcher.c + @echo 'Building autogen/zigbee_stack_callback_dispatcher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/zigbee_stack_callback_dispatcher.c +CDEPS += $(OUTPUT_DIR)/project/autogen/zigbee_stack_callback_dispatcher.d +OBJS += $(OUTPUT_DIR)/project/autogen/zigbee_stack_callback_dispatcher.o + +$(OUTPUT_DIR)/project/autogen/zigbee_zcl_callback_dispatcher.o: autogen/zigbee_zcl_callback_dispatcher.c + @echo 'Building autogen/zigbee_zcl_callback_dispatcher.c' + @mkdir -p $(@D) + $(ECHO)$(CC) $(CFLAGS) -c -o $@ autogen/zigbee_zcl_callback_dispatcher.c +CDEPS += $(OUTPUT_DIR)/project/autogen/zigbee_zcl_callback_dispatcher.d +OBJS += $(OUTPUT_DIR)/project/autogen/zigbee_zcl_callback_dispatcher.o + +# Automatically-generated Simplicity Studio Metadata +# Please do not edit or delete these lines! +# SIMPLICITY_STUDIO_METADATA=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=END_SIMPLICITY_STUDIO_METADATA +# END OF METADATA \ No newline at end of file diff --git a/silabs_examples/credentials/host/host_creds.c b/silabs_examples/credentials/host/host_creds.c new file mode 100644 index 00000000000000..ab765016c4a759 --- /dev/null +++ b/silabs_examples/credentials/host/host_creds.c @@ -0,0 +1,73 @@ +#include "host_creds.h" +#include +#include +#include + +EmberStatus ezspCustomFrame( + uint8_t payloadLength, + uint8_t *payload, + uint8_t *replyLength, + uint8_t *reply); + +static int creds_file_write(creds_file_t *file, const char *path) +{ + printf("Writting '%s' (%zu)...\n", path, file->size); + FILE *fp = fopen(path, "w+"); + fwrite(file->data, file->size, 1, fp); + fclose(fp); + return 0; +} + +//------------------------------------------------------------------------------ +// Public +//------------------------------------------------------------------------------ + +int host_creds_csr() +{ + printf("\n******** CSR REQUEST ********\n"); + + uint8_t payload[CREDS_FRAME_LENGTH_MAX]; + uint8_t reply[CREDS_FRAME_LENGTH_MAX]; + uint8_t reply_size = sizeof(reply); + uint8_t csr_buffer[CREDS_CSR_LENGTH_MAX]; + creds_file_t csr; + EmberStatus status; + int err = 0; + + ASSERT(!err, return err, "PAI read error %d", err); + + // CSR Request + printf("Generating CSR...\n"); + creds_file_init(&csr, csr_buffer, sizeof(csr_buffer)); + payload[0] = CREDS_COMMAND_CSR_GENERATE; + reply_size = sizeof(reply); + status = ezspCustomFrame(1, payload, &reply_size, reply); + ASSERT(!status && (2 == reply_size), return err, "CSR request error %d", err); + + size_t csr_size = ((reply[0] << 8) | reply[1]); + ASSERT(csr_size <= csr.max, return -1, "Invalid size: %zu > %zu\n", csr_size, csr.max); + + // Read CSR + printf("Reading CSR...\n"); + payload[0] = CREDS_COMMAND_CSR_READ; + while (EMBER_SUCCESS == status && csr.offset < csr_size) + { + reply_size = sizeof(reply); + status = ezspCustomFrame(1, payload, &reply_size, reply); + if (!status && (reply_size > 0) && (csr.offset + reply_size <= csr_size)) + { + memcpy(&csr.data[csr.offset], reply, reply_size); + csr.offset += reply_size; + } + } + + if (EMBER_SUCCESS == status && csr.offset > 0) + { + csr.size = csr.offset; + creds_file_write(&csr, host_option_get(APP_OPTION_CSR_FILENAME)); + return 0; + } + + printf("Status: 0x%02x (%d)\n", status, status); + return 1; +} diff --git a/silabs_examples/credentials/host/host_creds.h b/silabs_examples/credentials/host/host_creds.h new file mode 100644 index 00000000000000..5e288635afdbcd --- /dev/null +++ b/silabs_examples/credentials/host/host_creds.h @@ -0,0 +1,18 @@ +#ifndef MATTER_HOST_CREDS_H +#define MATTER_HOST_CREDS_H + +#include + +typedef enum host_option_ +{ + APP_OPTION_CSR_FILENAME = 0x01, + +} host_option_t; + +#define APP_OPTION_COUNT 6 + +const char *host_option_get(host_option_t option); + +int host_creds_csr(); + +#endif // MATTER_HOST_CREDS_H \ No newline at end of file diff --git a/silabs_examples/credentials/host/host_creds.slcp b/silabs_examples/credentials/host/host_creds.slcp new file mode 100644 index 00000000000000..169b6a91883761 --- /dev/null +++ b/silabs_examples/credentials/host/host_creds.slcp @@ -0,0 +1,58 @@ +project_name: "host-creds" +label: "Matter Credentials Host" +package: "Zigbee" +category: "Matter Tool" +quality: "production" + +description: > + Sample application to generate and flash Matter credentials into the current device. +author: "Silicon Laboratories, Inc." + +component: + - id: "cli" + instance: + - example + - id: "native" + - id: "iostream_stdio" + - id: "zigbee_ezsp" + - id: "zigbee_ezsp_uart" + - id: "zigbee_debug_print" + +configuration: + - name: SL_BOARD_ENABLE_VCOM + value: 1 + - name: SL_IOSTREAM_USART_VCOM_FLOW_CONTROL_TYPE + value: usartHwFlowControlCtsAndRts + - name: SL_CLI_MAX_INPUT_ARGUMENTS + value: 16 + - name: SL_CLI_PROMPT_STRING + value: "host> " + +source: + - path: "main.c" + - path: "host_ui.c" + - path: "host_creds.c" + +include: + - path: "./" + - path: "./zap" + - path: ../common + file_list: + - path: creds.h + - path: creds.c + +readme: + - path: ./README.md + +ui_hints: + highlight: + - path: README.md + focus: false + +filter: + - name: "Wireless Technology" + value: ["Zigbee"] + - name: "Device Type" + value: ["Host"] + - name: "Project Difficulty" + value: ["Advanced"] \ No newline at end of file diff --git a/silabs_examples/credentials/host/host_ui.c b/silabs_examples/credentials/host/host_ui.c new file mode 100644 index 00000000000000..53c33118b75368 --- /dev/null +++ b/silabs_examples/credentials/host/host_ui.c @@ -0,0 +1,626 @@ +/***************************************************************************/ /** + * @file + * @brief EZSP ASH Host user interface functions + * + * This includes command option parsing, trace and counter functions. + ******************************************************************************* + * # License + * Copyright 2018 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include PLATFORM_HEADER +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "stack/include/ember-types.h" +#include "ash-protocol.h" +#include "ash-common.h" +#include "app/ezsp-host/ash/ash-host.h" +#include "app/ezsp-host/ezsp-host-priv.h" +#include "app/ezsp-host/ezsp-host-io.h" +#include "app/ezsp-host/ezsp-host-queues.h" +#include "app/ezsp-host/ezsp-host-ui.h" +#include "app/util/gateway/backchannel.h" +#include "app/ezsp-host/ash/ash-host-ui.h" +#ifdef SL_COMPONENT_CATALOG_PRESENT +#include "sl_component_catalog.h" +#endif // SL_COMPONENT_CATALOG_PRESENT +#ifdef SL_CATALOG_ZIGBEE_OTA_STORAGE_POSIX_FILESYSTEM_PRESENT +#include "ota-storage-linux-config.h" +#endif // SL_CATALOG_ZIGBEE_OTA_STORAGE_POSIX_FILESYSTEM_PRESENT + +//------------------------------------------------------------------------------ +#include "sl_cli.h" +const sl_cli_command_entry_t sl_cli_zcl_command_table[] = { + {NULL, NULL, false}, +}; + +sl_cli_command_group_t sl_cli_zcl_command_group = + { + {NULL}, + false, + sl_cli_zcl_command_table}; + +//------------------------------------------------------------------------------ +#include "host_creds.h" + +#define APP_OPTION_LENGTH_MAX 256 + +char _host_option[APP_OPTION_LENGTH_MAX]; +char _host_options[APP_OPTION_COUNT][APP_OPTION_LENGTH_MAX] = {0}; + +static void host_option_set(host_option_t option, int index, const char *value) +{ + // printf("*value[%d]: '%s'", index, value); + if (option < APP_OPTION_COUNT) + { + strncpy(_host_options[option], value, strlen(value)); + } +} + +const char *host_option_get(host_option_t option) +{ + if (option < APP_OPTION_COUNT) + { + return _host_options[option]; + } + return NULL; +} + +//------------------------------------------------------------------------------ +// Preprocessor definitions + +#define ERR_LEN 128 // max length error message + +#define txControl (txBuffer[0]) // more descriptive aliases +#define rxControl (rxBuffer[0]) + +static const char options[] = "b:f:hv::i:n:o:p:r:s:t:x:d:R:"; +bool checkSerialPort(const char *portString); + +extern int optind, opterr, optopt; +extern char *optarg; +#ifdef SL_CATALOG_ZIGBEE_OTA_STORAGE_POSIX_FILESYSTEM_PRESENT +// To set the OTA file storage directory in runtime. +extern char defaultStorageDirectory[OTA_FILE_STORAGE_DIR_LENGTH]; +#endif // SL_CATALOG_ZIGBEE_OTA_STORAGE_POSIX_FILESYSTEM_PRESENT + + +bool ezspInternalProcessCommandOptions(int argc, char *argv[], char *errStr) +{ + int c; + char port[ASH_PORT_LEN]; + char devport[ASH_PORT_LEN]; + uint32_t baud; + uint8_t stops; + uint8_t trace; + uint8_t enable; + uint8_t portnum; + uint8_t cfg; + int blksize; + int optionCount = 0; + + if (!argv || !errStr) + { + snprintf(errStr, ERR_LEN, "Error: argv[] is %s and errStr is %s.\n", + argv ? "valid" : "NULL", + errStr ? "valid" : "NULL"); + return false; + } + + while (true) + { + c = getopt(argc, argv, options); + if (c == -1) + { + if (optind != argc) + { + snprintf(errStr, ERR_LEN, "Invalid option %s.\n", argv[optind]); + } + break; + } + + optionCount++; + + switch (c) + { + case 'b': + if (!optarg || (sscanf(optarg, "%u", &baud) != 1)) + { + snprintf(errStr, ERR_LEN, "Invalid baud rate %s.\n", + optarg ? optarg : "NULL"); + } + else + { + ashWriteConfig(baudRate, baud); + } + break; + case 'f': + if (!optarg) + { + snprintf(errStr, ERR_LEN, "Invalid flow control choice NULL.\n"); + break; + } + switch (*optarg) + { + case 'r': + ashWriteConfig(rtsCts, true); + break; + case 'x': + ashWriteConfig(rtsCts, false); + break; + default: + snprintf(errStr, ERR_LEN, "Invalid flow control choice %s.\n", optarg); + } + break; + case 'h': + case '?': + snprintf(errStr, ERR_LEN, "\n"); + break; + case 'i': + if (!optarg || (sscanf(optarg, "%hhu", &enable) != 1) || (enable > 1)) + { + snprintf(errStr, ERR_LEN, "Invalid input buffer choice %s.\n", + optarg ? optarg : "NULL"); + } + else + { + blksize = enable ? 256 : 1; + ashWriteConfig(inBlockLen, blksize); + } + break; + case 'n': + if (optionCount != 1) + { + snprintf(errStr, ERR_LEN, "NCP option, if present, must be first.\n"); + } + else if (!optarg || (sscanf(optarg, "%hhu", &cfg) != 1) || (cfg > 1)) + { + snprintf(errStr, ERR_LEN, "Invalid NCP config choice %s.\n", + optarg ? optarg : "NULL"); + } + else + { + ashSelectHostConfig(cfg); + } + break; + case 'o': + if (!optarg || (sscanf(optarg, "%hhu", &enable) != 1) || (enable > 1)) + { + snprintf(errStr, ERR_LEN, "Invalid output buffer choice %s.\n", + optarg ? optarg : "NULL"); + } + else + { + blksize = enable ? 256 : 1; + ashWriteConfig(outBlockLen, blksize); + } + break; + case 'p': + if (!optarg || (sscanf(optarg, "%39s", port) <= 0)) + { + snprintf(errStr, ERR_LEN, "Invalid serial port name %s.\n", + optarg ? optarg : "NULL"); + } + else if (strlen(port) >= ASH_PORT_LEN - 1) + { + snprintf(errStr, ERR_LEN, "Serial port name %s too long.\n", port); + } + else + { + // Handle some common variations specifying a serial port + if (port[0] == '/') + { + strncpy(devport, port, ASH_PORT_LEN - 1); +#ifdef __CYGWIN__ + } + else if (((strncmp("COM", port, 3) == 0) || (strncmp("com", port, 3) == 0)) && (sscanf(port + 3, "%hhu", &portnum) == 1) && (portnum > 0)) + { + snprintf(devport, ASH_PORT_LEN, "/dev/ttyS%hhu", portnum - 1); + } + else if ((sscanf(port, "%hhu", &portnum) == 1) && portnum) + { + snprintf(devport, ASH_PORT_LEN, "/dev/ttyS%hhu", portnum - 1); +#else + } + else if (sscanf(port, "%hhu", &portnum) == 1) + { + snprintf(devport, ASH_PORT_LEN, "/dev/ttyS%hhu", portnum); +#endif + } + else + { + strncpy(devport, "/dev/", 6); + devport[5] = '\0'; + strncat(devport, port, ASH_PORT_LEN - 1); + } + strncpy(ashHostConfig.serialPort, devport, ASH_PORT_LEN - 1); + ashHostConfig.serialPort[ASH_PORT_LEN - 1] = '\0'; + if (!checkSerialPort(ashHostConfig.serialPort)) + { + return false; + } + } + break; + case 'r': + if (!optarg) + { + snprintf(errStr, ERR_LEN, "Invalid reset method NULL.\n"); + break; + } + switch (*optarg) + { + case 'r': + ashWriteConfig(resetMethod, ASH_RESET_METHOD_RST); + break; + case 'd': + ashWriteConfig(resetMethod, ASH_RESET_METHOD_DTR); + break; + case 'c': + ashWriteConfig(resetMethod, ASH_RESET_METHOD_CUSTOM); + break; + default: + snprintf(errStr, ERR_LEN, "Invalid reset method %s.\n", optarg); + } + break; + case 's': + if (!optarg || (sscanf(optarg, "%hhu", &stops) != 1) || (stops < 1) || (stops > 2)) + { + snprintf(errStr, ERR_LEN, "Invalid number of stop bits %s.\n", + optarg ? optarg : "NULL"); + } + else + { + ashWriteConfig(stopBits, stops); + } + break; + case 't': + if (!optarg || (sscanf(optarg, "%hhu", &trace) != 1)) + { + snprintf(errStr, ERR_LEN, "Invalid trace flag value %s.\n", + optarg ? optarg : "NULL"); + } + else + { + ashWriteConfig(traceFlags, trace); + } + break; + case 'v': + if (!backchannelSupported) + { + fprintf(stderr, "Error: Backchannel support not compiled into this application.\n"); + exit(1); + } + backchannelEnable = true; + if (optarg) + { + int port = atoi(optarg); + if (port == 0 || port > 65535) + { + snprintf(errStr, ERR_LEN, "Invalid virtual ISA port number '%d'.\n", port); + } + backchannelSerialPortOffset = port; + } + break; + case 'x': + if (!optarg || (sscanf(optarg, "%hhu", &enable) != 1) || (enable > 1)) + { + snprintf(errStr, ERR_LEN, "Invalid randomization choice %s.\n", + optarg ? optarg : "NULL"); + } + else + { + ashWriteConfig(randomize, enable); + } + break; + case 'R': + if (!optarg || !strncpy(_host_option, optarg, sizeof(_host_option))) + { + snprintf(errStr, ERR_LEN, "Invalid CSR %s.\n", optarg ? optarg : "NULL"); + } + else + { + host_option_set(APP_OPTION_CSR_FILENAME, optind, _host_option); + } + break; + break; + default: + assert(1); + break; + } // end of switch (c) + } // end while + return true; +} + +//------------------------------------------------------------------------------ +// Counter functions + +void ashPrintCounters(AshCount *counters, bool clear) +{ + AshCount a = *counters; + + if (clear) + { + ashClearCounters(counters); + } + printf("Host Counts Received Transmitted\n"); + printf("Total bytes %10d %10d\n", a.rxBytes, a.txBytes); + printf("DATA bytes %10d %10d\n", a.rxData, a.txData); + printf("I/O blocks %10d %10d\n\n", a.rxBlocks, a.txBlocks); + printf("Total frames %10d %10d\n", a.rxAllFrames, a.txAllFrames); + printf("DATA frames %10d %10d\n", a.rxDataFrames, a.txDataFrames); + printf("ACK frames %10d %10d\n", a.rxAckFrames, a.txAckFrames); + printf("NAK frames %10d %10d\n", a.rxNakFrames, a.txNakFrames); + printf("Retry frames %10d %10d\n", a.rxReDataFrames, a.txReDataFrames); + printf("Cancelled %10d %10d\n", a.rxCancelled, a.txCancelled); + printf("nRdy frames %10d %10d\n", a.rxN1Frames, a.txN1Frames); + + printf("\nHost Receive Errors\n"); + printf("CRC errors %10d\n", a.rxCrcErrors); + printf("Comm errors %10d\n", a.rxCommErrors); + printf("Length < minimum %10d\n", a.rxTooShort); + printf("Length > maximum %10d\n", a.rxTooLong); + printf("Bad controls %10d\n", a.rxBadControl); + printf("Bad lengths %10d\n", a.rxBadLength); + printf("Bad ACK numbers %10d\n", a.rxBadAckNumber); + printf("Out of buffers %10d\n", a.rxNoBuffer); + printf("Retry dupes %10d\n", a.rxDuplicates); + printf("Out of sequence %10d\n", a.rxOutOfSequence); + printf("ACK timeouts %10d\n", a.rxAckTimeouts); +} + +void ashCountFrame(bool sent) +{ + uint8_t control; + + if (sent) + { + control = readTxControl(); + BUMP_HOST_COUNTER(txAllFrames); + } + else + { + control = readRxControl(); + BUMP_HOST_COUNTER(rxAllFrames); + } + if ((control & ASH_DFRAME_MASK) == ASH_CONTROL_DATA) + { + if (sent) + { + if (control & ASH_RFLAG_MASK) + { + BUMP_HOST_COUNTER(txReDataFrames); + } + else + { + BUMP_HOST_COUNTER(txDataFrames); + } + } + else + { + if (control & ASH_RFLAG_MASK) + { + BUMP_HOST_COUNTER(rxReDataFrames); + } + else + { + BUMP_HOST_COUNTER(rxDataFrames); + } + } + } + else if ((control & ASH_SHFRAME_MASK) == ASH_CONTROL_ACK) + { + if (sent) + { + BUMP_HOST_COUNTER(txAckFrames); + if (control & ASH_NFLAG_MASK) + { + BUMP_HOST_COUNTER(txN1Frames); + } + else + { + BUMP_HOST_COUNTER(txN0Frames); + } + } + else + { + BUMP_HOST_COUNTER(rxAckFrames); + if (control & ASH_NFLAG_MASK) + { + BUMP_HOST_COUNTER(rxN1Frames); + } + else + { + BUMP_HOST_COUNTER(rxN0Frames); + } + } + } + else if ((control & ASH_SHFRAME_MASK) == ASH_CONTROL_NAK) + { + if (sent) + { + BUMP_HOST_COUNTER(txNakFrames); + if (control & ASH_NFLAG_MASK) + { + BUMP_HOST_COUNTER(txN1Frames); + } + else + { + BUMP_HOST_COUNTER(txN0Frames); + } + } + else + { + BUMP_HOST_COUNTER(rxNakFrames); + if (control & ASH_NFLAG_MASK) + { + BUMP_HOST_COUNTER(rxN1Frames); + } + else + { + BUMP_HOST_COUNTER(rxN0Frames); + } + } + } +} + +void ashClearCounters(AshCount *counters) +{ + *counters = zeroAshCount; +} + +//------------------------------------------------------------------------------ +// Trace output functions + +static void ashPrintFrame(uint8_t c) +{ + if ((c & ASH_DFRAME_MASK) == ASH_CONTROL_DATA) + { + if (c & ASH_RFLAG_MASK) + { + ezspDebugPrintf("DATA(%d,%d)", ASH_GET_FRMNUM(c), ASH_GET_ACKNUM(c)); + } + else + { + ezspDebugPrintf("data(%d,%d)", ASH_GET_FRMNUM(c), ASH_GET_ACKNUM(c)); + } + } + else if ((c & ASH_SHFRAME_MASK) == ASH_CONTROL_ACK) + { + if (ASH_GET_NFLAG(c)) + { + ezspDebugPrintf("ack(%d)- ", ASH_GET_ACKNUM(c)); + } + else + { + ezspDebugPrintf("ack(%d)+ ", ASH_GET_ACKNUM(c)); + } + } + else if ((c & ASH_SHFRAME_MASK) == ASH_CONTROL_NAK) + { + if (ASH_GET_NFLAG(c)) + { + ezspDebugPrintf("NAK(%d)- ", ASH_GET_ACKNUM(c)); + } + else + { + ezspDebugPrintf("NAK(%d)+ ", ASH_GET_ACKNUM(c)); + } + } + else if (c == ASH_CONTROL_RST) + { + ezspDebugPrintf("RST "); + } + else if (c == ASH_CONTROL_RSTACK) + { + ezspDebugPrintf("RSTACK "); + } + else if (c == ASH_CONTROL_ERROR) + { + ezspDebugPrintf("ERROR "); + } + else + { + ezspDebugPrintf("???? 0x%02X", c); + } +} + +static void ashPrintStatus(void) +{ + ezspDebugPrintf(" Ar=%d At=%d Ft=%d Fr=%d Frt=%d Ql=%d To=%d Tp=%d Bf=%d", + readAckRx(), readAckTx(), readFrmTx(), readFrmRx(), readFrmReTx(), + ezspQueueLength(&reTxQueue), + readAshTimeouts(), ashGetAckPeriod(), ezspFreeListLength(&rxFree)); +} + +void ashTraceFrame(bool sent) +{ + uint8_t flags; + + ashCountFrame(sent); + flags = ashReadConfig(traceFlags); + if (flags & (TRACE_FRAMES_BASIC | TRACE_FRAMES_VERBOSE)) + { + ezspPrintElapsedTime(); + if (sent) + { + ezspDebugPrintf("Tx "); + ashPrintFrame(readTxControl()); + if (flags & TRACE_FRAMES_VERBOSE) + { + ashPrintStatus(); + } + ezspDebugPrintf(" \r\n"); + } + else + { + ezspDebugPrintf(" "); + ashPrintFrame(readRxControl()); + if (flags & TRACE_FRAMES_VERBOSE) + { + ashPrintStatus(); + } + ezspDebugPrintf(" Rx\r\n"); + } + } +} + +void ashTraceEventRecdFrame(const char *string) +{ + if (ashReadConfig(traceFlags) & TRACE_EVENTS) + { + ezspPrintElapsedTime(); + ezspDebugPrintf("Rec'd frame: "); + ezspDebugPrintf("%s", string); + ezspDebugPrintf("\r\n"); + } +} + +void ashTraceEventTime(const char *string) +{ + if (ashReadConfig(traceFlags) & TRACE_EVENTS) + { + ezspPrintElapsedTime(); + ezspDebugPrintf("%s", string); + ezspDebugPrintf("\r\n"); + } +} + +void ashTraceDisconnected(uint8_t error) +{ + if (ashReadConfig(traceFlags) & TRACE_EVENTS) + { + ezspPrintElapsedTime(); + ezspDebugPrintf("ASH disconnected: %s\r\n", ezspErrorString(error)); + ezspDebugPrintf(" NCP status: %s\r\n", ezspErrorString(ncpError)); + ezspDebugFlush(); + } +} + +void ashTraceArray(uint8_t *name, uint8_t len, uint8_t *data) +{ + if (ashReadConfig(traceFlags) & TRACE_EVENTS) + { + ezspDebugPrintf("%s ", name); + while (len--) + { + ezspDebugPrintf(" %02X", *data++); + } + ezspDebugPrintf("\r\n"); + } +} diff --git a/silabs_examples/credentials/host/main.c b/silabs_examples/credentials/host/main.c new file mode 100644 index 00000000000000..cd1baccd0b6ef9 --- /dev/null +++ b/silabs_examples/credentials/host/main.c @@ -0,0 +1,53 @@ +/***************************************************************************/ /** +* @file main.c +* @brief main() function. +******************************************************************************* +* # License +* Copyright 2021 Silicon Laboratories Inc. www.silabs.com +******************************************************************************* +* +* The licensor of this software is Silicon Laboratories Inc. Your use of this +* software is governed by the terms of Silicon Labs Master Software License +* Agreement (MSLA) available at +* www.silabs.com/about-us/legal/master-software-license-agreement. This +* software is distributed to you in Source Code format and is governed by the +* sections of the MSLA applicable to Source Code. +* +******************************************************************************/ + +#include "host_creds.h" +#include "sl_component_catalog.h" +#include "sl_system_init.h" +#include "sl_system_process_action.h" +#include "af.h" + +#ifdef EMBER_TEST +int nodeMain(void) +#else +int main(int argc, char *argv[]) +#endif +{ +#ifndef EMBER_TEST + { + // Initialize ezspProcessCommandOptions and gatewayBackchannelStart + // for host apps running on hardware. + int returnCode; + if (emberAfMainStartCallback(&returnCode, argc, argv)) + { + return returnCode; + } + } +#endif // EMBER_TEST + + // Initialize Silicon Labs device, system, service(s) and protocol stack(s). + // Note that if the kernel is present, processing task(s) will be created by + // this call. + sl_system_init(); + + // Do not remove this call: Silicon Labs components process action routine + // must be called from the super loop. + sl_system_process_action(); + + // Application process. + return host_creds_csr(); +} diff --git a/silabs_examples/credentials/host/zap/zap-cli.c b/silabs_examples/credentials/host/zap/zap-cli.c new file mode 100644 index 00000000000000..ff6d5085e3ae25 --- /dev/null +++ b/silabs_examples/credentials/host/zap/zap-cli.c @@ -0,0 +1,2084 @@ +/***************************************************************************//** + * @file zap-cli.c + * @brief Generated file for zcl cli using ZAP. Do not update file manually. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include "sl_component_catalog.h" + +#ifdef SL_CATALOG_ZIGBEE_ZCL_CLI_PRESENT + +#include +#include "sl_cli_config.h" +#include "sl_cli_command.h" +#include "sl_cli.h" +#ifdef SL_CATALOG_ZIGBEE_DEBUG_PRINT_PRESENT +#include "sl_zigbee_debug_print.h" +#endif // SL_CATALOG_ZIGBEE_DEBUG_PRINT_PRESENT +#include "zap-type.h" +#include "zap-id.h" +#include "af.h" +#include "zap-config.h" + +extern void sli_zigbee_zcl_simple_command(uint8_t frameControl, + uint16_t clusterId, + uint8_t commandId, + sl_cli_command_arg_t *arguments, + uint8_t *argumentTypes); +extern sl_cli_command_info_t cli_cmd_zcl_global_group; +extern sl_cli_command_info_t cli_cmd_zcl_mfg_code_command; +extern sl_cli_command_info_t cli_cmd_zcl_time_command; +extern sl_cli_command_info_t cli_cmd_zcl_use_next_sequence_command; +extern sl_cli_command_info_t cli_cmd_zcl_x_default_resp_command; +extern sl_cli_command_info_t cli_cmd_zcl_test_response_on_command; +extern sl_cli_command_info_t cli_cmd_zcl_test_response_off_command; +#if defined(ZCL_USING_IDENTIFY_CLUSTER_SERVER) || defined(ZCL_USING_IDENTIFY_CLUSTER_CLIENT) +extern sl_cli_command_info_t cli_cmd_zcl_identify_on_command; +extern sl_cli_command_info_t cli_cmd_zcl_identify_off_command; +#endif +#if defined(ZCL_USING_BACNET_PROTOCOL_TUNNEL_CLUSTER_CLIENT) || defined(ZCL_USING_BACNET_PROTOCOL_TUNNEL_CLUSTER_SERVER) +extern sl_cli_command_info_t cli_cmd_zcl_bacnet_transfer_whois_command; +#endif +#if defined(ZCL_USING_TUNNELING_CLUSTER_CLIENT) || defined(ZCL_USING_TUNNELING_CLUSTER_SERVER) +extern sl_cli_command_info_t cli_cmd_zcl_tunneling_random_to_server_command; +extern sl_cli_command_info_t cli_cmd_zcl_tunneling_transfer_to_server_command; +extern sl_cli_command_info_t cli_cmd_zcl_tunneling_random_to_client_command; +extern sl_cli_command_info_t cli_cmd_zcl_tunneling_transfer_to_client_command; +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +// Provide function declarations +void sli_zigbee_cli_zcl_groups_add_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_groups_add_if_id_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_clear_all_rfids_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_clear_holiday_schedule_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_clear_pin_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_clear_rfid_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_clear_weekday_schedule_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_thermostat_cws_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_clear_yearday_schedule_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_color_control_loop_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_identify_ez_mode_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_color_control_emovehue_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_color_control_emovetohue_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_color_control_emovetohueandsat_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_color_control_estephue_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_poll_control_stop_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_groups_get_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_get_holiday_schedule_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_get_log_record_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_get_pin_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_thermostat_grs_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_get_rfid_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_get_user_type_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_get_weekday_schedule_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_thermostat_gws_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_get_yearday_schedule_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_identify_id_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_identify_query_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_lock_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_level_control_move_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_color_control_movecolor_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_color_control_movecolortemp_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_color_control_movehue_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_color_control_movesat_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_color_control_movetocolor_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_color_control_movetocolortemp_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_color_control_movetohue_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_color_control_movetohueandsat_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_level_control_mv_to_level_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_level_control_o_mv_to_level_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_color_control_movetosat_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_level_control_o_move_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_on_off_off_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_on_off_offeffect_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_on_off_on_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_on_off_onrecall_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_on_off_ontimedoff_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_groups_rmall_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_groups_remove_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_basic_rtfd_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_set_holiday_schedule_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_poll_control_long_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_set_pin_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_set_rfid_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_poll_control_short_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_set_user_type_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_set_weekday_schedule_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_thermostat_sws_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_set_yearday_schedule_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_thermostat_set_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_level_control_step_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_color_control_stepcolor_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_color_control_stepcolortemp_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_color_control_stephue_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_color_control_stepsat_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_level_control_o_step_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_level_control_stop_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_color_control_stopmovestep_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_level_control_o_stop_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_toggle_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_on_off_toggle_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_identify_trigger_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_unlock_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_door_lock_unlock_with_timeout_command(sl_cli_command_arg_t *arguments); +void sli_zigbee_cli_zcl_groups_view_command(sl_cli_command_arg_t *arguments); + +// Command structs. Names are command names prefixed by cli_cmd_zcl_[cluster name]_cluster +static const sl_cli_command_info_t cli_cmd_zcl_groups_cluster_add_group = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_groups_add_command, + "Command description for AddGroup", + "group id" SL_CLI_UNIT_SEPARATOR "group name" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_STRING, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_groups_cluster_add_group_if_identifying = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_groups_add_if_id_command, + "Command description for AddGroupIfIdentifying", + "group id" SL_CLI_UNIT_SEPARATOR "group name" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_STRING, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_clear_all_rfids = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_clear_all_rfids_command, + "Clear all RFID ID codes on the lock for all users.", + "", + { + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_clear_holiday_schedule = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_clear_holiday_schedule_command, + "Clear a holiday schedule for a specific scheduleId", + "schedule id" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_clear_pin = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_clear_pin_command, + "Clear the PIN for a user with a specific user ID", + "user id" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_clear_rfid = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_clear_rfid_command, + "Clear the RFID ID for a user with a specific user ID", + "user id" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_clear_weekday_schedule = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_clear_weekday_schedule_command, + "Clear a weekday schedule for doorlock user activation for a specific schedule id and user id.", + "schedule id" SL_CLI_UNIT_SEPARATOR "user id" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_thermostat_cluster_clear_weekly_schedule = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_thermostat_cws_command, + "The Clear Weekly Schedule command is used to clear the weekly schedule.", + "", + { + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_clear_yearday_schedule = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_clear_yearday_schedule_command, + "Clear a yearday schedule for a specific scheduleId and userId", + "schedule id" SL_CLI_UNIT_SEPARATOR "user id" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_color_control_cluster_color_loop_set = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_color_control_loop_command, + "Command description for ColorLoopSet", + "update flags" SL_CLI_UNIT_SEPARATOR "action" SL_CLI_UNIT_SEPARATOR "direction" SL_CLI_UNIT_SEPARATOR "time" SL_CLI_UNIT_SEPARATOR "start hue" SL_CLI_UNIT_SEPARATOR "options mask" SL_CLI_UNIT_SEPARATOR "options override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_identify_cluster_ez_mode_invoke = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_identify_ez_mode_command, + "Invoke EZMode on an Identify Server", + "action" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_color_control_cluster_enhanced_move_hue = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_color_control_emovehue_command, + "Command description for EnhancedMoveHue", + "move mode" SL_CLI_UNIT_SEPARATOR "rate" SL_CLI_UNIT_SEPARATOR "options mask" SL_CLI_UNIT_SEPARATOR "options override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_color_control_cluster_enhanced_move_to_hue = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_color_control_emovetohue_command, + "Command description for EnhancedMoveToHue", + "enhanced hue" SL_CLI_UNIT_SEPARATOR "direction" SL_CLI_UNIT_SEPARATOR "transition time" SL_CLI_UNIT_SEPARATOR "options mask" SL_CLI_UNIT_SEPARATOR "options override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_color_control_cluster_enhanced_move_to_hue_and_saturation = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_color_control_emovetohueandsat_command, + "Command description for EnhancedMoveToHueAndSaturation", + "enhanced hue" SL_CLI_UNIT_SEPARATOR "saturation" SL_CLI_UNIT_SEPARATOR "transition time" SL_CLI_UNIT_SEPARATOR "options mask" SL_CLI_UNIT_SEPARATOR "options override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_color_control_cluster_enhanced_step_hue = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_color_control_estephue_command, + "Command description for EnhancedStepHue", + "step mode" SL_CLI_UNIT_SEPARATOR "step size" SL_CLI_UNIT_SEPARATOR "transition time" SL_CLI_UNIT_SEPARATOR "options mask" SL_CLI_UNIT_SEPARATOR "options override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_poll_control_cluster_fast_poll_stop = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_poll_control_stop_command, + "The Fast Poll Stop command is used to stop the fast poll mode initiated by the Check-in response.", + "", + { + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_groups_cluster_get_group_membership = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_groups_get_command, + "Command description for GetGroupMembership", + "group count" SL_CLI_UNIT_SEPARATOR "group list" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16OPT, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_get_holiday_schedule = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_get_holiday_schedule_command, + "Retrieve a holiday schedule for a specific scheduleId", + "schedule id" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_get_log_record = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_get_log_record_command, + "Retrieve a log record at a specified index.", + "log index" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_get_pin = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_get_pin_command, + "Retrieve PIN information for a user with a specific user ID.", + "user id" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_thermostat_cluster_get_relay_status_log = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_thermostat_grs_command, + "The Get Relay Status Log command is used to query the thermostat internal relay status log.", + "", + { + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_get_rfid = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_get_rfid_command, + "Retrieve RFID ID information for a user with a specific user ID.", + "user id" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_get_user_type = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_get_user_type_command, + "Retrieve the type for a specific user based on the user ID.", + "user id" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_get_weekday_schedule = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_get_weekday_schedule_command, + "Retrieve a weekday schedule for doorlock user activation for a specific schedule id and user id.", + "schedule id" SL_CLI_UNIT_SEPARATOR "user id" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_thermostat_cluster_get_weekly_schedule = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_thermostat_gws_command, + "Command description for GetWeeklySchedule", + "days to return" SL_CLI_UNIT_SEPARATOR "mode to return" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_get_yearday_schedule = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_get_yearday_schedule_command, + "Retrieve a yearday schedule for a specific scheduleId and userId", + "schedule id" SL_CLI_UNIT_SEPARATOR "user id" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_identify_cluster_identify = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_identify_id_command, + "Command description for Identify", + "identify time" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_identify_cluster_identify_query = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_identify_query_command, + "Command description for IdentifyQuery", + "", + { + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_lock_door = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_lock_command, + "Locks the door", + "pin" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_STRING, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_level_control_cluster_move = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_level_control_move_command, + "Command description for Move", + "move mode" SL_CLI_UNIT_SEPARATOR "rate" SL_CLI_UNIT_SEPARATOR "option mask" SL_CLI_UNIT_SEPARATOR "option override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_color_control_cluster_move_color = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_color_control_movecolor_command, + "Moves the color.", + "ratex" SL_CLI_UNIT_SEPARATOR "ratey" SL_CLI_UNIT_SEPARATOR "options mask" SL_CLI_UNIT_SEPARATOR "options override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_INT16, + SL_CLI_ARG_INT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_color_control_cluster_move_color_temperature = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_color_control_movecolortemp_command, + "Command description for MoveColorTemperature", + "move mode" SL_CLI_UNIT_SEPARATOR "rate" SL_CLI_UNIT_SEPARATOR "color temperature minimum" SL_CLI_UNIT_SEPARATOR "color temperature maximum" SL_CLI_UNIT_SEPARATOR "options mask" SL_CLI_UNIT_SEPARATOR "options override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_color_control_cluster_move_hue = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_color_control_movehue_command, + "Move hue up or down at specified rate.", + "move mode" SL_CLI_UNIT_SEPARATOR "rate" SL_CLI_UNIT_SEPARATOR "options mask" SL_CLI_UNIT_SEPARATOR "options override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_color_control_cluster_move_saturation = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_color_control_movesat_command, + "Move saturation up or down at specified rate.", + "move mode" SL_CLI_UNIT_SEPARATOR "rate" SL_CLI_UNIT_SEPARATOR "options mask" SL_CLI_UNIT_SEPARATOR "options override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_color_control_cluster_move_to_color = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_color_control_movetocolor_command, + "Move to specified color.", + "colorx" SL_CLI_UNIT_SEPARATOR "colory" SL_CLI_UNIT_SEPARATOR "transition time" SL_CLI_UNIT_SEPARATOR "options mask" SL_CLI_UNIT_SEPARATOR "options override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_color_control_cluster_move_to_color_temperature = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_color_control_movetocolortemp_command, + "Move to a specific color temperature.", + "color temperature" SL_CLI_UNIT_SEPARATOR "transition time" SL_CLI_UNIT_SEPARATOR "options mask" SL_CLI_UNIT_SEPARATOR "options override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_color_control_cluster_move_to_hue = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_color_control_movetohue_command, + "Move to specified hue.", + "hue" SL_CLI_UNIT_SEPARATOR "direction" SL_CLI_UNIT_SEPARATOR "transition time" SL_CLI_UNIT_SEPARATOR "options mask" SL_CLI_UNIT_SEPARATOR "options override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_color_control_cluster_move_to_hue_and_saturation = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_color_control_movetohueandsat_command, + "Move to hue and saturation.", + "hue" SL_CLI_UNIT_SEPARATOR "saturation" SL_CLI_UNIT_SEPARATOR "transition time" SL_CLI_UNIT_SEPARATOR "options mask" SL_CLI_UNIT_SEPARATOR "options override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_level_control_cluster_move_to_level = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_level_control_mv_to_level_command, + "Command description for MoveToLevel", + "level" SL_CLI_UNIT_SEPARATOR "transition time" SL_CLI_UNIT_SEPARATOR "option mask" SL_CLI_UNIT_SEPARATOR "option override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_level_control_cluster_move_to_level_with_on_off = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_level_control_o_mv_to_level_command, + "Command description for MoveToLevelWithOnOff", + "level" SL_CLI_UNIT_SEPARATOR "transition time" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_color_control_cluster_move_to_saturation = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_color_control_movetosat_command, + "Move to specified saturation.", + "saturation" SL_CLI_UNIT_SEPARATOR "transition time" SL_CLI_UNIT_SEPARATOR "options mask" SL_CLI_UNIT_SEPARATOR "options override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_level_control_cluster_move_with_on_off = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_level_control_o_move_command, + "Command description for MoveWithOnOff", + "move mode" SL_CLI_UNIT_SEPARATOR "rate" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_on_off_cluster_off = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_on_off_off_command, + "Command description for Off", + "", + { + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_on_off_cluster_off_with_effect = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_on_off_offeffect_command, + "Command description for OffWithEffect", + "effect id" SL_CLI_UNIT_SEPARATOR "effect variant" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_on_off_cluster_on = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_on_off_on_command, + "Command description for On", + "", + { + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_on_off_cluster_on_with_recall_global_scene = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_on_off_onrecall_command, + "Command description for OnWithRecallGlobalScene", + "", + { + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_on_off_cluster_on_with_timed_off = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_on_off_ontimedoff_command, + "Command description for OnWithTimedOff", + "on off control" SL_CLI_UNIT_SEPARATOR "on time" SL_CLI_UNIT_SEPARATOR "off wait time" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_groups_cluster_remove_all_groups = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_groups_rmall_command, + "Command description for RemoveAllGroups", + "", + { + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_groups_cluster_remove_group = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_groups_remove_command, + "Command description for RemoveGroup", + "group id" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_basic_cluster_reset_to_factory_defaults = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_basic_rtfd_command, + "Command that resets all attribute values to factory default.", + "", + { + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_set_holiday_schedule = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_set_holiday_schedule_command, + "Set the holiday schedule for a specific user", + "schedule id" SL_CLI_UNIT_SEPARATOR "local start time" SL_CLI_UNIT_SEPARATOR "local end time" SL_CLI_UNIT_SEPARATOR "operating mode during holiday" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT32, + SL_CLI_ARG_UINT32, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_poll_control_cluster_set_long_poll_interval = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_poll_control_long_command, + "The Set Long Poll Interval command is used to set the read only Long Poll Interval Attribute.", + "new long poll interval" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT32, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_set_pin = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_set_pin_command, + "Set the PIN for a specified user id.", + "user id" SL_CLI_UNIT_SEPARATOR "user status" SL_CLI_UNIT_SEPARATOR "user type" SL_CLI_UNIT_SEPARATOR "pin" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_STRING, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_set_rfid = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_set_rfid_command, + "Set the PIN for a specified user id.", + "user id" SL_CLI_UNIT_SEPARATOR "user status" SL_CLI_UNIT_SEPARATOR "user type" SL_CLI_UNIT_SEPARATOR "id" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_STRING, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_poll_control_cluster_set_short_poll_interval = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_poll_control_short_command, + "The Set Short Poll Interval command is used to set the read only Short Poll Interval Attribute.", + "new short poll interval" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_set_user_type = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_set_user_type_command, + "Set the type value for a user based on user ID.", + "user id" SL_CLI_UNIT_SEPARATOR "user type" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_set_weekday_schedule = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_set_weekday_schedule_command, + "Set the schedule of days during the week that the associated user based on the user ID will have access to the lock and will be able to operate it.", + "schedule id" SL_CLI_UNIT_SEPARATOR "user id" SL_CLI_UNIT_SEPARATOR "days mask" SL_CLI_UNIT_SEPARATOR "start hour" SL_CLI_UNIT_SEPARATOR "start minute" SL_CLI_UNIT_SEPARATOR "end hour" SL_CLI_UNIT_SEPARATOR "end minute" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_thermostat_cluster_set_weekly_schedule = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_thermostat_sws_command, + "Command description for SetWeeklySchedule", + "number of transitions for sequence" SL_CLI_UNIT_SEPARATOR "day of week for sequence" SL_CLI_UNIT_SEPARATOR "mode for sequence" SL_CLI_UNIT_SEPARATOR "payload" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8OPT, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_set_yearday_schedule = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_set_yearday_schedule_command, + "Set a door lock user id activation schedule according to a specific absolute local start and end time", + "schedule id" SL_CLI_UNIT_SEPARATOR "user id" SL_CLI_UNIT_SEPARATOR "local start time" SL_CLI_UNIT_SEPARATOR "local end time" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT32, + SL_CLI_ARG_UINT32, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_thermostat_cluster_setpoint_raise_lower = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_thermostat_set_command, + "Command description for SetpointRaiseLower", + "mode" SL_CLI_UNIT_SEPARATOR "amount" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_INT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_level_control_cluster_step = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_level_control_step_command, + "Command description for Step", + "step mode" SL_CLI_UNIT_SEPARATOR "step size" SL_CLI_UNIT_SEPARATOR "transition time" SL_CLI_UNIT_SEPARATOR "option mask" SL_CLI_UNIT_SEPARATOR "option override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_color_control_cluster_step_color = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_color_control_stepcolor_command, + "Steps the lighting to a specific color.", + "stepx" SL_CLI_UNIT_SEPARATOR "stepy" SL_CLI_UNIT_SEPARATOR "transition time" SL_CLI_UNIT_SEPARATOR "options mask" SL_CLI_UNIT_SEPARATOR "options override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_INT16, + SL_CLI_ARG_INT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_color_control_cluster_step_color_temperature = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_color_control_stepcolortemp_command, + "Command description for StepColorTemperature", + "step mode" SL_CLI_UNIT_SEPARATOR "step size" SL_CLI_UNIT_SEPARATOR "transition time" SL_CLI_UNIT_SEPARATOR "color temperature minimum" SL_CLI_UNIT_SEPARATOR "color temperature maximum" SL_CLI_UNIT_SEPARATOR "options mask" SL_CLI_UNIT_SEPARATOR "options override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_color_control_cluster_step_hue = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_color_control_stephue_command, + "Step hue up or down by specified size at specified rate.", + "step mode" SL_CLI_UNIT_SEPARATOR "step size" SL_CLI_UNIT_SEPARATOR "transition time" SL_CLI_UNIT_SEPARATOR "options mask" SL_CLI_UNIT_SEPARATOR "options override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_color_control_cluster_step_saturation = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_color_control_stepsat_command, + "Step saturation up or down by specified size at specified rate.", + "step mode" SL_CLI_UNIT_SEPARATOR "step size" SL_CLI_UNIT_SEPARATOR "transition time" SL_CLI_UNIT_SEPARATOR "options mask" SL_CLI_UNIT_SEPARATOR "options override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_level_control_cluster_step_with_on_off = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_level_control_o_step_command, + "Command description for StepWithOnOff", + "step mode" SL_CLI_UNIT_SEPARATOR "step size" SL_CLI_UNIT_SEPARATOR "transition time" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_level_control_cluster_stop = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_level_control_stop_command, + "Command description for Stop", + "option mask" SL_CLI_UNIT_SEPARATOR "option override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_color_control_cluster_stop_move_step = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_color_control_stopmovestep_command, + "Command description for StopMoveStep", + "options mask" SL_CLI_UNIT_SEPARATOR "options override" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_level_control_cluster_stop_with_on_off = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_level_control_o_stop_command, + "Command description for StopWithOnOff", + "", + { + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_toggle = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_toggle_command, + "Toggles the door lock from its current state to the opposite state locked or unlocked.", + "pin" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_STRING, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_on_off_cluster_toggle = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_on_off_toggle_command, + "Command description for Toggle", + "", + { + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_identify_cluster_trigger_effect = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_identify_trigger_command, + "Command description for TriggerEffect", + "effect id" SL_CLI_UNIT_SEPARATOR "effect variant" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_unlock_door = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_unlock_command, + "Unlocks the door", + "pin" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_STRING, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_door_lock_cluster_unlock_with_timeout = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_door_lock_unlock_with_timeout_command, + "Unlock the door with a timeout. When the timeout expires, the door will automatically re-lock.", + "timeout in seconds" SL_CLI_UNIT_SEPARATOR "pin" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_STRING, + SL_CLI_ARG_END, + }); + +static const sl_cli_command_info_t cli_cmd_zcl_groups_cluster_view_group = \ +SL_CLI_COMMAND(sli_zigbee_cli_zcl_groups_view_command, + "Command description for ViewGroup", + "group id" SL_CLI_UNIT_SEPARATOR , + { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_END, + }); + + +// Create group command tables and structs if cli_groups given +// in template. Group name is suffixed with [cluster name]_[cluster_side]_cluster_group_table for tables +// and group commands are cli_cmd_( group name )_group +static const sl_cli_command_entry_t zcl_basic_cluster_command_table[] = { + { "rtfd", &cli_cmd_zcl_basic_cluster_reset_to_factory_defaults, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_entry_t zcl_color_control_cluster_command_table[] = { + { "movetohue", &cli_cmd_zcl_color_control_cluster_move_to_hue, false }, + { "movehue", &cli_cmd_zcl_color_control_cluster_move_hue, false }, + { "stephue", &cli_cmd_zcl_color_control_cluster_step_hue, false }, + { "movetosat", &cli_cmd_zcl_color_control_cluster_move_to_saturation, false }, + { "movesat", &cli_cmd_zcl_color_control_cluster_move_saturation, false }, + { "stepsat", &cli_cmd_zcl_color_control_cluster_step_saturation, false }, + { "movetohueandsat", &cli_cmd_zcl_color_control_cluster_move_to_hue_and_saturation, false }, + { "movetocolor", &cli_cmd_zcl_color_control_cluster_move_to_color, false }, + { "movecolor", &cli_cmd_zcl_color_control_cluster_move_color, false }, + { "stepcolor", &cli_cmd_zcl_color_control_cluster_step_color, false }, + { "movetocolortemp", &cli_cmd_zcl_color_control_cluster_move_to_color_temperature, false }, + { "emovetohue", &cli_cmd_zcl_color_control_cluster_enhanced_move_to_hue, false }, + { "emovehue", &cli_cmd_zcl_color_control_cluster_enhanced_move_hue, false }, + { "estephue", &cli_cmd_zcl_color_control_cluster_enhanced_step_hue, false }, + { "emovetohueandsat", &cli_cmd_zcl_color_control_cluster_enhanced_move_to_hue_and_saturation, false }, + { "loop", &cli_cmd_zcl_color_control_cluster_color_loop_set, false }, + { "stopmovestep", &cli_cmd_zcl_color_control_cluster_stop_move_step, false }, + { "movecolortemp", &cli_cmd_zcl_color_control_cluster_move_color_temperature, false }, + { "stepcolortemp", &cli_cmd_zcl_color_control_cluster_step_color_temperature, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_entry_t zcl_door_lock_cluster_command_table[] = { + { "lock", &cli_cmd_zcl_door_lock_cluster_lock_door, false }, + { "unlock", &cli_cmd_zcl_door_lock_cluster_unlock_door, false }, + { "toggle", &cli_cmd_zcl_door_lock_cluster_toggle, false }, + { "unlock-with-timeout", &cli_cmd_zcl_door_lock_cluster_unlock_with_timeout, false }, + { "get-log-record", &cli_cmd_zcl_door_lock_cluster_get_log_record, false }, + { "set-pin", &cli_cmd_zcl_door_lock_cluster_set_pin, false }, + { "get-pin", &cli_cmd_zcl_door_lock_cluster_get_pin, false }, + { "clear-pin", &cli_cmd_zcl_door_lock_cluster_clear_pin, false }, + { "set-weekday-schedule", &cli_cmd_zcl_door_lock_cluster_set_weekday_schedule, false }, + { "get-weekday-schedule", &cli_cmd_zcl_door_lock_cluster_get_weekday_schedule, false }, + { "clear-weekday-schedule", &cli_cmd_zcl_door_lock_cluster_clear_weekday_schedule, false }, + { "set-yearday-schedule", &cli_cmd_zcl_door_lock_cluster_set_yearday_schedule, false }, + { "get-yearday-schedule", &cli_cmd_zcl_door_lock_cluster_get_yearday_schedule, false }, + { "clear-yearday-schedule", &cli_cmd_zcl_door_lock_cluster_clear_yearday_schedule, false }, + { "set-holiday-schedule", &cli_cmd_zcl_door_lock_cluster_set_holiday_schedule, false }, + { "get-holiday-schedule", &cli_cmd_zcl_door_lock_cluster_get_holiday_schedule, false }, + { "clear-holiday-schedule", &cli_cmd_zcl_door_lock_cluster_clear_holiday_schedule, false }, + { "set-user-type", &cli_cmd_zcl_door_lock_cluster_set_user_type, false }, + { "get-user-type", &cli_cmd_zcl_door_lock_cluster_get_user_type, false }, + { "set-rfid", &cli_cmd_zcl_door_lock_cluster_set_rfid, false }, + { "get-rfid", &cli_cmd_zcl_door_lock_cluster_get_rfid, false }, + { "clear-rfid", &cli_cmd_zcl_door_lock_cluster_clear_rfid, false }, + { "clear-all-rfids", &cli_cmd_zcl_door_lock_cluster_clear_all_rfids, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_entry_t zcl_groups_cluster_command_table[] = { + { "add", &cli_cmd_zcl_groups_cluster_add_group, false }, + { "view", &cli_cmd_zcl_groups_cluster_view_group, false }, + { "get", &cli_cmd_zcl_groups_cluster_get_group_membership, false }, + { "remove", &cli_cmd_zcl_groups_cluster_remove_group, false }, + { "rmall", &cli_cmd_zcl_groups_cluster_remove_all_groups, false }, + { "add-if-id", &cli_cmd_zcl_groups_cluster_add_group_if_identifying, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_entry_t zcl_identify_cluster_command_table[] = { + { "id", &cli_cmd_zcl_identify_cluster_identify, false }, + { "query", &cli_cmd_zcl_identify_cluster_identify_query, false }, + { "ez-mode", &cli_cmd_zcl_identify_cluster_ez_mode_invoke, false }, + { "trigger", &cli_cmd_zcl_identify_cluster_trigger_effect, false }, + { "on", &cli_cmd_zcl_identify_on_command, false}, + { "off", &cli_cmd_zcl_identify_off_command, false}, + { NULL, NULL, false }, +}; +static const sl_cli_command_entry_t zcl_level_control_cluster_command_table[] = { + { "mv-to-level", &cli_cmd_zcl_level_control_cluster_move_to_level, false }, + { "move", &cli_cmd_zcl_level_control_cluster_move, false }, + { "step", &cli_cmd_zcl_level_control_cluster_step, false }, + { "stop", &cli_cmd_zcl_level_control_cluster_stop, false }, + { "o-mv-to-level", &cli_cmd_zcl_level_control_cluster_move_to_level_with_on_off, false }, + { "o-move", &cli_cmd_zcl_level_control_cluster_move_with_on_off, false }, + { "o-step", &cli_cmd_zcl_level_control_cluster_step_with_on_off, false }, + { "o-stop", &cli_cmd_zcl_level_control_cluster_stop_with_on_off, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_entry_t zcl_on_off_cluster_command_table[] = { + { "off", &cli_cmd_zcl_on_off_cluster_off, false }, + { "on", &cli_cmd_zcl_on_off_cluster_on, false }, + { "toggle", &cli_cmd_zcl_on_off_cluster_toggle, false }, + { "offeffect", &cli_cmd_zcl_on_off_cluster_off_with_effect, false }, + { "onrecall", &cli_cmd_zcl_on_off_cluster_on_with_recall_global_scene, false }, + { "ontimedoff", &cli_cmd_zcl_on_off_cluster_on_with_timed_off, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_entry_t zcl_poll_control_cluster_command_table[] = { + { "stop", &cli_cmd_zcl_poll_control_cluster_fast_poll_stop, false }, + { "long", &cli_cmd_zcl_poll_control_cluster_set_long_poll_interval, false }, + { "short", &cli_cmd_zcl_poll_control_cluster_set_short_poll_interval, false }, + { NULL, NULL, false }, +}; +static const sl_cli_command_entry_t zcl_thermostat_cluster_command_table[] = { + { "set", &cli_cmd_zcl_thermostat_cluster_setpoint_raise_lower, false }, + { "sws", &cli_cmd_zcl_thermostat_cluster_set_weekly_schedule, false }, + { "gws", &cli_cmd_zcl_thermostat_cluster_get_weekly_schedule, false }, + { "cws", &cli_cmd_zcl_thermostat_cluster_clear_weekly_schedule, false }, + { "grs", &cli_cmd_zcl_thermostat_cluster_get_relay_status_log, false }, + { NULL, NULL, false }, +}; + +// ZCL cluster commands +static const sl_cli_command_info_t cli_cmd_basic_group = \ + SL_CLI_COMMAND_GROUP(zcl_basic_cluster_command_table, "ZCL basic cluster commands"); +static const sl_cli_command_info_t cli_cmd_color_control_group = \ + SL_CLI_COMMAND_GROUP(zcl_color_control_cluster_command_table, "ZCL color_control cluster commands"); +static const sl_cli_command_info_t cli_cmd_door_lock_group = \ + SL_CLI_COMMAND_GROUP(zcl_door_lock_cluster_command_table, "ZCL door_lock cluster commands"); +static const sl_cli_command_info_t cli_cmd_groups_group = \ + SL_CLI_COMMAND_GROUP(zcl_groups_cluster_command_table, "ZCL groups cluster commands"); +static const sl_cli_command_info_t cli_cmd_identify_group = \ + SL_CLI_COMMAND_GROUP(zcl_identify_cluster_command_table, "ZCL identify cluster commands"); +static const sl_cli_command_info_t cli_cmd_level_control_group = \ + SL_CLI_COMMAND_GROUP(zcl_level_control_cluster_command_table, "ZCL level_control cluster commands"); +static const sl_cli_command_info_t cli_cmd_on_off_group = \ + SL_CLI_COMMAND_GROUP(zcl_on_off_cluster_command_table, "ZCL on_off cluster commands"); +static const sl_cli_command_info_t cli_cmd_poll_control_group = \ + SL_CLI_COMMAND_GROUP(zcl_poll_control_cluster_command_table, "ZCL poll_control cluster commands"); +static const sl_cli_command_info_t cli_cmd_thermostat_group = \ + SL_CLI_COMMAND_GROUP(zcl_thermostat_cluster_command_table, "ZCL thermostat cluster commands"); + +static const sl_cli_command_entry_t zcl_group_table[] = { + { "basic", &cli_cmd_basic_group, false }, + { "color-control", &cli_cmd_color_control_group, false }, + { "door-lock", &cli_cmd_door_lock_group, false }, + { "groups", &cli_cmd_groups_group, false }, + { "identify", &cli_cmd_identify_group, false }, + { "level-control", &cli_cmd_level_control_group, false }, + { "on-off", &cli_cmd_on_off_group, false }, + { "poll-control", &cli_cmd_poll_control_group, false }, + { "thermostat", &cli_cmd_thermostat_group, false }, + { "global", &cli_cmd_zcl_global_group, false }, + { "mfg-code", &cli_cmd_zcl_mfg_code_command, false}, + { "time", &cli_cmd_zcl_time_command, false}, + { "use-next-sequence", &cli_cmd_zcl_use_next_sequence_command, false}, + { "x-default-resp", &cli_cmd_zcl_x_default_resp_command, false}, + { "test-response-on", &cli_cmd_zcl_test_response_on_command, false}, + { "test-response-off", &cli_cmd_zcl_test_response_off_command, false}, + { NULL, NULL, false }, +}; + +sl_cli_command_info_t cli_cmd_zcl_group = \ + SL_CLI_COMMAND_GROUP(zcl_group_table, "ZCL commands"); + +// Create root command table +const sl_cli_command_entry_t sl_cli_zcl_command_table[] = { + { "zcl", &cli_cmd_zcl_group, false }, + { NULL, NULL, false }, +}; + +sl_cli_command_group_t sl_cli_zcl_command_group = +{ + { NULL }, + false, + sl_cli_zcl_command_table +}; + + +WEAK(void sli_zigbee_cli_zcl_groups_add_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[2] = { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_STRING + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_GROUPS_CLUSTER_ID, \ + 0, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_groups_add_if_id_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[2] = { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_STRING + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_GROUPS_CLUSTER_ID, \ + 5, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_clear_all_rfids_command(sl_cli_command_arg_t *arguments)) { + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 25, \ + arguments, \ + NULL); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_clear_holiday_schedule_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[1] = { + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 19, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_clear_pin_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[1] = { + SL_CLI_ARG_UINT16 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 7, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_clear_rfid_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[1] = { + SL_CLI_ARG_UINT16 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 24, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_clear_weekday_schedule_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[2] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 13, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_thermostat_cws_command(sl_cli_command_arg_t *arguments)) { + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_THERMOSTAT_CLUSTER_ID, \ + 3, \ + arguments, \ + NULL); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_clear_yearday_schedule_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[2] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 16, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_color_control_loop_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[7] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + 68, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_identify_ez_mode_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[1] = { + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_IDENTIFY_CLUSTER_ID, \ + 2, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_color_control_emovehue_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[4] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + 65, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_color_control_emovetohue_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[5] = { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + 64, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_color_control_emovetohueandsat_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[5] = { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + 67, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_color_control_estephue_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[5] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + 66, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_poll_control_stop_command(sl_cli_command_arg_t *arguments)) { + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_POLL_CONTROL_CLUSTER_ID, \ + 1, \ + arguments, \ + NULL); +} + +WEAK(void sli_zigbee_cli_zcl_groups_get_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[2] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16OPT + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_GROUPS_CLUSTER_ID, \ + 2, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_get_holiday_schedule_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[1] = { + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 18, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_get_log_record_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[1] = { + SL_CLI_ARG_UINT16 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 4, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_get_pin_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[1] = { + SL_CLI_ARG_UINT16 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 6, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_thermostat_grs_command(sl_cli_command_arg_t *arguments)) { + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_THERMOSTAT_CLUSTER_ID, \ + 4, \ + arguments, \ + NULL); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_get_rfid_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[1] = { + SL_CLI_ARG_UINT16 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 23, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_get_user_type_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[1] = { + SL_CLI_ARG_UINT16 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 21, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_get_weekday_schedule_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[2] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 12, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_thermostat_gws_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[2] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_THERMOSTAT_CLUSTER_ID, \ + 2, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_get_yearday_schedule_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[2] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 15, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_identify_id_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[1] = { + SL_CLI_ARG_UINT16 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_IDENTIFY_CLUSTER_ID, \ + 0, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_identify_query_command(sl_cli_command_arg_t *arguments)) { + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_IDENTIFY_CLUSTER_ID, \ + 1, \ + arguments, \ + NULL); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_lock_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[1] = { + SL_CLI_ARG_STRING + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 0, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_level_control_move_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[4] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_LEVEL_CONTROL_CLUSTER_ID, \ + 1, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_color_control_movecolor_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[4] = { + SL_CLI_ARG_INT16, + SL_CLI_ARG_INT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + 8, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_color_control_movecolortemp_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[6] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + 75, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_color_control_movehue_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[4] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + 1, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_color_control_movesat_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[4] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + 4, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_color_control_movetocolor_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[5] = { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + 7, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_color_control_movetocolortemp_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[4] = { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + 10, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_color_control_movetohue_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[5] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + 0, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_color_control_movetohueandsat_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[5] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + 6, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_level_control_mv_to_level_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[4] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_LEVEL_CONTROL_CLUSTER_ID, \ + 0, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_level_control_o_mv_to_level_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[2] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_LEVEL_CONTROL_CLUSTER_ID, \ + 4, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_color_control_movetosat_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[4] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + 3, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_level_control_o_move_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[2] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_LEVEL_CONTROL_CLUSTER_ID, \ + 5, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_on_off_off_command(sl_cli_command_arg_t *arguments)) { + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_ON_OFF_CLUSTER_ID, \ + 0, \ + arguments, \ + NULL); +} + +WEAK(void sli_zigbee_cli_zcl_on_off_offeffect_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[2] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_ON_OFF_CLUSTER_ID, \ + 64, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_on_off_on_command(sl_cli_command_arg_t *arguments)) { + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_ON_OFF_CLUSTER_ID, \ + 1, \ + arguments, \ + NULL); +} + +WEAK(void sli_zigbee_cli_zcl_on_off_onrecall_command(sl_cli_command_arg_t *arguments)) { + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_ON_OFF_CLUSTER_ID, \ + 65, \ + arguments, \ + NULL); +} + +WEAK(void sli_zigbee_cli_zcl_on_off_ontimedoff_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[3] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_ON_OFF_CLUSTER_ID, \ + 66, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_groups_rmall_command(sl_cli_command_arg_t *arguments)) { + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_GROUPS_CLUSTER_ID, \ + 4, \ + arguments, \ + NULL); +} + +WEAK(void sli_zigbee_cli_zcl_groups_remove_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[1] = { + SL_CLI_ARG_UINT16 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_GROUPS_CLUSTER_ID, \ + 3, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_basic_rtfd_command(sl_cli_command_arg_t *arguments)) { + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_BASIC_CLUSTER_ID, \ + 0, \ + arguments, \ + NULL); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_set_holiday_schedule_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[4] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT32, + SL_CLI_ARG_UINT32, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 17, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_poll_control_long_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[1] = { + SL_CLI_ARG_UINT32 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_POLL_CONTROL_CLUSTER_ID, \ + 2, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_set_pin_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[4] = { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_STRING + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 5, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_set_rfid_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[4] = { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_STRING + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 22, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_poll_control_short_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[1] = { + SL_CLI_ARG_UINT16 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_POLL_CONTROL_CLUSTER_ID, \ + 3, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_set_user_type_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[2] = { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 20, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_set_weekday_schedule_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[7] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 11, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_thermostat_sws_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[4] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8OPT + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_THERMOSTAT_CLUSTER_ID, \ + 1, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_set_yearday_schedule_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[4] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT32, + SL_CLI_ARG_UINT32 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 14, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_thermostat_set_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[2] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_INT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_THERMOSTAT_CLUSTER_ID, \ + 0, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_level_control_step_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[5] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_LEVEL_CONTROL_CLUSTER_ID, \ + 2, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_color_control_stepcolor_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[5] = { + SL_CLI_ARG_INT16, + SL_CLI_ARG_INT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + 9, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_color_control_stepcolortemp_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[7] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT16, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + 76, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_color_control_stephue_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[5] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + 2, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_color_control_stepsat_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[5] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + 5, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_level_control_o_step_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[3] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT16 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_LEVEL_CONTROL_CLUSTER_ID, \ + 6, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_level_control_stop_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[2] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_LEVEL_CONTROL_CLUSTER_ID, \ + 3, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_color_control_stopmovestep_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[2] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + 71, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_level_control_o_stop_command(sl_cli_command_arg_t *arguments)) { + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_LEVEL_CONTROL_CLUSTER_ID, \ + 7, \ + arguments, \ + NULL); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_toggle_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[1] = { + SL_CLI_ARG_STRING + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 2, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_on_off_toggle_command(sl_cli_command_arg_t *arguments)) { + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_ON_OFF_CLUSTER_ID, \ + 2, \ + arguments, \ + NULL); +} + +WEAK(void sli_zigbee_cli_zcl_identify_trigger_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[2] = { + SL_CLI_ARG_UINT8, + SL_CLI_ARG_UINT8 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_IDENTIFY_CLUSTER_ID, \ + 64, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_unlock_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[1] = { + SL_CLI_ARG_STRING + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 1, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_door_lock_unlock_with_timeout_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[2] = { + SL_CLI_ARG_UINT16, + SL_CLI_ARG_STRING + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + 3, \ + arguments, \ + argumentTypes); +} + +WEAK(void sli_zigbee_cli_zcl_groups_view_command(sl_cli_command_arg_t *arguments)) { + uint8_t argumentTypes[1] = { + SL_CLI_ARG_UINT16 + }; + sli_zigbee_zcl_simple_command( + ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER, \ + ZCL_GROUPS_CLUSTER_ID, \ + 1, \ + arguments, \ + argumentTypes); +} + +#ifdef __cplusplus +} +#endif +#endif \ No newline at end of file diff --git a/silabs_examples/credentials/host/zap/zap-cluster-command-parser.c b/silabs_examples/credentials/host/zap/zap-cluster-command-parser.c new file mode 100644 index 00000000000000..931098ff190691 --- /dev/null +++ b/silabs_examples/credentials/host/zap/zap-cluster-command-parser.c @@ -0,0 +1,6554 @@ +/***************************************************************************//** + * @file zap-cluster-command-parser.c + * @brief This file contains a set of generated functions that parse the + * incomming zcl command messages. + * This file is generated. Do not update file manually. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#include "sl_component_catalog.h" +#ifdef SL_CATALOG_ZIGBEE_ZCL_FRAMEWORK_CORE_PRESENT + +#include + +#include "af.h" +#include "zap-type.h" +#include "zap-cluster-command-parser.h" +#include "sl_signature_decode.h" + +// Generated interface function +static EmberAfStatus sli_do_decode(EmberAfClusterCommand *cmd, + const sl_signature_t sig, + uint8_t *outputBuffer) { + sl_signature_decode_status_t ret; + ret = sl_signature_decode(cmd->buffer, + cmd->bufLen, + cmd->payloadStartIndex, + sig, + outputBuffer); + if ( ret == SL_SIGNATURE_DECODE_OK ) + return EMBER_ZCL_STATUS_SUCCESS; + else + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; +} + + +// Signature for GetZoneIdMapResponse command +static const sl_signature_t sig_ias_ace_cluster_get_zone_id_map_response_command = sl_zcl_ias_ace_cluster_get_zone_id_map_response_command_signature; +// Command parser for GetZoneIdMapResponse command +EmberAfStatus zcl_decode_ias_ace_cluster_get_zone_id_map_response_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_get_zone_id_map_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_ias_ace_cluster_get_zone_id_map_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ZoneStatusChangeNotification command +static const sl_signature_t sig_ias_zone_cluster_zone_status_change_notification_command = sl_zcl_ias_zone_cluster_zone_status_change_notification_command_signature; +// Command parser for ZoneStatusChangeNotification command +EmberAfStatus zcl_decode_ias_zone_cluster_zone_status_change_notification_command (EmberAfClusterCommand * cmd, sl_zcl_ias_zone_cluster_zone_status_change_notification_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_ias_zone_cluster_zone_status_change_notification_command, (uint8_t*)cmd_struct); +} + + +// Signature for InitiateKeyEstablishmentRequest command +static const sl_signature_t sig_key_establishment_cluster_initiate_key_establishment_request_command = sl_zcl_key_establishment_cluster_initiate_key_establishment_request_command_signature; +// Command parser for InitiateKeyEstablishmentRequest command +EmberAfStatus zcl_decode_key_establishment_cluster_initiate_key_establishment_request_command (EmberAfClusterCommand * cmd, sl_zcl_key_establishment_cluster_initiate_key_establishment_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_key_establishment_cluster_initiate_key_establishment_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for InitiateKeyEstablishmentResponse command +static const sl_signature_t sig_key_establishment_cluster_initiate_key_establishment_response_command = sl_zcl_key_establishment_cluster_initiate_key_establishment_response_command_signature; +// Command parser for InitiateKeyEstablishmentResponse command +EmberAfStatus zcl_decode_key_establishment_cluster_initiate_key_establishment_response_command (EmberAfClusterCommand * cmd, sl_zcl_key_establishment_cluster_initiate_key_establishment_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_key_establishment_cluster_initiate_key_establishment_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for TakeSnapshot command +static const sl_signature_t sig_simple_metering_cluster_take_snapshot_command = sl_zcl_simple_metering_cluster_take_snapshot_command_signature; +// Command parser for TakeSnapshot command +EmberAfStatus zcl_decode_simple_metering_cluster_take_snapshot_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_take_snapshot_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_take_snapshot_command, (uint8_t*)cmd_struct); +} + + +// Signature for ActionControl command +static const sl_signature_t sig_gaming_cluster_action_control_command = sl_zcl_gaming_cluster_action_control_command_signature; +// Command parser for ActionControl command +EmberAfStatus zcl_decode_gaming_cluster_action_control_command (EmberAfClusterCommand * cmd, sl_zcl_gaming_cluster_action_control_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_gaming_cluster_action_control_command, (uint8_t*)cmd_struct); +} + + +// Signature for EZModeInvoke command +static const sl_signature_t sig_identify_cluster_ez_mode_invoke_command = sl_zcl_identify_cluster_ez_mode_invoke_command_signature; +// Command parser for EZModeInvoke command +EmberAfStatus zcl_decode_identify_cluster_ez_mode_invoke_command (EmberAfClusterCommand * cmd, sl_zcl_identify_cluster_ez_mode_invoke_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_identify_cluster_ez_mode_invoke_command, (uint8_t*)cmd_struct); +} + + +// Signature for RssiPing command +static const sl_signature_t sig_rssi_location_cluster_rssi_ping_command = sl_zcl_rssi_location_cluster_rssi_ping_command_signature; +// Command parser for RssiPing command +EmberAfStatus zcl_decode_rssi_location_cluster_rssi_ping_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_rssi_ping_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_rssi_location_cluster_rssi_ping_command, (uint8_t*)cmd_struct); +} + + +// Signature for Squawk command +static const sl_signature_t sig_ias_wd_cluster_squawk_command = sl_zcl_ias_wd_cluster_squawk_command_signature; +// Command parser for Squawk command +EmberAfStatus zcl_decode_ias_wd_cluster_squawk_command (EmberAfClusterCommand * cmd, sl_zcl_ias_wd_cluster_squawk_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_ias_wd_cluster_squawk_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetCurrentPrice command +static const sl_signature_t sig_price_cluster_get_current_price_command = sl_zcl_price_cluster_get_current_price_command_signature; +// Command parser for GetCurrentPrice command +EmberAfStatus zcl_decode_price_cluster_get_current_price_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_current_price_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_get_current_price_command, (uint8_t*)cmd_struct); +} + + +// Signature for CancelAllLoadControlEvents command +static const sl_signature_t sig_demand_response_and_load_control_cluster_cancel_all_load_control_events_command = sl_zcl_demand_response_and_load_control_cluster_cancel_all_load_control_events_command_signature; +// Command parser for CancelAllLoadControlEvents command +EmberAfStatus zcl_decode_demand_response_and_load_control_cluster_cancel_all_load_control_events_command (EmberAfClusterCommand * cmd, sl_zcl_demand_response_and_load_control_cluster_cancel_all_load_control_events_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_demand_response_and_load_control_cluster_cancel_all_load_control_events_command, (uint8_t*)cmd_struct); +} + + +// Signature for ClearEventLogResponse command +static const sl_signature_t sig_events_cluster_clear_event_log_response_command = sl_zcl_events_cluster_clear_event_log_response_command_signature; +// Command parser for ClearEventLogResponse command +EmberAfStatus zcl_decode_events_cluster_clear_event_log_response_command (EmberAfClusterCommand * cmd, sl_zcl_events_cluster_clear_event_log_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_events_cluster_clear_event_log_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetAlertsResponse command +static const sl_signature_t sig_appliance_events_and_alert_cluster_get_alerts_response_command = sl_zcl_appliance_events_and_alert_cluster_get_alerts_response_command_signature; +// Command parser for GetAlertsResponse command +EmberAfStatus zcl_decode_appliance_events_and_alert_cluster_get_alerts_response_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_events_and_alert_cluster_get_alerts_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_appliance_events_and_alert_cluster_get_alerts_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for AlertsNotification command +static const sl_signature_t sig_appliance_events_and_alert_cluster_alerts_notification_command = sl_zcl_appliance_events_and_alert_cluster_alerts_notification_command_signature; +// Command parser for AlertsNotification command +EmberAfStatus zcl_decode_appliance_events_and_alert_cluster_alerts_notification_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_events_and_alert_cluster_alerts_notification_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_appliance_events_and_alert_cluster_alerts_notification_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetWeeklySchedule command +static const sl_signature_t sig_thermostat_cluster_get_weekly_schedule_command = sl_zcl_thermostat_cluster_get_weekly_schedule_command_signature; +// Command parser for GetWeeklySchedule command +EmberAfStatus zcl_decode_thermostat_cluster_get_weekly_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_thermostat_cluster_get_weekly_schedule_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_thermostat_cluster_get_weekly_schedule_command, (uint8_t*)cmd_struct); +} + + +// Signature for EstablishmentRequest command +static const sl_signature_t sig_voice_over_zig_bee_cluster_establishment_request_command = sl_zcl_voice_over_zig_bee_cluster_establishment_request_command_signature; +// Command parser for EstablishmentRequest command +EmberAfStatus zcl_decode_voice_over_zig_bee_cluster_establishment_request_command (EmberAfClusterCommand * cmd, sl_zcl_voice_over_zig_bee_cluster_establishment_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_voice_over_zig_bee_cluster_establishment_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for ColorLoopSet command +static const sl_signature_t sig_color_control_cluster_color_loop_set_command = sl_zcl_color_control_cluster_color_loop_set_command_signature; +// Command parser for ColorLoopSet command +EmberAfStatus zcl_decode_color_control_cluster_color_loop_set_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_color_loop_set_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_color_control_cluster_color_loop_set_command, (uint8_t*)cmd_struct); +} + + +// Signature for LocationDataNotification command +static const sl_signature_t sig_rssi_location_cluster_location_data_notification_command = sl_zcl_rssi_location_cluster_location_data_notification_command_signature; +// Command parser for LocationDataNotification command +EmberAfStatus zcl_decode_rssi_location_cluster_location_data_notification_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_location_data_notification_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_rssi_location_cluster_location_data_notification_command, (uint8_t*)cmd_struct); +} + + +// Signature for CompactLocationDataNotification command +static const sl_signature_t sig_rssi_location_cluster_compact_location_data_notification_command = sl_zcl_rssi_location_cluster_compact_location_data_notification_command_signature; +// Command parser for CompactLocationDataNotification command +EmberAfStatus zcl_decode_rssi_location_cluster_compact_location_data_notification_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_compact_location_data_notification_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_rssi_location_cluster_compact_location_data_notification_command, (uint8_t*)cmd_struct); +} + + +// Signature for OnWithTimedOff command +static const sl_signature_t sig_on_off_cluster_on_with_timed_off_command = sl_zcl_on_off_cluster_on_with_timed_off_command_signature; +// Command parser for OnWithTimedOff command +EmberAfStatus zcl_decode_on_off_cluster_on_with_timed_off_command (EmberAfClusterCommand * cmd, sl_zcl_on_off_cluster_on_with_timed_off_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_on_off_cluster_on_with_timed_off_command, (uint8_t*)cmd_struct); +} + + +// Signature for GpSinkCommissioningMode command +static const sl_signature_t sig_green_power_cluster_gp_sink_commissioning_mode_command = sl_zcl_green_power_cluster_gp_sink_commissioning_mode_command_signature; +// Command parser for GpSinkCommissioningMode command +EmberAfStatus zcl_decode_green_power_cluster_gp_sink_commissioning_mode_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_sink_commissioning_mode_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_green_power_cluster_gp_sink_commissioning_mode_command, (uint8_t*)cmd_struct); +} + + +// Signature for CopyScene command +static const sl_signature_t sig_scenes_cluster_copy_scene_command = sl_zcl_scenes_cluster_copy_scene_command_signature; +// Command parser for CopyScene command +EmberAfStatus zcl_decode_scenes_cluster_copy_scene_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_copy_scene_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_scenes_cluster_copy_scene_command, (uint8_t*)cmd_struct); +} + + +// Signature for StartWarning command +static const sl_signature_t sig_ias_wd_cluster_start_warning_command = sl_zcl_ias_wd_cluster_start_warning_command_signature; +// Command parser for StartWarning command +EmberAfStatus zcl_decode_ias_wd_cluster_start_warning_command (EmberAfClusterCommand * cmd, sl_zcl_ias_wd_cluster_start_warning_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_ias_wd_cluster_start_warning_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetEventLog command +static const sl_signature_t sig_events_cluster_get_event_log_command = sl_zcl_events_cluster_get_event_log_command_signature; +// Command parser for GetEventLog command +EmberAfStatus zcl_decode_events_cluster_get_event_log_command (EmberAfClusterCommand * cmd, sl_zcl_events_cluster_get_event_log_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_events_cluster_get_event_log_command, (uint8_t*)cmd_struct); +} + + +// Signature for Delete command +static const sl_signature_t sig_information_cluster_delete_command = sl_zcl_information_cluster_delete_command_signature; +// Command parser for Delete command +EmberAfStatus zcl_decode_information_cluster_delete_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_delete_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_information_cluster_delete_command, (uint8_t*)cmd_struct); +} + + +// Signature for ChangePaymentModeResponse command +static const sl_signature_t sig_prepayment_cluster_change_payment_mode_response_command = sl_zcl_prepayment_cluster_change_payment_mode_response_command_signature; +// Command parser for ChangePaymentModeResponse command +EmberAfStatus zcl_decode_prepayment_cluster_change_payment_mode_response_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_change_payment_mode_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_prepayment_cluster_change_payment_mode_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for SaveStartupParameters command +static const sl_signature_t sig_commissioning_cluster_save_startup_parameters_command = sl_zcl_commissioning_cluster_save_startup_parameters_command_signature; +// Command parser for SaveStartupParameters command +EmberAfStatus zcl_decode_commissioning_cluster_save_startup_parameters_command (EmberAfClusterCommand * cmd, sl_zcl_commissioning_cluster_save_startup_parameters_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_commissioning_cluster_save_startup_parameters_command, (uint8_t*)cmd_struct); +} + + +// Signature for RestoreStartupParameters command +static const sl_signature_t sig_commissioning_cluster_restore_startup_parameters_command = sl_zcl_commissioning_cluster_restore_startup_parameters_command_signature; +// Command parser for RestoreStartupParameters command +EmberAfStatus zcl_decode_commissioning_cluster_restore_startup_parameters_command (EmberAfClusterCommand * cmd, sl_zcl_commissioning_cluster_restore_startup_parameters_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_commissioning_cluster_restore_startup_parameters_command, (uint8_t*)cmd_struct); +} + + +// Signature for ResetStartupParameters command +static const sl_signature_t sig_commissioning_cluster_reset_startup_parameters_command = sl_zcl_commissioning_cluster_reset_startup_parameters_command_signature; +// Command parser for ResetStartupParameters command +EmberAfStatus zcl_decode_commissioning_cluster_reset_startup_parameters_command (EmberAfClusterCommand * cmd, sl_zcl_commissioning_cluster_reset_startup_parameters_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_commissioning_cluster_reset_startup_parameters_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetLocationData command +static const sl_signature_t sig_rssi_location_cluster_get_location_data_command = sl_zcl_rssi_location_cluster_get_location_data_command_signature; +// Command parser for GetLocationData command +EmberAfStatus zcl_decode_rssi_location_cluster_get_location_data_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_get_location_data_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_rssi_location_cluster_get_location_data_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetPowerProfilePriceExtended command +static const sl_signature_t sig_power_profile_cluster_get_power_profile_price_extended_command = sl_zcl_power_profile_cluster_get_power_profile_price_extended_command_signature; +// Command parser for GetPowerProfilePriceExtended command +EmberAfStatus zcl_decode_power_profile_cluster_get_power_profile_price_extended_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_get_power_profile_price_extended_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_power_profile_cluster_get_power_profile_price_extended_command, (uint8_t*)cmd_struct); +} + + +// Signature for RestartDevice command +static const sl_signature_t sig_commissioning_cluster_restart_device_command = sl_zcl_commissioning_cluster_restart_device_command_signature; +// Command parser for RestartDevice command +EmberAfStatus zcl_decode_commissioning_cluster_restart_device_command (EmberAfClusterCommand * cmd, sl_zcl_commissioning_cluster_restart_device_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_commissioning_cluster_restart_device_command, (uint8_t*)cmd_struct); +} + + +// Signature for TransferPartitionedFrame command +static const sl_signature_t sig_partition_cluster_transfer_partitioned_frame_command = sl_zcl_partition_cluster_transfer_partitioned_frame_command_signature; +// Command parser for TransferPartitionedFrame command +EmberAfStatus zcl_decode_partition_cluster_transfer_partitioned_frame_command (EmberAfClusterCommand * cmd, sl_zcl_partition_cluster_transfer_partitioned_frame_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_partition_cluster_transfer_partitioned_frame_command, (uint8_t*)cmd_struct); +} + + +// Signature for MultipleAck command +static const sl_signature_t sig_partition_cluster_multiple_ack_command = sl_zcl_partition_cluster_multiple_ack_command_signature; +// Command parser for MultipleAck command +EmberAfStatus zcl_decode_partition_cluster_multiple_ack_command (EmberAfClusterCommand * cmd, sl_zcl_partition_cluster_multiple_ack_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_partition_cluster_multiple_ack_command, (uint8_t*)cmd_struct); +} + + +// Signature for WriteFileRequest command +static const sl_signature_t sig_data_sharing_cluster_write_file_request_command = sl_zcl_data_sharing_cluster_write_file_request_command_signature; +// Command parser for WriteFileRequest command +EmberAfStatus zcl_decode_data_sharing_cluster_write_file_request_command (EmberAfClusterCommand * cmd, sl_zcl_data_sharing_cluster_write_file_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_data_sharing_cluster_write_file_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for FileTransmission command +static const sl_signature_t sig_data_sharing_cluster_file_transmission_command = sl_zcl_data_sharing_cluster_file_transmission_command_signature; +// Command parser for FileTransmission command +EmberAfStatus zcl_decode_data_sharing_cluster_file_transmission_command (EmberAfClusterCommand * cmd, sl_zcl_data_sharing_cluster_file_transmission_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_data_sharing_cluster_file_transmission_command, (uint8_t*)cmd_struct); +} + + +// Signature for RecordTransmission command +static const sl_signature_t sig_data_sharing_cluster_record_transmission_command = sl_zcl_data_sharing_cluster_record_transmission_command_signature; +// Command parser for RecordTransmission command +EmberAfStatus zcl_decode_data_sharing_cluster_record_transmission_command (EmberAfClusterCommand * cmd, sl_zcl_data_sharing_cluster_record_transmission_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_data_sharing_cluster_record_transmission_command, (uint8_t*)cmd_struct); +} + + +// Signature for SearchChatResponse command +static const sl_signature_t sig_chatting_cluster_search_chat_response_command = sl_zcl_chatting_cluster_search_chat_response_command_signature; +// Command parser for SearchChatResponse command +EmberAfStatus zcl_decode_chatting_cluster_search_chat_response_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_search_chat_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_chatting_cluster_search_chat_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for Stop command +static const sl_signature_t sig_level_control_cluster_stop_command = sl_zcl_level_control_cluster_stop_command_signature; +// Command parser for Stop command +EmberAfStatus zcl_decode_level_control_cluster_stop_command (EmberAfClusterCommand * cmd, sl_zcl_level_control_cluster_stop_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_level_control_cluster_stop_command, (uint8_t*)cmd_struct); +} + + +// Signature for StopMoveStep command +static const sl_signature_t sig_color_control_cluster_stop_move_step_command = sl_zcl_color_control_cluster_stop_move_step_command_signature; +// Command parser for StopMoveStep command +EmberAfStatus zcl_decode_color_control_cluster_stop_move_step_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_stop_move_step_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_color_control_cluster_stop_move_step_command, (uint8_t*)cmd_struct); +} + + +// Signature for ConfigureDeliveryEnable command +static const sl_signature_t sig_information_cluster_configure_delivery_enable_command = sl_zcl_information_cluster_configure_delivery_enable_command_signature; +// Command parser for ConfigureDeliveryEnable command +EmberAfStatus zcl_decode_information_cluster_configure_delivery_enable_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_configure_delivery_enable_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_information_cluster_configure_delivery_enable_command, (uint8_t*)cmd_struct); +} + + +// Signature for SurveyBeacons command +static const sl_signature_t sig_sl_works_with_all_hubs_cluster_survey_beacons_command = sl_zcl_sl_works_with_all_hubs_cluster_survey_beacons_command_signature; +// Command parser for SurveyBeacons command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_survey_beacons_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_survey_beacons_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_sl_works_with_all_hubs_cluster_survey_beacons_command, (uint8_t*)cmd_struct); +} + + +// Signature for CheckInResponse command +static const sl_signature_t sig_poll_control_cluster_check_in_response_command = sl_zcl_poll_control_cluster_check_in_response_command_signature; +// Command parser for CheckInResponse command +EmberAfStatus zcl_decode_poll_control_cluster_check_in_response_command (EmberAfClusterCommand * cmd, sl_zcl_poll_control_cluster_check_in_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_poll_control_cluster_check_in_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetZoneStatusResponse command +static const sl_signature_t sig_ias_ace_cluster_get_zone_status_response_command = sl_zcl_ias_ace_cluster_get_zone_status_response_command_signature; +// Command parser for GetZoneStatusResponse command +EmberAfStatus zcl_decode_ias_ace_cluster_get_zone_status_response_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_get_zone_status_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_ias_ace_cluster_get_zone_status_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for SupportedTunnelProtocolsResponse command +static const sl_signature_t sig_tunneling_cluster_supported_tunnel_protocols_response_command = sl_zcl_tunneling_cluster_supported_tunnel_protocols_response_command_signature; +// Command parser for SupportedTunnelProtocolsResponse command +EmberAfStatus zcl_decode_tunneling_cluster_supported_tunnel_protocols_response_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_supported_tunnel_protocols_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_tunneling_cluster_supported_tunnel_protocols_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ConfigureNodeDescription command +static const sl_signature_t sig_information_cluster_configure_node_description_command = sl_zcl_information_cluster_configure_node_description_command_signature; +// Command parser for ConfigureNodeDescription command +EmberAfStatus zcl_decode_information_cluster_configure_node_description_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_configure_node_description_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_information_cluster_configure_node_description_command, (uint8_t*)cmd_struct); +} + + +// Signature for StartChatRequest command +static const sl_signature_t sig_chatting_cluster_start_chat_request_command = sl_zcl_chatting_cluster_start_chat_request_command_signature; +// Command parser for StartChatRequest command +EmberAfStatus zcl_decode_chatting_cluster_start_chat_request_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_start_chat_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_chatting_cluster_start_chat_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetLocalesSupported command +static const sl_signature_t sig_basic_cluster_get_locales_supported_command = sl_zcl_basic_cluster_get_locales_supported_command_signature; +// Command parser for GetLocalesSupported command +EmberAfStatus zcl_decode_basic_cluster_get_locales_supported_command (EmberAfClusterCommand * cmd, sl_zcl_basic_cluster_get_locales_supported_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_basic_cluster_get_locales_supported_command, (uint8_t*)cmd_struct); +} + + +// Signature for LockDoor command +static const sl_signature_t sig_door_lock_cluster_lock_door_command = sl_zcl_door_lock_cluster_lock_door_command_signature; +// Command parser for LockDoor command +EmberAfStatus zcl_decode_door_lock_cluster_lock_door_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_lock_door_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_lock_door_command, (uint8_t*)cmd_struct); +} + + +// Signature for UnlockDoor command +static const sl_signature_t sig_door_lock_cluster_unlock_door_command = sl_zcl_door_lock_cluster_unlock_door_command_signature; +// Command parser for UnlockDoor command +EmberAfStatus zcl_decode_door_lock_cluster_unlock_door_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_unlock_door_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_unlock_door_command, (uint8_t*)cmd_struct); +} + + +// Signature for Toggle command +static const sl_signature_t sig_door_lock_cluster_toggle_command = sl_zcl_door_lock_cluster_toggle_command_signature; +// Command parser for Toggle command +EmberAfStatus zcl_decode_door_lock_cluster_toggle_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_toggle_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_toggle_command, (uint8_t*)cmd_struct); +} + + +// Signature for ApsLinkKeyAuthorizationQuery command +static const sl_signature_t sig_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_command = sl_zcl_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_command_signature; +// Command parser for ApsLinkKeyAuthorizationQuery command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_command, (uint8_t*)cmd_struct); +} + + +// Signature for ReadHandshakeParam command +static const sl_signature_t sig_partition_cluster_read_handshake_param_command = sl_zcl_partition_cluster_read_handshake_param_command_signature; +// Command parser for ReadHandshakeParam command +EmberAfStatus zcl_decode_partition_cluster_read_handshake_param_command (EmberAfClusterCommand * cmd, sl_zcl_partition_cluster_read_handshake_param_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_partition_cluster_read_handshake_param_command, (uint8_t*)cmd_struct); +} + + +// Signature for ApsLinkKeyAuthorizationQueryResponse command +static const sl_signature_t sig_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_response_command = sl_zcl_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_response_command_signature; +// Command parser for ApsLinkKeyAuthorizationQueryResponse command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_response_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for WriteHandshakeParam command +static const sl_signature_t sig_partition_cluster_write_handshake_param_command = sl_zcl_partition_cluster_write_handshake_param_command_signature; +// Command parser for WriteHandshakeParam command +EmberAfStatus zcl_decode_partition_cluster_write_handshake_param_command (EmberAfClusterCommand * cmd, sl_zcl_partition_cluster_write_handshake_param_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_partition_cluster_write_handshake_param_command, (uint8_t*)cmd_struct); +} + + +// Signature for ReadHandshakeParamResponse command +static const sl_signature_t sig_partition_cluster_read_handshake_param_response_command = sl_zcl_partition_cluster_read_handshake_param_response_command_signature; +// Command parser for ReadHandshakeParamResponse command +EmberAfStatus zcl_decode_partition_cluster_read_handshake_param_response_command (EmberAfClusterCommand * cmd, sl_zcl_partition_cluster_read_handshake_param_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_partition_cluster_read_handshake_param_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for PathDeletion command +static const sl_signature_t sig_data_rate_control_cluster_path_deletion_command = sl_zcl_data_rate_control_cluster_path_deletion_command_signature; +// Command parser for PathDeletion command +EmberAfStatus zcl_decode_data_rate_control_cluster_path_deletion_command (EmberAfClusterCommand * cmd, sl_zcl_data_rate_control_cluster_path_deletion_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_data_rate_control_cluster_path_deletion_command, (uint8_t*)cmd_struct); +} + + +// Signature for PathCreation command +static const sl_signature_t sig_data_rate_control_cluster_path_creation_command = sl_zcl_data_rate_control_cluster_path_creation_command_signature; +// Command parser for PathCreation command +EmberAfStatus zcl_decode_data_rate_control_cluster_path_creation_command (EmberAfClusterCommand * cmd, sl_zcl_data_rate_control_cluster_path_creation_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_data_rate_control_cluster_path_creation_command, (uint8_t*)cmd_struct); +} + + +// Signature for DataRateNotification command +static const sl_signature_t sig_data_rate_control_cluster_data_rate_notification_command = sl_zcl_data_rate_control_cluster_data_rate_notification_command_signature; +// Command parser for DataRateNotification command +EmberAfStatus zcl_decode_data_rate_control_cluster_data_rate_notification_command (EmberAfClusterCommand * cmd, sl_zcl_data_rate_control_cluster_data_rate_notification_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_data_rate_control_cluster_data_rate_notification_command, (uint8_t*)cmd_struct); +} + + +// Signature for DataRateControl command +static const sl_signature_t sig_data_rate_control_cluster_data_rate_control_command = sl_zcl_data_rate_control_cluster_data_rate_control_command_signature; +// Command parser for DataRateControl command +EmberAfStatus zcl_decode_data_rate_control_cluster_data_rate_control_command (EmberAfClusterCommand * cmd, sl_zcl_data_rate_control_cluster_data_rate_control_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_data_rate_control_cluster_data_rate_control_command, (uint8_t*)cmd_struct); +} + + +// Signature for TransferNpdu command +static const sl_signature_t sig_ba_cnet_protocol_tunnel_cluster_transfer_npdu_command = sl_zcl_ba_cnet_protocol_tunnel_cluster_transfer_npdu_command_signature; +// Command parser for TransferNpdu command +EmberAfStatus zcl_decode_ba_cnet_protocol_tunnel_cluster_transfer_npdu_command (EmberAfClusterCommand * cmd, sl_zcl_ba_cnet_protocol_tunnel_cluster_transfer_npdu_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_ba_cnet_protocol_tunnel_cluster_transfer_npdu_command, (uint8_t*)cmd_struct); +} + + +// Signature for ZoneEnrollRequest command +static const sl_signature_t sig_ias_zone_cluster_zone_enroll_request_command = sl_zcl_ias_zone_cluster_zone_enroll_request_command_signature; +// Command parser for ZoneEnrollRequest command +EmberAfStatus zcl_decode_ias_zone_cluster_zone_enroll_request_command (EmberAfClusterCommand * cmd, sl_zcl_ias_zone_cluster_zone_enroll_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_ias_zone_cluster_zone_enroll_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for RestartDeviceResponse command +static const sl_signature_t sig_commissioning_cluster_restart_device_response_command = sl_zcl_commissioning_cluster_restart_device_response_command_signature; +// Command parser for RestartDeviceResponse command +EmberAfStatus zcl_decode_commissioning_cluster_restart_device_response_command (EmberAfClusterCommand * cmd, sl_zcl_commissioning_cluster_restart_device_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_commissioning_cluster_restart_device_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for SaveStartupParametersResponse command +static const sl_signature_t sig_commissioning_cluster_save_startup_parameters_response_command = sl_zcl_commissioning_cluster_save_startup_parameters_response_command_signature; +// Command parser for SaveStartupParametersResponse command +EmberAfStatus zcl_decode_commissioning_cluster_save_startup_parameters_response_command (EmberAfClusterCommand * cmd, sl_zcl_commissioning_cluster_save_startup_parameters_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_commissioning_cluster_save_startup_parameters_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for RestoreStartupParametersResponse command +static const sl_signature_t sig_commissioning_cluster_restore_startup_parameters_response_command = sl_zcl_commissioning_cluster_restore_startup_parameters_response_command_signature; +// Command parser for RestoreStartupParametersResponse command +EmberAfStatus zcl_decode_commissioning_cluster_restore_startup_parameters_response_command (EmberAfClusterCommand * cmd, sl_zcl_commissioning_cluster_restore_startup_parameters_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_commissioning_cluster_restore_startup_parameters_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ResetStartupParametersResponse command +static const sl_signature_t sig_commissioning_cluster_reset_startup_parameters_response_command = sl_zcl_commissioning_cluster_reset_startup_parameters_response_command_signature; +// Command parser for ResetStartupParametersResponse command +EmberAfStatus zcl_decode_commissioning_cluster_reset_startup_parameters_response_command (EmberAfClusterCommand * cmd, sl_zcl_commissioning_cluster_reset_startup_parameters_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_commissioning_cluster_reset_startup_parameters_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ExecutionOfACommand command +static const sl_signature_t sig_appliance_control_cluster_execution_of_a_command_command = sl_zcl_appliance_control_cluster_execution_of_a_command_command_signature; +// Command parser for ExecutionOfACommand command +EmberAfStatus zcl_decode_appliance_control_cluster_execution_of_a_command_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_control_cluster_execution_of_a_command_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_appliance_control_cluster_execution_of_a_command_command, (uint8_t*)cmd_struct); +} + + +// Signature for OverloadWarning command +static const sl_signature_t sig_appliance_control_cluster_overload_warning_command = sl_zcl_appliance_control_cluster_overload_warning_command_signature; +// Command parser for OverloadWarning command +EmberAfStatus zcl_decode_appliance_control_cluster_overload_warning_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_control_cluster_overload_warning_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_appliance_control_cluster_overload_warning_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetPinResponse command +static const sl_signature_t sig_door_lock_cluster_set_pin_response_command = sl_zcl_door_lock_cluster_set_pin_response_command_signature; +// Command parser for SetPinResponse command +EmberAfStatus zcl_decode_door_lock_cluster_set_pin_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_pin_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_set_pin_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetRfidResponse command +static const sl_signature_t sig_door_lock_cluster_set_rfid_response_command = sl_zcl_door_lock_cluster_set_rfid_response_command_signature; +// Command parser for SetRfidResponse command +EmberAfStatus zcl_decode_door_lock_cluster_set_rfid_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_rfid_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_set_rfid_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ArmResponse command +static const sl_signature_t sig_ias_ace_cluster_arm_response_command = sl_zcl_ias_ace_cluster_arm_response_command_signature; +// Command parser for ArmResponse command +EmberAfStatus zcl_decode_ias_ace_cluster_arm_response_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_arm_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_ias_ace_cluster_arm_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ConnectStatusNotification command +static const sl_signature_t sig_11073_protocol_tunnel_cluster_connect_status_notification_command = sl_zcl_11073_protocol_tunnel_cluster_connect_status_notification_command_signature; +// Command parser for ConnectStatusNotification command +EmberAfStatus zcl_decode_11073_protocol_tunnel_cluster_connect_status_notification_command (EmberAfClusterCommand * cmd, sl_zcl_11073_protocol_tunnel_cluster_connect_status_notification_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_11073_protocol_tunnel_cluster_connect_status_notification_command, (uint8_t*)cmd_struct); +} + + +// Signature for LocalChangeSupply command +static const sl_signature_t sig_simple_metering_cluster_local_change_supply_command = sl_zcl_simple_metering_cluster_local_change_supply_command_signature; +// Command parser for LocalChangeSupply command +EmberAfStatus zcl_decode_simple_metering_cluster_local_change_supply_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_local_change_supply_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_local_change_supply_command, (uint8_t*)cmd_struct); +} + + +// Signature for RequestNewPassword command +static const sl_signature_t sig_device_management_cluster_request_new_password_command = sl_zcl_device_management_cluster_request_new_password_command_signature; +// Command parser for RequestNewPassword command +EmberAfStatus zcl_decode_device_management_cluster_request_new_password_command (EmberAfClusterCommand * cmd, sl_zcl_device_management_cluster_request_new_password_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_device_management_cluster_request_new_password_command, (uint8_t*)cmd_struct); +} + + +// Signature for ClearEventLogRequest command +static const sl_signature_t sig_events_cluster_clear_event_log_request_command = sl_zcl_events_cluster_clear_event_log_request_command_signature; +// Command parser for ClearEventLogRequest command +EmberAfStatus zcl_decode_events_cluster_clear_event_log_request_command (EmberAfClusterCommand * cmd, sl_zcl_events_cluster_clear_event_log_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_events_cluster_clear_event_log_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for ControlResponse command +static const sl_signature_t sig_voice_over_zig_bee_cluster_control_response_command = sl_zcl_voice_over_zig_bee_cluster_control_response_command_signature; +// Command parser for ControlResponse command +EmberAfStatus zcl_decode_voice_over_zig_bee_cluster_control_response_command (EmberAfClusterCommand * cmd, sl_zcl_voice_over_zig_bee_cluster_control_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_voice_over_zig_bee_cluster_control_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for Control command +static const sl_signature_t sig_voice_over_zig_bee_cluster_control_command = sl_zcl_voice_over_zig_bee_cluster_control_command_signature; +// Command parser for Control command +EmberAfStatus zcl_decode_voice_over_zig_bee_cluster_control_command (EmberAfClusterCommand * cmd, sl_zcl_voice_over_zig_bee_cluster_control_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_voice_over_zig_bee_cluster_control_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetIasZoneEnrollmentMethod command +static const sl_signature_t sig_sl_works_with_all_hubs_cluster_set_ias_zone_enrollment_method_command = sl_zcl_sl_works_with_all_hubs_cluster_set_ias_zone_enrollment_method_command_signature; +// Command parser for SetIasZoneEnrollmentMethod command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_set_ias_zone_enrollment_method_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_set_ias_zone_enrollment_method_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_sl_works_with_all_hubs_cluster_set_ias_zone_enrollment_method_command, (uint8_t*)cmd_struct); +} + + +// Signature for UpdateCommissionState command +static const sl_signature_t sig_identify_cluster_update_commission_state_command = sl_zcl_identify_cluster_update_commission_state_command_signature; +// Command parser for UpdateCommissionState command +EmberAfStatus zcl_decode_identify_cluster_update_commission_state_command (EmberAfClusterCommand * cmd, sl_zcl_identify_cluster_update_commission_state_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_identify_cluster_update_commission_state_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetWeeklySchedule command +static const sl_signature_t sig_thermostat_cluster_set_weekly_schedule_command = sl_zcl_thermostat_cluster_set_weekly_schedule_command_signature; +// Command parser for SetWeeklySchedule command +EmberAfStatus zcl_decode_thermostat_cluster_set_weekly_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_thermostat_cluster_set_weekly_schedule_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_thermostat_cluster_set_weekly_schedule_command, (uint8_t*)cmd_struct); +} + + +// Signature for CurrentWeeklySchedule command +static const sl_signature_t sig_thermostat_cluster_current_weekly_schedule_command = sl_zcl_thermostat_cluster_current_weekly_schedule_command_signature; +// Command parser for CurrentWeeklySchedule command +EmberAfStatus zcl_decode_thermostat_cluster_current_weekly_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_thermostat_cluster_current_weekly_schedule_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_thermostat_cluster_current_weekly_schedule_command, (uint8_t*)cmd_struct); +} + + +// Signature for SignalStateResponse command +static const sl_signature_t sig_appliance_control_cluster_signal_state_response_command = sl_zcl_appliance_control_cluster_signal_state_response_command_signature; +// Command parser for SignalStateResponse command +EmberAfStatus zcl_decode_appliance_control_cluster_signal_state_response_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_control_cluster_signal_state_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_appliance_control_cluster_signal_state_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for SignalStateNotification command +static const sl_signature_t sig_appliance_control_cluster_signal_state_notification_command = sl_zcl_appliance_control_cluster_signal_state_notification_command_signature; +// Command parser for SignalStateNotification command +EmberAfStatus zcl_decode_appliance_control_cluster_signal_state_notification_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_control_cluster_signal_state_notification_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_appliance_control_cluster_signal_state_notification_command, (uint8_t*)cmd_struct); +} + + +// Signature for RequestInformation command +static const sl_signature_t sig_information_cluster_request_information_command = sl_zcl_information_cluster_request_information_command_signature; +// Command parser for RequestInformation command +EmberAfStatus zcl_decode_information_cluster_request_information_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_request_information_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_information_cluster_request_information_command, (uint8_t*)cmd_struct); +} + + +// Signature for Update command +static const sl_signature_t sig_information_cluster_update_command = sl_zcl_information_cluster_update_command_signature; +// Command parser for Update command +EmberAfStatus zcl_decode_information_cluster_update_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_update_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_information_cluster_update_command, (uint8_t*)cmd_struct); +} + + +// Signature for Arm command +static const sl_signature_t sig_ias_ace_cluster_arm_command = sl_zcl_ias_ace_cluster_arm_command_signature; +// Command parser for Arm command +EmberAfStatus zcl_decode_ias_ace_cluster_arm_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_arm_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_ias_ace_cluster_arm_command, (uint8_t*)cmd_struct); +} + + +// Signature for ResetAlarm command +static const sl_signature_t sig_alarms_cluster_reset_alarm_command = sl_zcl_alarms_cluster_reset_alarm_command_signature; +// Command parser for ResetAlarm command +EmberAfStatus zcl_decode_alarms_cluster_reset_alarm_command (EmberAfClusterCommand * cmd, sl_zcl_alarms_cluster_reset_alarm_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_alarms_cluster_reset_alarm_command, (uint8_t*)cmd_struct); +} + + +// Signature for Alarm command +static const sl_signature_t sig_alarms_cluster_alarm_command = sl_zcl_alarms_cluster_alarm_command_signature; +// Command parser for Alarm command +EmberAfStatus zcl_decode_alarms_cluster_alarm_command (EmberAfClusterCommand * cmd, sl_zcl_alarms_cluster_alarm_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_alarms_cluster_alarm_command, (uint8_t*)cmd_struct); +} + + +// Signature for TriggerEffect command +static const sl_signature_t sig_identify_cluster_trigger_effect_command = sl_zcl_identify_cluster_trigger_effect_command_signature; +// Command parser for TriggerEffect command +EmberAfStatus zcl_decode_identify_cluster_trigger_effect_command (EmberAfClusterCommand * cmd, sl_zcl_identify_cluster_trigger_effect_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_identify_cluster_trigger_effect_command, (uint8_t*)cmd_struct); +} + + +// Signature for OffWithEffect command +static const sl_signature_t sig_on_off_cluster_off_with_effect_command = sl_zcl_on_off_cluster_off_with_effect_command_signature; +// Command parser for OffWithEffect command +EmberAfStatus zcl_decode_on_off_cluster_off_with_effect_command (EmberAfClusterCommand * cmd, sl_zcl_on_off_cluster_off_with_effect_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_on_off_cluster_off_with_effect_command, (uint8_t*)cmd_struct); +} + + +// Signature for EstablishmentResponse command +static const sl_signature_t sig_voice_over_zig_bee_cluster_establishment_response_command = sl_zcl_voice_over_zig_bee_cluster_establishment_response_command_signature; +// Command parser for EstablishmentResponse command +EmberAfStatus zcl_decode_voice_over_zig_bee_cluster_establishment_response_command (EmberAfClusterCommand * cmd, sl_zcl_voice_over_zig_bee_cluster_establishment_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_voice_over_zig_bee_cluster_establishment_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for SearchGame command +static const sl_signature_t sig_gaming_cluster_search_game_command = sl_zcl_gaming_cluster_search_game_command_signature; +// Command parser for SearchGame command +EmberAfStatus zcl_decode_gaming_cluster_search_game_command (EmberAfClusterCommand * cmd, sl_zcl_gaming_cluster_search_game_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_gaming_cluster_search_game_command, (uint8_t*)cmd_struct); +} + + +// Signature for StartChatResponse command +static const sl_signature_t sig_chatting_cluster_start_chat_response_command = sl_zcl_chatting_cluster_start_chat_response_command_signature; +// Command parser for StartChatResponse command +EmberAfStatus zcl_decode_chatting_cluster_start_chat_response_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_start_chat_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_chatting_cluster_start_chat_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for EnhancedMoveHue command +static const sl_signature_t sig_color_control_cluster_enhanced_move_hue_command = sl_zcl_color_control_cluster_enhanced_move_hue_command_signature; +// Command parser for EnhancedMoveHue command +EmberAfStatus zcl_decode_color_control_cluster_enhanced_move_hue_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_enhanced_move_hue_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_color_control_cluster_enhanced_move_hue_command, (uint8_t*)cmd_struct); +} + + +// Signature for ConnectRequest command +static const sl_signature_t sig_11073_protocol_tunnel_cluster_connect_request_command = sl_zcl_11073_protocol_tunnel_cluster_connect_request_command_signature; +// Command parser for ConnectRequest command +EmberAfStatus zcl_decode_11073_protocol_tunnel_cluster_connect_request_command (EmberAfClusterCommand * cmd, sl_zcl_11073_protocol_tunnel_cluster_connect_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_11073_protocol_tunnel_cluster_connect_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for EnhancedStepHue command +static const sl_signature_t sig_color_control_cluster_enhanced_step_hue_command = sl_zcl_color_control_cluster_enhanced_step_hue_command_signature; +// Command parser for EnhancedStepHue command +EmberAfStatus zcl_decode_color_control_cluster_enhanced_step_hue_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_enhanced_step_hue_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_color_control_cluster_enhanced_step_hue_command, (uint8_t*)cmd_struct); +} + + +// Signature for MoveColorTemperature command +static const sl_signature_t sig_color_control_cluster_move_color_temperature_command = sl_zcl_color_control_cluster_move_color_temperature_command_signature; +// Command parser for MoveColorTemperature command +EmberAfStatus zcl_decode_color_control_cluster_move_color_temperature_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_move_color_temperature_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_color_control_cluster_move_color_temperature_command, (uint8_t*)cmd_struct); +} + + +// Signature for StepColorTemperature command +static const sl_signature_t sig_color_control_cluster_step_color_temperature_command = sl_zcl_color_control_cluster_step_color_temperature_command_signature; +// Command parser for StepColorTemperature command +EmberAfStatus zcl_decode_color_control_cluster_step_color_temperature_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_step_color_temperature_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_color_control_cluster_step_color_temperature_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetNodeInformationResponse command +static const sl_signature_t sig_chatting_cluster_get_node_information_response_command = sl_zcl_chatting_cluster_get_node_information_response_command_signature; +// Command parser for GetNodeInformationResponse command +EmberAfStatus zcl_decode_chatting_cluster_get_node_information_response_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_get_node_information_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_chatting_cluster_get_node_information_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for JoinChatResponse command +static const sl_signature_t sig_chatting_cluster_join_chat_response_command = sl_zcl_chatting_cluster_join_chat_response_command_signature; +// Command parser for JoinChatResponse command +EmberAfStatus zcl_decode_chatting_cluster_join_chat_response_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_join_chat_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_chatting_cluster_join_chat_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishEvent command +static const sl_signature_t sig_events_cluster_publish_event_command = sl_zcl_events_cluster_publish_event_command_signature; +// Command parser for PublishEvent command +EmberAfStatus zcl_decode_events_cluster_publish_event_command (EmberAfClusterCommand * cmd, sl_zcl_events_cluster_publish_event_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_events_cluster_publish_event_command, (uint8_t*)cmd_struct); +} + + +// Signature for ConsumerTopUpResponse command +static const sl_signature_t sig_prepayment_cluster_consumer_top_up_response_command = sl_zcl_prepayment_cluster_consumer_top_up_response_command_signature; +// Command parser for ConsumerTopUpResponse command +EmberAfStatus zcl_decode_prepayment_cluster_consumer_top_up_response_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_consumer_top_up_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_prepayment_cluster_consumer_top_up_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetpointRaiseLower command +static const sl_signature_t sig_thermostat_cluster_setpoint_raise_lower_command = sl_zcl_thermostat_cluster_setpoint_raise_lower_command_signature; +// Command parser for SetpointRaiseLower command +EmberAfStatus zcl_decode_thermostat_cluster_setpoint_raise_lower_command (EmberAfClusterCommand * cmd, sl_zcl_thermostat_cluster_setpoint_raise_lower_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_thermostat_cluster_setpoint_raise_lower_command, (uint8_t*)cmd_struct); +} + + +// Signature for MoveWithOnOff command +static const sl_signature_t sig_level_control_cluster_move_with_on_off_command = sl_zcl_level_control_cluster_move_with_on_off_command_signature; +// Command parser for MoveWithOnOff command +EmberAfStatus zcl_decode_level_control_cluster_move_with_on_off_command (EmberAfClusterCommand * cmd, sl_zcl_level_control_cluster_move_with_on_off_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_level_control_cluster_move_with_on_off_command, (uint8_t*)cmd_struct); +} + + +// Signature for ZoneEnrollResponse command +static const sl_signature_t sig_ias_zone_cluster_zone_enroll_response_command = sl_zcl_ias_zone_cluster_zone_enroll_response_command_signature; +// Command parser for ZoneEnrollResponse command +EmberAfStatus zcl_decode_ias_zone_cluster_zone_enroll_response_command (EmberAfClusterCommand * cmd, sl_zcl_ias_zone_cluster_zone_enroll_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_ias_zone_cluster_zone_enroll_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for TerminateKeyEstablishmentFromClient command +static const sl_signature_t sig_key_establishment_cluster_terminate_key_establishment_from_client_command = sl_zcl_key_establishment_cluster_terminate_key_establishment_from_client_command_signature; +// Command parser for TerminateKeyEstablishmentFromClient command +EmberAfStatus zcl_decode_key_establishment_cluster_terminate_key_establishment_from_client_command (EmberAfClusterCommand * cmd, sl_zcl_key_establishment_cluster_terminate_key_establishment_from_client_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_key_establishment_cluster_terminate_key_establishment_from_client_command, (uint8_t*)cmd_struct); +} + + +// Signature for TerminateKeyEstablishmentFromServer command +static const sl_signature_t sig_key_establishment_cluster_terminate_key_establishment_from_server_command = sl_zcl_key_establishment_cluster_terminate_key_establishment_from_server_command_signature; +// Command parser for TerminateKeyEstablishmentFromServer command +EmberAfStatus zcl_decode_key_establishment_cluster_terminate_key_establishment_from_server_command (EmberAfClusterCommand * cmd, sl_zcl_key_establishment_cluster_terminate_key_establishment_from_server_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_key_establishment_cluster_terminate_key_establishment_from_server_command, (uint8_t*)cmd_struct); +} + + +// Signature for Move command +static const sl_signature_t sig_level_control_cluster_move_command = sl_zcl_level_control_cluster_move_command_signature; +// Command parser for Move command +EmberAfStatus zcl_decode_level_control_cluster_move_command (EmberAfClusterCommand * cmd, sl_zcl_level_control_cluster_move_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_level_control_cluster_move_command, (uint8_t*)cmd_struct); +} + + +// Signature for MoveHue command +static const sl_signature_t sig_color_control_cluster_move_hue_command = sl_zcl_color_control_cluster_move_hue_command_signature; +// Command parser for MoveHue command +EmberAfStatus zcl_decode_color_control_cluster_move_hue_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_move_hue_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_color_control_cluster_move_hue_command, (uint8_t*)cmd_struct); +} + + +// Signature for MoveSaturation command +static const sl_signature_t sig_color_control_cluster_move_saturation_command = sl_zcl_color_control_cluster_move_saturation_command_signature; +// Command parser for MoveSaturation command +EmberAfStatus zcl_decode_color_control_cluster_move_saturation_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_move_saturation_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_color_control_cluster_move_saturation_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetPanelStatusResponse command +static const sl_signature_t sig_ias_ace_cluster_get_panel_status_response_command = sl_zcl_ias_ace_cluster_get_panel_status_response_command_signature; +// Command parser for GetPanelStatusResponse command +EmberAfStatus zcl_decode_ias_ace_cluster_get_panel_status_response_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_get_panel_status_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_ias_ace_cluster_get_panel_status_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for PanelStatusChanged command +static const sl_signature_t sig_ias_ace_cluster_panel_status_changed_command = sl_zcl_ias_ace_cluster_panel_status_changed_command_signature; +// Command parser for PanelStatusChanged command +EmberAfStatus zcl_decode_ias_ace_cluster_panel_status_changed_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_panel_status_changed_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_ias_ace_cluster_panel_status_changed_command, (uint8_t*)cmd_struct); +} + + +// Signature for StepWithOnOff command +static const sl_signature_t sig_level_control_cluster_step_with_on_off_command = sl_zcl_level_control_cluster_step_with_on_off_command_signature; +// Command parser for StepWithOnOff command +EmberAfStatus zcl_decode_level_control_cluster_step_with_on_off_command (EmberAfClusterCommand * cmd, sl_zcl_level_control_cluster_step_with_on_off_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_level_control_cluster_step_with_on_off_command, (uint8_t*)cmd_struct); +} + + +// Signature for Step command +static const sl_signature_t sig_level_control_cluster_step_command = sl_zcl_level_control_cluster_step_command_signature; +// Command parser for Step command +EmberAfStatus zcl_decode_level_control_cluster_step_command (EmberAfClusterCommand * cmd, sl_zcl_level_control_cluster_step_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_level_control_cluster_step_command, (uint8_t*)cmd_struct); +} + + +// Signature for ImageNotify command +static const sl_signature_t sig_over_the_air_bootloading_cluster_image_notify_command = sl_zcl_over_the_air_bootloading_cluster_image_notify_command_signature; +// Command parser for ImageNotify command +EmberAfStatus zcl_decode_over_the_air_bootloading_cluster_image_notify_command (EmberAfClusterCommand * cmd, sl_zcl_over_the_air_bootloading_cluster_image_notify_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_over_the_air_bootloading_cluster_image_notify_command, (uint8_t*)cmd_struct); +} + + +// Signature for StepHue command +static const sl_signature_t sig_color_control_cluster_step_hue_command = sl_zcl_color_control_cluster_step_hue_command_signature; +// Command parser for StepHue command +EmberAfStatus zcl_decode_color_control_cluster_step_hue_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_step_hue_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_color_control_cluster_step_hue_command, (uint8_t*)cmd_struct); +} + + +// Signature for StepSaturation command +static const sl_signature_t sig_color_control_cluster_step_saturation_command = sl_zcl_color_control_cluster_step_saturation_command_signature; +// Command parser for StepSaturation command +EmberAfStatus zcl_decode_color_control_cluster_step_saturation_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_step_saturation_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_color_control_cluster_step_saturation_command, (uint8_t*)cmd_struct); +} + + +// Signature for GpProxyTableResponse command +static const sl_signature_t sig_green_power_cluster_gp_proxy_table_response_command = sl_zcl_green_power_cluster_gp_proxy_table_response_command_signature; +// Command parser for GpProxyTableResponse command +EmberAfStatus zcl_decode_green_power_cluster_gp_proxy_table_response_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_proxy_table_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_green_power_cluster_gp_proxy_table_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for GpSinkTableResponse command +static const sl_signature_t sig_green_power_cluster_gp_sink_table_response_command = sl_zcl_green_power_cluster_gp_sink_table_response_command_signature; +// Command parser for GpSinkTableResponse command +EmberAfStatus zcl_decode_green_power_cluster_gp_sink_table_response_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_sink_table_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_green_power_cluster_gp_sink_table_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for WriteFileResponse command +static const sl_signature_t sig_data_sharing_cluster_write_file_response_command = sl_zcl_data_sharing_cluster_write_file_response_command_signature; +// Command parser for WriteFileResponse command +EmberAfStatus zcl_decode_data_sharing_cluster_write_file_response_command (EmberAfClusterCommand * cmd, sl_zcl_data_sharing_cluster_write_file_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_data_sharing_cluster_write_file_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ConsumerTopUp command +static const sl_signature_t sig_prepayment_cluster_consumer_top_up_command = sl_zcl_prepayment_cluster_consumer_top_up_command_signature; +// Command parser for ConsumerTopUp command +EmberAfStatus zcl_decode_prepayment_cluster_consumer_top_up_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_consumer_top_up_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_prepayment_cluster_consumer_top_up_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetProfile command +static const sl_signature_t sig_simple_metering_cluster_get_profile_command = sl_zcl_simple_metering_cluster_get_profile_command_signature; +// Command parser for GetProfile command +EmberAfStatus zcl_decode_simple_metering_cluster_get_profile_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_get_profile_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_get_profile_command, (uint8_t*)cmd_struct); +} + + +// Signature for GpTranslationTableResponse command +static const sl_signature_t sig_green_power_cluster_gp_translation_table_response_command = sl_zcl_green_power_cluster_gp_translation_table_response_command_signature; +// Command parser for GpTranslationTableResponse command +EmberAfStatus zcl_decode_green_power_cluster_gp_translation_table_response_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_translation_table_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_green_power_cluster_gp_translation_table_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetDeviceConfiguration command +static const sl_signature_t sig_rssi_location_cluster_get_device_configuration_command = sl_zcl_rssi_location_cluster_get_device_configuration_command_signature; +// Command parser for GetDeviceConfiguration command +EmberAfStatus zcl_decode_rssi_location_cluster_get_device_configuration_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_get_device_configuration_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_rssi_location_cluster_get_device_configuration_command, (uint8_t*)cmd_struct); +} + + +// Signature for RequestOwnLocation command +static const sl_signature_t sig_rssi_location_cluster_request_own_location_command = sl_zcl_rssi_location_cluster_request_own_location_command_signature; +// Command parser for RequestOwnLocation command +EmberAfStatus zcl_decode_rssi_location_cluster_request_own_location_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_request_own_location_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_rssi_location_cluster_request_own_location_command, (uint8_t*)cmd_struct); +} + + +// Signature for DisconnectRequest command +static const sl_signature_t sig_11073_protocol_tunnel_cluster_disconnect_request_command = sl_zcl_11073_protocol_tunnel_cluster_disconnect_request_command_signature; +// Command parser for DisconnectRequest command +EmberAfStatus zcl_decode_11073_protocol_tunnel_cluster_disconnect_request_command (EmberAfClusterCommand * cmd, sl_zcl_11073_protocol_tunnel_cluster_disconnect_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_11073_protocol_tunnel_cluster_disconnect_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for AnchorNodeAnnounce command +static const sl_signature_t sig_rssi_location_cluster_anchor_node_announce_command = sl_zcl_rssi_location_cluster_anchor_node_announce_command_signature; +// Command parser for AnchorNodeAnnounce command +EmberAfStatus zcl_decode_rssi_location_cluster_anchor_node_announce_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_anchor_node_announce_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_rssi_location_cluster_anchor_node_announce_command, (uint8_t*)cmd_struct); +} + + +// Signature for RssiResponse command +static const sl_signature_t sig_rssi_location_cluster_rssi_response_command = sl_zcl_rssi_location_cluster_rssi_response_command_signature; +// Command parser for RssiResponse command +EmberAfStatus zcl_decode_rssi_location_cluster_rssi_response_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_rssi_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_rssi_location_cluster_rssi_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ShortAddressChange command +static const sl_signature_t sig_sl_works_with_all_hubs_cluster_short_address_change_command = sl_zcl_sl_works_with_all_hubs_cluster_short_address_change_command_signature; +// Command parser for ShortAddressChange command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_short_address_change_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_short_address_change_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_sl_works_with_all_hubs_cluster_short_address_change_command, (uint8_t*)cmd_struct); +} + + +// Signature for QuerySpecificFileRequest command +static const sl_signature_t sig_over_the_air_bootloading_cluster_query_specific_file_request_command = sl_zcl_over_the_air_bootloading_cluster_query_specific_file_request_command_signature; +// Command parser for QuerySpecificFileRequest command +EmberAfStatus zcl_decode_over_the_air_bootloading_cluster_query_specific_file_request_command (EmberAfClusterCommand * cmd, sl_zcl_over_the_air_bootloading_cluster_query_specific_file_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_over_the_air_bootloading_cluster_query_specific_file_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for EndpointInformation command +static const sl_signature_t sig_zll_commissioning_cluster_endpoint_information_command = sl_zcl_zll_commissioning_cluster_endpoint_information_command_signature; +// Command parser for EndpointInformation command +EmberAfStatus zcl_decode_zll_commissioning_cluster_endpoint_information_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_endpoint_information_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_zll_commissioning_cluster_endpoint_information_command, (uint8_t*)cmd_struct); +} + + +// Signature for SendPings command +static const sl_signature_t sig_rssi_location_cluster_send_pings_command = sl_zcl_rssi_location_cluster_send_pings_command_signature; +// Command parser for SendPings command +EmberAfStatus zcl_decode_rssi_location_cluster_send_pings_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_send_pings_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_rssi_location_cluster_send_pings_command, (uint8_t*)cmd_struct); +} + + +// Signature for ReportRssiMeasurements command +static const sl_signature_t sig_rssi_location_cluster_report_rssi_measurements_command = sl_zcl_rssi_location_cluster_report_rssi_measurements_command_signature; +// Command parser for ReportRssiMeasurements command +EmberAfStatus zcl_decode_rssi_location_cluster_report_rssi_measurements_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_report_rssi_measurements_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_rssi_location_cluster_report_rssi_measurements_command, (uint8_t*)cmd_struct); +} + + +// Signature for MatchProtocolAddressResponse command +static const sl_signature_t sig_generic_tunnel_cluster_match_protocol_address_response_command = sl_zcl_generic_tunnel_cluster_match_protocol_address_response_command_signature; +// Command parser for MatchProtocolAddressResponse command +EmberAfStatus zcl_decode_generic_tunnel_cluster_match_protocol_address_response_command (EmberAfClusterCommand * cmd, sl_zcl_generic_tunnel_cluster_match_protocol_address_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_generic_tunnel_cluster_match_protocol_address_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for MoveColor command +static const sl_signature_t sig_color_control_cluster_move_color_command = sl_zcl_color_control_cluster_move_color_command_signature; +// Command parser for MoveColor command +EmberAfStatus zcl_decode_color_control_cluster_move_color_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_move_color_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_color_control_cluster_move_color_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetAbsoluteLocation command +static const sl_signature_t sig_rssi_location_cluster_set_absolute_location_command = sl_zcl_rssi_location_cluster_set_absolute_location_command_signature; +// Command parser for SetAbsoluteLocation command +EmberAfStatus zcl_decode_rssi_location_cluster_set_absolute_location_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_set_absolute_location_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_rssi_location_cluster_set_absolute_location_command, (uint8_t*)cmd_struct); +} + + +// Signature for StepColor command +static const sl_signature_t sig_color_control_cluster_step_color_command = sl_zcl_color_control_cluster_step_color_command_signature; +// Command parser for StepColor command +EmberAfStatus zcl_decode_color_control_cluster_step_color_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_step_color_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_color_control_cluster_step_color_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetDeviceConfiguration command +static const sl_signature_t sig_rssi_location_cluster_set_device_configuration_command = sl_zcl_rssi_location_cluster_set_device_configuration_command_signature; +// Command parser for SetDeviceConfiguration command +EmberAfStatus zcl_decode_rssi_location_cluster_set_device_configuration_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_set_device_configuration_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_rssi_location_cluster_set_device_configuration_command, (uint8_t*)cmd_struct); +} + + +// Signature for Identify command +static const sl_signature_t sig_identify_cluster_identify_command = sl_zcl_identify_cluster_identify_command_signature; +// Command parser for Identify command +EmberAfStatus zcl_decode_identify_cluster_identify_command (EmberAfClusterCommand * cmd, sl_zcl_identify_cluster_identify_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_identify_cluster_identify_command, (uint8_t*)cmd_struct); +} + + +// Signature for IdentifyQueryResponse command +static const sl_signature_t sig_identify_cluster_identify_query_response_command = sl_zcl_identify_cluster_identify_query_response_command_signature; +// Command parser for IdentifyQueryResponse command +EmberAfStatus zcl_decode_identify_cluster_identify_query_response_command (EmberAfClusterCommand * cmd, sl_zcl_identify_cluster_identify_query_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_identify_cluster_identify_query_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ViewGroup command +static const sl_signature_t sig_groups_cluster_view_group_command = sl_zcl_groups_cluster_view_group_command_signature; +// Command parser for ViewGroup command +EmberAfStatus zcl_decode_groups_cluster_view_group_command (EmberAfClusterCommand * cmd, sl_zcl_groups_cluster_view_group_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_groups_cluster_view_group_command, (uint8_t*)cmd_struct); +} + + +// Signature for RemoveGroup command +static const sl_signature_t sig_groups_cluster_remove_group_command = sl_zcl_groups_cluster_remove_group_command_signature; +// Command parser for RemoveGroup command +EmberAfStatus zcl_decode_groups_cluster_remove_group_command (EmberAfClusterCommand * cmd, sl_zcl_groups_cluster_remove_group_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_groups_cluster_remove_group_command, (uint8_t*)cmd_struct); +} + + +// Signature for RemoveAllScenes command +static const sl_signature_t sig_scenes_cluster_remove_all_scenes_command = sl_zcl_scenes_cluster_remove_all_scenes_command_signature; +// Command parser for RemoveAllScenes command +EmberAfStatus zcl_decode_scenes_cluster_remove_all_scenes_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_remove_all_scenes_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_scenes_cluster_remove_all_scenes_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetSceneMembership command +static const sl_signature_t sig_scenes_cluster_get_scene_membership_command = sl_zcl_scenes_cluster_get_scene_membership_command_signature; +// Command parser for GetSceneMembership command +EmberAfStatus zcl_decode_scenes_cluster_get_scene_membership_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_get_scene_membership_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_scenes_cluster_get_scene_membership_command, (uint8_t*)cmd_struct); +} + + +// Signature for MoveToClosestFrequency command +static const sl_signature_t sig_level_control_cluster_move_to_closest_frequency_command = sl_zcl_level_control_cluster_move_to_closest_frequency_command_signature; +// Command parser for MoveToClosestFrequency command +EmberAfStatus zcl_decode_level_control_cluster_move_to_closest_frequency_command (EmberAfClusterCommand * cmd, sl_zcl_level_control_cluster_move_to_closest_frequency_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_level_control_cluster_move_to_closest_frequency_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetShortPollInterval command +static const sl_signature_t sig_poll_control_cluster_set_short_poll_interval_command = sl_zcl_poll_control_cluster_set_short_poll_interval_command_signature; +// Command parser for SetShortPollInterval command +EmberAfStatus zcl_decode_poll_control_cluster_set_short_poll_interval_command (EmberAfClusterCommand * cmd, sl_zcl_poll_control_cluster_set_short_poll_interval_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_poll_control_cluster_set_short_poll_interval_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetLogRecord command +static const sl_signature_t sig_door_lock_cluster_get_log_record_command = sl_zcl_door_lock_cluster_get_log_record_command_signature; +// Command parser for GetLogRecord command +EmberAfStatus zcl_decode_door_lock_cluster_get_log_record_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_log_record_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_get_log_record_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetPin command +static const sl_signature_t sig_door_lock_cluster_get_pin_command = sl_zcl_door_lock_cluster_get_pin_command_signature; +// Command parser for GetPin command +EmberAfStatus zcl_decode_door_lock_cluster_get_pin_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_pin_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_get_pin_command, (uint8_t*)cmd_struct); +} + + +// Signature for ClearPin command +static const sl_signature_t sig_door_lock_cluster_clear_pin_command = sl_zcl_door_lock_cluster_clear_pin_command_signature; +// Command parser for ClearPin command +EmberAfStatus zcl_decode_door_lock_cluster_clear_pin_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_pin_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_clear_pin_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetUserStatus command +static const sl_signature_t sig_door_lock_cluster_get_user_status_command = sl_zcl_door_lock_cluster_get_user_status_command_signature; +// Command parser for GetUserStatus command +EmberAfStatus zcl_decode_door_lock_cluster_get_user_status_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_user_status_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_get_user_status_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetUserType command +static const sl_signature_t sig_door_lock_cluster_get_user_type_command = sl_zcl_door_lock_cluster_get_user_type_command_signature; +// Command parser for GetUserType command +EmberAfStatus zcl_decode_door_lock_cluster_get_user_type_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_user_type_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_get_user_type_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetRfid command +static const sl_signature_t sig_door_lock_cluster_get_rfid_command = sl_zcl_door_lock_cluster_get_rfid_command_signature; +// Command parser for GetRfid command +EmberAfStatus zcl_decode_door_lock_cluster_get_rfid_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_rfid_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_get_rfid_command, (uint8_t*)cmd_struct); +} + + +// Signature for ClearRfid command +static const sl_signature_t sig_door_lock_cluster_clear_rfid_command = sl_zcl_door_lock_cluster_clear_rfid_command_signature; +// Command parser for ClearRfid command +EmberAfStatus zcl_decode_door_lock_cluster_clear_rfid_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_rfid_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_clear_rfid_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetDisposableSchedule command +static const sl_signature_t sig_door_lock_cluster_get_disposable_schedule_command = sl_zcl_door_lock_cluster_get_disposable_schedule_command_signature; +// Command parser for GetDisposableSchedule command +EmberAfStatus zcl_decode_door_lock_cluster_get_disposable_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_disposable_schedule_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_get_disposable_schedule_command, (uint8_t*)cmd_struct); +} + + +// Signature for ClearDisposableSchedule command +static const sl_signature_t sig_door_lock_cluster_clear_disposable_schedule_command = sl_zcl_door_lock_cluster_clear_disposable_schedule_command_signature; +// Command parser for ClearDisposableSchedule command +EmberAfStatus zcl_decode_door_lock_cluster_clear_disposable_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_disposable_schedule_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_clear_disposable_schedule_command, (uint8_t*)cmd_struct); +} + + +// Signature for ClearBiometricCredential command +static const sl_signature_t sig_door_lock_cluster_clear_biometric_credential_command = sl_zcl_door_lock_cluster_clear_biometric_credential_command_signature; +// Command parser for ClearBiometricCredential command +EmberAfStatus zcl_decode_door_lock_cluster_clear_biometric_credential_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_biometric_credential_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_clear_biometric_credential_command, (uint8_t*)cmd_struct); +} + + +// Signature for WindowCoveringGoToLiftValue command +static const sl_signature_t sig_window_covering_cluster_window_covering_go_to_lift_value_command = sl_zcl_window_covering_cluster_window_covering_go_to_lift_value_command_signature; +// Command parser for WindowCoveringGoToLiftValue command +EmberAfStatus zcl_decode_window_covering_cluster_window_covering_go_to_lift_value_command (EmberAfClusterCommand * cmd, sl_zcl_window_covering_cluster_window_covering_go_to_lift_value_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_window_covering_cluster_window_covering_go_to_lift_value_command, (uint8_t*)cmd_struct); +} + + +// Signature for WindowCoveringGoToTiltValue command +static const sl_signature_t sig_window_covering_cluster_window_covering_go_to_tilt_value_command = sl_zcl_window_covering_cluster_window_covering_go_to_tilt_value_command_signature; +// Command parser for WindowCoveringGoToTiltValue command +EmberAfStatus zcl_decode_window_covering_cluster_window_covering_go_to_tilt_value_command (EmberAfClusterCommand * cmd, sl_zcl_window_covering_cluster_window_covering_go_to_tilt_value_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_window_covering_cluster_window_covering_go_to_tilt_value_command, (uint8_t*)cmd_struct); +} + + +// Signature for RequestMirrorResponse command +static const sl_signature_t sig_simple_metering_cluster_request_mirror_response_command = sl_zcl_simple_metering_cluster_request_mirror_response_command_signature; +// Command parser for RequestMirrorResponse command +EmberAfStatus zcl_decode_simple_metering_cluster_request_mirror_response_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_request_mirror_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_request_mirror_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for MirrorRemoved command +static const sl_signature_t sig_simple_metering_cluster_mirror_removed_command = sl_zcl_simple_metering_cluster_mirror_removed_command_signature; +// Command parser for MirrorRemoved command +EmberAfStatus zcl_decode_simple_metering_cluster_mirror_removed_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_mirror_removed_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_mirror_removed_command, (uint8_t*)cmd_struct); +} + + +// Signature for StartSamplingResponse command +static const sl_signature_t sig_simple_metering_cluster_start_sampling_response_command = sl_zcl_simple_metering_cluster_start_sampling_response_command_signature; +// Command parser for StartSamplingResponse command +EmberAfStatus zcl_decode_simple_metering_cluster_start_sampling_response_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_start_sampling_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_start_sampling_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for CloseTunnel command +static const sl_signature_t sig_tunneling_cluster_close_tunnel_command = sl_zcl_tunneling_cluster_close_tunnel_command_signature; +// Command parser for CloseTunnel command +EmberAfStatus zcl_decode_tunneling_cluster_close_tunnel_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_close_tunnel_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_tunneling_cluster_close_tunnel_command, (uint8_t*)cmd_struct); +} + + +// Signature for TunnelClosureNotification command +static const sl_signature_t sig_tunneling_cluster_tunnel_closure_notification_command = sl_zcl_tunneling_cluster_tunnel_closure_notification_command_signature; +// Command parser for TunnelClosureNotification command +EmberAfStatus zcl_decode_tunneling_cluster_tunnel_closure_notification_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_tunnel_closure_notification_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_tunneling_cluster_tunnel_closure_notification_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetEventConfiguration command +static const sl_signature_t sig_device_management_cluster_get_event_configuration_command = sl_zcl_device_management_cluster_get_event_configuration_command_signature; +// Command parser for GetEventConfiguration command +EmberAfStatus zcl_decode_device_management_cluster_get_event_configuration_command (EmberAfClusterCommand * cmd, sl_zcl_device_management_cluster_get_event_configuration_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_device_management_cluster_get_event_configuration_command, (uint8_t*)cmd_struct); +} + + +// Signature for ConfigureSetRootId command +static const sl_signature_t sig_information_cluster_configure_set_root_id_command = sl_zcl_information_cluster_configure_set_root_id_command_signature; +// Command parser for ConfigureSetRootId command +EmberAfStatus zcl_decode_information_cluster_configure_set_root_id_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_configure_set_root_id_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_information_cluster_configure_set_root_id_command, (uint8_t*)cmd_struct); +} + + +// Signature for SwitchChairmanRequest command +static const sl_signature_t sig_chatting_cluster_switch_chairman_request_command = sl_zcl_chatting_cluster_switch_chairman_request_command_signature; +// Command parser for SwitchChairmanRequest command +EmberAfStatus zcl_decode_chatting_cluster_switch_chairman_request_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_switch_chairman_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_chatting_cluster_switch_chairman_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for ReadTokens command +static const sl_signature_t sig_configuration_cluster_cluster_read_tokens_command = sl_zcl_configuration_cluster_cluster_read_tokens_command_signature; +// Command parser for ReadTokens command +EmberAfStatus zcl_decode_configuration_cluster_cluster_read_tokens_command (EmberAfClusterCommand * cmd, sl_zcl_configuration_cluster_cluster_read_tokens_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_configuration_cluster_cluster_read_tokens_command, (uint8_t*)cmd_struct); +} + + +// Signature for EnablePeriodicRouterCheckIns command +static const sl_signature_t sig_sl_works_with_all_hubs_cluster_enable_periodic_router_check_ins_command = sl_zcl_sl_works_with_all_hubs_cluster_enable_periodic_router_check_ins_command_signature; +// Command parser for EnablePeriodicRouterCheckIns command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_enable_periodic_router_check_ins_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_enable_periodic_router_check_ins_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_sl_works_with_all_hubs_cluster_enable_periodic_router_check_ins_command, (uint8_t*)cmd_struct); +} + + +// Signature for RelayStatusLog command +static const sl_signature_t sig_thermostat_cluster_relay_status_log_command = sl_zcl_thermostat_cluster_relay_status_log_command_signature; +// Command parser for RelayStatusLog command +EmberAfStatus zcl_decode_thermostat_cluster_relay_status_log_command (EmberAfClusterCommand * cmd, sl_zcl_thermostat_cluster_relay_status_log_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_thermostat_cluster_relay_status_log_command, (uint8_t*)cmd_struct); +} + + +// Signature for JoinGame command +static const sl_signature_t sig_gaming_cluster_join_game_command = sl_zcl_gaming_cluster_join_game_command_signature; +// Command parser for JoinGame command +EmberAfStatus zcl_decode_gaming_cluster_join_game_command (EmberAfClusterCommand * cmd, sl_zcl_gaming_cluster_join_game_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_gaming_cluster_join_game_command, (uint8_t*)cmd_struct); +} + + +// Signature for GameAnnouncement command +static const sl_signature_t sig_gaming_cluster_game_announcement_command = sl_zcl_gaming_cluster_game_announcement_command_signature; +// Command parser for GameAnnouncement command +EmberAfStatus zcl_decode_gaming_cluster_game_announcement_command (EmberAfClusterCommand * cmd, sl_zcl_gaming_cluster_game_announcement_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_gaming_cluster_game_announcement_command, (uint8_t*)cmd_struct); +} + + +// Signature for AddGroup command +static const sl_signature_t sig_groups_cluster_add_group_command = sl_zcl_groups_cluster_add_group_command_signature; +// Command parser for AddGroup command +EmberAfStatus zcl_decode_groups_cluster_add_group_command (EmberAfClusterCommand * cmd, sl_zcl_groups_cluster_add_group_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_groups_cluster_add_group_command, (uint8_t*)cmd_struct); +} + + +// Signature for AddGroupIfIdentifying command +static const sl_signature_t sig_groups_cluster_add_group_if_identifying_command = sl_zcl_groups_cluster_add_group_if_identifying_command_signature; +// Command parser for AddGroupIfIdentifying command +EmberAfStatus zcl_decode_groups_cluster_add_group_if_identifying_command (EmberAfClusterCommand * cmd, sl_zcl_groups_cluster_add_group_if_identifying_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_groups_cluster_add_group_if_identifying_command, (uint8_t*)cmd_struct); +} + + +// Signature for JoinChatRequest command +static const sl_signature_t sig_chatting_cluster_join_chat_request_command = sl_zcl_chatting_cluster_join_chat_request_command_signature; +// Command parser for JoinChatRequest command +EmberAfStatus zcl_decode_chatting_cluster_join_chat_request_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_join_chat_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_chatting_cluster_join_chat_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for UnlockWithTimeout command +static const sl_signature_t sig_door_lock_cluster_unlock_with_timeout_command = sl_zcl_door_lock_cluster_unlock_with_timeout_command_signature; +// Command parser for UnlockWithTimeout command +EmberAfStatus zcl_decode_door_lock_cluster_unlock_with_timeout_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_unlock_with_timeout_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_unlock_with_timeout_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetUserType command +static const sl_signature_t sig_door_lock_cluster_set_user_type_command = sl_zcl_door_lock_cluster_set_user_type_command_signature; +// Command parser for SetUserType command +EmberAfStatus zcl_decode_door_lock_cluster_set_user_type_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_user_type_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_set_user_type_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetUserTypeResponse command +static const sl_signature_t sig_door_lock_cluster_get_user_type_response_command = sl_zcl_door_lock_cluster_get_user_type_response_command_signature; +// Command parser for GetUserTypeResponse command +EmberAfStatus zcl_decode_door_lock_cluster_get_user_type_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_user_type_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_get_user_type_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for TransferDataErrorClientToServer command +static const sl_signature_t sig_tunneling_cluster_transfer_data_error_client_to_server_command = sl_zcl_tunneling_cluster_transfer_data_error_client_to_server_command_signature; +// Command parser for TransferDataErrorClientToServer command +EmberAfStatus zcl_decode_tunneling_cluster_transfer_data_error_client_to_server_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_transfer_data_error_client_to_server_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_tunneling_cluster_transfer_data_error_client_to_server_command, (uint8_t*)cmd_struct); +} + + +// Signature for TransferDataErrorServerToClient command +static const sl_signature_t sig_tunneling_cluster_transfer_data_error_server_to_client_command = sl_zcl_tunneling_cluster_transfer_data_error_server_to_client_command_signature; +// Command parser for TransferDataErrorServerToClient command +EmberAfStatus zcl_decode_tunneling_cluster_transfer_data_error_server_to_client_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_transfer_data_error_server_to_client_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_tunneling_cluster_transfer_data_error_server_to_client_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetPin command +static const sl_signature_t sig_door_lock_cluster_set_pin_command = sl_zcl_door_lock_cluster_set_pin_command_signature; +// Command parser for SetPin command +EmberAfStatus zcl_decode_door_lock_cluster_set_pin_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_pin_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_set_pin_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetRfid command +static const sl_signature_t sig_door_lock_cluster_set_rfid_command = sl_zcl_door_lock_cluster_set_rfid_command_signature; +// Command parser for SetRfid command +EmberAfStatus zcl_decode_door_lock_cluster_set_rfid_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_rfid_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_set_rfid_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetPinResponse command +static const sl_signature_t sig_door_lock_cluster_get_pin_response_command = sl_zcl_door_lock_cluster_get_pin_response_command_signature; +// Command parser for GetPinResponse command +EmberAfStatus zcl_decode_door_lock_cluster_get_pin_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_pin_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_get_pin_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetRfidResponse command +static const sl_signature_t sig_door_lock_cluster_get_rfid_response_command = sl_zcl_door_lock_cluster_get_rfid_response_command_signature; +// Command parser for GetRfidResponse command +EmberAfStatus zcl_decode_door_lock_cluster_get_rfid_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_rfid_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_get_rfid_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for EnhancedMoveToHue command +static const sl_signature_t sig_color_control_cluster_enhanced_move_to_hue_command = sl_zcl_color_control_cluster_enhanced_move_to_hue_command_signature; +// Command parser for EnhancedMoveToHue command +EmberAfStatus zcl_decode_color_control_cluster_enhanced_move_to_hue_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_enhanced_move_to_hue_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_color_control_cluster_enhanced_move_to_hue_command, (uint8_t*)cmd_struct); +} + + +// Signature for RequestTunnelResponse command +static const sl_signature_t sig_tunneling_cluster_request_tunnel_response_command = sl_zcl_tunneling_cluster_request_tunnel_response_command_signature; +// Command parser for RequestTunnelResponse command +EmberAfStatus zcl_decode_tunneling_cluster_request_tunnel_response_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_request_tunnel_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_tunneling_cluster_request_tunnel_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for WriteFunctions command +static const sl_signature_t sig_appliance_control_cluster_write_functions_command = sl_zcl_appliance_control_cluster_write_functions_command_signature; +// Command parser for WriteFunctions command +EmberAfStatus zcl_decode_appliance_control_cluster_write_functions_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_control_cluster_write_functions_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_appliance_control_cluster_write_functions_command, (uint8_t*)cmd_struct); +} + + +// Signature for AckTransferDataClientToServer command +static const sl_signature_t sig_tunneling_cluster_ack_transfer_data_client_to_server_command = sl_zcl_tunneling_cluster_ack_transfer_data_client_to_server_command_signature; +// Command parser for AckTransferDataClientToServer command +EmberAfStatus zcl_decode_tunneling_cluster_ack_transfer_data_client_to_server_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_ack_transfer_data_client_to_server_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_tunneling_cluster_ack_transfer_data_client_to_server_command, (uint8_t*)cmd_struct); +} + + +// Signature for ReadyDataClientToServer command +static const sl_signature_t sig_tunneling_cluster_ready_data_client_to_server_command = sl_zcl_tunneling_cluster_ready_data_client_to_server_command_signature; +// Command parser for ReadyDataClientToServer command +EmberAfStatus zcl_decode_tunneling_cluster_ready_data_client_to_server_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_ready_data_client_to_server_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_tunneling_cluster_ready_data_client_to_server_command, (uint8_t*)cmd_struct); +} + + +// Signature for AckTransferDataServerToClient command +static const sl_signature_t sig_tunneling_cluster_ack_transfer_data_server_to_client_command = sl_zcl_tunneling_cluster_ack_transfer_data_server_to_client_command_signature; +// Command parser for AckTransferDataServerToClient command +EmberAfStatus zcl_decode_tunneling_cluster_ack_transfer_data_server_to_client_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_ack_transfer_data_server_to_client_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_tunneling_cluster_ack_transfer_data_server_to_client_command, (uint8_t*)cmd_struct); +} + + +// Signature for ReadyDataServerToClient command +static const sl_signature_t sig_tunneling_cluster_ready_data_server_to_client_command = sl_zcl_tunneling_cluster_ready_data_server_to_client_command_signature; +// Command parser for ReadyDataServerToClient command +EmberAfStatus zcl_decode_tunneling_cluster_ready_data_server_to_client_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_ready_data_server_to_client_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_tunneling_cluster_ready_data_server_to_client_command, (uint8_t*)cmd_struct); +} + + +// Signature for LeaveChatRequest command +static const sl_signature_t sig_chatting_cluster_leave_chat_request_command = sl_zcl_chatting_cluster_leave_chat_request_command_signature; +// Command parser for LeaveChatRequest command +EmberAfStatus zcl_decode_chatting_cluster_leave_chat_request_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_leave_chat_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_chatting_cluster_leave_chat_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for SwitchChairmanResponse command +static const sl_signature_t sig_chatting_cluster_switch_chairman_response_command = sl_zcl_chatting_cluster_switch_chairman_response_command_signature; +// Command parser for SwitchChairmanResponse command +EmberAfStatus zcl_decode_chatting_cluster_switch_chairman_response_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_switch_chairman_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_chatting_cluster_switch_chairman_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetNodeInformationRequest command +static const sl_signature_t sig_chatting_cluster_get_node_information_request_command = sl_zcl_chatting_cluster_get_node_information_request_command_signature; +// Command parser for GetNodeInformationRequest command +EmberAfStatus zcl_decode_chatting_cluster_get_node_information_request_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_get_node_information_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_chatting_cluster_get_node_information_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for MoveToColorTemperature command +static const sl_signature_t sig_color_control_cluster_move_to_color_temperature_command = sl_zcl_color_control_cluster_move_to_color_temperature_command_signature; +// Command parser for MoveToColorTemperature command +EmberAfStatus zcl_decode_color_control_cluster_move_to_color_temperature_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_move_to_color_temperature_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_color_control_cluster_move_to_color_temperature_command, (uint8_t*)cmd_struct); +} + + +// Signature for UserLeft command +static const sl_signature_t sig_chatting_cluster_user_left_command = sl_zcl_chatting_cluster_user_left_command_signature; +// Command parser for UserLeft command +EmberAfStatus zcl_decode_chatting_cluster_user_left_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_user_left_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_chatting_cluster_user_left_command, (uint8_t*)cmd_struct); +} + + +// Signature for UserJoined command +static const sl_signature_t sig_chatting_cluster_user_joined_command = sl_zcl_chatting_cluster_user_joined_command_signature; +// Command parser for UserJoined command +EmberAfStatus zcl_decode_chatting_cluster_user_joined_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_user_joined_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_chatting_cluster_user_joined_command, (uint8_t*)cmd_struct); +} + + +// Signature for SwitchChairmanNotification command +static const sl_signature_t sig_chatting_cluster_switch_chairman_notification_command = sl_zcl_chatting_cluster_switch_chairman_notification_command_signature; +// Command parser for SwitchChairmanNotification command +EmberAfStatus zcl_decode_chatting_cluster_switch_chairman_notification_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_switch_chairman_notification_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_chatting_cluster_switch_chairman_notification_command, (uint8_t*)cmd_struct); +} + + +// Signature for ModifyRecordRequest command +static const sl_signature_t sig_data_sharing_cluster_modify_record_request_command = sl_zcl_data_sharing_cluster_modify_record_request_command_signature; +// Command parser for ModifyRecordRequest command +EmberAfStatus zcl_decode_data_sharing_cluster_modify_record_request_command (EmberAfClusterCommand * cmd, sl_zcl_data_sharing_cluster_modify_record_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_data_sharing_cluster_modify_record_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for MoveToColor command +static const sl_signature_t sig_color_control_cluster_move_to_color_command = sl_zcl_color_control_cluster_move_to_color_command_signature; +// Command parser for MoveToColor command +EmberAfStatus zcl_decode_color_control_cluster_move_to_color_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_move_to_color_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_color_control_cluster_move_to_color_command, (uint8_t*)cmd_struct); +} + + +// Signature for ChatMessage command +static const sl_signature_t sig_chatting_cluster_chat_message_command = sl_zcl_chatting_cluster_chat_message_command_signature; +// Command parser for ChatMessage command +EmberAfStatus zcl_decode_chatting_cluster_chat_message_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_chat_message_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_chatting_cluster_chat_message_command, (uint8_t*)cmd_struct); +} + + +// Signature for EnableWwahRejoinAlgorithm command +static const sl_signature_t sig_sl_works_with_all_hubs_cluster_enable_wwah_rejoin_algorithm_command = sl_zcl_sl_works_with_all_hubs_cluster_enable_wwah_rejoin_algorithm_command_signature; +// Command parser for EnableWwahRejoinAlgorithm command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_enable_wwah_rejoin_algorithm_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_enable_wwah_rejoin_algorithm_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_sl_works_with_all_hubs_cluster_enable_wwah_rejoin_algorithm_command, (uint8_t*)cmd_struct); +} + + +// Signature for UpgradeEndResponse command +static const sl_signature_t sig_over_the_air_bootloading_cluster_upgrade_end_response_command = sl_zcl_over_the_air_bootloading_cluster_upgrade_end_response_command_signature; +// Command parser for UpgradeEndResponse command +EmberAfStatus zcl_decode_over_the_air_bootloading_cluster_upgrade_end_response_command (EmberAfClusterCommand * cmd, sl_zcl_over_the_air_bootloading_cluster_upgrade_end_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_over_the_air_bootloading_cluster_upgrade_end_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetMeasurementProfileCommand command +static const sl_signature_t sig_electrical_measurement_cluster_get_measurement_profile_command_command = sl_zcl_electrical_measurement_cluster_get_measurement_profile_command_command_signature; +// Command parser for GetMeasurementProfileCommand command +EmberAfStatus zcl_decode_electrical_measurement_cluster_get_measurement_profile_command_command (EmberAfClusterCommand * cmd, sl_zcl_electrical_measurement_cluster_get_measurement_profile_command_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_electrical_measurement_cluster_get_measurement_profile_command_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetLogRecordResponse command +static const sl_signature_t sig_door_lock_cluster_get_log_record_response_command = sl_zcl_door_lock_cluster_get_log_record_response_command_signature; +// Command parser for GetLogRecordResponse command +EmberAfStatus zcl_decode_door_lock_cluster_get_log_record_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_log_record_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_get_log_record_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetDisposableSchedule command +static const sl_signature_t sig_door_lock_cluster_set_disposable_schedule_command = sl_zcl_door_lock_cluster_set_disposable_schedule_command_signature; +// Command parser for SetDisposableSchedule command +EmberAfStatus zcl_decode_door_lock_cluster_set_disposable_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_disposable_schedule_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_set_disposable_schedule_command, (uint8_t*)cmd_struct); +} + + +// Signature for ModifyFileRequest command +static const sl_signature_t sig_data_sharing_cluster_modify_file_request_command = sl_zcl_data_sharing_cluster_modify_file_request_command_signature; +// Command parser for ModifyFileRequest command +EmberAfStatus zcl_decode_data_sharing_cluster_modify_file_request_command (EmberAfClusterCommand * cmd, sl_zcl_data_sharing_cluster_modify_file_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_data_sharing_cluster_modify_file_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetOverallSchedulePriceResponse command +static const sl_signature_t sig_power_profile_cluster_get_overall_schedule_price_response_command = sl_zcl_power_profile_cluster_get_overall_schedule_price_response_command_signature; +// Command parser for GetOverallSchedulePriceResponse command +EmberAfStatus zcl_decode_power_profile_cluster_get_overall_schedule_price_response_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_get_overall_schedule_price_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_power_profile_cluster_get_overall_schedule_price_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ViewScene command +static const sl_signature_t sig_scenes_cluster_view_scene_command = sl_zcl_scenes_cluster_view_scene_command_signature; +// Command parser for ViewScene command +EmberAfStatus zcl_decode_scenes_cluster_view_scene_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_view_scene_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_scenes_cluster_view_scene_command, (uint8_t*)cmd_struct); +} + + +// Signature for RemoveScene command +static const sl_signature_t sig_scenes_cluster_remove_scene_command = sl_zcl_scenes_cluster_remove_scene_command_signature; +// Command parser for RemoveScene command +EmberAfStatus zcl_decode_scenes_cluster_remove_scene_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_remove_scene_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_scenes_cluster_remove_scene_command, (uint8_t*)cmd_struct); +} + + +// Signature for StoreScene command +static const sl_signature_t sig_scenes_cluster_store_scene_command = sl_zcl_scenes_cluster_store_scene_command_signature; +// Command parser for StoreScene command +EmberAfStatus zcl_decode_scenes_cluster_store_scene_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_store_scene_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_scenes_cluster_store_scene_command, (uint8_t*)cmd_struct); +} + + +// Signature for EnhancedViewScene command +static const sl_signature_t sig_scenes_cluster_enhanced_view_scene_command = sl_zcl_scenes_cluster_enhanced_view_scene_command_signature; +// Command parser for EnhancedViewScene command +EmberAfStatus zcl_decode_scenes_cluster_enhanced_view_scene_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_enhanced_view_scene_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_scenes_cluster_enhanced_view_scene_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetUserStatus command +static const sl_signature_t sig_door_lock_cluster_set_user_status_command = sl_zcl_door_lock_cluster_set_user_status_command_signature; +// Command parser for SetUserStatus command +EmberAfStatus zcl_decode_door_lock_cluster_set_user_status_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_user_status_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_set_user_status_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetUserStatusResponse command +static const sl_signature_t sig_door_lock_cluster_get_user_status_response_command = sl_zcl_door_lock_cluster_get_user_status_response_command_signature; +// Command parser for GetUserStatusResponse command +EmberAfStatus zcl_decode_door_lock_cluster_get_user_status_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_user_status_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_get_user_status_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for EnhancedMoveToHueAndSaturation command +static const sl_signature_t sig_color_control_cluster_enhanced_move_to_hue_and_saturation_command = sl_zcl_color_control_cluster_enhanced_move_to_hue_and_saturation_command_signature; +// Command parser for EnhancedMoveToHueAndSaturation command +EmberAfStatus zcl_decode_color_control_cluster_enhanced_move_to_hue_and_saturation_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_enhanced_move_to_hue_and_saturation_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_color_control_cluster_enhanced_move_to_hue_and_saturation_command, (uint8_t*)cmd_struct); +} + + +// Signature for AddScene command +static const sl_signature_t sig_scenes_cluster_add_scene_command = sl_zcl_scenes_cluster_add_scene_command_signature; +// Command parser for AddScene command +EmberAfStatus zcl_decode_scenes_cluster_add_scene_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_add_scene_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_scenes_cluster_add_scene_command, (uint8_t*)cmd_struct); +} + + +// Signature for EnhancedAddScene command +static const sl_signature_t sig_scenes_cluster_enhanced_add_scene_command = sl_zcl_scenes_cluster_enhanced_add_scene_command_signature; +// Command parser for EnhancedAddScene command +EmberAfStatus zcl_decode_scenes_cluster_enhanced_add_scene_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_enhanced_add_scene_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_scenes_cluster_enhanced_add_scene_command, (uint8_t*)cmd_struct); +} + + +// Signature for RecallScene command +static const sl_signature_t sig_scenes_cluster_recall_scene_command = sl_zcl_scenes_cluster_recall_scene_command_signature; +// Command parser for RecallScene command +EmberAfStatus zcl_decode_scenes_cluster_recall_scene_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_recall_scene_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_scenes_cluster_recall_scene_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetDisposableScheduleResponse command +static const sl_signature_t sig_door_lock_cluster_get_disposable_schedule_response_command = sl_zcl_door_lock_cluster_get_disposable_schedule_response_command_signature; +// Command parser for GetDisposableScheduleResponse command +EmberAfStatus zcl_decode_door_lock_cluster_get_disposable_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_disposable_schedule_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_get_disposable_schedule_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishEventLog command +static const sl_signature_t sig_events_cluster_publish_event_log_command = sl_zcl_events_cluster_publish_event_log_command_signature; +// Command parser for PublishEventLog command +EmberAfStatus zcl_decode_events_cluster_publish_event_log_command (EmberAfClusterCommand * cmd, sl_zcl_events_cluster_publish_event_log_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_events_cluster_publish_event_log_command, (uint8_t*)cmd_struct); +} + + +// Signature for TransferDataClientToServer command +static const sl_signature_t sig_tunneling_cluster_transfer_data_client_to_server_command = sl_zcl_tunneling_cluster_transfer_data_client_to_server_command_signature; +// Command parser for TransferDataClientToServer command +EmberAfStatus zcl_decode_tunneling_cluster_transfer_data_client_to_server_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_transfer_data_client_to_server_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_tunneling_cluster_transfer_data_client_to_server_command, (uint8_t*)cmd_struct); +} + + +// Signature for TransferDataServerToClient command +static const sl_signature_t sig_tunneling_cluster_transfer_data_server_to_client_command = sl_zcl_tunneling_cluster_transfer_data_server_to_client_command_signature; +// Command parser for TransferDataServerToClient command +EmberAfStatus zcl_decode_tunneling_cluster_transfer_data_server_to_client_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_transfer_data_server_to_client_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_tunneling_cluster_transfer_data_server_to_client_command, (uint8_t*)cmd_struct); +} + + +// Signature for SendPreference command +static const sl_signature_t sig_information_cluster_send_preference_command = sl_zcl_information_cluster_send_preference_command_signature; +// Command parser for SendPreference command +EmberAfStatus zcl_decode_information_cluster_send_preference_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_send_preference_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_information_cluster_send_preference_command, (uint8_t*)cmd_struct); +} + + +// Signature for ReadFileRequest command +static const sl_signature_t sig_data_sharing_cluster_read_file_request_command = sl_zcl_data_sharing_cluster_read_file_request_command_signature; +// Command parser for ReadFileRequest command +EmberAfStatus zcl_decode_data_sharing_cluster_read_file_request_command (EmberAfClusterCommand * cmd, sl_zcl_data_sharing_cluster_read_file_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_data_sharing_cluster_read_file_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for ReadRecordRequest command +static const sl_signature_t sig_data_sharing_cluster_read_record_request_command = sl_zcl_data_sharing_cluster_read_record_request_command_signature; +// Command parser for ReadRecordRequest command +EmberAfStatus zcl_decode_data_sharing_cluster_read_record_request_command (EmberAfClusterCommand * cmd, sl_zcl_data_sharing_cluster_read_record_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_data_sharing_cluster_read_record_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetToken command +static const sl_signature_t sig_configuration_cluster_cluster_set_token_command = sl_zcl_configuration_cluster_cluster_set_token_command_signature; +// Command parser for SetToken command +EmberAfStatus zcl_decode_configuration_cluster_cluster_set_token_command (EmberAfClusterCommand * cmd, sl_zcl_configuration_cluster_cluster_set_token_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_configuration_cluster_cluster_set_token_command, (uint8_t*)cmd_struct); +} + + +// Signature for ReturnToken command +static const sl_signature_t sig_configuration_cluster_cluster_return_token_command = sl_zcl_configuration_cluster_cluster_return_token_command_signature; +// Command parser for ReturnToken command +EmberAfStatus zcl_decode_configuration_cluster_cluster_return_token_command (EmberAfClusterCommand * cmd, sl_zcl_configuration_cluster_cluster_return_token_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_configuration_cluster_cluster_return_token_command, (uint8_t*)cmd_struct); +} + + +// Signature for SwitchChairmanConfirm command +static const sl_signature_t sig_chatting_cluster_switch_chairman_confirm_command = sl_zcl_chatting_cluster_switch_chairman_confirm_command_signature; +// Command parser for SwitchChairmanConfirm command +EmberAfStatus zcl_decode_chatting_cluster_switch_chairman_confirm_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_switch_chairman_confirm_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_chatting_cluster_switch_chairman_confirm_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetSampledData command +static const sl_signature_t sig_simple_metering_cluster_get_sampled_data_command = sl_zcl_simple_metering_cluster_get_sampled_data_command_signature; +// Command parser for GetSampledData command +EmberAfStatus zcl_decode_simple_metering_cluster_get_sampled_data_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_get_sampled_data_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_get_sampled_data_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetSampledDataResponse command +static const sl_signature_t sig_simple_metering_cluster_get_sampled_data_response_command = sl_zcl_simple_metering_cluster_get_sampled_data_response_command_signature; +// Command parser for GetSampledDataResponse command +EmberAfStatus zcl_decode_simple_metering_cluster_get_sampled_data_response_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_get_sampled_data_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_get_sampled_data_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetLongPollInterval command +static const sl_signature_t sig_poll_control_cluster_set_long_poll_interval_command = sl_zcl_poll_control_cluster_set_long_poll_interval_command_signature; +// Command parser for SetLongPollInterval command +EmberAfStatus zcl_decode_poll_control_cluster_set_long_poll_interval_command (EmberAfClusterCommand * cmd, sl_zcl_poll_control_cluster_set_long_poll_interval_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_poll_control_cluster_set_long_poll_interval_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetPriceMatrix command +static const sl_signature_t sig_price_cluster_get_price_matrix_command = sl_zcl_price_cluster_get_price_matrix_command_signature; +// Command parser for GetPriceMatrix command +EmberAfStatus zcl_decode_price_cluster_get_price_matrix_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_price_matrix_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_get_price_matrix_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetBlockThresholds command +static const sl_signature_t sig_price_cluster_get_block_thresholds_command = sl_zcl_price_cluster_get_block_thresholds_command_signature; +// Command parser for GetBlockThresholds command +EmberAfStatus zcl_decode_price_cluster_get_block_thresholds_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_block_thresholds_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_get_block_thresholds_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetTierLabels command +static const sl_signature_t sig_price_cluster_get_tier_labels_command = sl_zcl_price_cluster_get_tier_labels_command_signature; +// Command parser for GetTierLabels command +EmberAfStatus zcl_decode_price_cluster_get_tier_labels_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_tier_labels_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_get_tier_labels_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetLowCreditWarningLevel command +static const sl_signature_t sig_prepayment_cluster_set_low_credit_warning_level_command = sl_zcl_prepayment_cluster_set_low_credit_warning_level_command_signature; +// Command parser for SetLowCreditWarningLevel command +EmberAfStatus zcl_decode_prepayment_cluster_set_low_credit_warning_level_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_set_low_credit_warning_level_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_prepayment_cluster_set_low_credit_warning_level_command, (uint8_t*)cmd_struct); +} + + +// Signature for ConfigurePushInformationTimer command +static const sl_signature_t sig_information_cluster_configure_push_information_timer_command = sl_zcl_information_cluster_configure_push_information_timer_command_signature; +// Command parser for ConfigurePushInformationTimer command +EmberAfStatus zcl_decode_information_cluster_configure_push_information_timer_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_configure_push_information_timer_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_information_cluster_configure_push_information_timer_command, (uint8_t*)cmd_struct); +} + + +// Signature for LogRequest command +static const sl_signature_t sig_appliance_statistics_cluster_log_request_command = sl_zcl_appliance_statistics_cluster_log_request_command_signature; +// Command parser for LogRequest command +EmberAfStatus zcl_decode_appliance_statistics_cluster_log_request_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_statistics_cluster_log_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_appliance_statistics_cluster_log_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for ResetToFactoryNewRequest command +static const sl_signature_t sig_zll_commissioning_cluster_reset_to_factory_new_request_command = sl_zcl_zll_commissioning_cluster_reset_to_factory_new_request_command_signature; +// Command parser for ResetToFactoryNewRequest command +EmberAfStatus zcl_decode_zll_commissioning_cluster_reset_to_factory_new_request_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_reset_to_factory_new_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_zll_commissioning_cluster_reset_to_factory_new_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for CancelLoadControlEvent command +static const sl_signature_t sig_demand_response_and_load_control_cluster_cancel_load_control_event_command = sl_zcl_demand_response_and_load_control_cluster_cancel_load_control_event_command_signature; +// Command parser for CancelLoadControlEvent command +EmberAfStatus zcl_decode_demand_response_and_load_control_cluster_cancel_load_control_event_command (EmberAfClusterCommand * cmd, sl_zcl_demand_response_and_load_control_cluster_cancel_load_control_event_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_demand_response_and_load_control_cluster_cancel_load_control_event_command, (uint8_t*)cmd_struct); +} + + +// Signature for ManageEvent command +static const sl_signature_t sig_energy_management_cluster_manage_event_command = sl_zcl_energy_management_cluster_manage_event_command_signature; +// Command parser for ManageEvent command +EmberAfStatus zcl_decode_energy_management_cluster_manage_event_command (EmberAfClusterCommand * cmd, sl_zcl_energy_management_cluster_manage_event_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_energy_management_cluster_manage_event_command, (uint8_t*)cmd_struct); +} + + +// Signature for LoadControlEvent command +static const sl_signature_t sig_demand_response_and_load_control_cluster_load_control_event_command = sl_zcl_demand_response_and_load_control_cluster_load_control_event_command_signature; +// Command parser for LoadControlEvent command +EmberAfStatus zcl_decode_demand_response_and_load_control_cluster_load_control_event_command (EmberAfClusterCommand * cmd, sl_zcl_demand_response_and_load_control_cluster_load_control_event_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_demand_response_and_load_control_cluster_load_control_event_command, (uint8_t*)cmd_struct); +} + + +// Signature for CancelMessage command +static const sl_signature_t sig_messaging_cluster_cancel_message_command = sl_zcl_messaging_cluster_cancel_message_command_signature; +// Command parser for CancelMessage command +EmberAfStatus zcl_decode_messaging_cluster_cancel_message_command (EmberAfClusterCommand * cmd, sl_zcl_messaging_cluster_cancel_message_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_messaging_cluster_cancel_message_command, (uint8_t*)cmd_struct); +} + + +// Signature for ScanRequest command +static const sl_signature_t sig_zll_commissioning_cluster_scan_request_command = sl_zcl_zll_commissioning_cluster_scan_request_command_signature; +// Command parser for ScanRequest command +EmberAfStatus zcl_decode_zll_commissioning_cluster_scan_request_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_scan_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_zll_commissioning_cluster_scan_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for DisplayProtectedMessage command +static const sl_signature_t sig_messaging_cluster_display_protected_message_command = sl_zcl_messaging_cluster_display_protected_message_command_signature; +// Command parser for DisplayProtectedMessage command +EmberAfStatus zcl_decode_messaging_cluster_display_protected_message_command (EmberAfClusterCommand * cmd, sl_zcl_messaging_cluster_display_protected_message_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_messaging_cluster_display_protected_message_command, (uint8_t*)cmd_struct); +} + + +// Signature for DisplayMessage command +static const sl_signature_t sig_messaging_cluster_display_message_command = sl_zcl_messaging_cluster_display_message_command_signature; +// Command parser for DisplayMessage command +EmberAfStatus zcl_decode_messaging_cluster_display_message_command (EmberAfClusterCommand * cmd, sl_zcl_messaging_cluster_display_message_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_messaging_cluster_display_message_command, (uint8_t*)cmd_struct); +} + + +// Signature for CppEventResponse command +static const sl_signature_t sig_price_cluster_cpp_event_response_command = sl_zcl_price_cluster_cpp_event_response_command_signature; +// Command parser for CppEventResponse command +EmberAfStatus zcl_decode_price_cluster_cpp_event_response_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_cpp_event_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_cpp_event_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for TakeSnapshotResponse command +static const sl_signature_t sig_simple_metering_cluster_take_snapshot_response_command = sl_zcl_simple_metering_cluster_take_snapshot_response_command_signature; +// Command parser for TakeSnapshotResponse command +EmberAfStatus zcl_decode_simple_metering_cluster_take_snapshot_response_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_take_snapshot_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_take_snapshot_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for NetworkJoinRouterResponse command +static const sl_signature_t sig_zll_commissioning_cluster_network_join_router_response_command = sl_zcl_zll_commissioning_cluster_network_join_router_response_command_signature; +// Command parser for NetworkJoinRouterResponse command +EmberAfStatus zcl_decode_zll_commissioning_cluster_network_join_router_response_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_network_join_router_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_zll_commissioning_cluster_network_join_router_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for NetworkJoinEndDeviceResponse command +static const sl_signature_t sig_zll_commissioning_cluster_network_join_end_device_response_command = sl_zcl_zll_commissioning_cluster_network_join_end_device_response_command_signature; +// Command parser for NetworkJoinEndDeviceResponse command +EmberAfStatus zcl_decode_zll_commissioning_cluster_network_join_end_device_response_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_network_join_end_device_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_zll_commissioning_cluster_network_join_end_device_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetSupplyStatus command +static const sl_signature_t sig_simple_metering_cluster_set_supply_status_command = sl_zcl_simple_metering_cluster_set_supply_status_command_signature; +// Command parser for SetSupplyStatus command +EmberAfStatus zcl_decode_simple_metering_cluster_set_supply_status_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_set_supply_status_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_set_supply_status_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetMeasurementProfileResponseCommand command +static const sl_signature_t sig_electrical_measurement_cluster_get_measurement_profile_response_command_command = sl_zcl_electrical_measurement_cluster_get_measurement_profile_response_command_command_signature; +// Command parser for GetMeasurementProfileResponseCommand command +EmberAfStatus zcl_decode_electrical_measurement_cluster_get_measurement_profile_response_command_command (EmberAfClusterCommand * cmd, sl_zcl_electrical_measurement_cluster_get_measurement_profile_response_command_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_electrical_measurement_cluster_get_measurement_profile_response_command_command, (uint8_t*)cmd_struct); +} + + +// Signature for NetworkStartResponse command +static const sl_signature_t sig_zll_commissioning_cluster_network_start_response_command = sl_zcl_zll_commissioning_cluster_network_start_response_command_signature; +// Command parser for NetworkStartResponse command +EmberAfStatus zcl_decode_zll_commissioning_cluster_network_start_response_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_network_start_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_zll_commissioning_cluster_network_start_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ReportEventStatus command +static const sl_signature_t sig_energy_management_cluster_report_event_status_command = sl_zcl_energy_management_cluster_report_event_status_command_signature; +// Command parser for ReportEventStatus command +EmberAfStatus zcl_decode_energy_management_cluster_report_event_status_command (EmberAfClusterCommand * cmd, sl_zcl_energy_management_cluster_report_event_status_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_energy_management_cluster_report_event_status_command, (uint8_t*)cmd_struct); +} + + +// Signature for ReportEventStatus command +static const sl_signature_t sig_demand_response_and_load_control_cluster_report_event_status_command = sl_zcl_demand_response_and_load_control_cluster_report_event_status_command_signature; +// Command parser for ReportEventStatus command +EmberAfStatus zcl_decode_demand_response_and_load_control_cluster_report_event_status_command (EmberAfClusterCommand * cmd, sl_zcl_demand_response_and_load_control_cluster_report_event_status_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_demand_response_and_load_control_cluster_report_event_status_command, (uint8_t*)cmd_struct); +} + + +// Signature for PairingRequest command +static const sl_signature_t sig_mdu_pairing_cluster_pairing_request_command = sl_zcl_mdu_pairing_cluster_pairing_request_command_signature; +// Command parser for PairingRequest command +EmberAfStatus zcl_decode_mdu_pairing_cluster_pairing_request_command (EmberAfClusterCommand * cmd, sl_zcl_mdu_pairing_cluster_pairing_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_mdu_pairing_cluster_pairing_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for NetworkStartRequest command +static const sl_signature_t sig_zll_commissioning_cluster_network_start_request_command = sl_zcl_zll_commissioning_cluster_network_start_request_command_signature; +// Command parser for NetworkStartRequest command +EmberAfStatus zcl_decode_zll_commissioning_cluster_network_start_request_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_network_start_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_zll_commissioning_cluster_network_start_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for NetworkJoinRouterRequest command +static const sl_signature_t sig_zll_commissioning_cluster_network_join_router_request_command = sl_zcl_zll_commissioning_cluster_network_join_router_request_command_signature; +// Command parser for NetworkJoinRouterRequest command +EmberAfStatus zcl_decode_zll_commissioning_cluster_network_join_router_request_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_network_join_router_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_zll_commissioning_cluster_network_join_router_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for NetworkJoinEndDeviceRequest command +static const sl_signature_t sig_zll_commissioning_cluster_network_join_end_device_request_command = sl_zcl_zll_commissioning_cluster_network_join_end_device_request_command_signature; +// Command parser for NetworkJoinEndDeviceRequest command +EmberAfStatus zcl_decode_zll_commissioning_cluster_network_join_end_device_request_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_network_join_end_device_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_zll_commissioning_cluster_network_join_end_device_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for NetworkUpdateRequest command +static const sl_signature_t sig_zll_commissioning_cluster_network_update_request_command = sl_zcl_zll_commissioning_cluster_network_update_request_command_signature; +// Command parser for NetworkUpdateRequest command +EmberAfStatus zcl_decode_zll_commissioning_cluster_network_update_request_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_network_update_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_zll_commissioning_cluster_network_update_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for IdentifyRequest command +static const sl_signature_t sig_zll_commissioning_cluster_identify_request_command = sl_zcl_zll_commissioning_cluster_identify_request_command_signature; +// Command parser for IdentifyRequest command +EmberAfStatus zcl_decode_zll_commissioning_cluster_identify_request_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_identify_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_zll_commissioning_cluster_identify_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for ConfigureMirror command +static const sl_signature_t sig_simple_metering_cluster_configure_mirror_command = sl_zcl_simple_metering_cluster_configure_mirror_command_signature; +// Command parser for ConfigureMirror command +EmberAfStatus zcl_decode_simple_metering_cluster_configure_mirror_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_configure_mirror_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_configure_mirror_command, (uint8_t*)cmd_struct); +} + + +// Signature for ResetLoadLimitCounter command +static const sl_signature_t sig_simple_metering_cluster_reset_load_limit_counter_command = sl_zcl_simple_metering_cluster_reset_load_limit_counter_command_signature; +// Command parser for ResetLoadLimitCounter command +EmberAfStatus zcl_decode_simple_metering_cluster_reset_load_limit_counter_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_reset_load_limit_counter_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_reset_load_limit_counter_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetSeasons command +static const sl_signature_t sig_calendar_cluster_get_seasons_command = sl_zcl_calendar_cluster_get_seasons_command_signature; +// Command parser for GetSeasons command +EmberAfStatus zcl_decode_calendar_cluster_get_seasons_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_get_seasons_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_calendar_cluster_get_seasons_command, (uint8_t*)cmd_struct); +} + + +// Signature for CancelTariff command +static const sl_signature_t sig_price_cluster_cancel_tariff_command = sl_zcl_price_cluster_cancel_tariff_command_signature; +// Command parser for CancelTariff command +EmberAfStatus zcl_decode_price_cluster_cancel_tariff_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_cancel_tariff_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_cancel_tariff_command, (uint8_t*)cmd_struct); +} + + +// Signature for CancelCalendar command +static const sl_signature_t sig_calendar_cluster_cancel_calendar_command = sl_zcl_calendar_cluster_cancel_calendar_command_signature; +// Command parser for CancelCalendar command +EmberAfStatus zcl_decode_calendar_cluster_cancel_calendar_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_cancel_calendar_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_calendar_cluster_cancel_calendar_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishChangeOfSupplier command +static const sl_signature_t sig_device_management_cluster_publish_change_of_supplier_command = sl_zcl_device_management_cluster_publish_change_of_supplier_command_signature; +// Command parser for PublishChangeOfSupplier command +EmberAfStatus zcl_decode_device_management_cluster_publish_change_of_supplier_command (EmberAfClusterCommand * cmd, sl_zcl_device_management_cluster_publish_change_of_supplier_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_device_management_cluster_publish_change_of_supplier_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishChangeOfTenancy command +static const sl_signature_t sig_device_management_cluster_publish_change_of_tenancy_command = sl_zcl_device_management_cluster_publish_change_of_tenancy_command_signature; +// Command parser for PublishChangeOfTenancy command +EmberAfStatus zcl_decode_device_management_cluster_publish_change_of_tenancy_command (EmberAfClusterCommand * cmd, sl_zcl_device_management_cluster_publish_change_of_tenancy_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_device_management_cluster_publish_change_of_tenancy_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetUncontrolledFlowThreshold command +static const sl_signature_t sig_simple_metering_cluster_set_uncontrolled_flow_threshold_command = sl_zcl_simple_metering_cluster_set_uncontrolled_flow_threshold_command_signature; +// Command parser for SetUncontrolledFlowThreshold command +EmberAfStatus zcl_decode_simple_metering_cluster_set_uncontrolled_flow_threshold_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_set_uncontrolled_flow_threshold_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_set_uncontrolled_flow_threshold_command, (uint8_t*)cmd_struct); +} + + +// Signature for PowerDescriptorChange command +static const sl_signature_t sig_sl_works_with_all_hubs_cluster_power_descriptor_change_command = sl_zcl_sl_works_with_all_hubs_cluster_power_descriptor_change_command_signature; +// Command parser for PowerDescriptorChange command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_power_descriptor_change_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_power_descriptor_change_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_sl_works_with_all_hubs_cluster_power_descriptor_change_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishDayProfile command +static const sl_signature_t sig_calendar_cluster_publish_day_profile_command = sl_zcl_calendar_cluster_publish_day_profile_command_signature; +// Command parser for PublishDayProfile command +EmberAfStatus zcl_decode_calendar_cluster_publish_day_profile_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_publish_day_profile_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_calendar_cluster_publish_day_profile_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishWeekProfile command +static const sl_signature_t sig_calendar_cluster_publish_week_profile_command = sl_zcl_calendar_cluster_publish_week_profile_command_signature; +// Command parser for PublishWeekProfile command +EmberAfStatus zcl_decode_calendar_cluster_publish_week_profile_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_publish_week_profile_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_calendar_cluster_publish_week_profile_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishTierLabels command +static const sl_signature_t sig_price_cluster_publish_tier_labels_command = sl_zcl_price_cluster_publish_tier_labels_command_signature; +// Command parser for PublishTierLabels command +EmberAfStatus zcl_decode_price_cluster_publish_tier_labels_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_tier_labels_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_publish_tier_labels_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishSeasons command +static const sl_signature_t sig_calendar_cluster_publish_seasons_command = sl_zcl_calendar_cluster_publish_seasons_command_signature; +// Command parser for PublishSeasons command +EmberAfStatus zcl_decode_calendar_cluster_publish_seasons_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_publish_seasons_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_calendar_cluster_publish_seasons_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishTariffInformation command +static const sl_signature_t sig_price_cluster_publish_tariff_information_command = sl_zcl_price_cluster_publish_tariff_information_command_signature; +// Command parser for PublishTariffInformation command +EmberAfStatus zcl_decode_price_cluster_publish_tariff_information_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_tariff_information_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_publish_tariff_information_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishCalendar command +static const sl_signature_t sig_calendar_cluster_publish_calendar_command = sl_zcl_calendar_cluster_publish_calendar_command_signature; +// Command parser for PublishCalendar command +EmberAfStatus zcl_decode_calendar_cluster_publish_calendar_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_publish_calendar_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_calendar_cluster_publish_calendar_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishSpecialDays command +static const sl_signature_t sig_calendar_cluster_publish_special_days_command = sl_zcl_calendar_cluster_publish_special_days_command_signature; +// Command parser for PublishSpecialDays command +EmberAfStatus zcl_decode_calendar_cluster_publish_special_days_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_publish_special_days_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_calendar_cluster_publish_special_days_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetDayProfiles command +static const sl_signature_t sig_calendar_cluster_get_day_profiles_command = sl_zcl_calendar_cluster_get_day_profiles_command_signature; +// Command parser for GetDayProfiles command +EmberAfStatus zcl_decode_calendar_cluster_get_day_profiles_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_get_day_profiles_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_calendar_cluster_get_day_profiles_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetWeekProfiles command +static const sl_signature_t sig_calendar_cluster_get_week_profiles_command = sl_zcl_calendar_cluster_get_week_profiles_command_signature; +// Command parser for GetWeekProfiles command +EmberAfStatus zcl_decode_calendar_cluster_get_week_profiles_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_get_week_profiles_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_calendar_cluster_get_week_profiles_command, (uint8_t*)cmd_struct); +} + + +// Signature for ChangePaymentMode command +static const sl_signature_t sig_prepayment_cluster_change_payment_mode_command = sl_zcl_prepayment_cluster_change_payment_mode_command_signature; +// Command parser for ChangePaymentMode command +EmberAfStatus zcl_decode_prepayment_cluster_change_payment_mode_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_change_payment_mode_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_prepayment_cluster_change_payment_mode_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishBillingPeriod command +static const sl_signature_t sig_price_cluster_publish_billing_period_command = sl_zcl_price_cluster_publish_billing_period_command_signature; +// Command parser for PublishBillingPeriod command +EmberAfStatus zcl_decode_price_cluster_publish_billing_period_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_billing_period_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_publish_billing_period_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishConsolidatedBill command +static const sl_signature_t sig_price_cluster_publish_consolidated_bill_command = sl_zcl_price_cluster_publish_consolidated_bill_command_signature; +// Command parser for PublishConsolidatedBill command +EmberAfStatus zcl_decode_price_cluster_publish_consolidated_bill_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_consolidated_bill_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_publish_consolidated_bill_command, (uint8_t*)cmd_struct); +} + + +// Signature for PriceAcknowledgement command +static const sl_signature_t sig_price_cluster_price_acknowledgement_command = sl_zcl_price_cluster_price_acknowledgement_command_signature; +// Command parser for PriceAcknowledgement command +EmberAfStatus zcl_decode_price_cluster_price_acknowledgement_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_price_acknowledgement_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_price_acknowledgement_command, (uint8_t*)cmd_struct); +} + + +// Signature for SupplyStatusResponse command +static const sl_signature_t sig_simple_metering_cluster_supply_status_response_command = sl_zcl_simple_metering_cluster_supply_status_response_command_signature; +// Command parser for SupplyStatusResponse command +EmberAfStatus zcl_decode_simple_metering_cluster_supply_status_response_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_supply_status_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_supply_status_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishCO2Value command +static const sl_signature_t sig_price_cluster_publish_co2_value_command = sl_zcl_price_cluster_publish_co2_value_command_signature; +// Command parser for PublishCO2Value command +EmberAfStatus zcl_decode_price_cluster_publish_co2_value_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_co2_value_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_publish_co2_value_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishCppEvent command +static const sl_signature_t sig_price_cluster_publish_cpp_event_command = sl_zcl_price_cluster_publish_cpp_event_command_signature; +// Command parser for PublishCppEvent command +EmberAfStatus zcl_decode_price_cluster_publish_cpp_event_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_cpp_event_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_publish_cpp_event_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishCurrencyConversion command +static const sl_signature_t sig_price_cluster_publish_currency_conversion_command = sl_zcl_price_cluster_publish_currency_conversion_command_signature; +// Command parser for PublishCurrencyConversion command +EmberAfStatus zcl_decode_price_cluster_publish_currency_conversion_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_currency_conversion_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_publish_currency_conversion_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishBlockPeriod command +static const sl_signature_t sig_price_cluster_publish_block_period_command = sl_zcl_price_cluster_publish_block_period_command_signature; +// Command parser for PublishBlockPeriod command +EmberAfStatus zcl_decode_price_cluster_publish_block_period_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_block_period_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_publish_block_period_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetOverallDebtCap command +static const sl_signature_t sig_prepayment_cluster_set_overall_debt_cap_command = sl_zcl_prepayment_cluster_set_overall_debt_cap_command_signature; +// Command parser for SetOverallDebtCap command +EmberAfStatus zcl_decode_prepayment_cluster_set_overall_debt_cap_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_set_overall_debt_cap_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_prepayment_cluster_set_overall_debt_cap_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishCreditPayment command +static const sl_signature_t sig_price_cluster_publish_credit_payment_command = sl_zcl_price_cluster_publish_credit_payment_command_signature; +// Command parser for PublishCreditPayment command +EmberAfStatus zcl_decode_price_cluster_publish_credit_payment_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_credit_payment_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_publish_credit_payment_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetMaximumCreditLimit command +static const sl_signature_t sig_prepayment_cluster_set_maximum_credit_limit_command = sl_zcl_prepayment_cluster_set_maximum_credit_limit_command_signature; +// Command parser for SetMaximumCreditLimit command +EmberAfStatus zcl_decode_prepayment_cluster_set_maximum_credit_limit_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_set_maximum_credit_limit_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_prepayment_cluster_set_maximum_credit_limit_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishPriceMatrix command +static const sl_signature_t sig_price_cluster_publish_price_matrix_command = sl_zcl_price_cluster_publish_price_matrix_command_signature; +// Command parser for PublishPriceMatrix command +EmberAfStatus zcl_decode_price_cluster_publish_price_matrix_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_price_matrix_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_publish_price_matrix_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishBlockThresholds command +static const sl_signature_t sig_price_cluster_publish_block_thresholds_command = sl_zcl_price_cluster_publish_block_thresholds_command_signature; +// Command parser for PublishBlockThresholds command +EmberAfStatus zcl_decode_price_cluster_publish_block_thresholds_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_block_thresholds_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_publish_block_thresholds_command, (uint8_t*)cmd_struct); +} + + +// Signature for ChangeSupply command +static const sl_signature_t sig_simple_metering_cluster_change_supply_command = sl_zcl_simple_metering_cluster_change_supply_command_signature; +// Command parser for ChangeSupply command +EmberAfStatus zcl_decode_simple_metering_cluster_change_supply_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_change_supply_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_change_supply_command, (uint8_t*)cmd_struct); +} + + +// Signature for DeviceInformationRequest command +static const sl_signature_t sig_zll_commissioning_cluster_device_information_request_command = sl_zcl_zll_commissioning_cluster_device_information_request_command_signature; +// Command parser for DeviceInformationRequest command +EmberAfStatus zcl_decode_zll_commissioning_cluster_device_information_request_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_device_information_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_zll_commissioning_cluster_device_information_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for ConfigureNotificationScheme command +static const sl_signature_t sig_simple_metering_cluster_configure_notification_scheme_command = sl_zcl_simple_metering_cluster_configure_notification_scheme_command_signature; +// Command parser for ConfigureNotificationScheme command +EmberAfStatus zcl_decode_simple_metering_cluster_configure_notification_scheme_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_configure_notification_scheme_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_configure_notification_scheme_command, (uint8_t*)cmd_struct); +} + + +// Signature for ScanResponse command +static const sl_signature_t sig_zll_commissioning_cluster_scan_response_command = sl_zcl_zll_commissioning_cluster_scan_response_command_signature; +// Command parser for ScanResponse command +EmberAfStatus zcl_decode_zll_commissioning_cluster_scan_response_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_scan_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_zll_commissioning_cluster_scan_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ConfigureNotificationFlags command +static const sl_signature_t sig_simple_metering_cluster_configure_notification_flags_command = sl_zcl_simple_metering_cluster_configure_notification_flags_command_signature; +// Command parser for ConfigureNotificationFlags command +EmberAfStatus zcl_decode_simple_metering_cluster_configure_notification_flags_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_configure_notification_flags_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_configure_notification_flags_command, (uint8_t*)cmd_struct); +} + + +// Signature for PairingResponse command +static const sl_signature_t sig_mdu_pairing_cluster_pairing_response_command = sl_zcl_mdu_pairing_cluster_pairing_response_command_signature; +// Command parser for PairingResponse command +EmberAfStatus zcl_decode_mdu_pairing_cluster_pairing_response_command (EmberAfClusterCommand * cmd, sl_zcl_mdu_pairing_cluster_pairing_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_mdu_pairing_cluster_pairing_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for DeviceInformationResponse command +static const sl_signature_t sig_zll_commissioning_cluster_device_information_response_command = sl_zcl_zll_commissioning_cluster_device_information_response_command_signature; +// Command parser for DeviceInformationResponse command +EmberAfStatus zcl_decode_zll_commissioning_cluster_device_information_response_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_device_information_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_zll_commissioning_cluster_device_information_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ScheduleSnapshot command +static const sl_signature_t sig_simple_metering_cluster_schedule_snapshot_command = sl_zcl_simple_metering_cluster_schedule_snapshot_command_signature; +// Command parser for ScheduleSnapshot command +EmberAfStatus zcl_decode_simple_metering_cluster_schedule_snapshot_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_schedule_snapshot_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_schedule_snapshot_command, (uint8_t*)cmd_struct); +} + + +// Signature for ChangeDebt command +static const sl_signature_t sig_prepayment_cluster_change_debt_command = sl_zcl_prepayment_cluster_change_debt_command_signature; +// Command parser for ChangeDebt command +EmberAfStatus zcl_decode_prepayment_cluster_change_debt_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_change_debt_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_prepayment_cluster_change_debt_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishPrice command +static const sl_signature_t sig_price_cluster_publish_price_command = sl_zcl_price_cluster_publish_price_command_signature; +// Command parser for PublishPrice command +EmberAfStatus zcl_decode_price_cluster_publish_price_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_price_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_publish_price_command, (uint8_t*)cmd_struct); +} + + +// Signature for ScheduleSnapshotResponse command +static const sl_signature_t sig_simple_metering_cluster_schedule_snapshot_response_command = sl_zcl_simple_metering_cluster_schedule_snapshot_response_command_signature; +// Command parser for ScheduleSnapshotResponse command +EmberAfStatus zcl_decode_simple_metering_cluster_schedule_snapshot_response_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_schedule_snapshot_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_schedule_snapshot_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetEventConfiguration command +static const sl_signature_t sig_device_management_cluster_set_event_configuration_command = sl_zcl_device_management_cluster_set_event_configuration_command_signature; +// Command parser for SetEventConfiguration command +EmberAfStatus zcl_decode_device_management_cluster_set_event_configuration_command (EmberAfClusterCommand * cmd, sl_zcl_device_management_cluster_set_event_configuration_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_device_management_cluster_set_event_configuration_command, (uint8_t*)cmd_struct); +} + + +// Signature for MessageConfirmation command +static const sl_signature_t sig_messaging_cluster_message_confirmation_command = sl_zcl_messaging_cluster_message_confirmation_command_signature; +// Command parser for MessageConfirmation command +EmberAfStatus zcl_decode_messaging_cluster_message_confirmation_command (EmberAfClusterCommand * cmd, sl_zcl_messaging_cluster_message_confirmation_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_messaging_cluster_message_confirmation_command, (uint8_t*)cmd_struct); +} + + +// Signature for StartSampling command +static const sl_signature_t sig_simple_metering_cluster_start_sampling_command = sl_zcl_simple_metering_cluster_start_sampling_command_signature; +// Command parser for StartSampling command +EmberAfStatus zcl_decode_simple_metering_cluster_start_sampling_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_start_sampling_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_start_sampling_command, (uint8_t*)cmd_struct); +} + + +// Signature for CreditAdjustment command +static const sl_signature_t sig_prepayment_cluster_credit_adjustment_command = sl_zcl_prepayment_cluster_credit_adjustment_command_signature; +// Command parser for CreditAdjustment command +EmberAfStatus zcl_decode_prepayment_cluster_credit_adjustment_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_credit_adjustment_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_prepayment_cluster_credit_adjustment_command, (uint8_t*)cmd_struct); +} + + +// Signature for RequestNewPasswordResponse command +static const sl_signature_t sig_device_management_cluster_request_new_password_response_command = sl_zcl_device_management_cluster_request_new_password_response_command_signature; +// Command parser for RequestNewPasswordResponse command +EmberAfStatus zcl_decode_device_management_cluster_request_new_password_response_command (EmberAfClusterCommand * cmd, sl_zcl_device_management_cluster_request_new_password_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_device_management_cluster_request_new_password_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishConversionFactor command +static const sl_signature_t sig_price_cluster_publish_conversion_factor_command = sl_zcl_price_cluster_publish_conversion_factor_command_signature; +// Command parser for PublishConversionFactor command +EmberAfStatus zcl_decode_price_cluster_publish_conversion_factor_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_conversion_factor_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_publish_conversion_factor_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishCalorificValue command +static const sl_signature_t sig_price_cluster_publish_calorific_value_command = sl_zcl_price_cluster_publish_calorific_value_command_signature; +// Command parser for PublishCalorificValue command +EmberAfStatus zcl_decode_price_cluster_publish_calorific_value_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_calorific_value_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_publish_calorific_value_command, (uint8_t*)cmd_struct); +} + + +// Signature for EmergencyCreditSetup command +static const sl_signature_t sig_prepayment_cluster_emergency_credit_setup_command = sl_zcl_prepayment_cluster_emergency_credit_setup_command_signature; +// Command parser for EmergencyCreditSetup command +EmberAfStatus zcl_decode_prepayment_cluster_emergency_credit_setup_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_emergency_credit_setup_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_prepayment_cluster_emergency_credit_setup_command, (uint8_t*)cmd_struct); +} + + +// Signature for UpdateSiteId command +static const sl_signature_t sig_device_management_cluster_update_site_id_command = sl_zcl_device_management_cluster_update_site_id_command_signature; +// Command parser for UpdateSiteId command +EmberAfStatus zcl_decode_device_management_cluster_update_site_id_command (EmberAfClusterCommand * cmd, sl_zcl_device_management_cluster_update_site_id_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_device_management_cluster_update_site_id_command, (uint8_t*)cmd_struct); +} + + +// Signature for UpdateCIN command +static const sl_signature_t sig_device_management_cluster_update_cin_command = sl_zcl_device_management_cluster_update_cin_command_signature; +// Command parser for UpdateCIN command +EmberAfStatus zcl_decode_device_management_cluster_update_cin_command (EmberAfClusterCommand * cmd, sl_zcl_device_management_cluster_update_cin_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_device_management_cluster_update_cin_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishSnapshot command +static const sl_signature_t sig_simple_metering_cluster_publish_snapshot_command = sl_zcl_simple_metering_cluster_publish_snapshot_command_signature; +// Command parser for PublishSnapshot command +EmberAfStatus zcl_decode_simple_metering_cluster_publish_snapshot_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_publish_snapshot_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_publish_snapshot_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishPrepaySnapshot command +static const sl_signature_t sig_prepayment_cluster_publish_prepay_snapshot_command = sl_zcl_prepayment_cluster_publish_prepay_snapshot_command_signature; +// Command parser for PublishPrepaySnapshot command +EmberAfStatus zcl_decode_prepayment_cluster_publish_prepay_snapshot_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_publish_prepay_snapshot_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_prepayment_cluster_publish_prepay_snapshot_command, (uint8_t*)cmd_struct); +} + + +// Signature for PowerProfileRequest command +static const sl_signature_t sig_power_profile_cluster_power_profile_request_command = sl_zcl_power_profile_cluster_power_profile_request_command_signature; +// Command parser for PowerProfileRequest command +EmberAfStatus zcl_decode_power_profile_cluster_power_profile_request_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_power_profile_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_power_profile_cluster_power_profile_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for PowerProfileScheduleConstraintsRequest command +static const sl_signature_t sig_power_profile_cluster_power_profile_schedule_constraints_request_command = sl_zcl_power_profile_cluster_power_profile_schedule_constraints_request_command_signature; +// Command parser for PowerProfileScheduleConstraintsRequest command +EmberAfStatus zcl_decode_power_profile_cluster_power_profile_schedule_constraints_request_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_power_profile_schedule_constraints_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_power_profile_cluster_power_profile_schedule_constraints_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for EnergyPhasesScheduleStateRequest command +static const sl_signature_t sig_power_profile_cluster_energy_phases_schedule_state_request_command = sl_zcl_power_profile_cluster_energy_phases_schedule_state_request_command_signature; +// Command parser for EnergyPhasesScheduleStateRequest command +EmberAfStatus zcl_decode_power_profile_cluster_energy_phases_schedule_state_request_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_energy_phases_schedule_state_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_power_profile_cluster_energy_phases_schedule_state_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetPowerProfilePrice command +static const sl_signature_t sig_power_profile_cluster_get_power_profile_price_command = sl_zcl_power_profile_cluster_get_power_profile_price_command_signature; +// Command parser for GetPowerProfilePrice command +EmberAfStatus zcl_decode_power_profile_cluster_get_power_profile_price_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_get_power_profile_price_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_power_profile_cluster_get_power_profile_price_command, (uint8_t*)cmd_struct); +} + + +// Signature for EnergyPhasesScheduleRequest command +static const sl_signature_t sig_power_profile_cluster_energy_phases_schedule_request_command = sl_zcl_power_profile_cluster_energy_phases_schedule_request_command_signature; +// Command parser for EnergyPhasesScheduleRequest command +EmberAfStatus zcl_decode_power_profile_cluster_energy_phases_schedule_request_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_energy_phases_schedule_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_power_profile_cluster_energy_phases_schedule_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetHolidaySchedule command +static const sl_signature_t sig_door_lock_cluster_get_holiday_schedule_command = sl_zcl_door_lock_cluster_get_holiday_schedule_command_signature; +// Command parser for GetHolidaySchedule command +EmberAfStatus zcl_decode_door_lock_cluster_get_holiday_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_holiday_schedule_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_get_holiday_schedule_command, (uint8_t*)cmd_struct); +} + + +// Signature for ClearHolidaySchedule command +static const sl_signature_t sig_door_lock_cluster_clear_holiday_schedule_command = sl_zcl_door_lock_cluster_clear_holiday_schedule_command_signature; +// Command parser for ClearHolidaySchedule command +EmberAfStatus zcl_decode_door_lock_cluster_clear_holiday_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_holiday_schedule_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_clear_holiday_schedule_command, (uint8_t*)cmd_struct); +} + + +// Signature for LockDoorResponse command +static const sl_signature_t sig_door_lock_cluster_lock_door_response_command = sl_zcl_door_lock_cluster_lock_door_response_command_signature; +// Command parser for LockDoorResponse command +EmberAfStatus zcl_decode_door_lock_cluster_lock_door_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_lock_door_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_lock_door_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for UnlockDoorResponse command +static const sl_signature_t sig_door_lock_cluster_unlock_door_response_command = sl_zcl_door_lock_cluster_unlock_door_response_command_signature; +// Command parser for UnlockDoorResponse command +EmberAfStatus zcl_decode_door_lock_cluster_unlock_door_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_unlock_door_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_unlock_door_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ToggleResponse command +static const sl_signature_t sig_door_lock_cluster_toggle_response_command = sl_zcl_door_lock_cluster_toggle_response_command_signature; +// Command parser for ToggleResponse command +EmberAfStatus zcl_decode_door_lock_cluster_toggle_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_toggle_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_toggle_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for UnlockWithTimeoutResponse command +static const sl_signature_t sig_door_lock_cluster_unlock_with_timeout_response_command = sl_zcl_door_lock_cluster_unlock_with_timeout_response_command_signature; +// Command parser for UnlockWithTimeoutResponse command +EmberAfStatus zcl_decode_door_lock_cluster_unlock_with_timeout_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_unlock_with_timeout_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_unlock_with_timeout_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ClearPinResponse command +static const sl_signature_t sig_door_lock_cluster_clear_pin_response_command = sl_zcl_door_lock_cluster_clear_pin_response_command_signature; +// Command parser for ClearPinResponse command +EmberAfStatus zcl_decode_door_lock_cluster_clear_pin_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_pin_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_clear_pin_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ClearAllPinsResponse command +static const sl_signature_t sig_door_lock_cluster_clear_all_pins_response_command = sl_zcl_door_lock_cluster_clear_all_pins_response_command_signature; +// Command parser for ClearAllPinsResponse command +EmberAfStatus zcl_decode_door_lock_cluster_clear_all_pins_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_all_pins_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_clear_all_pins_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetUserStatusResponse command +static const sl_signature_t sig_door_lock_cluster_set_user_status_response_command = sl_zcl_door_lock_cluster_set_user_status_response_command_signature; +// Command parser for SetUserStatusResponse command +EmberAfStatus zcl_decode_door_lock_cluster_set_user_status_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_user_status_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_set_user_status_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetWeekdayScheduleResponse command +static const sl_signature_t sig_door_lock_cluster_set_weekday_schedule_response_command = sl_zcl_door_lock_cluster_set_weekday_schedule_response_command_signature; +// Command parser for SetWeekdayScheduleResponse command +EmberAfStatus zcl_decode_door_lock_cluster_set_weekday_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_weekday_schedule_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_set_weekday_schedule_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ClearWeekdayScheduleResponse command +static const sl_signature_t sig_door_lock_cluster_clear_weekday_schedule_response_command = sl_zcl_door_lock_cluster_clear_weekday_schedule_response_command_signature; +// Command parser for ClearWeekdayScheduleResponse command +EmberAfStatus zcl_decode_door_lock_cluster_clear_weekday_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_weekday_schedule_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_clear_weekday_schedule_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetYeardayScheduleResponse command +static const sl_signature_t sig_door_lock_cluster_set_yearday_schedule_response_command = sl_zcl_door_lock_cluster_set_yearday_schedule_response_command_signature; +// Command parser for SetYeardayScheduleResponse command +EmberAfStatus zcl_decode_door_lock_cluster_set_yearday_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_yearday_schedule_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_set_yearday_schedule_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ClearYeardayScheduleResponse command +static const sl_signature_t sig_door_lock_cluster_clear_yearday_schedule_response_command = sl_zcl_door_lock_cluster_clear_yearday_schedule_response_command_signature; +// Command parser for ClearYeardayScheduleResponse command +EmberAfStatus zcl_decode_door_lock_cluster_clear_yearday_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_yearday_schedule_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_clear_yearday_schedule_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetHolidayScheduleResponse command +static const sl_signature_t sig_door_lock_cluster_set_holiday_schedule_response_command = sl_zcl_door_lock_cluster_set_holiday_schedule_response_command_signature; +// Command parser for SetHolidayScheduleResponse command +EmberAfStatus zcl_decode_door_lock_cluster_set_holiday_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_holiday_schedule_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_set_holiday_schedule_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ClearHolidayScheduleResponse command +static const sl_signature_t sig_door_lock_cluster_clear_holiday_schedule_response_command = sl_zcl_door_lock_cluster_clear_holiday_schedule_response_command_signature; +// Command parser for ClearHolidayScheduleResponse command +EmberAfStatus zcl_decode_door_lock_cluster_clear_holiday_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_holiday_schedule_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_clear_holiday_schedule_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetUserTypeResponse command +static const sl_signature_t sig_door_lock_cluster_set_user_type_response_command = sl_zcl_door_lock_cluster_set_user_type_response_command_signature; +// Command parser for SetUserTypeResponse command +EmberAfStatus zcl_decode_door_lock_cluster_set_user_type_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_user_type_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_set_user_type_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ClearRfidResponse command +static const sl_signature_t sig_door_lock_cluster_clear_rfid_response_command = sl_zcl_door_lock_cluster_clear_rfid_response_command_signature; +// Command parser for ClearRfidResponse command +EmberAfStatus zcl_decode_door_lock_cluster_clear_rfid_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_rfid_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_clear_rfid_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ClearAllRfidsResponse command +static const sl_signature_t sig_door_lock_cluster_clear_all_rfids_response_command = sl_zcl_door_lock_cluster_clear_all_rfids_response_command_signature; +// Command parser for ClearAllRfidsResponse command +EmberAfStatus zcl_decode_door_lock_cluster_clear_all_rfids_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_all_rfids_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_clear_all_rfids_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetDisposableScheduleResponse command +static const sl_signature_t sig_door_lock_cluster_set_disposable_schedule_response_command = sl_zcl_door_lock_cluster_set_disposable_schedule_response_command_signature; +// Command parser for SetDisposableScheduleResponse command +EmberAfStatus zcl_decode_door_lock_cluster_set_disposable_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_disposable_schedule_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_set_disposable_schedule_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ClearDisposableScheduleResponse command +static const sl_signature_t sig_door_lock_cluster_clear_disposable_schedule_response_command = sl_zcl_door_lock_cluster_clear_disposable_schedule_response_command_signature; +// Command parser for ClearDisposableScheduleResponse command +EmberAfStatus zcl_decode_door_lock_cluster_clear_disposable_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_disposable_schedule_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_clear_disposable_schedule_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ClearBiometricCredentialResponse command +static const sl_signature_t sig_door_lock_cluster_clear_biometric_credential_response_command = sl_zcl_door_lock_cluster_clear_biometric_credential_response_command_signature; +// Command parser for ClearBiometricCredentialResponse command +EmberAfStatus zcl_decode_door_lock_cluster_clear_biometric_credential_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_biometric_credential_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_clear_biometric_credential_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ClearAllBiometricCredentialsResponse command +static const sl_signature_t sig_door_lock_cluster_clear_all_biometric_credentials_response_command = sl_zcl_door_lock_cluster_clear_all_biometric_credentials_response_command_signature; +// Command parser for ClearAllBiometricCredentialsResponse command +EmberAfStatus zcl_decode_door_lock_cluster_clear_all_biometric_credentials_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_all_biometric_credentials_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_clear_all_biometric_credentials_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for WindowCoveringGoToLiftPercentage command +static const sl_signature_t sig_window_covering_cluster_window_covering_go_to_lift_percentage_command = sl_zcl_window_covering_cluster_window_covering_go_to_lift_percentage_command_signature; +// Command parser for WindowCoveringGoToLiftPercentage command +EmberAfStatus zcl_decode_window_covering_cluster_window_covering_go_to_lift_percentage_command (EmberAfClusterCommand * cmd, sl_zcl_window_covering_cluster_window_covering_go_to_lift_percentage_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_window_covering_cluster_window_covering_go_to_lift_percentage_command, (uint8_t*)cmd_struct); +} + + +// Signature for WindowCoveringGoToTiltPercentage command +static const sl_signature_t sig_window_covering_cluster_window_covering_go_to_tilt_percentage_command = sl_zcl_window_covering_cluster_window_covering_go_to_tilt_percentage_command_signature; +// Command parser for WindowCoveringGoToTiltPercentage command +EmberAfStatus zcl_decode_window_covering_cluster_window_covering_go_to_tilt_percentage_command (EmberAfClusterCommand * cmd, sl_zcl_window_covering_cluster_window_covering_go_to_tilt_percentage_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_window_covering_cluster_window_covering_go_to_tilt_percentage_command, (uint8_t*)cmd_struct); +} + + +// Signature for BarrierControlGoToPercent command +static const sl_signature_t sig_barrier_control_cluster_barrier_control_go_to_percent_command = sl_zcl_barrier_control_cluster_barrier_control_go_to_percent_command_signature; +// Command parser for BarrierControlGoToPercent command +EmberAfStatus zcl_decode_barrier_control_cluster_barrier_control_go_to_percent_command (EmberAfClusterCommand * cmd, sl_zcl_barrier_control_cluster_barrier_control_go_to_percent_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_barrier_control_cluster_barrier_control_go_to_percent_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetZoneInformation command +static const sl_signature_t sig_ias_ace_cluster_get_zone_information_command = sl_zcl_ias_ace_cluster_get_zone_information_command_signature; +// Command parser for GetZoneInformation command +EmberAfStatus zcl_decode_ias_ace_cluster_get_zone_information_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_get_zone_information_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_ias_ace_cluster_get_zone_information_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetSupportedTunnelProtocols command +static const sl_signature_t sig_tunneling_cluster_get_supported_tunnel_protocols_command = sl_zcl_tunneling_cluster_get_supported_tunnel_protocols_command_signature; +// Command parser for GetSupportedTunnelProtocols command +EmberAfStatus zcl_decode_tunneling_cluster_get_supported_tunnel_protocols_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_get_supported_tunnel_protocols_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_tunneling_cluster_get_supported_tunnel_protocols_command, (uint8_t*)cmd_struct); +} + + +// Signature for SuspendZclMessages command +static const sl_signature_t sig_sub_g_hz_cluster_suspend_zcl_messages_command = sl_zcl_sub_g_hz_cluster_suspend_zcl_messages_command_signature; +// Command parser for SuspendZclMessages command +EmberAfStatus zcl_decode_sub_g_hz_cluster_suspend_zcl_messages_command (EmberAfClusterCommand * cmd, sl_zcl_sub_g_hz_cluster_suspend_zcl_messages_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_sub_g_hz_cluster_suspend_zcl_messages_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetGroupIdentifiersRequest command +static const sl_signature_t sig_zll_commissioning_cluster_get_group_identifiers_request_command = sl_zcl_zll_commissioning_cluster_get_group_identifiers_request_command_signature; +// Command parser for GetGroupIdentifiersRequest command +EmberAfStatus zcl_decode_zll_commissioning_cluster_get_group_identifiers_request_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_get_group_identifiers_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_zll_commissioning_cluster_get_group_identifiers_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetEndpointListRequest command +static const sl_signature_t sig_zll_commissioning_cluster_get_endpoint_list_request_command = sl_zcl_zll_commissioning_cluster_get_endpoint_list_request_command_signature; +// Command parser for GetEndpointListRequest command +EmberAfStatus zcl_decode_zll_commissioning_cluster_get_endpoint_list_request_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_get_endpoint_list_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_zll_commissioning_cluster_get_endpoint_list_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for CommandOne command +static const sl_signature_t sig_sample_mfg_specific_cluster_cluster_command_one_command = sl_zcl_sample_mfg_specific_cluster_cluster_command_one_command_signature; +// Command parser for CommandOne command +EmberAfStatus zcl_decode_sample_mfg_specific_cluster_cluster_command_one_command (EmberAfClusterCommand * cmd, sl_zcl_sample_mfg_specific_cluster_cluster_command_one_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_sample_mfg_specific_cluster_cluster_command_one_command, (uint8_t*)cmd_struct); +} + + +// Signature for CommandTwo command +static const sl_signature_t sig_sample_mfg_specific_cluster_2_cluster_command_two_command = sl_zcl_sample_mfg_specific_cluster_2_cluster_command_two_command_signature; +// Command parser for CommandTwo command +EmberAfStatus zcl_decode_sample_mfg_specific_cluster_2_cluster_command_two_command (EmberAfClusterCommand * cmd, sl_zcl_sample_mfg_specific_cluster_2_cluster_command_two_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_sample_mfg_specific_cluster_2_cluster_command_two_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetMacPollFailureWaitTime command +static const sl_signature_t sig_sl_works_with_all_hubs_cluster_set_mac_poll_failure_wait_time_command = sl_zcl_sl_works_with_all_hubs_cluster_set_mac_poll_failure_wait_time_command_signature; +// Command parser for SetMacPollFailureWaitTime command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_set_mac_poll_failure_wait_time_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_set_mac_poll_failure_wait_time_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_sl_works_with_all_hubs_cluster_set_mac_poll_failure_wait_time_command, (uint8_t*)cmd_struct); +} + + +// Signature for DebugReportQuery command +static const sl_signature_t sig_sl_works_with_all_hubs_cluster_debug_report_query_command = sl_zcl_sl_works_with_all_hubs_cluster_debug_report_query_command_signature; +// Command parser for DebugReportQuery command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_debug_report_query_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_debug_report_query_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_sl_works_with_all_hubs_cluster_debug_report_query_command, (uint8_t*)cmd_struct); +} + + +// Signature for MirrorReportAttributeResponse command +static const sl_signature_t sig_simple_metering_cluster_mirror_report_attribute_response_command = sl_zcl_simple_metering_cluster_mirror_report_attribute_response_command_signature; +// Command parser for MirrorReportAttributeResponse command +EmberAfStatus zcl_decode_simple_metering_cluster_mirror_report_attribute_response_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_mirror_report_attribute_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_mirror_report_attribute_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for GeneralResponse command +static const sl_signature_t sig_gaming_cluster_general_response_command = sl_zcl_gaming_cluster_general_response_command_signature; +// Command parser for GeneralResponse command +EmberAfStatus zcl_decode_gaming_cluster_general_response_command (EmberAfClusterCommand * cmd, sl_zcl_gaming_cluster_general_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_gaming_cluster_general_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for LocationDataResponse command +static const sl_signature_t sig_rssi_location_cluster_location_data_response_command = sl_zcl_rssi_location_cluster_location_data_response_command_signature; +// Command parser for LocationDataResponse command +EmberAfStatus zcl_decode_rssi_location_cluster_location_data_response_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_location_data_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_rssi_location_cluster_location_data_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetLocalesSupportedResponse command +static const sl_signature_t sig_basic_cluster_get_locales_supported_response_command = sl_zcl_basic_cluster_get_locales_supported_response_command_signature; +// Command parser for GetLocalesSupportedResponse command +EmberAfStatus zcl_decode_basic_cluster_get_locales_supported_response_command (EmberAfClusterCommand * cmd, sl_zcl_basic_cluster_get_locales_supported_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_basic_cluster_get_locales_supported_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ZoneStatusChanged command +static const sl_signature_t sig_ias_ace_cluster_zone_status_changed_command = sl_zcl_ias_ace_cluster_zone_status_changed_command_signature; +// Command parser for ZoneStatusChanged command +EmberAfStatus zcl_decode_ias_ace_cluster_zone_status_changed_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_zone_status_changed_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_ias_ace_cluster_zone_status_changed_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetZoneInformationResponse command +static const sl_signature_t sig_ias_ace_cluster_get_zone_information_response_command = sl_zcl_ias_ace_cluster_get_zone_information_response_command_signature; +// Command parser for GetZoneInformationResponse command +EmberAfStatus zcl_decode_ias_ace_cluster_get_zone_information_response_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_get_zone_information_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_ias_ace_cluster_get_zone_information_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for VoiceTransmissionResponse command +static const sl_signature_t sig_voice_over_zig_bee_cluster_voice_transmission_response_command = sl_zcl_voice_over_zig_bee_cluster_voice_transmission_response_command_signature; +// Command parser for VoiceTransmissionResponse command +EmberAfStatus zcl_decode_voice_over_zig_bee_cluster_voice_transmission_response_command (EmberAfClusterCommand * cmd, sl_zcl_voice_over_zig_bee_cluster_voice_transmission_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_voice_over_zig_bee_cluster_voice_transmission_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for EventsNotification command +static const sl_signature_t sig_appliance_events_and_alert_cluster_events_notification_command = sl_zcl_appliance_events_and_alert_cluster_events_notification_command_signature; +// Command parser for EventsNotification command +EmberAfStatus zcl_decode_appliance_events_and_alert_cluster_events_notification_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_events_and_alert_cluster_events_notification_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_appliance_events_and_alert_cluster_events_notification_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetAlarmResponse command +static const sl_signature_t sig_alarms_cluster_get_alarm_response_command = sl_zcl_alarms_cluster_get_alarm_response_command_signature; +// Command parser for GetAlarmResponse command +EmberAfStatus zcl_decode_alarms_cluster_get_alarm_response_command (EmberAfClusterCommand * cmd, sl_zcl_alarms_cluster_get_alarm_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_alarms_cluster_get_alarm_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for MoveToHue command +static const sl_signature_t sig_color_control_cluster_move_to_hue_command = sl_zcl_color_control_cluster_move_to_hue_command_signature; +// Command parser for MoveToHue command +EmberAfStatus zcl_decode_color_control_cluster_move_to_hue_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_move_to_hue_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_color_control_cluster_move_to_hue_command, (uint8_t*)cmd_struct); +} + + +// Signature for ProgrammingEventNotification command +static const sl_signature_t sig_door_lock_cluster_programming_event_notification_command = sl_zcl_door_lock_cluster_programming_event_notification_command_signature; +// Command parser for ProgrammingEventNotification command +EmberAfStatus zcl_decode_door_lock_cluster_programming_event_notification_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_programming_event_notification_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_programming_event_notification_command, (uint8_t*)cmd_struct); +} + + +// Signature for OperationEventNotification command +static const sl_signature_t sig_door_lock_cluster_operation_event_notification_command = sl_zcl_door_lock_cluster_operation_event_notification_command_signature; +// Command parser for OperationEventNotification command +EmberAfStatus zcl_decode_door_lock_cluster_operation_event_notification_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_operation_event_notification_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_operation_event_notification_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetProfileInfoResponseCommand command +static const sl_signature_t sig_electrical_measurement_cluster_get_profile_info_response_command_command = sl_zcl_electrical_measurement_cluster_get_profile_info_response_command_command_signature; +// Command parser for GetProfileInfoResponseCommand command +EmberAfStatus zcl_decode_electrical_measurement_cluster_get_profile_info_response_command_command (EmberAfClusterCommand * cmd, sl_zcl_electrical_measurement_cluster_get_profile_info_response_command_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_electrical_measurement_cluster_get_profile_info_response_command_command, (uint8_t*)cmd_struct); +} + + +// Signature for BypassResponse command +static const sl_signature_t sig_ias_ace_cluster_bypass_response_command = sl_zcl_ias_ace_cluster_bypass_response_command_signature; +// Command parser for BypassResponse command +EmberAfStatus zcl_decode_ias_ace_cluster_bypass_response_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_bypass_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_ias_ace_cluster_bypass_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for DeviceConfigurationResponse command +static const sl_signature_t sig_rssi_location_cluster_device_configuration_response_command = sl_zcl_rssi_location_cluster_device_configuration_response_command_signature; +// Command parser for DeviceConfigurationResponse command +EmberAfStatus zcl_decode_rssi_location_cluster_device_configuration_response_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_device_configuration_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_rssi_location_cluster_device_configuration_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for AddGroupResponse command +static const sl_signature_t sig_groups_cluster_add_group_response_command = sl_zcl_groups_cluster_add_group_response_command_signature; +// Command parser for AddGroupResponse command +EmberAfStatus zcl_decode_groups_cluster_add_group_response_command (EmberAfClusterCommand * cmd, sl_zcl_groups_cluster_add_group_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_groups_cluster_add_group_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for RemoveGroupResponse command +static const sl_signature_t sig_groups_cluster_remove_group_response_command = sl_zcl_groups_cluster_remove_group_response_command_signature; +// Command parser for RemoveGroupResponse command +EmberAfStatus zcl_decode_groups_cluster_remove_group_response_command (EmberAfClusterCommand * cmd, sl_zcl_groups_cluster_remove_group_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_groups_cluster_remove_group_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for RemoveAllScenesResponse command +static const sl_signature_t sig_scenes_cluster_remove_all_scenes_response_command = sl_zcl_scenes_cluster_remove_all_scenes_response_command_signature; +// Command parser for RemoveAllScenesResponse command +EmberAfStatus zcl_decode_scenes_cluster_remove_all_scenes_response_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_remove_all_scenes_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_scenes_cluster_remove_all_scenes_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for MoveToLevelWithOnOff command +static const sl_signature_t sig_level_control_cluster_move_to_level_with_on_off_command = sl_zcl_level_control_cluster_move_to_level_with_on_off_command_signature; +// Command parser for MoveToLevelWithOnOff command +EmberAfStatus zcl_decode_level_control_cluster_move_to_level_with_on_off_command (EmberAfClusterCommand * cmd, sl_zcl_level_control_cluster_move_to_level_with_on_off_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_level_control_cluster_move_to_level_with_on_off_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetWeekdaySchedule command +static const sl_signature_t sig_door_lock_cluster_get_weekday_schedule_command = sl_zcl_door_lock_cluster_get_weekday_schedule_command_signature; +// Command parser for GetWeekdaySchedule command +EmberAfStatus zcl_decode_door_lock_cluster_get_weekday_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_weekday_schedule_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_get_weekday_schedule_command, (uint8_t*)cmd_struct); +} + + +// Signature for ClearWeekdaySchedule command +static const sl_signature_t sig_door_lock_cluster_clear_weekday_schedule_command = sl_zcl_door_lock_cluster_clear_weekday_schedule_command_signature; +// Command parser for ClearWeekdaySchedule command +EmberAfStatus zcl_decode_door_lock_cluster_clear_weekday_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_weekday_schedule_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_clear_weekday_schedule_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetYeardaySchedule command +static const sl_signature_t sig_door_lock_cluster_get_yearday_schedule_command = sl_zcl_door_lock_cluster_get_yearday_schedule_command_signature; +// Command parser for GetYeardaySchedule command +EmberAfStatus zcl_decode_door_lock_cluster_get_yearday_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_yearday_schedule_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_get_yearday_schedule_command, (uint8_t*)cmd_struct); +} + + +// Signature for ClearYeardaySchedule command +static const sl_signature_t sig_door_lock_cluster_clear_yearday_schedule_command = sl_zcl_door_lock_cluster_clear_yearday_schedule_command_signature; +// Command parser for ClearYeardaySchedule command +EmberAfStatus zcl_decode_door_lock_cluster_clear_yearday_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_yearday_schedule_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_clear_yearday_schedule_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetPendingNetworkUpdate command +static const sl_signature_t sig_sl_works_with_all_hubs_cluster_set_pending_network_update_command = sl_zcl_sl_works_with_all_hubs_cluster_set_pending_network_update_command_signature; +// Command parser for SetPendingNetworkUpdate command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_set_pending_network_update_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_set_pending_network_update_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_sl_works_with_all_hubs_cluster_set_pending_network_update_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetNotifiedMessage command +static const sl_signature_t sig_simple_metering_cluster_get_notified_message_command = sl_zcl_simple_metering_cluster_get_notified_message_command_signature; +// Command parser for GetNotifiedMessage command +EmberAfStatus zcl_decode_simple_metering_cluster_get_notified_message_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_get_notified_message_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_get_notified_message_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetWeekdaySchedule command +static const sl_signature_t sig_door_lock_cluster_set_weekday_schedule_command = sl_zcl_door_lock_cluster_set_weekday_schedule_command_signature; +// Command parser for SetWeekdaySchedule command +EmberAfStatus zcl_decode_door_lock_cluster_set_weekday_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_weekday_schedule_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_set_weekday_schedule_command, (uint8_t*)cmd_struct); +} + + +// Signature for MoveToLevel command +static const sl_signature_t sig_level_control_cluster_move_to_level_command = sl_zcl_level_control_cluster_move_to_level_command_signature; +// Command parser for MoveToLevel command +EmberAfStatus zcl_decode_level_control_cluster_move_to_level_command (EmberAfClusterCommand * cmd, sl_zcl_level_control_cluster_move_to_level_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_level_control_cluster_move_to_level_command, (uint8_t*)cmd_struct); +} + + +// Signature for MoveToSaturation command +static const sl_signature_t sig_color_control_cluster_move_to_saturation_command = sl_zcl_color_control_cluster_move_to_saturation_command_signature; +// Command parser for MoveToSaturation command +EmberAfStatus zcl_decode_color_control_cluster_move_to_saturation_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_move_to_saturation_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_color_control_cluster_move_to_saturation_command, (uint8_t*)cmd_struct); +} + + +// Signature for RequestTunnel command +static const sl_signature_t sig_tunneling_cluster_request_tunnel_command = sl_zcl_tunneling_cluster_request_tunnel_command_signature; +// Command parser for RequestTunnel command +EmberAfStatus zcl_decode_tunneling_cluster_request_tunnel_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_request_tunnel_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_tunneling_cluster_request_tunnel_command, (uint8_t*)cmd_struct); +} + + +// Signature for ViewGroupResponse command +static const sl_signature_t sig_groups_cluster_view_group_response_command = sl_zcl_groups_cluster_view_group_response_command_signature; +// Command parser for ViewGroupResponse command +EmberAfStatus zcl_decode_groups_cluster_view_group_response_command (EmberAfClusterCommand * cmd, sl_zcl_groups_cluster_view_group_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_groups_cluster_view_group_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for PowerProfileScheduleConstraintsNotification command +static const sl_signature_t sig_power_profile_cluster_power_profile_schedule_constraints_notification_command = sl_zcl_power_profile_cluster_power_profile_schedule_constraints_notification_command_signature; +// Command parser for PowerProfileScheduleConstraintsNotification command +EmberAfStatus zcl_decode_power_profile_cluster_power_profile_schedule_constraints_notification_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_power_profile_schedule_constraints_notification_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_power_profile_cluster_power_profile_schedule_constraints_notification_command, (uint8_t*)cmd_struct); +} + + +// Signature for PowerProfileScheduleConstraintsResponse command +static const sl_signature_t sig_power_profile_cluster_power_profile_schedule_constraints_response_command = sl_zcl_power_profile_cluster_power_profile_schedule_constraints_response_command_signature; +// Command parser for PowerProfileScheduleConstraintsResponse command +EmberAfStatus zcl_decode_power_profile_cluster_power_profile_schedule_constraints_response_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_power_profile_schedule_constraints_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_power_profile_cluster_power_profile_schedule_constraints_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for UpgradeEndRequest command +static const sl_signature_t sig_over_the_air_bootloading_cluster_upgrade_end_request_command = sl_zcl_over_the_air_bootloading_cluster_upgrade_end_request_command_signature; +// Command parser for UpgradeEndRequest command +EmberAfStatus zcl_decode_over_the_air_bootloading_cluster_upgrade_end_request_command (EmberAfClusterCommand * cmd, sl_zcl_over_the_air_bootloading_cluster_upgrade_end_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_over_the_air_bootloading_cluster_upgrade_end_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for QueryNextImageRequest command +static const sl_signature_t sig_over_the_air_bootloading_cluster_query_next_image_request_command = sl_zcl_over_the_air_bootloading_cluster_query_next_image_request_command_signature; +// Command parser for QueryNextImageRequest command +EmberAfStatus zcl_decode_over_the_air_bootloading_cluster_query_next_image_request_command (EmberAfClusterCommand * cmd, sl_zcl_over_the_air_bootloading_cluster_query_next_image_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_over_the_air_bootloading_cluster_query_next_image_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for QueryNextImageResponse command +static const sl_signature_t sig_over_the_air_bootloading_cluster_query_next_image_response_command = sl_zcl_over_the_air_bootloading_cluster_query_next_image_response_command_signature; +// Command parser for QueryNextImageResponse command +EmberAfStatus zcl_decode_over_the_air_bootloading_cluster_query_next_image_response_command (EmberAfClusterCommand * cmd, sl_zcl_over_the_air_bootloading_cluster_query_next_image_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_over_the_air_bootloading_cluster_query_next_image_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for QuerySpecificFileResponse command +static const sl_signature_t sig_over_the_air_bootloading_cluster_query_specific_file_response_command = sl_zcl_over_the_air_bootloading_cluster_query_specific_file_response_command_signature; +// Command parser for QuerySpecificFileResponse command +EmberAfStatus zcl_decode_over_the_air_bootloading_cluster_query_specific_file_response_command (EmberAfClusterCommand * cmd, sl_zcl_over_the_air_bootloading_cluster_query_specific_file_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_over_the_air_bootloading_cluster_query_specific_file_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ImageBlockRequest command +static const sl_signature_t sig_over_the_air_bootloading_cluster_image_block_request_command = sl_zcl_over_the_air_bootloading_cluster_image_block_request_command_signature; +// Command parser for ImageBlockRequest command +EmberAfStatus zcl_decode_over_the_air_bootloading_cluster_image_block_request_command (EmberAfClusterCommand * cmd, sl_zcl_over_the_air_bootloading_cluster_image_block_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_over_the_air_bootloading_cluster_image_block_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for ImagePageRequest command +static const sl_signature_t sig_over_the_air_bootloading_cluster_image_page_request_command = sl_zcl_over_the_air_bootloading_cluster_image_page_request_command_signature; +// Command parser for ImagePageRequest command +EmberAfStatus zcl_decode_over_the_air_bootloading_cluster_image_page_request_command (EmberAfClusterCommand * cmd, sl_zcl_over_the_air_bootloading_cluster_image_page_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_over_the_air_bootloading_cluster_image_page_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for ImageBlockResponse command +static const sl_signature_t sig_over_the_air_bootloading_cluster_image_block_response_command = sl_zcl_over_the_air_bootloading_cluster_image_block_response_command_signature; +// Command parser for ImageBlockResponse command +EmberAfStatus zcl_decode_over_the_air_bootloading_cluster_image_block_response_command (EmberAfClusterCommand * cmd, sl_zcl_over_the_air_bootloading_cluster_image_block_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_over_the_air_bootloading_cluster_image_block_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetYeardaySchedule command +static const sl_signature_t sig_door_lock_cluster_set_yearday_schedule_command = sl_zcl_door_lock_cluster_set_yearday_schedule_command_signature; +// Command parser for SetYeardaySchedule command +EmberAfStatus zcl_decode_door_lock_cluster_set_yearday_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_yearday_schedule_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_set_yearday_schedule_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetPowerProfilePriceResponse command +static const sl_signature_t sig_power_profile_cluster_get_power_profile_price_response_command = sl_zcl_power_profile_cluster_get_power_profile_price_response_command_signature; +// Command parser for GetPowerProfilePriceResponse command +EmberAfStatus zcl_decode_power_profile_cluster_get_power_profile_price_response_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_get_power_profile_price_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_power_profile_cluster_get_power_profile_price_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetPowerProfilePriceExtendedResponse command +static const sl_signature_t sig_power_profile_cluster_get_power_profile_price_extended_response_command = sl_zcl_power_profile_cluster_get_power_profile_price_extended_response_command_signature; +// Command parser for GetPowerProfilePriceExtendedResponse command +EmberAfStatus zcl_decode_power_profile_cluster_get_power_profile_price_extended_response_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_get_power_profile_price_extended_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_power_profile_cluster_get_power_profile_price_extended_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for AddSceneResponse command +static const sl_signature_t sig_scenes_cluster_add_scene_response_command = sl_zcl_scenes_cluster_add_scene_response_command_signature; +// Command parser for AddSceneResponse command +EmberAfStatus zcl_decode_scenes_cluster_add_scene_response_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_add_scene_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_scenes_cluster_add_scene_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for RemoveSceneResponse command +static const sl_signature_t sig_scenes_cluster_remove_scene_response_command = sl_zcl_scenes_cluster_remove_scene_response_command_signature; +// Command parser for RemoveSceneResponse command +EmberAfStatus zcl_decode_scenes_cluster_remove_scene_response_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_remove_scene_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_scenes_cluster_remove_scene_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for StoreSceneResponse command +static const sl_signature_t sig_scenes_cluster_store_scene_response_command = sl_zcl_scenes_cluster_store_scene_response_command_signature; +// Command parser for StoreSceneResponse command +EmberAfStatus zcl_decode_scenes_cluster_store_scene_response_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_store_scene_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_scenes_cluster_store_scene_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for EnhancedAddSceneResponse command +static const sl_signature_t sig_scenes_cluster_enhanced_add_scene_response_command = sl_zcl_scenes_cluster_enhanced_add_scene_response_command_signature; +// Command parser for EnhancedAddSceneResponse command +EmberAfStatus zcl_decode_scenes_cluster_enhanced_add_scene_response_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_enhanced_add_scene_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_scenes_cluster_enhanced_add_scene_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for CopySceneResponse command +static const sl_signature_t sig_scenes_cluster_copy_scene_response_command = sl_zcl_scenes_cluster_copy_scene_response_command_signature; +// Command parser for CopySceneResponse command +EmberAfStatus zcl_decode_scenes_cluster_copy_scene_response_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_copy_scene_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_scenes_cluster_copy_scene_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for EnhancedViewSceneResponse command +static const sl_signature_t sig_scenes_cluster_enhanced_view_scene_response_command = sl_zcl_scenes_cluster_enhanced_view_scene_response_command_signature; +// Command parser for EnhancedViewSceneResponse command +EmberAfStatus zcl_decode_scenes_cluster_enhanced_view_scene_response_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_enhanced_view_scene_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_scenes_cluster_enhanced_view_scene_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetYeardayScheduleResponse command +static const sl_signature_t sig_door_lock_cluster_get_yearday_schedule_response_command = sl_zcl_door_lock_cluster_get_yearday_schedule_response_command_signature; +// Command parser for GetYeardayScheduleResponse command +EmberAfStatus zcl_decode_door_lock_cluster_get_yearday_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_yearday_schedule_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_get_yearday_schedule_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetWeekdayScheduleResponse command +static const sl_signature_t sig_door_lock_cluster_get_weekday_schedule_response_command = sl_zcl_door_lock_cluster_get_weekday_schedule_response_command_signature; +// Command parser for GetWeekdayScheduleResponse command +EmberAfStatus zcl_decode_door_lock_cluster_get_weekday_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_weekday_schedule_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_get_weekday_schedule_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for RequestPreferenceResponse command +static const sl_signature_t sig_information_cluster_request_preference_response_command = sl_zcl_information_cluster_request_preference_response_command_signature; +// Command parser for RequestPreferenceResponse command +EmberAfStatus zcl_decode_information_cluster_request_preference_response_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_request_preference_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_information_cluster_request_preference_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetGroupMembership command +static const sl_signature_t sig_groups_cluster_get_group_membership_command = sl_zcl_groups_cluster_get_group_membership_command_signature; +// Command parser for GetGroupMembership command +EmberAfStatus zcl_decode_groups_cluster_get_group_membership_command (EmberAfClusterCommand * cmd, sl_zcl_groups_cluster_get_group_membership_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_groups_cluster_get_group_membership_command, (uint8_t*)cmd_struct); +} + + +// Signature for NewDebugReportNotification command +static const sl_signature_t sig_sl_works_with_all_hubs_cluster_new_debug_report_notification_command = sl_zcl_sl_works_with_all_hubs_cluster_new_debug_report_notification_command_signature; +// Command parser for NewDebugReportNotification command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_new_debug_report_notification_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_new_debug_report_notification_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_sl_works_with_all_hubs_cluster_new_debug_report_notification_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetHolidaySchedule command +static const sl_signature_t sig_door_lock_cluster_set_holiday_schedule_command = sl_zcl_door_lock_cluster_set_holiday_schedule_command_signature; +// Command parser for SetHolidaySchedule command +EmberAfStatus zcl_decode_door_lock_cluster_set_holiday_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_holiday_schedule_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_set_holiday_schedule_command, (uint8_t*)cmd_struct); +} + + +// Signature for LogQueueResponse command +static const sl_signature_t sig_appliance_statistics_cluster_log_queue_response_command = sl_zcl_appliance_statistics_cluster_log_queue_response_command_signature; +// Command parser for LogQueueResponse command +EmberAfStatus zcl_decode_appliance_statistics_cluster_log_queue_response_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_statistics_cluster_log_queue_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_appliance_statistics_cluster_log_queue_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for StatisticsAvailable command +static const sl_signature_t sig_appliance_statistics_cluster_statistics_available_command = sl_zcl_appliance_statistics_cluster_statistics_available_command_signature; +// Command parser for StatisticsAvailable command +EmberAfStatus zcl_decode_appliance_statistics_cluster_statistics_available_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_statistics_cluster_statistics_available_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_appliance_statistics_cluster_statistics_available_command, (uint8_t*)cmd_struct); +} + + +// Signature for stream command +static const sl_signature_t sig_mfglib_cluster_cluster_stream_command = sl_zcl_mfglib_cluster_cluster_stream_command_signature; +// Command parser for stream command +EmberAfStatus zcl_decode_mfglib_cluster_cluster_stream_command (EmberAfClusterCommand * cmd, sl_zcl_mfglib_cluster_cluster_stream_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_mfglib_cluster_cluster_stream_command, (uint8_t*)cmd_struct); +} + + +// Signature for tone command +static const sl_signature_t sig_mfglib_cluster_cluster_tone_command = sl_zcl_mfglib_cluster_cluster_tone_command_signature; +// Command parser for tone command +EmberAfStatus zcl_decode_mfglib_cluster_cluster_tone_command (EmberAfClusterCommand * cmd, sl_zcl_mfglib_cluster_cluster_tone_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_mfglib_cluster_cluster_tone_command, (uint8_t*)cmd_struct); +} + + +// Signature for rxMode command +static const sl_signature_t sig_mfglib_cluster_cluster_rx_mode_command = sl_zcl_mfglib_cluster_cluster_rx_mode_command_signature; +// Command parser for rxMode command +EmberAfStatus zcl_decode_mfglib_cluster_cluster_rx_mode_command (EmberAfClusterCommand * cmd, sl_zcl_mfglib_cluster_cluster_rx_mode_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_mfglib_cluster_cluster_rx_mode_command, (uint8_t*)cmd_struct); +} + + +// Signature for InitiateTestMode command +static const sl_signature_t sig_ias_zone_cluster_initiate_test_mode_command = sl_zcl_ias_zone_cluster_initiate_test_mode_command_signature; +// Command parser for InitiateTestMode command +EmberAfStatus zcl_decode_ias_zone_cluster_initiate_test_mode_command (EmberAfClusterCommand * cmd, sl_zcl_ias_zone_cluster_initiate_test_mode_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_ias_zone_cluster_initiate_test_mode_command, (uint8_t*)cmd_struct); +} + + +// Signature for RequestFastPollMode command +static const sl_signature_t sig_simple_metering_cluster_request_fast_poll_mode_command = sl_zcl_simple_metering_cluster_request_fast_poll_mode_command_signature; +// Command parser for RequestFastPollMode command +EmberAfStatus zcl_decode_simple_metering_cluster_request_fast_poll_mode_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_request_fast_poll_mode_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_request_fast_poll_mode_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetZoneStatus command +static const sl_signature_t sig_ias_ace_cluster_get_zone_status_command = sl_zcl_ias_ace_cluster_get_zone_status_command_signature; +// Command parser for GetZoneStatus command +EmberAfStatus zcl_decode_ias_ace_cluster_get_zone_status_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_get_zone_status_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_ias_ace_cluster_get_zone_status_command, (uint8_t*)cmd_struct); +} + + +// Signature for MoveToHueAndSaturation command +static const sl_signature_t sig_color_control_cluster_move_to_hue_and_saturation_command = sl_zcl_color_control_cluster_move_to_hue_and_saturation_command_signature; +// Command parser for MoveToHueAndSaturation command +EmberAfStatus zcl_decode_color_control_cluster_move_to_hue_and_saturation_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_move_to_hue_and_saturation_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_color_control_cluster_move_to_hue_and_saturation_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetGroupMembershipResponse command +static const sl_signature_t sig_groups_cluster_get_group_membership_response_command = sl_zcl_groups_cluster_get_group_membership_response_command_signature; +// Command parser for GetGroupMembershipResponse command +EmberAfStatus zcl_decode_groups_cluster_get_group_membership_response_command (EmberAfClusterCommand * cmd, sl_zcl_groups_cluster_get_group_membership_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_groups_cluster_get_group_membership_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for EnableWwahAppEventRetryAlgorithm command +static const sl_signature_t sig_sl_works_with_all_hubs_cluster_enable_wwah_app_event_retry_algorithm_command = sl_zcl_sl_works_with_all_hubs_cluster_enable_wwah_app_event_retry_algorithm_command_signature; +// Command parser for EnableWwahAppEventRetryAlgorithm command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_enable_wwah_app_event_retry_algorithm_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_enable_wwah_app_event_retry_algorithm_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_sl_works_with_all_hubs_cluster_enable_wwah_app_event_retry_algorithm_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetHolidayScheduleResponse command +static const sl_signature_t sig_door_lock_cluster_get_holiday_schedule_response_command = sl_zcl_door_lock_cluster_get_holiday_schedule_response_command_signature; +// Command parser for GetHolidayScheduleResponse command +EmberAfStatus zcl_decode_door_lock_cluster_get_holiday_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_holiday_schedule_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_door_lock_cluster_get_holiday_schedule_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for PowerProfileNotification command +static const sl_signature_t sig_power_profile_cluster_power_profile_notification_command = sl_zcl_power_profile_cluster_power_profile_notification_command_signature; +// Command parser for PowerProfileNotification command +EmberAfStatus zcl_decode_power_profile_cluster_power_profile_notification_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_power_profile_notification_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_power_profile_cluster_power_profile_notification_command, (uint8_t*)cmd_struct); +} + + +// Signature for PowerProfileResponse command +static const sl_signature_t sig_power_profile_cluster_power_profile_response_command = sl_zcl_power_profile_cluster_power_profile_response_command_signature; +// Command parser for PowerProfileResponse command +EmberAfStatus zcl_decode_power_profile_cluster_power_profile_response_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_power_profile_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_power_profile_cluster_power_profile_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetGroupIdentifiersResponse command +static const sl_signature_t sig_zll_commissioning_cluster_get_group_identifiers_response_command = sl_zcl_zll_commissioning_cluster_get_group_identifiers_response_command_signature; +// Command parser for GetGroupIdentifiersResponse command +EmberAfStatus zcl_decode_zll_commissioning_cluster_get_group_identifiers_response_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_get_group_identifiers_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_zll_commissioning_cluster_get_group_identifiers_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetEndpointListResponse command +static const sl_signature_t sig_zll_commissioning_cluster_get_endpoint_list_response_command = sl_zcl_zll_commissioning_cluster_get_endpoint_list_response_command_signature; +// Command parser for GetEndpointListResponse command +EmberAfStatus zcl_decode_zll_commissioning_cluster_get_endpoint_list_response_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_get_endpoint_list_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_zll_commissioning_cluster_get_endpoint_list_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for EnergyPhasesScheduleNotification command +static const sl_signature_t sig_power_profile_cluster_energy_phases_schedule_notification_command = sl_zcl_power_profile_cluster_energy_phases_schedule_notification_command_signature; +// Command parser for EnergyPhasesScheduleNotification command +EmberAfStatus zcl_decode_power_profile_cluster_energy_phases_schedule_notification_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_energy_phases_schedule_notification_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_power_profile_cluster_energy_phases_schedule_notification_command, (uint8_t*)cmd_struct); +} + + +// Signature for EnergyPhasesScheduleResponse command +static const sl_signature_t sig_power_profile_cluster_energy_phases_schedule_response_command = sl_zcl_power_profile_cluster_energy_phases_schedule_response_command_signature; +// Command parser for EnergyPhasesScheduleResponse command +EmberAfStatus zcl_decode_power_profile_cluster_energy_phases_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_energy_phases_schedule_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_power_profile_cluster_energy_phases_schedule_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for EnergyPhasesScheduleStateResponse command +static const sl_signature_t sig_power_profile_cluster_energy_phases_schedule_state_response_command = sl_zcl_power_profile_cluster_energy_phases_schedule_state_response_command_signature; +// Command parser for EnergyPhasesScheduleStateResponse command +EmberAfStatus zcl_decode_power_profile_cluster_energy_phases_schedule_state_response_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_energy_phases_schedule_state_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_power_profile_cluster_energy_phases_schedule_state_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for EnergyPhasesScheduleStateNotification command +static const sl_signature_t sig_power_profile_cluster_energy_phases_schedule_state_notification_command = sl_zcl_power_profile_cluster_energy_phases_schedule_state_notification_command_signature; +// Command parser for EnergyPhasesScheduleStateNotification command +EmberAfStatus zcl_decode_power_profile_cluster_energy_phases_schedule_state_notification_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_energy_phases_schedule_state_notification_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_power_profile_cluster_energy_phases_schedule_state_notification_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishTopUpLog command +static const sl_signature_t sig_prepayment_cluster_publish_top_up_log_command = sl_zcl_prepayment_cluster_publish_top_up_log_command_signature; +// Command parser for PublishTopUpLog command +EmberAfStatus zcl_decode_prepayment_cluster_publish_top_up_log_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_publish_top_up_log_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_prepayment_cluster_publish_top_up_log_command, (uint8_t*)cmd_struct); +} + + +// Signature for PublishDebtLog command +static const sl_signature_t sig_prepayment_cluster_publish_debt_log_command = sl_zcl_prepayment_cluster_publish_debt_log_command_signature; +// Command parser for PublishDebtLog command +EmberAfStatus zcl_decode_prepayment_cluster_publish_debt_log_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_publish_debt_log_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_prepayment_cluster_publish_debt_log_command, (uint8_t*)cmd_struct); +} + + +// Signature for ReportEventConfiguration command +static const sl_signature_t sig_device_management_cluster_report_event_configuration_command = sl_zcl_device_management_cluster_report_event_configuration_command_signature; +// Command parser for ReportEventConfiguration command +EmberAfStatus zcl_decode_device_management_cluster_report_event_configuration_command (EmberAfClusterCommand * cmd, sl_zcl_device_management_cluster_report_event_configuration_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_device_management_cluster_report_event_configuration_command, (uint8_t*)cmd_struct); +} + + +// Signature for SetBypassedZoneList command +static const sl_signature_t sig_ias_ace_cluster_set_bypassed_zone_list_command = sl_zcl_ias_ace_cluster_set_bypassed_zone_list_command_signature; +// Command parser for SetBypassedZoneList command +EmberAfStatus zcl_decode_ias_ace_cluster_set_bypassed_zone_list_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_set_bypassed_zone_list_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_ias_ace_cluster_set_bypassed_zone_list_command, (uint8_t*)cmd_struct); +} + + +// Signature for RequestInformationResponse command +static const sl_signature_t sig_information_cluster_request_information_response_command = sl_zcl_information_cluster_request_information_response_command_signature; +// Command parser for RequestInformationResponse command +EmberAfStatus zcl_decode_information_cluster_request_information_response_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_request_information_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_information_cluster_request_information_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for DebugReportQueryResponse command +static const sl_signature_t sig_sl_works_with_all_hubs_cluster_debug_report_query_response_command = sl_zcl_sl_works_with_all_hubs_cluster_debug_report_query_response_command_signature; +// Command parser for DebugReportQueryResponse command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_debug_report_query_response_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_debug_report_query_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_sl_works_with_all_hubs_cluster_debug_report_query_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for PowerProfileStateResponse command +static const sl_signature_t sig_power_profile_cluster_power_profile_state_response_command = sl_zcl_power_profile_cluster_power_profile_state_response_command_signature; +// Command parser for PowerProfileStateResponse command +EmberAfStatus zcl_decode_power_profile_cluster_power_profile_state_response_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_power_profile_state_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_power_profile_cluster_power_profile_state_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for PowerProfilesStateNotification command +static const sl_signature_t sig_power_profile_cluster_power_profiles_state_notification_command = sl_zcl_power_profile_cluster_power_profiles_state_notification_command_signature; +// Command parser for PowerProfilesStateNotification command +EmberAfStatus zcl_decode_power_profile_cluster_power_profiles_state_notification_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_power_profiles_state_notification_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_power_profile_cluster_power_profiles_state_notification_command, (uint8_t*)cmd_struct); +} + + +// Signature for RequestFastPollModeResponse command +static const sl_signature_t sig_simple_metering_cluster_request_fast_poll_mode_response_command = sl_zcl_simple_metering_cluster_request_fast_poll_mode_response_command_signature; +// Command parser for RequestFastPollModeResponse command +EmberAfStatus zcl_decode_simple_metering_cluster_request_fast_poll_mode_response_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_request_fast_poll_mode_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_request_fast_poll_mode_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for GpTranslationTableRequest command +static const sl_signature_t sig_green_power_cluster_gp_translation_table_request_command = sl_zcl_green_power_cluster_gp_translation_table_request_command_signature; +// Command parser for GpTranslationTableRequest command +EmberAfStatus zcl_decode_green_power_cluster_gp_translation_table_request_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_translation_table_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_green_power_cluster_gp_translation_table_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for PushInformation command +static const sl_signature_t sig_information_cluster_push_information_command = sl_zcl_information_cluster_push_information_command_signature; +// Command parser for PushInformation command +EmberAfStatus zcl_decode_information_cluster_push_information_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_push_information_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_information_cluster_push_information_command, (uint8_t*)cmd_struct); +} + + +// Signature for SendPreferenceResponse command +static const sl_signature_t sig_information_cluster_send_preference_response_command = sl_zcl_information_cluster_send_preference_response_command_signature; +// Command parser for SendPreferenceResponse command +EmberAfStatus zcl_decode_information_cluster_send_preference_response_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_send_preference_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_information_cluster_send_preference_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for RequestPreferenceConfirmation command +static const sl_signature_t sig_information_cluster_request_preference_confirmation_command = sl_zcl_information_cluster_request_preference_confirmation_command_signature; +// Command parser for RequestPreferenceConfirmation command +EmberAfStatus zcl_decode_information_cluster_request_preference_confirmation_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_request_preference_confirmation_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_information_cluster_request_preference_confirmation_command, (uint8_t*)cmd_struct); +} + + +// Signature for VoiceTransmission command +static const sl_signature_t sig_voice_over_zig_bee_cluster_voice_transmission_command = sl_zcl_voice_over_zig_bee_cluster_voice_transmission_command_signature; +// Command parser for VoiceTransmission command +EmberAfStatus zcl_decode_voice_over_zig_bee_cluster_voice_transmission_command (EmberAfClusterCommand * cmd, sl_zcl_voice_over_zig_bee_cluster_voice_transmission_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_voice_over_zig_bee_cluster_voice_transmission_command, (uint8_t*)cmd_struct); +} + + +// Signature for MatchProtocolAddress command +static const sl_signature_t sig_generic_tunnel_cluster_match_protocol_address_command = sl_zcl_generic_tunnel_cluster_match_protocol_address_command_signature; +// Command parser for MatchProtocolAddress command +EmberAfStatus zcl_decode_generic_tunnel_cluster_match_protocol_address_command (EmberAfClusterCommand * cmd, sl_zcl_generic_tunnel_cluster_match_protocol_address_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_generic_tunnel_cluster_match_protocol_address_command, (uint8_t*)cmd_struct); +} + + +// Signature for AdvertiseProtocolAddress command +static const sl_signature_t sig_generic_tunnel_cluster_advertise_protocol_address_command = sl_zcl_generic_tunnel_cluster_advertise_protocol_address_command_signature; +// Command parser for AdvertiseProtocolAddress command +EmberAfStatus zcl_decode_generic_tunnel_cluster_advertise_protocol_address_command (EmberAfClusterCommand * cmd, sl_zcl_generic_tunnel_cluster_advertise_protocol_address_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_generic_tunnel_cluster_advertise_protocol_address_command, (uint8_t*)cmd_struct); +} + + +// Signature for TransferAPDU command +static const sl_signature_t sig_11073_protocol_tunnel_cluster_transfer_apdu_command = sl_zcl_11073_protocol_tunnel_cluster_transfer_apdu_command_signature; +// Command parser for TransferAPDU command +EmberAfStatus zcl_decode_11073_protocol_tunnel_cluster_transfer_apdu_command (EmberAfClusterCommand * cmd, sl_zcl_11073_protocol_tunnel_cluster_transfer_apdu_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_11073_protocol_tunnel_cluster_transfer_apdu_command, (uint8_t*)cmd_struct); +} + + +// Signature for TransferApduFromClient command +static const sl_signature_t sig_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_client_command = sl_zcl_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_client_command_signature; +// Command parser for TransferApduFromClient command +EmberAfStatus zcl_decode_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_client_command (EmberAfClusterCommand * cmd, sl_zcl_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_client_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_client_command, (uint8_t*)cmd_struct); +} + + +// Signature for TransferApduFromServer command +static const sl_signature_t sig_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_server_command = sl_zcl_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_server_command_signature; +// Command parser for TransferApduFromServer command +EmberAfStatus zcl_decode_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_server_command (EmberAfClusterCommand * cmd, sl_zcl_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_server_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_server_command, (uint8_t*)cmd_struct); +} + + +// Signature for UnlockTokens command +static const sl_signature_t sig_configuration_cluster_cluster_unlock_tokens_command = sl_zcl_configuration_cluster_cluster_unlock_tokens_command_signature; +// Command parser for UnlockTokens command +EmberAfStatus zcl_decode_configuration_cluster_cluster_unlock_tokens_command (EmberAfClusterCommand * cmd, sl_zcl_configuration_cluster_cluster_unlock_tokens_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_configuration_cluster_cluster_unlock_tokens_command, (uint8_t*)cmd_struct); +} + + +// Signature for TransactionEnd command +static const sl_signature_t sig_payment_cluster_transaction_end_command = sl_zcl_payment_cluster_transaction_end_command_signature; +// Command parser for TransactionEnd command +EmberAfStatus zcl_decode_payment_cluster_transaction_end_command (EmberAfClusterCommand * cmd, sl_zcl_payment_cluster_transaction_end_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_payment_cluster_transaction_end_command, (uint8_t*)cmd_struct); +} + + +// Signature for BillStatusNotification command +static const sl_signature_t sig_billing_cluster_bill_status_notification_command = sl_zcl_billing_cluster_bill_status_notification_command_signature; +// Command parser for BillStatusNotification command +EmberAfStatus zcl_decode_billing_cluster_bill_status_notification_command (EmberAfClusterCommand * cmd, sl_zcl_billing_cluster_bill_status_notification_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_billing_cluster_bill_status_notification_command, (uint8_t*)cmd_struct); +} + + +// Signature for PaymentConfirm command +static const sl_signature_t sig_payment_cluster_payment_confirm_command = sl_zcl_payment_cluster_payment_confirm_command_signature; +// Command parser for PaymentConfirm command +EmberAfStatus zcl_decode_payment_cluster_payment_confirm_command (EmberAfClusterCommand * cmd, sl_zcl_payment_cluster_payment_confirm_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_payment_cluster_payment_confirm_command, (uint8_t*)cmd_struct); +} + + +// Signature for Subscribe command +static const sl_signature_t sig_billing_cluster_subscribe_command = sl_zcl_billing_cluster_subscribe_command_signature; +// Command parser for Subscribe command +EmberAfStatus zcl_decode_billing_cluster_subscribe_command (EmberAfClusterCommand * cmd, sl_zcl_billing_cluster_subscribe_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_billing_cluster_subscribe_command, (uint8_t*)cmd_struct); +} + + +// Signature for Unsubscribe command +static const sl_signature_t sig_billing_cluster_unsubscribe_command = sl_zcl_billing_cluster_unsubscribe_command_signature; +// Command parser for Unsubscribe command +EmberAfStatus zcl_decode_billing_cluster_unsubscribe_command (EmberAfClusterCommand * cmd, sl_zcl_billing_cluster_unsubscribe_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_billing_cluster_unsubscribe_command, (uint8_t*)cmd_struct); +} + + +// Signature for StartBillingSession command +static const sl_signature_t sig_billing_cluster_start_billing_session_command = sl_zcl_billing_cluster_start_billing_session_command_signature; +// Command parser for StartBillingSession command +EmberAfStatus zcl_decode_billing_cluster_start_billing_session_command (EmberAfClusterCommand * cmd, sl_zcl_billing_cluster_start_billing_session_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_billing_cluster_start_billing_session_command, (uint8_t*)cmd_struct); +} + + +// Signature for StopBillingSession command +static const sl_signature_t sig_billing_cluster_stop_billing_session_command = sl_zcl_billing_cluster_stop_billing_session_command_signature; +// Command parser for StopBillingSession command +EmberAfStatus zcl_decode_billing_cluster_stop_billing_session_command (EmberAfClusterCommand * cmd, sl_zcl_billing_cluster_stop_billing_session_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_billing_cluster_stop_billing_session_command, (uint8_t*)cmd_struct); +} + + +// Signature for SessionKeepAlive command +static const sl_signature_t sig_billing_cluster_session_keep_alive_command = sl_zcl_billing_cluster_session_keep_alive_command_signature; +// Command parser for SessionKeepAlive command +EmberAfStatus zcl_decode_billing_cluster_session_keep_alive_command (EmberAfClusterCommand * cmd, sl_zcl_billing_cluster_session_keep_alive_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_billing_cluster_session_keep_alive_command, (uint8_t*)cmd_struct); +} + + +// Signature for CheckBillStatus command +static const sl_signature_t sig_billing_cluster_check_bill_status_command = sl_zcl_billing_cluster_check_bill_status_command_signature; +// Command parser for CheckBillStatus command +EmberAfStatus zcl_decode_billing_cluster_check_bill_status_command (EmberAfClusterCommand * cmd, sl_zcl_billing_cluster_check_bill_status_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_billing_cluster_check_bill_status_command, (uint8_t*)cmd_struct); +} + + +// Signature for BuyRequest command +static const sl_signature_t sig_payment_cluster_buy_request_command = sl_zcl_payment_cluster_buy_request_command_signature; +// Command parser for BuyRequest command +EmberAfStatus zcl_decode_payment_cluster_buy_request_command (EmberAfClusterCommand * cmd, sl_zcl_payment_cluster_buy_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_payment_cluster_buy_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for AcceptPayment command +static const sl_signature_t sig_payment_cluster_accept_payment_command = sl_zcl_payment_cluster_accept_payment_command_signature; +// Command parser for AcceptPayment command +EmberAfStatus zcl_decode_payment_cluster_accept_payment_command (EmberAfClusterCommand * cmd, sl_zcl_payment_cluster_accept_payment_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_payment_cluster_accept_payment_command, (uint8_t*)cmd_struct); +} + + +// Signature for SendBillRecord command +static const sl_signature_t sig_billing_cluster_send_bill_record_command = sl_zcl_billing_cluster_send_bill_record_command_signature; +// Command parser for SendBillRecord command +EmberAfStatus zcl_decode_billing_cluster_send_bill_record_command (EmberAfClusterCommand * cmd, sl_zcl_billing_cluster_send_bill_record_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_billing_cluster_send_bill_record_command, (uint8_t*)cmd_struct); +} + + +// Signature for ReceiptDelivery command +static const sl_signature_t sig_payment_cluster_receipt_delivery_command = sl_zcl_payment_cluster_receipt_delivery_command_signature; +// Command parser for ReceiptDelivery command +EmberAfStatus zcl_decode_payment_cluster_receipt_delivery_command (EmberAfClusterCommand * cmd, sl_zcl_payment_cluster_receipt_delivery_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_payment_cluster_receipt_delivery_command, (uint8_t*)cmd_struct); +} + + +// Signature for BuyConfirm command +static const sl_signature_t sig_payment_cluster_buy_confirm_command = sl_zcl_payment_cluster_buy_confirm_command_signature; +// Command parser for BuyConfirm command +EmberAfStatus zcl_decode_payment_cluster_buy_confirm_command (EmberAfClusterCommand * cmd, sl_zcl_payment_cluster_buy_confirm_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_payment_cluster_buy_confirm_command, (uint8_t*)cmd_struct); +} + + +// Signature for EphemeralDataRequest command +static const sl_signature_t sig_key_establishment_cluster_ephemeral_data_request_command = sl_zcl_key_establishment_cluster_ephemeral_data_request_command_signature; +// Command parser for EphemeralDataRequest command +EmberAfStatus zcl_decode_key_establishment_cluster_ephemeral_data_request_command (EmberAfClusterCommand * cmd, sl_zcl_key_establishment_cluster_ephemeral_data_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_key_establishment_cluster_ephemeral_data_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for ConfirmKeyDataRequest command +static const sl_signature_t sig_key_establishment_cluster_confirm_key_data_request_command = sl_zcl_key_establishment_cluster_confirm_key_data_request_command_signature; +// Command parser for ConfirmKeyDataRequest command +EmberAfStatus zcl_decode_key_establishment_cluster_confirm_key_data_request_command (EmberAfClusterCommand * cmd, sl_zcl_key_establishment_cluster_confirm_key_data_request_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_key_establishment_cluster_confirm_key_data_request_command, (uint8_t*)cmd_struct); +} + + +// Signature for EphemeralDataResponse command +static const sl_signature_t sig_key_establishment_cluster_ephemeral_data_response_command = sl_zcl_key_establishment_cluster_ephemeral_data_response_command_signature; +// Command parser for EphemeralDataResponse command +EmberAfStatus zcl_decode_key_establishment_cluster_ephemeral_data_response_command (EmberAfClusterCommand * cmd, sl_zcl_key_establishment_cluster_ephemeral_data_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_key_establishment_cluster_ephemeral_data_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for ConfirmKeyDataResponse command +static const sl_signature_t sig_key_establishment_cluster_confirm_key_data_response_command = sl_zcl_key_establishment_cluster_confirm_key_data_response_command_signature; +// Command parser for ConfirmKeyDataResponse command +EmberAfStatus zcl_decode_key_establishment_cluster_confirm_key_data_response_command (EmberAfClusterCommand * cmd, sl_zcl_key_establishment_cluster_confirm_key_data_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_key_establishment_cluster_confirm_key_data_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for PushInformationResponse command +static const sl_signature_t sig_information_cluster_push_information_response_command = sl_zcl_information_cluster_push_information_response_command_signature; +// Command parser for PushInformationResponse command +EmberAfStatus zcl_decode_information_cluster_push_information_response_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_push_information_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_information_cluster_push_information_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for UpdateResponse command +static const sl_signature_t sig_information_cluster_update_response_command = sl_zcl_information_cluster_update_response_command_signature; +// Command parser for UpdateResponse command +EmberAfStatus zcl_decode_information_cluster_update_response_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_update_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_information_cluster_update_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for DeleteResponse command +static const sl_signature_t sig_information_cluster_delete_response_command = sl_zcl_information_cluster_delete_response_command_signature; +// Command parser for DeleteResponse command +EmberAfStatus zcl_decode_information_cluster_delete_response_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_delete_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_information_cluster_delete_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for LogNotification command +static const sl_signature_t sig_appliance_statistics_cluster_log_notification_command = sl_zcl_appliance_statistics_cluster_log_notification_command_signature; +// Command parser for LogNotification command +EmberAfStatus zcl_decode_appliance_statistics_cluster_log_notification_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_statistics_cluster_log_notification_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_appliance_statistics_cluster_log_notification_command, (uint8_t*)cmd_struct); +} + + +// Signature for LogResponse command +static const sl_signature_t sig_appliance_statistics_cluster_log_response_command = sl_zcl_appliance_statistics_cluster_log_response_command_signature; +// Command parser for LogResponse command +EmberAfStatus zcl_decode_appliance_statistics_cluster_log_response_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_statistics_cluster_log_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_appliance_statistics_cluster_log_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetMessageCancellation command +static const sl_signature_t sig_messaging_cluster_get_message_cancellation_command = sl_zcl_messaging_cluster_get_message_cancellation_command_signature; +// Command parser for GetMessageCancellation command +EmberAfStatus zcl_decode_messaging_cluster_get_message_cancellation_command (EmberAfClusterCommand * cmd, sl_zcl_messaging_cluster_get_message_cancellation_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_messaging_cluster_get_message_cancellation_command, (uint8_t*)cmd_struct); +} + + +// Signature for CancelAllMessages command +static const sl_signature_t sig_messaging_cluster_cancel_all_messages_command = sl_zcl_messaging_cluster_cancel_all_messages_command_signature; +// Command parser for CancelAllMessages command +EmberAfStatus zcl_decode_messaging_cluster_cancel_all_messages_command (EmberAfClusterCommand * cmd, sl_zcl_messaging_cluster_cancel_all_messages_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_messaging_cluster_cancel_all_messages_command, (uint8_t*)cmd_struct); +} + + +// Signature for SelectAvailableEmergencyCredit command +static const sl_signature_t sig_prepayment_cluster_select_available_emergency_credit_command = sl_zcl_prepayment_cluster_select_available_emergency_credit_command_signature; +// Command parser for SelectAvailableEmergencyCredit command +EmberAfStatus zcl_decode_prepayment_cluster_select_available_emergency_credit_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_select_available_emergency_credit_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_prepayment_cluster_select_available_emergency_credit_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetProfileResponse command +static const sl_signature_t sig_simple_metering_cluster_get_profile_response_command = sl_zcl_simple_metering_cluster_get_profile_response_command_signature; +// Command parser for GetProfileResponse command +EmberAfStatus zcl_decode_simple_metering_cluster_get_profile_response_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_get_profile_response_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_get_profile_response_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetConversionFactor command +static const sl_signature_t sig_price_cluster_get_conversion_factor_command = sl_zcl_price_cluster_get_conversion_factor_command_signature; +// Command parser for GetConversionFactor command +EmberAfStatus zcl_decode_price_cluster_get_conversion_factor_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_conversion_factor_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_get_conversion_factor_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetCalorificValue command +static const sl_signature_t sig_price_cluster_get_calorific_value_command = sl_zcl_price_cluster_get_calorific_value_command_signature; +// Command parser for GetCalorificValue command +EmberAfStatus zcl_decode_price_cluster_get_calorific_value_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_calorific_value_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_get_calorific_value_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetTariffInformation command +static const sl_signature_t sig_price_cluster_get_tariff_information_command = sl_zcl_price_cluster_get_tariff_information_command_signature; +// Command parser for GetTariffInformation command +EmberAfStatus zcl_decode_price_cluster_get_tariff_information_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_tariff_information_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_get_tariff_information_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetCO2Value command +static const sl_signature_t sig_price_cluster_get_co2_value_command = sl_zcl_price_cluster_get_co2_value_command_signature; +// Command parser for GetCO2Value command +EmberAfStatus zcl_decode_price_cluster_get_co2_value_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_co2_value_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_get_co2_value_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetBillingPeriod command +static const sl_signature_t sig_price_cluster_get_billing_period_command = sl_zcl_price_cluster_get_billing_period_command_signature; +// Command parser for GetBillingPeriod command +EmberAfStatus zcl_decode_price_cluster_get_billing_period_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_billing_period_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_get_billing_period_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetConsolidatedBill command +static const sl_signature_t sig_price_cluster_get_consolidated_bill_command = sl_zcl_price_cluster_get_consolidated_bill_command_signature; +// Command parser for GetConsolidatedBill command +EmberAfStatus zcl_decode_price_cluster_get_consolidated_bill_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_consolidated_bill_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_get_consolidated_bill_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetCalendar command +static const sl_signature_t sig_calendar_cluster_get_calendar_command = sl_zcl_calendar_cluster_get_calendar_command_signature; +// Command parser for GetCalendar command +EmberAfStatus zcl_decode_calendar_cluster_get_calendar_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_get_calendar_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_calendar_cluster_get_calendar_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetScheduledPrices command +static const sl_signature_t sig_price_cluster_get_scheduled_prices_command = sl_zcl_price_cluster_get_scheduled_prices_command_signature; +// Command parser for GetScheduledPrices command +EmberAfStatus zcl_decode_price_cluster_get_scheduled_prices_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_scheduled_prices_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_get_scheduled_prices_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetCreditPayment command +static const sl_signature_t sig_price_cluster_get_credit_payment_command = sl_zcl_price_cluster_get_credit_payment_command_signature; +// Command parser for GetCreditPayment command +EmberAfStatus zcl_decode_price_cluster_get_credit_payment_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_credit_payment_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_get_credit_payment_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetTopUpLog command +static const sl_signature_t sig_prepayment_cluster_get_top_up_log_command = sl_zcl_prepayment_cluster_get_top_up_log_command_signature; +// Command parser for GetTopUpLog command +EmberAfStatus zcl_decode_prepayment_cluster_get_top_up_log_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_get_top_up_log_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_prepayment_cluster_get_top_up_log_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetBlockPeriods command +static const sl_signature_t sig_price_cluster_get_block_periods_command = sl_zcl_price_cluster_get_block_periods_command_signature; +// Command parser for GetBlockPeriods command +EmberAfStatus zcl_decode_price_cluster_get_block_periods_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_block_periods_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_price_cluster_get_block_periods_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetDebtRepaymentLog command +static const sl_signature_t sig_prepayment_cluster_get_debt_repayment_log_command = sl_zcl_prepayment_cluster_get_debt_repayment_log_command_signature; +// Command parser for GetDebtRepaymentLog command +EmberAfStatus zcl_decode_prepayment_cluster_get_debt_repayment_log_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_get_debt_repayment_log_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_prepayment_cluster_get_debt_repayment_log_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetSpecialDays command +static const sl_signature_t sig_calendar_cluster_get_special_days_command = sl_zcl_calendar_cluster_get_special_days_command_signature; +// Command parser for GetSpecialDays command +EmberAfStatus zcl_decode_calendar_cluster_get_special_days_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_get_special_days_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_calendar_cluster_get_special_days_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetScheduledEvents command +static const sl_signature_t sig_demand_response_and_load_control_cluster_get_scheduled_events_command = sl_zcl_demand_response_and_load_control_cluster_get_scheduled_events_command_signature; +// Command parser for GetScheduledEvents command +EmberAfStatus zcl_decode_demand_response_and_load_control_cluster_get_scheduled_events_command (EmberAfClusterCommand * cmd, sl_zcl_demand_response_and_load_control_cluster_get_scheduled_events_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_demand_response_and_load_control_cluster_get_scheduled_events_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetSnapshot command +static const sl_signature_t sig_simple_metering_cluster_get_snapshot_command = sl_zcl_simple_metering_cluster_get_snapshot_command_signature; +// Command parser for GetSnapshot command +EmberAfStatus zcl_decode_simple_metering_cluster_get_snapshot_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_get_snapshot_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_simple_metering_cluster_get_snapshot_command, (uint8_t*)cmd_struct); +} + + +// Signature for GetPrepaySnapshot command +static const sl_signature_t sig_prepayment_cluster_get_prepay_snapshot_command = sl_zcl_prepayment_cluster_get_prepay_snapshot_command_signature; +// Command parser for GetPrepaySnapshot command +EmberAfStatus zcl_decode_prepayment_cluster_get_prepay_snapshot_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_get_prepay_snapshot_command_t *cmd_struct) { + // Use signature-decoding mechanism to parse this command. + return sli_do_decode(cmd, sig_prepayment_cluster_get_prepay_snapshot_command, (uint8_t*)cmd_struct); +} + + +// Command parser for GpPairingSearch command +EmberAfStatus zcl_decode_green_power_cluster_gp_pairing_search_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_pairing_search_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +2u) + { + cmd_struct->options = 0xFFFF; + } else { + + cmd_struct->options = sli_decode_parse_two_bytes(cmd, payloadOffset); + + + payloadOffset+= 2u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0007) == 0x0000 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +4u || + !((cmd_struct->options & 0x0007) == 0x0000)) + { + cmd_struct->gpdSrcId = 0xFFFFFFFF; + } + else + { + cmd_struct->gpdSrcId = sli_decode_parse_four_bytes(cmd, payloadOffset); + + + payloadOffset+= 4u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0007) == 0x0002 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +8u || + !((cmd_struct->options & 0x0007) == 0x0002)) + { + cmd_struct->gpdIeee = NULL; + } + else + { + cmd_struct->gpdIeee = sli_decode_bytes(cmd, payloadOffset); + + + payloadOffset+= 8u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0007) == 0x0002 + if (!((cmd_struct->options & 0x0007) == 0x0002)) { + cmd_struct->endpoint = 0xFF; + } else { + cmd_struct->endpoint = sli_decode_parse_one_byte(cmd, payloadOffset); + + + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for GpNotification command +EmberAfStatus zcl_decode_green_power_cluster_gp_notification_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_notification_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +2u) + { + cmd_struct->options = 0xFFFF; + } else { + + cmd_struct->options = sli_decode_parse_two_bytes(cmd, payloadOffset); + + + payloadOffset+= 2u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0007) == 0x0000 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +4u || + !((cmd_struct->options & 0x0007) == 0x0000)) + { + cmd_struct->gpdSrcId = 0xFFFFFFFF; + } + else + { + cmd_struct->gpdSrcId = sli_decode_parse_four_bytes(cmd, payloadOffset); + + + payloadOffset+= 4u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0007) == 0x0002 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +8u || + !((cmd_struct->options & 0x0007) == 0x0002)) + { + cmd_struct->gpdIeee = NULL; + } + else + { + cmd_struct->gpdIeee = sli_decode_bytes(cmd, payloadOffset); + + + payloadOffset+= 8u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0007) == 0x0002 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +1u || + !((cmd_struct->options & 0x0007) == 0x0002)) + { + cmd_struct->gpdEndpoint = 0xFF; + } + else + { + cmd_struct->gpdEndpoint = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +4u) + { + cmd_struct->gpdSecurityFrameCounter = 0xFFFFFFFF; + } else { + + cmd_struct->gpdSecurityFrameCounter = sli_decode_parse_four_bytes(cmd, payloadOffset); + + + payloadOffset+= 4u; + } + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +1u) + { + cmd_struct->gpdCommandId = 0xFF; + } else { + + cmd_struct->gpdCommandId = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + emberAfStringLength(cmd->buffer + payloadOffset) + 1u) + { + cmd_struct->gpdCommandPayload = NULL; + } else { + + cmd_struct->gpdCommandPayload = sli_decode_string(cmd, payloadOffset); + + + payloadOffset+= emberAfStringLength(cmd->buffer + payloadOffset) + 1u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x4000) || (cmd_struct->options & 0x0800) + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +2u || + !((cmd_struct->options & 0x4000) || (cmd_struct->options & 0x0800))) + { + cmd_struct->gppShortAddress = 0xFFFF; + } + else + { + cmd_struct->gppShortAddress = sli_decode_parse_two_bytes(cmd, payloadOffset); + + + payloadOffset+= 2u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x4000) || (cmd_struct->options & 0x0800) + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +1u || + !((cmd_struct->options & 0x4000) || (cmd_struct->options & 0x0800))) + { + cmd_struct->gppDistance = 0xFF; + } + else + { + cmd_struct->gppDistance = sli_decode_parse_one_byte(cmd, payloadOffset); + + + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for GpCommissioningNotification command +EmberAfStatus zcl_decode_green_power_cluster_gp_commissioning_notification_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_commissioning_notification_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +2u) + { + cmd_struct->options = 0xFFFF; + } else { + + cmd_struct->options = sli_decode_parse_two_bytes(cmd, payloadOffset); + + + payloadOffset+= 2u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0007) == 0x0000 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +4u || + !((cmd_struct->options & 0x0007) == 0x0000)) + { + cmd_struct->gpdSrcId = 0xFFFFFFFF; + } + else + { + cmd_struct->gpdSrcId = sli_decode_parse_four_bytes(cmd, payloadOffset); + + + payloadOffset+= 4u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0007) == 0x0002 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +8u || + !((cmd_struct->options & 0x0007) == 0x0002)) + { + cmd_struct->gpdIeee = NULL; + } + else + { + cmd_struct->gpdIeee = sli_decode_bytes(cmd, payloadOffset); + + + payloadOffset+= 8u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0007) == 0x0002 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +1u || + !((cmd_struct->options & 0x0007) == 0x0002)) + { + cmd_struct->endpoint = 0xFF; + } + else + { + cmd_struct->endpoint = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +4u) + { + cmd_struct->gpdSecurityFrameCounter = 0xFFFFFFFF; + } else { + + cmd_struct->gpdSecurityFrameCounter = sli_decode_parse_four_bytes(cmd, payloadOffset); + + + payloadOffset+= 4u; + } + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +1u) + { + cmd_struct->gpdCommandId = 0xFF; + } else { + + cmd_struct->gpdCommandId = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + emberAfStringLength(cmd->buffer + payloadOffset) + 1u) + { + cmd_struct->gpdCommandPayload = NULL; + } else { + + cmd_struct->gpdCommandPayload = sli_decode_string(cmd, payloadOffset); + + + payloadOffset+= emberAfStringLength(cmd->buffer + payloadOffset) + 1u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0800) || (cmd_struct->options & 0x0008) + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +2u || + !((cmd_struct->options & 0x0800) || (cmd_struct->options & 0x0008))) + { + cmd_struct->gppShortAddress = 0xFFFF; + } + else + { + cmd_struct->gppShortAddress = sli_decode_parse_two_bytes(cmd, payloadOffset); + + + payloadOffset+= 2u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0800) || (cmd_struct->options & 0x0008) + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +1u || + !((cmd_struct->options & 0x0800) || (cmd_struct->options & 0x0008))) + { + cmd_struct->gppLink = 0xFF; + } + else + { + cmd_struct->gppLink = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + + // - Argument is conditionally present based on expression: cmd_struct->options & 0x0200 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +4u || + !(cmd_struct->options & 0x0200)) + { + cmd_struct->mic = 0xFFFFFFFF; + } + else + { + cmd_struct->mic = sli_decode_parse_four_bytes(cmd, payloadOffset); + + + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for GpTranslationTableUpdate command +EmberAfStatus zcl_decode_green_power_cluster_gp_translation_table_update_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_translation_table_update_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +2u) + { + cmd_struct->options = 0xFFFF; + } else { + + cmd_struct->options = sli_decode_parse_two_bytes(cmd, payloadOffset); + + + payloadOffset+= 2u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0007) == 0x0000 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +4u || + !((cmd_struct->options & 0x0007) == 0x0000)) + { + cmd_struct->gpdSrcId = 0xFFFFFFFF; + } + else + { + cmd_struct->gpdSrcId = sli_decode_parse_four_bytes(cmd, payloadOffset); + + + payloadOffset+= 4u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0007) == 0x0002 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +8u || + !((cmd_struct->options & 0x0007) == 0x0002)) + { + cmd_struct->gpdIeee = NULL; + } + else + { + cmd_struct->gpdIeee = sli_decode_bytes(cmd, payloadOffset); + + + payloadOffset+= 8u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0007) == 0x0002 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +1u || + !((cmd_struct->options & 0x0007) == 0x0002)) + { + cmd_struct->endpoint = 0xFF; + } + else + { + cmd_struct->endpoint = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + cmd_struct->translations = cmd->buffer + payloadOffset; + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for GpPairing command +EmberAfStatus zcl_decode_green_power_cluster_gp_pairing_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_pairing_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +3u) + { + cmd_struct->options = 0xFFFFFFFF; + } else { + + cmd_struct->options = sli_decode_parse_three_bytes(cmd, payloadOffset); + + + payloadOffset+= 3u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x000007) == 0x000000 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +4u || + !((cmd_struct->options & 0x000007) == 0x000000)) + { + cmd_struct->gpdSrcId = 0xFFFFFFFF; + } + else + { + cmd_struct->gpdSrcId = sli_decode_parse_four_bytes(cmd, payloadOffset); + + + payloadOffset+= 4u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x000007) == 0x000002 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +8u || + !((cmd_struct->options & 0x000007) == 0x000002)) + { + cmd_struct->gpdIeee = NULL; + } + else + { + cmd_struct->gpdIeee = sli_decode_bytes(cmd, payloadOffset); + + + payloadOffset+= 8u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x000007) == 0x000002 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +1u || + !((cmd_struct->options & 0x000007) == 0x000002)) + { + cmd_struct->endpoint = 0xFF; + } + else + { + cmd_struct->endpoint = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x000010) == 0x000000 && ((cmd_struct->options & 0x000060) == 0x000000 || (cmd_struct->options & 0x000060) == 0x000060) + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +8u || + !((cmd_struct->options & 0x000010) == 0x000000 && ((cmd_struct->options & 0x000060) == 0x000000 || (cmd_struct->options & 0x000060) == 0x000060))) + { + cmd_struct->sinkIeeeAddress = NULL; + } + else + { + cmd_struct->sinkIeeeAddress = sli_decode_bytes(cmd, payloadOffset); + + + payloadOffset+= 8u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x000010) == 0x000000 && ((cmd_struct->options & 0x000060) == 0x000000 || (cmd_struct->options & 0x000060) == 0x000060) + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +2u || + !((cmd_struct->options & 0x000010) == 0x000000 && ((cmd_struct->options & 0x000060) == 0x000000 || (cmd_struct->options & 0x000060) == 0x000060))) + { + cmd_struct->sinkNwkAddress = 0xFFFF; + } + else + { + cmd_struct->sinkNwkAddress = sli_decode_parse_two_bytes(cmd, payloadOffset); + + + payloadOffset+= 2u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x000010) == 0x000000 && ((cmd_struct->options & 0x000060) == 0x000020 || (cmd_struct->options & 0x000060) == 0x000040) + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +2u || + !((cmd_struct->options & 0x000010) == 0x000000 && ((cmd_struct->options & 0x000060) == 0x000020 || (cmd_struct->options & 0x000060) == 0x000040))) + { + cmd_struct->sinkGroupId = 0xFFFF; + } + else + { + cmd_struct->sinkGroupId = sli_decode_parse_two_bytes(cmd, payloadOffset); + + + payloadOffset+= 2u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x000008) == 0x000008 && (cmd_struct->options & 0x000010) != 0x000010 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +1u || + !((cmd_struct->options & 0x000008) == 0x000008 && (cmd_struct->options & 0x000010) != 0x000010)) + { + cmd_struct->deviceId = 0xFF; + } + else + { + cmd_struct->deviceId = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x004000) == 0x004000 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +4u || + !((cmd_struct->options & 0x004000) == 0x004000)) + { + cmd_struct->gpdSecurityFrameCounter = 0xFFFFFFFF; + } + else + { + cmd_struct->gpdSecurityFrameCounter = sli_decode_parse_four_bytes(cmd, payloadOffset); + + + payloadOffset+= 4u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x008000) == 0x008000 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +16u || + !((cmd_struct->options & 0x008000) == 0x008000)) + { + cmd_struct->gpdKey = NULL; + } + else + { + cmd_struct->gpdKey = sli_decode_bytes(cmd, payloadOffset); + + + payloadOffset+= 16u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x010000) == 0x010000 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +2u || + !((cmd_struct->options & 0x010000) == 0x010000)) + { + cmd_struct->assignedAlias = 0xFFFF; + } + else + { + cmd_struct->assignedAlias = sli_decode_parse_two_bytes(cmd, payloadOffset); + + + payloadOffset+= 2u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x020000) == 0x020000 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +1u || + !((cmd_struct->options & 0x020000) == 0x020000)) + { + cmd_struct->groupcastRadius = 0xFF; + } + else + { + cmd_struct->groupcastRadius = sli_decode_parse_one_byte(cmd, payloadOffset); + + + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for GpProxyTableRequest command +EmberAfStatus zcl_decode_green_power_cluster_gp_proxy_table_request_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_proxy_table_request_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + if (cmd->bufLen < payloadOffset + +1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->options = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + + + + // - Argument is conditionally present based on expression: ((cmd_struct->options & 0x18) == 0x00) && ((cmd_struct->options & 0x07) == 0x00) + if (!(((cmd_struct->options & 0x18) == 0x00) && ((cmd_struct->options & 0x07) == 0x00))) { + cmd_struct->gpdSrcId = 0xFFFFFFFF; + } else { + cmd_struct->gpdSrcId = sli_decode_parse_four_bytes(cmd, payloadOffset); + + + payloadOffset+= 4u; + } + + + + // - Argument is conditionally present based on expression: ((cmd_struct->options & 0x18) == 0x00) && ((cmd_struct->options & 0x07) == 0x02) + if (!(((cmd_struct->options & 0x18) == 0x00) && ((cmd_struct->options & 0x07) == 0x02))) { + cmd_struct->gpdIeee = NULL; + } else { + cmd_struct->gpdIeee = sli_decode_bytes(cmd, payloadOffset); + + + payloadOffset+= 8u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x07) == 0x02 + if (!((cmd_struct->options & 0x07) == 0x02)) { + cmd_struct->endpoint = 0xFF; + } else { + cmd_struct->endpoint = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x18) == 0x08 + if (!((cmd_struct->options & 0x18) == 0x08)) { + cmd_struct->index = 0xFF; + } else { + cmd_struct->index = sli_decode_parse_one_byte(cmd, payloadOffset); + + + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for GpPairingConfiguration command +EmberAfStatus zcl_decode_green_power_cluster_gp_pairing_configuration_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_pairing_configuration_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +1u) + { + cmd_struct->actions = 0xFF; + } else { + + cmd_struct->actions = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +2u) + { + cmd_struct->options = 0xFFFF; + } else { + + cmd_struct->options = sli_decode_parse_two_bytes(cmd, payloadOffset); + + + payloadOffset+= 2u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0007) == 0x0000 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +4u || + !((cmd_struct->options & 0x0007) == 0x0000)) + { + cmd_struct->gpdSrcId = 0xFFFFFFFF; + } + else + { + cmd_struct->gpdSrcId = sli_decode_parse_four_bytes(cmd, payloadOffset); + + + payloadOffset+= 4u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0007) == 0x0002 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +8u || + !((cmd_struct->options & 0x0007) == 0x0002)) + { + cmd_struct->gpdIeee = NULL; + } + else + { + cmd_struct->gpdIeee = sli_decode_bytes(cmd, payloadOffset); + + + payloadOffset+= 8u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0007) == 0x0002 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +1u || + !((cmd_struct->options & 0x0007) == 0x0002)) + { + cmd_struct->endpoint = 0xFF; + } + else + { + cmd_struct->endpoint = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +1u) + { + cmd_struct->deviceId = 0xFF; + } else { + + cmd_struct->deviceId = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0018) == 0x0010 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +1u || + !((cmd_struct->options & 0x0018) == 0x0010)) + { + cmd_struct->groupListCount = 0xFF; + } + else + { + cmd_struct->groupListCount = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + if ( (cmd_struct->options & 0x0018) == 0x0010 ) { + // Array is conditionally present based on expression: (cmd_struct->options & 0x0018) == 0x0010 + cmd_struct->groupList = cmd->buffer + payloadOffset; + payloadOffset += cmd_struct->groupListCount * sizeof(GpPairingConfigurationGroupList); + } else { + cmd_struct->groupList = NULL; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0100) + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +2u || + !((cmd_struct->options & 0x0100))) + { + cmd_struct->gpdAssignedAlias = 0xFFFF; + } + else + { + cmd_struct->gpdAssignedAlias = sli_decode_parse_two_bytes(cmd, payloadOffset); + + + payloadOffset+= 2u; + } + + if (cmd->bufLen < payloadOffset + +1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->groupcastRadius = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0200) + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +1u || + !((cmd_struct->options & 0x0200))) + { + cmd_struct->securityOptions = 0xFF; + } + else + { + cmd_struct->securityOptions = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0200) || (cmd_struct->options & 0x0020) + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +4u || + !((cmd_struct->options & 0x0200) || (cmd_struct->options & 0x0020))) + { + cmd_struct->gpdSecurityFrameCounter = 0xFFFFFFFF; + } + else + { + cmd_struct->gpdSecurityFrameCounter = sli_decode_parse_four_bytes(cmd, payloadOffset); + + + payloadOffset+= 4u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0200) + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +16u || + !((cmd_struct->options & 0x0200))) + { + cmd_struct->gpdSecurityKey = NULL; + } + else + { + cmd_struct->gpdSecurityKey = sli_decode_bytes(cmd, payloadOffset); + + + payloadOffset+= 16u; + } + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +1u) + { + cmd_struct->numberOfPairedEndpoints = 0xFF; + } else { + + cmd_struct->numberOfPairedEndpoints = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + if ( 0 < cmd_struct->numberOfPairedEndpoints && cmd_struct->numberOfPairedEndpoints < 0xFD ) { + // Array is conditionally present based on expression: 0 < cmd_struct->numberOfPairedEndpoints && cmd_struct->numberOfPairedEndpoints < 0xFD + cmd_struct->pairedEndpoints = cmd->buffer + payloadOffset; + payloadOffset += cmd_struct->numberOfPairedEndpoints * sizeof(uint8_t); + } else { + cmd_struct->pairedEndpoints = NULL; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0400) + if (!((cmd_struct->options & 0x0400))) { + cmd_struct->applicationInformation = 0xFF; + } else { + cmd_struct->applicationInformation = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x01) + if (!((cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x01))) { + cmd_struct->manufacturerId = 0xFFFF; + } else { + cmd_struct->manufacturerId = sli_decode_parse_two_bytes(cmd, payloadOffset); + + + payloadOffset+= 2u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x02) + if (!((cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x02))) { + cmd_struct->modeId = 0xFFFF; + } else { + cmd_struct->modeId = sli_decode_parse_two_bytes(cmd, payloadOffset); + + + payloadOffset+= 2u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x04) + if (!((cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x04))) { + cmd_struct->numberOfGpdCommands = 0xFF; + } else { + cmd_struct->numberOfGpdCommands = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + if ( (cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x04) ) { + // Array is conditionally present based on expression: (cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x04) + cmd_struct->gpdCommandIdList = cmd->buffer + payloadOffset; + payloadOffset += cmd_struct->numberOfGpdCommands * sizeof(uint8_t); + } else { + cmd_struct->gpdCommandIdList = NULL; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x08) + if (!((cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x08))) { + cmd_struct->clusterIdListCount = 0xFF; + } else { + cmd_struct->clusterIdListCount = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + if ( (cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x08) && ((cmd_struct->clusterIdListCount & 0x0F) > 0) ) { + // Array is conditionally present based on expression: (cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x08) && ((cmd_struct->clusterIdListCount & 0x0F) > 0) + cmd_struct->clusterListServer = cmd->buffer + payloadOffset; + payloadOffset += (cmd_struct->clusterIdListCount & 0x0F) * sizeof(uint16_t); + } else { + cmd_struct->clusterListServer = NULL; + } + if ( (cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x08) && ((cmd_struct->clusterIdListCount >> 4) > 0) ) { + // Array is conditionally present based on expression: (cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x08) && ((cmd_struct->clusterIdListCount >> 4) > 0) + cmd_struct->clusterListClient = cmd->buffer + payloadOffset; + payloadOffset += (cmd_struct->clusterIdListCount >> 4) * sizeof(uint16_t); + } else { + cmd_struct->clusterListClient = NULL; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x10) + if (!((cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x10))) { + cmd_struct->switchInformationLength = 0xFF; + } else { + cmd_struct->switchInformationLength = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x10) + if (!((cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x10))) { + cmd_struct->switchConfiguration = 0xFF; + } else { + cmd_struct->switchConfiguration = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x10) + if (!((cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x10))) { + cmd_struct->currentContactStatus = 0xFF; + } else { + cmd_struct->currentContactStatus = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x20) + if (!((cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x20))) { + cmd_struct->totalNumberOfReports = 0xFF; + } else { + cmd_struct->totalNumberOfReports = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x20) + if (!((cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x20))) { + cmd_struct->numberOfReports = 0xFF; + } else { + cmd_struct->numberOfReports = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + if ( (cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x20) ) { + // Array is conditionally present based on expression: (cmd_struct->options & 0x0400) && (cmd_struct->applicationInformation & 0x20) + cmd_struct->reportDescriptor = cmd->buffer + payloadOffset; + } else { + cmd_struct->reportDescriptor = NULL; + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for GpResponse command +EmberAfStatus zcl_decode_green_power_cluster_gp_response_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_response_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +1u) + { + cmd_struct->options = 0xFF; + } else { + + cmd_struct->options = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +2u) + { + cmd_struct->tempMasterShortAddress = 0xFFFF; + } else { + + cmd_struct->tempMasterShortAddress = sli_decode_parse_two_bytes(cmd, payloadOffset); + + + payloadOffset+= 2u; + } + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +1u) + { + cmd_struct->tempMasterTxChannel = 0xFF; + } else { + + cmd_struct->tempMasterTxChannel = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x07) == 0x00 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +4u || + !((cmd_struct->options & 0x07) == 0x00)) + { + cmd_struct->gpdSrcId = 0xFFFFFFFF; + } + else + { + cmd_struct->gpdSrcId = sli_decode_parse_four_bytes(cmd, payloadOffset); + + + payloadOffset+= 4u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x07) == 0x02 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +8u || + !((cmd_struct->options & 0x07) == 0x02)) + { + cmd_struct->gpdIeee = NULL; + } + else + { + cmd_struct->gpdIeee = sli_decode_bytes(cmd, payloadOffset); + + + payloadOffset+= 8u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x07) == 0x02 + if (!((cmd_struct->options & 0x07) == 0x02)) { + cmd_struct->endpoint = 0xFF; + } else { + cmd_struct->endpoint = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +1u) + { + cmd_struct->gpdCommandId = 0xFF; + } else { + + cmd_struct->gpdCommandId = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + if (cmd->bufLen < payloadOffset + emberAfStringLength(cmd->buffer + payloadOffset) + 1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->gpdCommandPayload = sli_decode_string(cmd, payloadOffset); + + + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for GpProxyCommissioningMode command +EmberAfStatus zcl_decode_green_power_cluster_gp_proxy_commissioning_mode_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_proxy_commissioning_mode_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +1u) + { + cmd_struct->options = 0xFF; + } else { + + cmd_struct->options = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x02) == 0x02 + if (!((cmd_struct->options & 0x02) == 0x02)) { + cmd_struct->commissioningWindow = 0xFFFF; + } else { + cmd_struct->commissioningWindow = sli_decode_parse_two_bytes(cmd, payloadOffset); + + + payloadOffset+= 2u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x10) == 0x10 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +1u || + !((cmd_struct->options & 0x10) == 0x10)) + { + cmd_struct->channel = 0xFF; + } + else + { + cmd_struct->channel = sli_decode_parse_one_byte(cmd, payloadOffset); + + + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for GpNotificationResponse command +EmberAfStatus zcl_decode_green_power_cluster_gp_notification_response_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_notification_response_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +1u) + { + cmd_struct->options = 0xFF; + } else { + + cmd_struct->options = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0007) == 0x0000 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +4u || + !((cmd_struct->options & 0x0007) == 0x0000)) + { + cmd_struct->gpdSrcId = 0xFFFFFFFF; + } + else + { + cmd_struct->gpdSrcId = sli_decode_parse_four_bytes(cmd, payloadOffset); + + + payloadOffset+= 4u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0007) == 0x0002 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +8u || + !((cmd_struct->options & 0x0007) == 0x0002)) + { + cmd_struct->gpdIeee = NULL; + } + else + { + cmd_struct->gpdIeee = sli_decode_bytes(cmd, payloadOffset); + + + payloadOffset+= 8u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0007) == 0x0002 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +1u || + !((cmd_struct->options & 0x0007) == 0x0002)) + { + cmd_struct->endpoint = 0xFF; + } + else + { + cmd_struct->endpoint = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +4u) + { + cmd_struct->gpdSecurityFrameCounter = 0xFFFFFFFF; + } else { + + cmd_struct->gpdSecurityFrameCounter = sli_decode_parse_four_bytes(cmd, payloadOffset); + + + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for GpTunnelingStop command +EmberAfStatus zcl_decode_green_power_cluster_gp_tunneling_stop_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_tunneling_stop_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +1u) + { + cmd_struct->options = 0xFF; + } else { + + cmd_struct->options = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0007) == 0x0000 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +4u || + !((cmd_struct->options & 0x0007) == 0x0000)) + { + cmd_struct->gpdSrcId = 0xFFFFFFFF; + } + else + { + cmd_struct->gpdSrcId = sli_decode_parse_four_bytes(cmd, payloadOffset); + + + payloadOffset+= 4u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0007) == 0x0002 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +8u || + !((cmd_struct->options & 0x0007) == 0x0002)) + { + cmd_struct->gpdIeee = NULL; + } + else + { + cmd_struct->gpdIeee = sli_decode_bytes(cmd, payloadOffset); + + + payloadOffset+= 8u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x0007) == 0x0002 + // - Argument is not present in all versions + if (cmd->bufLen < payloadOffset + +1u || + !((cmd_struct->options & 0x0007) == 0x0002)) + { + cmd_struct->endpoint = 0xFF; + } + else + { + cmd_struct->endpoint = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +4u) + { + cmd_struct->gpdSecurityFrameCounter = 0xFFFFFFFF; + } else { + + cmd_struct->gpdSecurityFrameCounter = sli_decode_parse_four_bytes(cmd, payloadOffset); + + + payloadOffset+= 4u; + } + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +2u) + { + cmd_struct->gppShortAddress = 0xFFFF; + } else { + + cmd_struct->gppShortAddress = sli_decode_parse_two_bytes(cmd, payloadOffset); + + + payloadOffset+= 2u; + } + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + +1u) + { + cmd_struct->gppDistance = 0xFF; + } else { + + cmd_struct->gppDistance = sli_decode_parse_one_byte(cmd, payloadOffset); + + + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for PoweringOffNotification command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_powering_off_notification_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_powering_off_notification_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + if (cmd->bufLen < payloadOffset + +1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->powerNotificationReason = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + + if (cmd->bufLen < payloadOffset + +2u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->manufacturerId = sli_decode_parse_two_bytes(cmd, payloadOffset); + + + payloadOffset+= 2u; + + if (cmd->bufLen < payloadOffset + +1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->manufacturerReasonLength = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + if ( cmd_struct->manufacturerReasonLength!=0 ) { + // Array is conditionally present based on expression: cmd_struct->manufacturerReasonLength!=0 + cmd_struct->manufacturerReason = cmd->buffer + payloadOffset; + } else { + cmd_struct->manufacturerReason = NULL; + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for PoweringOnNotification command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_powering_on_notification_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_powering_on_notification_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + if (cmd->bufLen < payloadOffset + +1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->powerNotificationReason = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + + if (cmd->bufLen < payloadOffset + +2u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->manufacturerId = sli_decode_parse_two_bytes(cmd, payloadOffset); + + + payloadOffset+= 2u; + + if (cmd->bufLen < payloadOffset + +1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->manufacturerReasonLength = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + if ( cmd_struct->manufacturerReasonLength!=0 ) { + // Array is conditionally present based on expression: cmd_struct->manufacturerReasonLength!=0 + cmd_struct->manufacturerReason = cmd->buffer + payloadOffset; + } else { + cmd_struct->manufacturerReason = NULL; + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for GpSinkTableRequest command +EmberAfStatus zcl_decode_green_power_cluster_gp_sink_table_request_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_sink_table_request_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + if (cmd->bufLen < payloadOffset + +1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->options = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + + + + // - Argument is conditionally present based on expression: ((cmd_struct->options & 0x07) == 0x00) && ((cmd_struct->options & 0x18) == 0x00) + if (!(((cmd_struct->options & 0x07) == 0x00) && ((cmd_struct->options & 0x18) == 0x00))) { + cmd_struct->gpdSrcId = 0xFFFFFFFF; + } else { + cmd_struct->gpdSrcId = sli_decode_parse_four_bytes(cmd, payloadOffset); + + + payloadOffset+= 4u; + } + + + + // - Argument is conditionally present based on expression: ((cmd_struct->options & 0x07) == 0x02) && ((cmd_struct->options & 0x18) == 0x00) + if (!(((cmd_struct->options & 0x07) == 0x02) && ((cmd_struct->options & 0x18) == 0x00))) { + cmd_struct->gpdIeee = NULL; + } else { + cmd_struct->gpdIeee = sli_decode_bytes(cmd, payloadOffset); + + + payloadOffset+= 8u; + } + + + + // - Argument is conditionally present based on expression: ((cmd_struct->options & 0x07) == 0x02) && ((cmd_struct->options & 0x18) == 0x00) + if (!(((cmd_struct->options & 0x07) == 0x02) && ((cmd_struct->options & 0x18) == 0x00))) { + cmd_struct->endpoint = 0xFF; + } else { + cmd_struct->endpoint = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + + + + // - Argument is conditionally present based on expression: (cmd_struct->options & 0x18) == 0x08 + if (!((cmd_struct->options & 0x18) == 0x08)) { + cmd_struct->index = 0xFF; + } else { + cmd_struct->index = sli_decode_parse_one_byte(cmd, payloadOffset); + + + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for EnableApsLinkKeyAuthorization command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_enable_aps_link_key_authorization_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_enable_aps_link_key_authorization_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + if (cmd->bufLen < payloadOffset + +1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->numberExemptClusters = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + if ( cmd_struct->numberExemptClusters!=0 ) { + // Array is conditionally present based on expression: cmd_struct->numberExemptClusters!=0 + cmd_struct->clusterId = cmd->buffer + payloadOffset; + } else { + cmd_struct->clusterId = NULL; + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for DisableApsLinkKeyAuthorization command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_disable_aps_link_key_authorization_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_disable_aps_link_key_authorization_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + if (cmd->bufLen < payloadOffset + +1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->numberExemptClusters = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + if ( cmd_struct->numberExemptClusters!=0 ) { + // Array is conditionally present based on expression: cmd_struct->numberExemptClusters!=0 + cmd_struct->clusterId = cmd->buffer + payloadOffset; + } else { + cmd_struct->clusterId = NULL; + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for RequireApsAcksOnUnicasts command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_require_aps_acks_on_unicasts_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_require_aps_acks_on_unicasts_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + if (cmd->bufLen < payloadOffset + +1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->numberExemptClusters = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + if ( cmd_struct->numberExemptClusters!=0 ) { + // Array is conditionally present based on expression: cmd_struct->numberExemptClusters!=0 + cmd_struct->clusterId = cmd->buffer + payloadOffset; + } else { + cmd_struct->clusterId = NULL; + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for UseTrustCenterForClusterServer command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_use_trust_center_for_cluster_server_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_use_trust_center_for_cluster_server_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + if (cmd->bufLen < payloadOffset + +1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->numberOfClusters = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + if ( cmd_struct->numberOfClusters!=0 ) { + // Array is conditionally present based on expression: cmd_struct->numberOfClusters!=0 + cmd_struct->clusterId = cmd->buffer + payloadOffset; + } else { + cmd_struct->clusterId = NULL; + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for ApsAckEnablementQueryResponse command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_aps_ack_enablement_query_response_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_aps_ack_enablement_query_response_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + if (cmd->bufLen < payloadOffset + +1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->numberExemptClusters = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + if ( cmd_struct->numberExemptClusters!=0 ) { + // Array is conditionally present based on expression: cmd_struct->numberExemptClusters!=0 + cmd_struct->clusterId = cmd->buffer + payloadOffset; + } else { + cmd_struct->clusterId = NULL; + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for TrustCenterForClusterServerQueryResponse command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_trust_center_for_cluster_server_query_response_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_trust_center_for_cluster_server_query_response_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + if (cmd->bufLen < payloadOffset + +1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->numberOfClusters = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + if ( cmd_struct->numberOfClusters!=0 ) { + // Array is conditionally present based on expression: cmd_struct->numberOfClusters!=0 + cmd_struct->clusterId = cmd->buffer + payloadOffset; + } else { + cmd_struct->clusterId = NULL; + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for ViewSceneResponse command +EmberAfStatus zcl_decode_scenes_cluster_view_scene_response_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_view_scene_response_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + if (cmd->bufLen < payloadOffset + +1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->status = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + + if (cmd->bufLen < payloadOffset + +2u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->groupId = sli_decode_parse_two_bytes(cmd, payloadOffset); + + + payloadOffset+= 2u; + + if (cmd->bufLen < payloadOffset + +1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->sceneId = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + + + + // - Argument is conditionally present based on expression: cmd_struct->status==0 + if (!(cmd_struct->status==0)) { + cmd_struct->transitionTime = 0xFFFF; + } else { + cmd_struct->transitionTime = sli_decode_parse_two_bytes(cmd, payloadOffset); + + + payloadOffset+= 2u; + } + + + + // - Argument is conditionally present based on expression: cmd_struct->status==0 + if (!(cmd_struct->status==0)) { + cmd_struct->sceneName = NULL; + } else { + cmd_struct->sceneName = sli_decode_string(cmd, payloadOffset); + + + payloadOffset+= emberAfStringLength(cmd->buffer + payloadOffset) + 1u; + } + if ( cmd_struct->status==0 ) { + // Array is conditionally present based on expression: cmd_struct->status==0 + cmd_struct->extensionFieldSets = cmd->buffer + payloadOffset; + } else { + cmd_struct->extensionFieldSets = NULL; + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for GetSceneMembershipResponse command +EmberAfStatus zcl_decode_scenes_cluster_get_scene_membership_response_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_get_scene_membership_response_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + if (cmd->bufLen < payloadOffset + +1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->status = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + + if (cmd->bufLen < payloadOffset + +1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->capacity = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + + if (cmd->bufLen < payloadOffset + +2u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->groupId = sli_decode_parse_two_bytes(cmd, payloadOffset); + + + payloadOffset+= 2u; + + + + // - Argument is conditionally present based on expression: cmd_struct->status==0 + if (!(cmd_struct->status==0)) { + cmd_struct->sceneCount = 0xFF; + } else { + cmd_struct->sceneCount = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + } + if ( cmd_struct->status==0 ) { + // Array is conditionally present based on expression: cmd_struct->status==0 + cmd_struct->sceneList = cmd->buffer + payloadOffset; + } else { + cmd_struct->sceneList = NULL; + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for UseTrustCenterForClusterServerResponse command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_use_trust_center_for_cluster_server_response_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_use_trust_center_for_cluster_server_response_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + if (cmd->bufLen < payloadOffset + +1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->status = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + + if (cmd->bufLen < payloadOffset + +1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->clusterStatusLength = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + if ( cmd_struct->clusterStatusLength!=0 ) { + // Array is conditionally present based on expression: cmd_struct->clusterStatusLength!=0 + cmd_struct->clusterStatus = cmd->buffer + payloadOffset; + } else { + cmd_struct->clusterStatus = NULL; + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for Bypass command +EmberAfStatus zcl_decode_ias_ace_cluster_bypass_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_bypass_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + if (cmd->bufLen < payloadOffset + +1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->numberOfZones = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + cmd_struct->zoneIds = cmd->buffer + payloadOffset; + payloadOffset += cmd_struct->numberOfZones * sizeof(uint8_t); + + + // - Argument is not present in all versions. + if (cmd->bufLen < payloadOffset + emberAfStringLength(cmd->buffer + payloadOffset) + 1u) + { + cmd_struct->armDisarmCode = NULL; + } else { + + cmd_struct->armDisarmCode = sli_decode_string(cmd, payloadOffset); + + + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + +// Command parser for SurveyBeaconsResponse command +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_survey_beacons_response_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_survey_beacons_response_command_t *cmd_struct) { + // Use classic mechanism to parse this command. + uint16_t payloadOffset = cmd->payloadStartIndex; + // Not a fixed length command + + if (cmd->bufLen < payloadOffset + +1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + + + cmd_struct->numberOfBeacons = sli_decode_parse_one_byte(cmd, payloadOffset); + + + payloadOffset+= 1u; + if ( cmd_struct->numberOfBeacons!=0 ) { + // Array is conditionally present based on expression: cmd_struct->numberOfBeacons!=0 + cmd_struct->beacon = cmd->buffer + payloadOffset; + } else { + cmd_struct->beacon = NULL; + } + return EMBER_ZCL_STATUS_SUCCESS; +} + + + +#endif //End of SL_CATALOG_ZIGBEE_ZCL_FRAMEWORK_CORE_PRESENT \ No newline at end of file diff --git a/silabs_examples/credentials/host/zap/zap-cluster-command-parser.h b/silabs_examples/credentials/host/zap/zap-cluster-command-parser.h new file mode 100644 index 00000000000000..78a5f09399eb19 --- /dev/null +++ b/silabs_examples/credentials/host/zap/zap-cluster-command-parser.h @@ -0,0 +1,1593 @@ +/***************************************************************************//** + * @file zap-cluster-command-parser.c + * @brief This file contains a set of generated functions that parse the + * incomming zcl command messages. + * This file is generated. Do not update file manually. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +#ifndef __ZAP_CLUSTER_COMMAND_PARSER_H__ +#define __ZAP_CLUSTER_COMMAND_PARSER_H__ 1 + +/** + * @defgroup zcl_command_parser ZCL Command Parsers + * @ingroup command + * @brief Application Framework command parsing functions reference + * + * This document describes the generated parsing functions that + * are used to parse over-the-air payload into the corresponding structs. + */ + +/** + * + * @addtogroup zcl_command_parser + * @{ + */ + +#include "sl_component_catalog.h" +#ifdef SL_CATALOG_ZIGBEE_ZCL_FRAMEWORK_CORE_PRESENT + +#include "af.h" +#include "zap-command-structs.h" + +/** @brief Parser function for "GetLocalesSupported" ZCL command from "Basic" cluster + */ +EmberAfStatus zcl_decode_basic_cluster_get_locales_supported_command (EmberAfClusterCommand * cmd, sl_zcl_basic_cluster_get_locales_supported_command_t *cmd_struct); +/** @brief Parser function for "GetLocalesSupportedResponse" ZCL command from "Basic" cluster + */ +EmberAfStatus zcl_decode_basic_cluster_get_locales_supported_response_command (EmberAfClusterCommand * cmd, sl_zcl_basic_cluster_get_locales_supported_response_command_t *cmd_struct); +/** @brief Parser function for "Identify" ZCL command from "Identify" cluster + */ +EmberAfStatus zcl_decode_identify_cluster_identify_command (EmberAfClusterCommand * cmd, sl_zcl_identify_cluster_identify_command_t *cmd_struct); +/** @brief Parser function for "EZModeInvoke" ZCL command from "Identify" cluster + */ +EmberAfStatus zcl_decode_identify_cluster_ez_mode_invoke_command (EmberAfClusterCommand * cmd, sl_zcl_identify_cluster_ez_mode_invoke_command_t *cmd_struct); +/** @brief Parser function for "UpdateCommissionState" ZCL command from "Identify" cluster + */ +EmberAfStatus zcl_decode_identify_cluster_update_commission_state_command (EmberAfClusterCommand * cmd, sl_zcl_identify_cluster_update_commission_state_command_t *cmd_struct); +/** @brief Parser function for "TriggerEffect" ZCL command from "Identify" cluster + */ +EmberAfStatus zcl_decode_identify_cluster_trigger_effect_command (EmberAfClusterCommand * cmd, sl_zcl_identify_cluster_trigger_effect_command_t *cmd_struct); +/** @brief Parser function for "IdentifyQueryResponse" ZCL command from "Identify" cluster + */ +EmberAfStatus zcl_decode_identify_cluster_identify_query_response_command (EmberAfClusterCommand * cmd, sl_zcl_identify_cluster_identify_query_response_command_t *cmd_struct); +/** @brief Parser function for "AddGroup" ZCL command from "Groups" cluster + */ +EmberAfStatus zcl_decode_groups_cluster_add_group_command (EmberAfClusterCommand * cmd, sl_zcl_groups_cluster_add_group_command_t *cmd_struct); +/** @brief Parser function for "ViewGroup" ZCL command from "Groups" cluster + */ +EmberAfStatus zcl_decode_groups_cluster_view_group_command (EmberAfClusterCommand * cmd, sl_zcl_groups_cluster_view_group_command_t *cmd_struct); +/** @brief Parser function for "GetGroupMembership" ZCL command from "Groups" cluster + */ +EmberAfStatus zcl_decode_groups_cluster_get_group_membership_command (EmberAfClusterCommand * cmd, sl_zcl_groups_cluster_get_group_membership_command_t *cmd_struct); +/** @brief Parser function for "RemoveGroup" ZCL command from "Groups" cluster + */ +EmberAfStatus zcl_decode_groups_cluster_remove_group_command (EmberAfClusterCommand * cmd, sl_zcl_groups_cluster_remove_group_command_t *cmd_struct); +/** @brief Parser function for "AddGroupIfIdentifying" ZCL command from "Groups" cluster + */ +EmberAfStatus zcl_decode_groups_cluster_add_group_if_identifying_command (EmberAfClusterCommand * cmd, sl_zcl_groups_cluster_add_group_if_identifying_command_t *cmd_struct); +/** @brief Parser function for "AddGroupResponse" ZCL command from "Groups" cluster + */ +EmberAfStatus zcl_decode_groups_cluster_add_group_response_command (EmberAfClusterCommand * cmd, sl_zcl_groups_cluster_add_group_response_command_t *cmd_struct); +/** @brief Parser function for "ViewGroupResponse" ZCL command from "Groups" cluster + */ +EmberAfStatus zcl_decode_groups_cluster_view_group_response_command (EmberAfClusterCommand * cmd, sl_zcl_groups_cluster_view_group_response_command_t *cmd_struct); +/** @brief Parser function for "GetGroupMembershipResponse" ZCL command from "Groups" cluster + */ +EmberAfStatus zcl_decode_groups_cluster_get_group_membership_response_command (EmberAfClusterCommand * cmd, sl_zcl_groups_cluster_get_group_membership_response_command_t *cmd_struct); +/** @brief Parser function for "RemoveGroupResponse" ZCL command from "Groups" cluster + */ +EmberAfStatus zcl_decode_groups_cluster_remove_group_response_command (EmberAfClusterCommand * cmd, sl_zcl_groups_cluster_remove_group_response_command_t *cmd_struct); +/** @brief Parser function for "AddScene" ZCL command from "Scenes" cluster + */ +EmberAfStatus zcl_decode_scenes_cluster_add_scene_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_add_scene_command_t *cmd_struct); +/** @brief Parser function for "ViewScene" ZCL command from "Scenes" cluster + */ +EmberAfStatus zcl_decode_scenes_cluster_view_scene_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_view_scene_command_t *cmd_struct); +/** @brief Parser function for "RemoveScene" ZCL command from "Scenes" cluster + */ +EmberAfStatus zcl_decode_scenes_cluster_remove_scene_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_remove_scene_command_t *cmd_struct); +/** @brief Parser function for "RemoveAllScenes" ZCL command from "Scenes" cluster + */ +EmberAfStatus zcl_decode_scenes_cluster_remove_all_scenes_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_remove_all_scenes_command_t *cmd_struct); +/** @brief Parser function for "StoreScene" ZCL command from "Scenes" cluster + */ +EmberAfStatus zcl_decode_scenes_cluster_store_scene_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_store_scene_command_t *cmd_struct); +/** @brief Parser function for "RecallScene" ZCL command from "Scenes" cluster + */ +EmberAfStatus zcl_decode_scenes_cluster_recall_scene_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_recall_scene_command_t *cmd_struct); +/** @brief Parser function for "GetSceneMembership" ZCL command from "Scenes" cluster + */ +EmberAfStatus zcl_decode_scenes_cluster_get_scene_membership_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_get_scene_membership_command_t *cmd_struct); +/** @brief Parser function for "EnhancedAddScene" ZCL command from "Scenes" cluster + */ +EmberAfStatus zcl_decode_scenes_cluster_enhanced_add_scene_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_enhanced_add_scene_command_t *cmd_struct); +/** @brief Parser function for "EnhancedViewScene" ZCL command from "Scenes" cluster + */ +EmberAfStatus zcl_decode_scenes_cluster_enhanced_view_scene_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_enhanced_view_scene_command_t *cmd_struct); +/** @brief Parser function for "CopyScene" ZCL command from "Scenes" cluster + */ +EmberAfStatus zcl_decode_scenes_cluster_copy_scene_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_copy_scene_command_t *cmd_struct); +/** @brief Parser function for "AddSceneResponse" ZCL command from "Scenes" cluster + */ +EmberAfStatus zcl_decode_scenes_cluster_add_scene_response_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_add_scene_response_command_t *cmd_struct); +/** @brief Parser function for "ViewSceneResponse" ZCL command from "Scenes" cluster + */ +EmberAfStatus zcl_decode_scenes_cluster_view_scene_response_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_view_scene_response_command_t *cmd_struct); +/** @brief Parser function for "RemoveSceneResponse" ZCL command from "Scenes" cluster + */ +EmberAfStatus zcl_decode_scenes_cluster_remove_scene_response_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_remove_scene_response_command_t *cmd_struct); +/** @brief Parser function for "RemoveAllScenesResponse" ZCL command from "Scenes" cluster + */ +EmberAfStatus zcl_decode_scenes_cluster_remove_all_scenes_response_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_remove_all_scenes_response_command_t *cmd_struct); +/** @brief Parser function for "StoreSceneResponse" ZCL command from "Scenes" cluster + */ +EmberAfStatus zcl_decode_scenes_cluster_store_scene_response_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_store_scene_response_command_t *cmd_struct); +/** @brief Parser function for "GetSceneMembershipResponse" ZCL command from "Scenes" cluster + */ +EmberAfStatus zcl_decode_scenes_cluster_get_scene_membership_response_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_get_scene_membership_response_command_t *cmd_struct); +/** @brief Parser function for "EnhancedAddSceneResponse" ZCL command from "Scenes" cluster + */ +EmberAfStatus zcl_decode_scenes_cluster_enhanced_add_scene_response_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_enhanced_add_scene_response_command_t *cmd_struct); +/** @brief Parser function for "EnhancedViewSceneResponse" ZCL command from "Scenes" cluster + */ +EmberAfStatus zcl_decode_scenes_cluster_enhanced_view_scene_response_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_enhanced_view_scene_response_command_t *cmd_struct); +/** @brief Parser function for "CopySceneResponse" ZCL command from "Scenes" cluster + */ +EmberAfStatus zcl_decode_scenes_cluster_copy_scene_response_command (EmberAfClusterCommand * cmd, sl_zcl_scenes_cluster_copy_scene_response_command_t *cmd_struct); +/** @brief Parser function for "OffWithEffect" ZCL command from "On/off" cluster + */ +EmberAfStatus zcl_decode_on_off_cluster_off_with_effect_command (EmberAfClusterCommand * cmd, sl_zcl_on_off_cluster_off_with_effect_command_t *cmd_struct); +/** @brief Parser function for "OnWithTimedOff" ZCL command from "On/off" cluster + */ +EmberAfStatus zcl_decode_on_off_cluster_on_with_timed_off_command (EmberAfClusterCommand * cmd, sl_zcl_on_off_cluster_on_with_timed_off_command_t *cmd_struct); +/** @brief Parser function for "MoveToLevel" ZCL command from "Level Control" cluster + */ +EmberAfStatus zcl_decode_level_control_cluster_move_to_level_command (EmberAfClusterCommand * cmd, sl_zcl_level_control_cluster_move_to_level_command_t *cmd_struct); +/** @brief Parser function for "Move" ZCL command from "Level Control" cluster + */ +EmberAfStatus zcl_decode_level_control_cluster_move_command (EmberAfClusterCommand * cmd, sl_zcl_level_control_cluster_move_command_t *cmd_struct); +/** @brief Parser function for "Step" ZCL command from "Level Control" cluster + */ +EmberAfStatus zcl_decode_level_control_cluster_step_command (EmberAfClusterCommand * cmd, sl_zcl_level_control_cluster_step_command_t *cmd_struct); +/** @brief Parser function for "Stop" ZCL command from "Level Control" cluster + */ +EmberAfStatus zcl_decode_level_control_cluster_stop_command (EmberAfClusterCommand * cmd, sl_zcl_level_control_cluster_stop_command_t *cmd_struct); +/** @brief Parser function for "MoveToLevelWithOnOff" ZCL command from "Level Control" cluster + */ +EmberAfStatus zcl_decode_level_control_cluster_move_to_level_with_on_off_command (EmberAfClusterCommand * cmd, sl_zcl_level_control_cluster_move_to_level_with_on_off_command_t *cmd_struct); +/** @brief Parser function for "MoveWithOnOff" ZCL command from "Level Control" cluster + */ +EmberAfStatus zcl_decode_level_control_cluster_move_with_on_off_command (EmberAfClusterCommand * cmd, sl_zcl_level_control_cluster_move_with_on_off_command_t *cmd_struct); +/** @brief Parser function for "StepWithOnOff" ZCL command from "Level Control" cluster + */ +EmberAfStatus zcl_decode_level_control_cluster_step_with_on_off_command (EmberAfClusterCommand * cmd, sl_zcl_level_control_cluster_step_with_on_off_command_t *cmd_struct); +/** @brief Parser function for "MoveToClosestFrequency" ZCL command from "Level Control" cluster + */ +EmberAfStatus zcl_decode_level_control_cluster_move_to_closest_frequency_command (EmberAfClusterCommand * cmd, sl_zcl_level_control_cluster_move_to_closest_frequency_command_t *cmd_struct); +/** @brief Parser function for "ResetAlarm" ZCL command from "Alarms" cluster + */ +EmberAfStatus zcl_decode_alarms_cluster_reset_alarm_command (EmberAfClusterCommand * cmd, sl_zcl_alarms_cluster_reset_alarm_command_t *cmd_struct); +/** @brief Parser function for "Alarm" ZCL command from "Alarms" cluster + */ +EmberAfStatus zcl_decode_alarms_cluster_alarm_command (EmberAfClusterCommand * cmd, sl_zcl_alarms_cluster_alarm_command_t *cmd_struct); +/** @brief Parser function for "GetAlarmResponse" ZCL command from "Alarms" cluster + */ +EmberAfStatus zcl_decode_alarms_cluster_get_alarm_response_command (EmberAfClusterCommand * cmd, sl_zcl_alarms_cluster_get_alarm_response_command_t *cmd_struct); +/** @brief Parser function for "SetAbsoluteLocation" ZCL command from "RSSI Location" cluster + */ +EmberAfStatus zcl_decode_rssi_location_cluster_set_absolute_location_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_set_absolute_location_command_t *cmd_struct); +/** @brief Parser function for "SetDeviceConfiguration" ZCL command from "RSSI Location" cluster + */ +EmberAfStatus zcl_decode_rssi_location_cluster_set_device_configuration_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_set_device_configuration_command_t *cmd_struct); +/** @brief Parser function for "GetDeviceConfiguration" ZCL command from "RSSI Location" cluster + */ +EmberAfStatus zcl_decode_rssi_location_cluster_get_device_configuration_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_get_device_configuration_command_t *cmd_struct); +/** @brief Parser function for "GetLocationData" ZCL command from "RSSI Location" cluster + */ +EmberAfStatus zcl_decode_rssi_location_cluster_get_location_data_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_get_location_data_command_t *cmd_struct); +/** @brief Parser function for "RssiResponse" ZCL command from "RSSI Location" cluster + */ +EmberAfStatus zcl_decode_rssi_location_cluster_rssi_response_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_rssi_response_command_t *cmd_struct); +/** @brief Parser function for "SendPings" ZCL command from "RSSI Location" cluster + */ +EmberAfStatus zcl_decode_rssi_location_cluster_send_pings_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_send_pings_command_t *cmd_struct); +/** @brief Parser function for "AnchorNodeAnnounce" ZCL command from "RSSI Location" cluster + */ +EmberAfStatus zcl_decode_rssi_location_cluster_anchor_node_announce_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_anchor_node_announce_command_t *cmd_struct); +/** @brief Parser function for "DeviceConfigurationResponse" ZCL command from "RSSI Location" cluster + */ +EmberAfStatus zcl_decode_rssi_location_cluster_device_configuration_response_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_device_configuration_response_command_t *cmd_struct); +/** @brief Parser function for "LocationDataResponse" ZCL command from "RSSI Location" cluster + */ +EmberAfStatus zcl_decode_rssi_location_cluster_location_data_response_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_location_data_response_command_t *cmd_struct); +/** @brief Parser function for "LocationDataNotification" ZCL command from "RSSI Location" cluster + */ +EmberAfStatus zcl_decode_rssi_location_cluster_location_data_notification_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_location_data_notification_command_t *cmd_struct); +/** @brief Parser function for "CompactLocationDataNotification" ZCL command from "RSSI Location" cluster + */ +EmberAfStatus zcl_decode_rssi_location_cluster_compact_location_data_notification_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_compact_location_data_notification_command_t *cmd_struct); +/** @brief Parser function for "RssiPing" ZCL command from "RSSI Location" cluster + */ +EmberAfStatus zcl_decode_rssi_location_cluster_rssi_ping_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_rssi_ping_command_t *cmd_struct); +/** @brief Parser function for "ReportRssiMeasurements" ZCL command from "RSSI Location" cluster + */ +EmberAfStatus zcl_decode_rssi_location_cluster_report_rssi_measurements_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_report_rssi_measurements_command_t *cmd_struct); +/** @brief Parser function for "RequestOwnLocation" ZCL command from "RSSI Location" cluster + */ +EmberAfStatus zcl_decode_rssi_location_cluster_request_own_location_command (EmberAfClusterCommand * cmd, sl_zcl_rssi_location_cluster_request_own_location_command_t *cmd_struct); +/** @brief Parser function for "RestartDevice" ZCL command from "Commissioning" cluster + */ +EmberAfStatus zcl_decode_commissioning_cluster_restart_device_command (EmberAfClusterCommand * cmd, sl_zcl_commissioning_cluster_restart_device_command_t *cmd_struct); +/** @brief Parser function for "SaveStartupParameters" ZCL command from "Commissioning" cluster + */ +EmberAfStatus zcl_decode_commissioning_cluster_save_startup_parameters_command (EmberAfClusterCommand * cmd, sl_zcl_commissioning_cluster_save_startup_parameters_command_t *cmd_struct); +/** @brief Parser function for "RestoreStartupParameters" ZCL command from "Commissioning" cluster + */ +EmberAfStatus zcl_decode_commissioning_cluster_restore_startup_parameters_command (EmberAfClusterCommand * cmd, sl_zcl_commissioning_cluster_restore_startup_parameters_command_t *cmd_struct); +/** @brief Parser function for "ResetStartupParameters" ZCL command from "Commissioning" cluster + */ +EmberAfStatus zcl_decode_commissioning_cluster_reset_startup_parameters_command (EmberAfClusterCommand * cmd, sl_zcl_commissioning_cluster_reset_startup_parameters_command_t *cmd_struct); +/** @brief Parser function for "RestartDeviceResponse" ZCL command from "Commissioning" cluster + */ +EmberAfStatus zcl_decode_commissioning_cluster_restart_device_response_command (EmberAfClusterCommand * cmd, sl_zcl_commissioning_cluster_restart_device_response_command_t *cmd_struct); +/** @brief Parser function for "SaveStartupParametersResponse" ZCL command from "Commissioning" cluster + */ +EmberAfStatus zcl_decode_commissioning_cluster_save_startup_parameters_response_command (EmberAfClusterCommand * cmd, sl_zcl_commissioning_cluster_save_startup_parameters_response_command_t *cmd_struct); +/** @brief Parser function for "RestoreStartupParametersResponse" ZCL command from "Commissioning" cluster + */ +EmberAfStatus zcl_decode_commissioning_cluster_restore_startup_parameters_response_command (EmberAfClusterCommand * cmd, sl_zcl_commissioning_cluster_restore_startup_parameters_response_command_t *cmd_struct); +/** @brief Parser function for "ResetStartupParametersResponse" ZCL command from "Commissioning" cluster + */ +EmberAfStatus zcl_decode_commissioning_cluster_reset_startup_parameters_response_command (EmberAfClusterCommand * cmd, sl_zcl_commissioning_cluster_reset_startup_parameters_response_command_t *cmd_struct); +/** @brief Parser function for "TransferPartitionedFrame" ZCL command from "Partition" cluster + */ +EmberAfStatus zcl_decode_partition_cluster_transfer_partitioned_frame_command (EmberAfClusterCommand * cmd, sl_zcl_partition_cluster_transfer_partitioned_frame_command_t *cmd_struct); +/** @brief Parser function for "ReadHandshakeParam" ZCL command from "Partition" cluster + */ +EmberAfStatus zcl_decode_partition_cluster_read_handshake_param_command (EmberAfClusterCommand * cmd, sl_zcl_partition_cluster_read_handshake_param_command_t *cmd_struct); +/** @brief Parser function for "WriteHandshakeParam" ZCL command from "Partition" cluster + */ +EmberAfStatus zcl_decode_partition_cluster_write_handshake_param_command (EmberAfClusterCommand * cmd, sl_zcl_partition_cluster_write_handshake_param_command_t *cmd_struct); +/** @brief Parser function for "MultipleAck" ZCL command from "Partition" cluster + */ +EmberAfStatus zcl_decode_partition_cluster_multiple_ack_command (EmberAfClusterCommand * cmd, sl_zcl_partition_cluster_multiple_ack_command_t *cmd_struct); +/** @brief Parser function for "ReadHandshakeParamResponse" ZCL command from "Partition" cluster + */ +EmberAfStatus zcl_decode_partition_cluster_read_handshake_param_response_command (EmberAfClusterCommand * cmd, sl_zcl_partition_cluster_read_handshake_param_response_command_t *cmd_struct); +/** @brief Parser function for "QueryNextImageRequest" ZCL command from "Over the Air Bootloading" cluster + */ +EmberAfStatus zcl_decode_over_the_air_bootloading_cluster_query_next_image_request_command (EmberAfClusterCommand * cmd, sl_zcl_over_the_air_bootloading_cluster_query_next_image_request_command_t *cmd_struct); +/** @brief Parser function for "ImageBlockRequest" ZCL command from "Over the Air Bootloading" cluster + */ +EmberAfStatus zcl_decode_over_the_air_bootloading_cluster_image_block_request_command (EmberAfClusterCommand * cmd, sl_zcl_over_the_air_bootloading_cluster_image_block_request_command_t *cmd_struct); +/** @brief Parser function for "ImagePageRequest" ZCL command from "Over the Air Bootloading" cluster + */ +EmberAfStatus zcl_decode_over_the_air_bootloading_cluster_image_page_request_command (EmberAfClusterCommand * cmd, sl_zcl_over_the_air_bootloading_cluster_image_page_request_command_t *cmd_struct); +/** @brief Parser function for "UpgradeEndRequest" ZCL command from "Over the Air Bootloading" cluster + */ +EmberAfStatus zcl_decode_over_the_air_bootloading_cluster_upgrade_end_request_command (EmberAfClusterCommand * cmd, sl_zcl_over_the_air_bootloading_cluster_upgrade_end_request_command_t *cmd_struct); +/** @brief Parser function for "QuerySpecificFileRequest" ZCL command from "Over the Air Bootloading" cluster + */ +EmberAfStatus zcl_decode_over_the_air_bootloading_cluster_query_specific_file_request_command (EmberAfClusterCommand * cmd, sl_zcl_over_the_air_bootloading_cluster_query_specific_file_request_command_t *cmd_struct); +/** @brief Parser function for "ImageNotify" ZCL command from "Over the Air Bootloading" cluster + */ +EmberAfStatus zcl_decode_over_the_air_bootloading_cluster_image_notify_command (EmberAfClusterCommand * cmd, sl_zcl_over_the_air_bootloading_cluster_image_notify_command_t *cmd_struct); +/** @brief Parser function for "QueryNextImageResponse" ZCL command from "Over the Air Bootloading" cluster + */ +EmberAfStatus zcl_decode_over_the_air_bootloading_cluster_query_next_image_response_command (EmberAfClusterCommand * cmd, sl_zcl_over_the_air_bootloading_cluster_query_next_image_response_command_t *cmd_struct); +/** @brief Parser function for "ImageBlockResponse" ZCL command from "Over the Air Bootloading" cluster + */ +EmberAfStatus zcl_decode_over_the_air_bootloading_cluster_image_block_response_command (EmberAfClusterCommand * cmd, sl_zcl_over_the_air_bootloading_cluster_image_block_response_command_t *cmd_struct); +/** @brief Parser function for "UpgradeEndResponse" ZCL command from "Over the Air Bootloading" cluster + */ +EmberAfStatus zcl_decode_over_the_air_bootloading_cluster_upgrade_end_response_command (EmberAfClusterCommand * cmd, sl_zcl_over_the_air_bootloading_cluster_upgrade_end_response_command_t *cmd_struct); +/** @brief Parser function for "QuerySpecificFileResponse" ZCL command from "Over the Air Bootloading" cluster + */ +EmberAfStatus zcl_decode_over_the_air_bootloading_cluster_query_specific_file_response_command (EmberAfClusterCommand * cmd, sl_zcl_over_the_air_bootloading_cluster_query_specific_file_response_command_t *cmd_struct); +/** @brief Parser function for "PowerProfileRequest" ZCL command from "Power Profile" cluster + */ +EmberAfStatus zcl_decode_power_profile_cluster_power_profile_request_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_power_profile_request_command_t *cmd_struct); +/** @brief Parser function for "GetPowerProfilePriceResponse" ZCL command from "Power Profile" cluster + */ +EmberAfStatus zcl_decode_power_profile_cluster_get_power_profile_price_response_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_get_power_profile_price_response_command_t *cmd_struct); +/** @brief Parser function for "GetOverallSchedulePriceResponse" ZCL command from "Power Profile" cluster + */ +EmberAfStatus zcl_decode_power_profile_cluster_get_overall_schedule_price_response_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_get_overall_schedule_price_response_command_t *cmd_struct); +/** @brief Parser function for "EnergyPhasesScheduleNotification" ZCL command from "Power Profile" cluster + */ +EmberAfStatus zcl_decode_power_profile_cluster_energy_phases_schedule_notification_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_energy_phases_schedule_notification_command_t *cmd_struct); +/** @brief Parser function for "EnergyPhasesScheduleResponse" ZCL command from "Power Profile" cluster + */ +EmberAfStatus zcl_decode_power_profile_cluster_energy_phases_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_energy_phases_schedule_response_command_t *cmd_struct); +/** @brief Parser function for "PowerProfileScheduleConstraintsRequest" ZCL command from "Power Profile" cluster + */ +EmberAfStatus zcl_decode_power_profile_cluster_power_profile_schedule_constraints_request_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_power_profile_schedule_constraints_request_command_t *cmd_struct); +/** @brief Parser function for "EnergyPhasesScheduleStateRequest" ZCL command from "Power Profile" cluster + */ +EmberAfStatus zcl_decode_power_profile_cluster_energy_phases_schedule_state_request_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_energy_phases_schedule_state_request_command_t *cmd_struct); +/** @brief Parser function for "GetPowerProfilePriceExtendedResponse" ZCL command from "Power Profile" cluster + */ +EmberAfStatus zcl_decode_power_profile_cluster_get_power_profile_price_extended_response_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_get_power_profile_price_extended_response_command_t *cmd_struct); +/** @brief Parser function for "PowerProfileNotification" ZCL command from "Power Profile" cluster + */ +EmberAfStatus zcl_decode_power_profile_cluster_power_profile_notification_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_power_profile_notification_command_t *cmd_struct); +/** @brief Parser function for "PowerProfileResponse" ZCL command from "Power Profile" cluster + */ +EmberAfStatus zcl_decode_power_profile_cluster_power_profile_response_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_power_profile_response_command_t *cmd_struct); +/** @brief Parser function for "PowerProfileStateResponse" ZCL command from "Power Profile" cluster + */ +EmberAfStatus zcl_decode_power_profile_cluster_power_profile_state_response_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_power_profile_state_response_command_t *cmd_struct); +/** @brief Parser function for "GetPowerProfilePrice" ZCL command from "Power Profile" cluster + */ +EmberAfStatus zcl_decode_power_profile_cluster_get_power_profile_price_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_get_power_profile_price_command_t *cmd_struct); +/** @brief Parser function for "PowerProfilesStateNotification" ZCL command from "Power Profile" cluster + */ +EmberAfStatus zcl_decode_power_profile_cluster_power_profiles_state_notification_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_power_profiles_state_notification_command_t *cmd_struct); +/** @brief Parser function for "EnergyPhasesScheduleRequest" ZCL command from "Power Profile" cluster + */ +EmberAfStatus zcl_decode_power_profile_cluster_energy_phases_schedule_request_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_energy_phases_schedule_request_command_t *cmd_struct); +/** @brief Parser function for "EnergyPhasesScheduleStateResponse" ZCL command from "Power Profile" cluster + */ +EmberAfStatus zcl_decode_power_profile_cluster_energy_phases_schedule_state_response_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_energy_phases_schedule_state_response_command_t *cmd_struct); +/** @brief Parser function for "EnergyPhasesScheduleStateNotification" ZCL command from "Power Profile" cluster + */ +EmberAfStatus zcl_decode_power_profile_cluster_energy_phases_schedule_state_notification_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_energy_phases_schedule_state_notification_command_t *cmd_struct); +/** @brief Parser function for "PowerProfileScheduleConstraintsNotification" ZCL command from "Power Profile" cluster + */ +EmberAfStatus zcl_decode_power_profile_cluster_power_profile_schedule_constraints_notification_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_power_profile_schedule_constraints_notification_command_t *cmd_struct); +/** @brief Parser function for "PowerProfileScheduleConstraintsResponse" ZCL command from "Power Profile" cluster + */ +EmberAfStatus zcl_decode_power_profile_cluster_power_profile_schedule_constraints_response_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_power_profile_schedule_constraints_response_command_t *cmd_struct); +/** @brief Parser function for "GetPowerProfilePriceExtended" ZCL command from "Power Profile" cluster + */ +EmberAfStatus zcl_decode_power_profile_cluster_get_power_profile_price_extended_command (EmberAfClusterCommand * cmd, sl_zcl_power_profile_cluster_get_power_profile_price_extended_command_t *cmd_struct); +/** @brief Parser function for "ExecutionOfACommand" ZCL command from "Appliance Control" cluster + */ +EmberAfStatus zcl_decode_appliance_control_cluster_execution_of_a_command_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_control_cluster_execution_of_a_command_command_t *cmd_struct); +/** @brief Parser function for "WriteFunctions" ZCL command from "Appliance Control" cluster + */ +EmberAfStatus zcl_decode_appliance_control_cluster_write_functions_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_control_cluster_write_functions_command_t *cmd_struct); +/** @brief Parser function for "OverloadWarning" ZCL command from "Appliance Control" cluster + */ +EmberAfStatus zcl_decode_appliance_control_cluster_overload_warning_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_control_cluster_overload_warning_command_t *cmd_struct); +/** @brief Parser function for "SignalStateResponse" ZCL command from "Appliance Control" cluster + */ +EmberAfStatus zcl_decode_appliance_control_cluster_signal_state_response_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_control_cluster_signal_state_response_command_t *cmd_struct); +/** @brief Parser function for "SignalStateNotification" ZCL command from "Appliance Control" cluster + */ +EmberAfStatus zcl_decode_appliance_control_cluster_signal_state_notification_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_control_cluster_signal_state_notification_command_t *cmd_struct); +/** @brief Parser function for "CheckInResponse" ZCL command from "Poll Control" cluster + */ +EmberAfStatus zcl_decode_poll_control_cluster_check_in_response_command (EmberAfClusterCommand * cmd, sl_zcl_poll_control_cluster_check_in_response_command_t *cmd_struct); +/** @brief Parser function for "SetLongPollInterval" ZCL command from "Poll Control" cluster + */ +EmberAfStatus zcl_decode_poll_control_cluster_set_long_poll_interval_command (EmberAfClusterCommand * cmd, sl_zcl_poll_control_cluster_set_long_poll_interval_command_t *cmd_struct); +/** @brief Parser function for "SetShortPollInterval" ZCL command from "Poll Control" cluster + */ +EmberAfStatus zcl_decode_poll_control_cluster_set_short_poll_interval_command (EmberAfClusterCommand * cmd, sl_zcl_poll_control_cluster_set_short_poll_interval_command_t *cmd_struct); +/** @brief Parser function for "GpNotification" ZCL command from "Green Power" cluster + */ +EmberAfStatus zcl_decode_green_power_cluster_gp_notification_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_notification_command_t *cmd_struct); +/** @brief Parser function for "GpPairingSearch" ZCL command from "Green Power" cluster + */ +EmberAfStatus zcl_decode_green_power_cluster_gp_pairing_search_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_pairing_search_command_t *cmd_struct); +/** @brief Parser function for "GpTunnelingStop" ZCL command from "Green Power" cluster + */ +EmberAfStatus zcl_decode_green_power_cluster_gp_tunneling_stop_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_tunneling_stop_command_t *cmd_struct); +/** @brief Parser function for "GpCommissioningNotification" ZCL command from "Green Power" cluster + */ +EmberAfStatus zcl_decode_green_power_cluster_gp_commissioning_notification_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_commissioning_notification_command_t *cmd_struct); +/** @brief Parser function for "GpSinkCommissioningMode" ZCL command from "Green Power" cluster + */ +EmberAfStatus zcl_decode_green_power_cluster_gp_sink_commissioning_mode_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_sink_commissioning_mode_command_t *cmd_struct); +/** @brief Parser function for "GpTranslationTableUpdate" ZCL command from "Green Power" cluster + */ +EmberAfStatus zcl_decode_green_power_cluster_gp_translation_table_update_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_translation_table_update_command_t *cmd_struct); +/** @brief Parser function for "GpTranslationTableRequest" ZCL command from "Green Power" cluster + */ +EmberAfStatus zcl_decode_green_power_cluster_gp_translation_table_request_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_translation_table_request_command_t *cmd_struct); +/** @brief Parser function for "GpPairingConfiguration" ZCL command from "Green Power" cluster + */ +EmberAfStatus zcl_decode_green_power_cluster_gp_pairing_configuration_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_pairing_configuration_command_t *cmd_struct); +/** @brief Parser function for "GpSinkTableRequest" ZCL command from "Green Power" cluster + */ +EmberAfStatus zcl_decode_green_power_cluster_gp_sink_table_request_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_sink_table_request_command_t *cmd_struct); +/** @brief Parser function for "GpProxyTableResponse" ZCL command from "Green Power" cluster + */ +EmberAfStatus zcl_decode_green_power_cluster_gp_proxy_table_response_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_proxy_table_response_command_t *cmd_struct); +/** @brief Parser function for "GpNotificationResponse" ZCL command from "Green Power" cluster + */ +EmberAfStatus zcl_decode_green_power_cluster_gp_notification_response_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_notification_response_command_t *cmd_struct); +/** @brief Parser function for "GpPairing" ZCL command from "Green Power" cluster + */ +EmberAfStatus zcl_decode_green_power_cluster_gp_pairing_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_pairing_command_t *cmd_struct); +/** @brief Parser function for "GpProxyCommissioningMode" ZCL command from "Green Power" cluster + */ +EmberAfStatus zcl_decode_green_power_cluster_gp_proxy_commissioning_mode_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_proxy_commissioning_mode_command_t *cmd_struct); +/** @brief Parser function for "GpResponse" ZCL command from "Green Power" cluster + */ +EmberAfStatus zcl_decode_green_power_cluster_gp_response_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_response_command_t *cmd_struct); +/** @brief Parser function for "GpTranslationTableResponse" ZCL command from "Green Power" cluster + */ +EmberAfStatus zcl_decode_green_power_cluster_gp_translation_table_response_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_translation_table_response_command_t *cmd_struct); +/** @brief Parser function for "GpSinkTableResponse" ZCL command from "Green Power" cluster + */ +EmberAfStatus zcl_decode_green_power_cluster_gp_sink_table_response_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_sink_table_response_command_t *cmd_struct); +/** @brief Parser function for "GpProxyTableRequest" ZCL command from "Green Power" cluster + */ +EmberAfStatus zcl_decode_green_power_cluster_gp_proxy_table_request_command (EmberAfClusterCommand * cmd, sl_zcl_green_power_cluster_gp_proxy_table_request_command_t *cmd_struct); +/** @brief Parser function for "LockDoor" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_lock_door_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_lock_door_command_t *cmd_struct); +/** @brief Parser function for "UnlockDoor" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_unlock_door_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_unlock_door_command_t *cmd_struct); +/** @brief Parser function for "Toggle" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_toggle_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_toggle_command_t *cmd_struct); +/** @brief Parser function for "UnlockWithTimeout" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_unlock_with_timeout_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_unlock_with_timeout_command_t *cmd_struct); +/** @brief Parser function for "GetLogRecord" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_get_log_record_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_log_record_command_t *cmd_struct); +/** @brief Parser function for "SetPin" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_set_pin_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_pin_command_t *cmd_struct); +/** @brief Parser function for "GetPin" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_get_pin_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_pin_command_t *cmd_struct); +/** @brief Parser function for "ClearPin" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_clear_pin_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_pin_command_t *cmd_struct); +/** @brief Parser function for "SetUserStatus" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_set_user_status_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_user_status_command_t *cmd_struct); +/** @brief Parser function for "GetUserStatus" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_get_user_status_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_user_status_command_t *cmd_struct); +/** @brief Parser function for "SetWeekdaySchedule" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_set_weekday_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_weekday_schedule_command_t *cmd_struct); +/** @brief Parser function for "GetWeekdaySchedule" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_get_weekday_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_weekday_schedule_command_t *cmd_struct); +/** @brief Parser function for "ClearWeekdaySchedule" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_clear_weekday_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_weekday_schedule_command_t *cmd_struct); +/** @brief Parser function for "SetYeardaySchedule" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_set_yearday_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_yearday_schedule_command_t *cmd_struct); +/** @brief Parser function for "GetYeardaySchedule" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_get_yearday_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_yearday_schedule_command_t *cmd_struct); +/** @brief Parser function for "ClearYeardaySchedule" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_clear_yearday_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_yearday_schedule_command_t *cmd_struct); +/** @brief Parser function for "SetHolidaySchedule" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_set_holiday_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_holiday_schedule_command_t *cmd_struct); +/** @brief Parser function for "GetHolidaySchedule" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_get_holiday_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_holiday_schedule_command_t *cmd_struct); +/** @brief Parser function for "ClearHolidaySchedule" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_clear_holiday_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_holiday_schedule_command_t *cmd_struct); +/** @brief Parser function for "SetUserType" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_set_user_type_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_user_type_command_t *cmd_struct); +/** @brief Parser function for "GetUserType" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_get_user_type_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_user_type_command_t *cmd_struct); +/** @brief Parser function for "SetRfid" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_set_rfid_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_rfid_command_t *cmd_struct); +/** @brief Parser function for "GetRfid" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_get_rfid_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_rfid_command_t *cmd_struct); +/** @brief Parser function for "ClearRfid" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_clear_rfid_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_rfid_command_t *cmd_struct); +/** @brief Parser function for "SetDisposableSchedule" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_set_disposable_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_disposable_schedule_command_t *cmd_struct); +/** @brief Parser function for "GetDisposableSchedule" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_get_disposable_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_disposable_schedule_command_t *cmd_struct); +/** @brief Parser function for "ClearDisposableSchedule" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_clear_disposable_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_disposable_schedule_command_t *cmd_struct); +/** @brief Parser function for "ClearBiometricCredential" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_clear_biometric_credential_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_biometric_credential_command_t *cmd_struct); +/** @brief Parser function for "LockDoorResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_lock_door_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_lock_door_response_command_t *cmd_struct); +/** @brief Parser function for "UnlockDoorResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_unlock_door_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_unlock_door_response_command_t *cmd_struct); +/** @brief Parser function for "ToggleResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_toggle_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_toggle_response_command_t *cmd_struct); +/** @brief Parser function for "UnlockWithTimeoutResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_unlock_with_timeout_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_unlock_with_timeout_response_command_t *cmd_struct); +/** @brief Parser function for "GetLogRecordResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_get_log_record_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_log_record_response_command_t *cmd_struct); +/** @brief Parser function for "SetPinResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_set_pin_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_pin_response_command_t *cmd_struct); +/** @brief Parser function for "GetPinResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_get_pin_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_pin_response_command_t *cmd_struct); +/** @brief Parser function for "ClearPinResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_clear_pin_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_pin_response_command_t *cmd_struct); +/** @brief Parser function for "ClearAllPinsResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_clear_all_pins_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_all_pins_response_command_t *cmd_struct); +/** @brief Parser function for "SetUserStatusResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_set_user_status_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_user_status_response_command_t *cmd_struct); +/** @brief Parser function for "GetUserStatusResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_get_user_status_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_user_status_response_command_t *cmd_struct); +/** @brief Parser function for "SetWeekdayScheduleResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_set_weekday_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_weekday_schedule_response_command_t *cmd_struct); +/** @brief Parser function for "GetWeekdayScheduleResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_get_weekday_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_weekday_schedule_response_command_t *cmd_struct); +/** @brief Parser function for "ClearWeekdayScheduleResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_clear_weekday_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_weekday_schedule_response_command_t *cmd_struct); +/** @brief Parser function for "SetYeardayScheduleResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_set_yearday_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_yearday_schedule_response_command_t *cmd_struct); +/** @brief Parser function for "GetYeardayScheduleResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_get_yearday_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_yearday_schedule_response_command_t *cmd_struct); +/** @brief Parser function for "ClearYeardayScheduleResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_clear_yearday_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_yearday_schedule_response_command_t *cmd_struct); +/** @brief Parser function for "SetHolidayScheduleResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_set_holiday_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_holiday_schedule_response_command_t *cmd_struct); +/** @brief Parser function for "GetHolidayScheduleResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_get_holiday_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_holiday_schedule_response_command_t *cmd_struct); +/** @brief Parser function for "ClearHolidayScheduleResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_clear_holiday_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_holiday_schedule_response_command_t *cmd_struct); +/** @brief Parser function for "SetUserTypeResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_set_user_type_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_user_type_response_command_t *cmd_struct); +/** @brief Parser function for "GetUserTypeResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_get_user_type_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_user_type_response_command_t *cmd_struct); +/** @brief Parser function for "SetRfidResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_set_rfid_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_rfid_response_command_t *cmd_struct); +/** @brief Parser function for "GetRfidResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_get_rfid_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_rfid_response_command_t *cmd_struct); +/** @brief Parser function for "ClearRfidResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_clear_rfid_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_rfid_response_command_t *cmd_struct); +/** @brief Parser function for "ClearAllRfidsResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_clear_all_rfids_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_all_rfids_response_command_t *cmd_struct); +/** @brief Parser function for "SetDisposableScheduleResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_set_disposable_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_set_disposable_schedule_response_command_t *cmd_struct); +/** @brief Parser function for "GetDisposableScheduleResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_get_disposable_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_get_disposable_schedule_response_command_t *cmd_struct); +/** @brief Parser function for "ClearDisposableScheduleResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_clear_disposable_schedule_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_disposable_schedule_response_command_t *cmd_struct); +/** @brief Parser function for "ClearBiometricCredentialResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_clear_biometric_credential_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_biometric_credential_response_command_t *cmd_struct); +/** @brief Parser function for "ClearAllBiometricCredentialsResponse" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_clear_all_biometric_credentials_response_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_clear_all_biometric_credentials_response_command_t *cmd_struct); +/** @brief Parser function for "OperationEventNotification" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_operation_event_notification_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_operation_event_notification_command_t *cmd_struct); +/** @brief Parser function for "ProgrammingEventNotification" ZCL command from "Door Lock" cluster + */ +EmberAfStatus zcl_decode_door_lock_cluster_programming_event_notification_command (EmberAfClusterCommand * cmd, sl_zcl_door_lock_cluster_programming_event_notification_command_t *cmd_struct); +/** @brief Parser function for "WindowCoveringGoToLiftValue" ZCL command from "Window Covering" cluster + */ +EmberAfStatus zcl_decode_window_covering_cluster_window_covering_go_to_lift_value_command (EmberAfClusterCommand * cmd, sl_zcl_window_covering_cluster_window_covering_go_to_lift_value_command_t *cmd_struct); +/** @brief Parser function for "WindowCoveringGoToLiftPercentage" ZCL command from "Window Covering" cluster + */ +EmberAfStatus zcl_decode_window_covering_cluster_window_covering_go_to_lift_percentage_command (EmberAfClusterCommand * cmd, sl_zcl_window_covering_cluster_window_covering_go_to_lift_percentage_command_t *cmd_struct); +/** @brief Parser function for "WindowCoveringGoToTiltValue" ZCL command from "Window Covering" cluster + */ +EmberAfStatus zcl_decode_window_covering_cluster_window_covering_go_to_tilt_value_command (EmberAfClusterCommand * cmd, sl_zcl_window_covering_cluster_window_covering_go_to_tilt_value_command_t *cmd_struct); +/** @brief Parser function for "WindowCoveringGoToTiltPercentage" ZCL command from "Window Covering" cluster + */ +EmberAfStatus zcl_decode_window_covering_cluster_window_covering_go_to_tilt_percentage_command (EmberAfClusterCommand * cmd, sl_zcl_window_covering_cluster_window_covering_go_to_tilt_percentage_command_t *cmd_struct); +/** @brief Parser function for "BarrierControlGoToPercent" ZCL command from "Barrier Control" cluster + */ +EmberAfStatus zcl_decode_barrier_control_cluster_barrier_control_go_to_percent_command (EmberAfClusterCommand * cmd, sl_zcl_barrier_control_cluster_barrier_control_go_to_percent_command_t *cmd_struct); +/** @brief Parser function for "SetpointRaiseLower" ZCL command from "Thermostat" cluster + */ +EmberAfStatus zcl_decode_thermostat_cluster_setpoint_raise_lower_command (EmberAfClusterCommand * cmd, sl_zcl_thermostat_cluster_setpoint_raise_lower_command_t *cmd_struct); +/** @brief Parser function for "SetWeeklySchedule" ZCL command from "Thermostat" cluster + */ +EmberAfStatus zcl_decode_thermostat_cluster_set_weekly_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_thermostat_cluster_set_weekly_schedule_command_t *cmd_struct); +/** @brief Parser function for "GetWeeklySchedule" ZCL command from "Thermostat" cluster + */ +EmberAfStatus zcl_decode_thermostat_cluster_get_weekly_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_thermostat_cluster_get_weekly_schedule_command_t *cmd_struct); +/** @brief Parser function for "CurrentWeeklySchedule" ZCL command from "Thermostat" cluster + */ +EmberAfStatus zcl_decode_thermostat_cluster_current_weekly_schedule_command (EmberAfClusterCommand * cmd, sl_zcl_thermostat_cluster_current_weekly_schedule_command_t *cmd_struct); +/** @brief Parser function for "RelayStatusLog" ZCL command from "Thermostat" cluster + */ +EmberAfStatus zcl_decode_thermostat_cluster_relay_status_log_command (EmberAfClusterCommand * cmd, sl_zcl_thermostat_cluster_relay_status_log_command_t *cmd_struct); +/** @brief Parser function for "MoveToHue" ZCL command from "Color Control" cluster + */ +EmberAfStatus zcl_decode_color_control_cluster_move_to_hue_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_move_to_hue_command_t *cmd_struct); +/** @brief Parser function for "MoveHue" ZCL command from "Color Control" cluster + */ +EmberAfStatus zcl_decode_color_control_cluster_move_hue_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_move_hue_command_t *cmd_struct); +/** @brief Parser function for "StepHue" ZCL command from "Color Control" cluster + */ +EmberAfStatus zcl_decode_color_control_cluster_step_hue_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_step_hue_command_t *cmd_struct); +/** @brief Parser function for "MoveToSaturation" ZCL command from "Color Control" cluster + */ +EmberAfStatus zcl_decode_color_control_cluster_move_to_saturation_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_move_to_saturation_command_t *cmd_struct); +/** @brief Parser function for "MoveSaturation" ZCL command from "Color Control" cluster + */ +EmberAfStatus zcl_decode_color_control_cluster_move_saturation_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_move_saturation_command_t *cmd_struct); +/** @brief Parser function for "StepSaturation" ZCL command from "Color Control" cluster + */ +EmberAfStatus zcl_decode_color_control_cluster_step_saturation_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_step_saturation_command_t *cmd_struct); +/** @brief Parser function for "MoveToHueAndSaturation" ZCL command from "Color Control" cluster + */ +EmberAfStatus zcl_decode_color_control_cluster_move_to_hue_and_saturation_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_move_to_hue_and_saturation_command_t *cmd_struct); +/** @brief Parser function for "MoveToColor" ZCL command from "Color Control" cluster + */ +EmberAfStatus zcl_decode_color_control_cluster_move_to_color_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_move_to_color_command_t *cmd_struct); +/** @brief Parser function for "MoveColor" ZCL command from "Color Control" cluster + */ +EmberAfStatus zcl_decode_color_control_cluster_move_color_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_move_color_command_t *cmd_struct); +/** @brief Parser function for "StepColor" ZCL command from "Color Control" cluster + */ +EmberAfStatus zcl_decode_color_control_cluster_step_color_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_step_color_command_t *cmd_struct); +/** @brief Parser function for "MoveToColorTemperature" ZCL command from "Color Control" cluster + */ +EmberAfStatus zcl_decode_color_control_cluster_move_to_color_temperature_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_move_to_color_temperature_command_t *cmd_struct); +/** @brief Parser function for "EnhancedMoveToHue" ZCL command from "Color Control" cluster + */ +EmberAfStatus zcl_decode_color_control_cluster_enhanced_move_to_hue_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_enhanced_move_to_hue_command_t *cmd_struct); +/** @brief Parser function for "EnhancedMoveHue" ZCL command from "Color Control" cluster + */ +EmberAfStatus zcl_decode_color_control_cluster_enhanced_move_hue_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_enhanced_move_hue_command_t *cmd_struct); +/** @brief Parser function for "EnhancedStepHue" ZCL command from "Color Control" cluster + */ +EmberAfStatus zcl_decode_color_control_cluster_enhanced_step_hue_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_enhanced_step_hue_command_t *cmd_struct); +/** @brief Parser function for "EnhancedMoveToHueAndSaturation" ZCL command from "Color Control" cluster + */ +EmberAfStatus zcl_decode_color_control_cluster_enhanced_move_to_hue_and_saturation_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_enhanced_move_to_hue_and_saturation_command_t *cmd_struct); +/** @brief Parser function for "ColorLoopSet" ZCL command from "Color Control" cluster + */ +EmberAfStatus zcl_decode_color_control_cluster_color_loop_set_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_color_loop_set_command_t *cmd_struct); +/** @brief Parser function for "StopMoveStep" ZCL command from "Color Control" cluster + */ +EmberAfStatus zcl_decode_color_control_cluster_stop_move_step_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_stop_move_step_command_t *cmd_struct); +/** @brief Parser function for "MoveColorTemperature" ZCL command from "Color Control" cluster + */ +EmberAfStatus zcl_decode_color_control_cluster_move_color_temperature_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_move_color_temperature_command_t *cmd_struct); +/** @brief Parser function for "StepColorTemperature" ZCL command from "Color Control" cluster + */ +EmberAfStatus zcl_decode_color_control_cluster_step_color_temperature_command (EmberAfClusterCommand * cmd, sl_zcl_color_control_cluster_step_color_temperature_command_t *cmd_struct); +/** @brief Parser function for "ZoneEnrollResponse" ZCL command from "IAS Zone" cluster + */ +EmberAfStatus zcl_decode_ias_zone_cluster_zone_enroll_response_command (EmberAfClusterCommand * cmd, sl_zcl_ias_zone_cluster_zone_enroll_response_command_t *cmd_struct); +/** @brief Parser function for "InitiateTestMode" ZCL command from "IAS Zone" cluster + */ +EmberAfStatus zcl_decode_ias_zone_cluster_initiate_test_mode_command (EmberAfClusterCommand * cmd, sl_zcl_ias_zone_cluster_initiate_test_mode_command_t *cmd_struct); +/** @brief Parser function for "ZoneStatusChangeNotification" ZCL command from "IAS Zone" cluster + */ +EmberAfStatus zcl_decode_ias_zone_cluster_zone_status_change_notification_command (EmberAfClusterCommand * cmd, sl_zcl_ias_zone_cluster_zone_status_change_notification_command_t *cmd_struct); +/** @brief Parser function for "ZoneEnrollRequest" ZCL command from "IAS Zone" cluster + */ +EmberAfStatus zcl_decode_ias_zone_cluster_zone_enroll_request_command (EmberAfClusterCommand * cmd, sl_zcl_ias_zone_cluster_zone_enroll_request_command_t *cmd_struct); +/** @brief Parser function for "Arm" ZCL command from "IAS ACE" cluster + */ +EmberAfStatus zcl_decode_ias_ace_cluster_arm_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_arm_command_t *cmd_struct); +/** @brief Parser function for "Bypass" ZCL command from "IAS ACE" cluster + */ +EmberAfStatus zcl_decode_ias_ace_cluster_bypass_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_bypass_command_t *cmd_struct); +/** @brief Parser function for "GetZoneInformation" ZCL command from "IAS ACE" cluster + */ +EmberAfStatus zcl_decode_ias_ace_cluster_get_zone_information_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_get_zone_information_command_t *cmd_struct); +/** @brief Parser function for "GetZoneStatus" ZCL command from "IAS ACE" cluster + */ +EmberAfStatus zcl_decode_ias_ace_cluster_get_zone_status_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_get_zone_status_command_t *cmd_struct); +/** @brief Parser function for "ArmResponse" ZCL command from "IAS ACE" cluster + */ +EmberAfStatus zcl_decode_ias_ace_cluster_arm_response_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_arm_response_command_t *cmd_struct); +/** @brief Parser function for "GetZoneIdMapResponse" ZCL command from "IAS ACE" cluster + */ +EmberAfStatus zcl_decode_ias_ace_cluster_get_zone_id_map_response_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_get_zone_id_map_response_command_t *cmd_struct); +/** @brief Parser function for "GetZoneInformationResponse" ZCL command from "IAS ACE" cluster + */ +EmberAfStatus zcl_decode_ias_ace_cluster_get_zone_information_response_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_get_zone_information_response_command_t *cmd_struct); +/** @brief Parser function for "ZoneStatusChanged" ZCL command from "IAS ACE" cluster + */ +EmberAfStatus zcl_decode_ias_ace_cluster_zone_status_changed_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_zone_status_changed_command_t *cmd_struct); +/** @brief Parser function for "PanelStatusChanged" ZCL command from "IAS ACE" cluster + */ +EmberAfStatus zcl_decode_ias_ace_cluster_panel_status_changed_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_panel_status_changed_command_t *cmd_struct); +/** @brief Parser function for "GetPanelStatusResponse" ZCL command from "IAS ACE" cluster + */ +EmberAfStatus zcl_decode_ias_ace_cluster_get_panel_status_response_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_get_panel_status_response_command_t *cmd_struct); +/** @brief Parser function for "SetBypassedZoneList" ZCL command from "IAS ACE" cluster + */ +EmberAfStatus zcl_decode_ias_ace_cluster_set_bypassed_zone_list_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_set_bypassed_zone_list_command_t *cmd_struct); +/** @brief Parser function for "BypassResponse" ZCL command from "IAS ACE" cluster + */ +EmberAfStatus zcl_decode_ias_ace_cluster_bypass_response_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_bypass_response_command_t *cmd_struct); +/** @brief Parser function for "GetZoneStatusResponse" ZCL command from "IAS ACE" cluster + */ +EmberAfStatus zcl_decode_ias_ace_cluster_get_zone_status_response_command (EmberAfClusterCommand * cmd, sl_zcl_ias_ace_cluster_get_zone_status_response_command_t *cmd_struct); +/** @brief Parser function for "StartWarning" ZCL command from "IAS WD" cluster + */ +EmberAfStatus zcl_decode_ias_wd_cluster_start_warning_command (EmberAfClusterCommand * cmd, sl_zcl_ias_wd_cluster_start_warning_command_t *cmd_struct); +/** @brief Parser function for "Squawk" ZCL command from "IAS WD" cluster + */ +EmberAfStatus zcl_decode_ias_wd_cluster_squawk_command (EmberAfClusterCommand * cmd, sl_zcl_ias_wd_cluster_squawk_command_t *cmd_struct); +/** @brief Parser function for "MatchProtocolAddress" ZCL command from "Generic Tunnel" cluster + */ +EmberAfStatus zcl_decode_generic_tunnel_cluster_match_protocol_address_command (EmberAfClusterCommand * cmd, sl_zcl_generic_tunnel_cluster_match_protocol_address_command_t *cmd_struct); +/** @brief Parser function for "MatchProtocolAddressResponse" ZCL command from "Generic Tunnel" cluster + */ +EmberAfStatus zcl_decode_generic_tunnel_cluster_match_protocol_address_response_command (EmberAfClusterCommand * cmd, sl_zcl_generic_tunnel_cluster_match_protocol_address_response_command_t *cmd_struct); +/** @brief Parser function for "AdvertiseProtocolAddress" ZCL command from "Generic Tunnel" cluster + */ +EmberAfStatus zcl_decode_generic_tunnel_cluster_advertise_protocol_address_command (EmberAfClusterCommand * cmd, sl_zcl_generic_tunnel_cluster_advertise_protocol_address_command_t *cmd_struct); +/** @brief Parser function for "TransferNpdu" ZCL command from "BACnet Protocol Tunnel" cluster + */ +EmberAfStatus zcl_decode_ba_cnet_protocol_tunnel_cluster_transfer_npdu_command (EmberAfClusterCommand * cmd, sl_zcl_ba_cnet_protocol_tunnel_cluster_transfer_npdu_command_t *cmd_struct); +/** @brief Parser function for "TransferAPDU" ZCL command from "11073 Protocol Tunnel" cluster + */ +EmberAfStatus zcl_decode_11073_protocol_tunnel_cluster_transfer_apdu_command (EmberAfClusterCommand * cmd, sl_zcl_11073_protocol_tunnel_cluster_transfer_apdu_command_t *cmd_struct); +/** @brief Parser function for "ConnectRequest" ZCL command from "11073 Protocol Tunnel" cluster + */ +EmberAfStatus zcl_decode_11073_protocol_tunnel_cluster_connect_request_command (EmberAfClusterCommand * cmd, sl_zcl_11073_protocol_tunnel_cluster_connect_request_command_t *cmd_struct); +/** @brief Parser function for "DisconnectRequest" ZCL command from "11073 Protocol Tunnel" cluster + */ +EmberAfStatus zcl_decode_11073_protocol_tunnel_cluster_disconnect_request_command (EmberAfClusterCommand * cmd, sl_zcl_11073_protocol_tunnel_cluster_disconnect_request_command_t *cmd_struct); +/** @brief Parser function for "ConnectStatusNotification" ZCL command from "11073 Protocol Tunnel" cluster + */ +EmberAfStatus zcl_decode_11073_protocol_tunnel_cluster_connect_status_notification_command (EmberAfClusterCommand * cmd, sl_zcl_11073_protocol_tunnel_cluster_connect_status_notification_command_t *cmd_struct); +/** @brief Parser function for "TransferApduFromClient" ZCL command from "ISO 7816 Protocol Tunnel" cluster + */ +EmberAfStatus zcl_decode_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_client_command (EmberAfClusterCommand * cmd, sl_zcl_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_client_command_t *cmd_struct); +/** @brief Parser function for "TransferApduFromServer" ZCL command from "ISO 7816 Protocol Tunnel" cluster + */ +EmberAfStatus zcl_decode_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_server_command (EmberAfClusterCommand * cmd, sl_zcl_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_server_command_t *cmd_struct); +/** @brief Parser function for "GetCurrentPrice" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_get_current_price_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_current_price_command_t *cmd_struct); +/** @brief Parser function for "GetScheduledPrices" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_get_scheduled_prices_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_scheduled_prices_command_t *cmd_struct); +/** @brief Parser function for "PriceAcknowledgement" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_price_acknowledgement_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_price_acknowledgement_command_t *cmd_struct); +/** @brief Parser function for "GetBlockPeriods" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_get_block_periods_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_block_periods_command_t *cmd_struct); +/** @brief Parser function for "GetConversionFactor" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_get_conversion_factor_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_conversion_factor_command_t *cmd_struct); +/** @brief Parser function for "GetCalorificValue" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_get_calorific_value_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_calorific_value_command_t *cmd_struct); +/** @brief Parser function for "GetTariffInformation" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_get_tariff_information_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_tariff_information_command_t *cmd_struct); +/** @brief Parser function for "GetPriceMatrix" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_get_price_matrix_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_price_matrix_command_t *cmd_struct); +/** @brief Parser function for "GetBlockThresholds" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_get_block_thresholds_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_block_thresholds_command_t *cmd_struct); +/** @brief Parser function for "GetCO2Value" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_get_co2_value_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_co2_value_command_t *cmd_struct); +/** @brief Parser function for "GetTierLabels" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_get_tier_labels_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_tier_labels_command_t *cmd_struct); +/** @brief Parser function for "GetBillingPeriod" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_get_billing_period_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_billing_period_command_t *cmd_struct); +/** @brief Parser function for "GetConsolidatedBill" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_get_consolidated_bill_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_consolidated_bill_command_t *cmd_struct); +/** @brief Parser function for "CppEventResponse" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_cpp_event_response_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_cpp_event_response_command_t *cmd_struct); +/** @brief Parser function for "GetCreditPayment" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_get_credit_payment_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_get_credit_payment_command_t *cmd_struct); +/** @brief Parser function for "PublishPrice" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_publish_price_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_price_command_t *cmd_struct); +/** @brief Parser function for "PublishBlockPeriod" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_publish_block_period_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_block_period_command_t *cmd_struct); +/** @brief Parser function for "PublishConversionFactor" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_publish_conversion_factor_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_conversion_factor_command_t *cmd_struct); +/** @brief Parser function for "PublishCalorificValue" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_publish_calorific_value_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_calorific_value_command_t *cmd_struct); +/** @brief Parser function for "PublishTariffInformation" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_publish_tariff_information_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_tariff_information_command_t *cmd_struct); +/** @brief Parser function for "PublishPriceMatrix" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_publish_price_matrix_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_price_matrix_command_t *cmd_struct); +/** @brief Parser function for "PublishBlockThresholds" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_publish_block_thresholds_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_block_thresholds_command_t *cmd_struct); +/** @brief Parser function for "PublishCO2Value" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_publish_co2_value_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_co2_value_command_t *cmd_struct); +/** @brief Parser function for "PublishTierLabels" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_publish_tier_labels_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_tier_labels_command_t *cmd_struct); +/** @brief Parser function for "PublishBillingPeriod" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_publish_billing_period_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_billing_period_command_t *cmd_struct); +/** @brief Parser function for "PublishConsolidatedBill" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_publish_consolidated_bill_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_consolidated_bill_command_t *cmd_struct); +/** @brief Parser function for "PublishCppEvent" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_publish_cpp_event_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_cpp_event_command_t *cmd_struct); +/** @brief Parser function for "PublishCreditPayment" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_publish_credit_payment_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_credit_payment_command_t *cmd_struct); +/** @brief Parser function for "PublishCurrencyConversion" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_publish_currency_conversion_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_publish_currency_conversion_command_t *cmd_struct); +/** @brief Parser function for "CancelTariff" ZCL command from "Price" cluster + */ +EmberAfStatus zcl_decode_price_cluster_cancel_tariff_command (EmberAfClusterCommand * cmd, sl_zcl_price_cluster_cancel_tariff_command_t *cmd_struct); +/** @brief Parser function for "ReportEventStatus" ZCL command from "Demand Response and Load Control" cluster + */ +EmberAfStatus zcl_decode_demand_response_and_load_control_cluster_report_event_status_command (EmberAfClusterCommand * cmd, sl_zcl_demand_response_and_load_control_cluster_report_event_status_command_t *cmd_struct); +/** @brief Parser function for "GetScheduledEvents" ZCL command from "Demand Response and Load Control" cluster + */ +EmberAfStatus zcl_decode_demand_response_and_load_control_cluster_get_scheduled_events_command (EmberAfClusterCommand * cmd, sl_zcl_demand_response_and_load_control_cluster_get_scheduled_events_command_t *cmd_struct); +/** @brief Parser function for "LoadControlEvent" ZCL command from "Demand Response and Load Control" cluster + */ +EmberAfStatus zcl_decode_demand_response_and_load_control_cluster_load_control_event_command (EmberAfClusterCommand * cmd, sl_zcl_demand_response_and_load_control_cluster_load_control_event_command_t *cmd_struct); +/** @brief Parser function for "CancelLoadControlEvent" ZCL command from "Demand Response and Load Control" cluster + */ +EmberAfStatus zcl_decode_demand_response_and_load_control_cluster_cancel_load_control_event_command (EmberAfClusterCommand * cmd, sl_zcl_demand_response_and_load_control_cluster_cancel_load_control_event_command_t *cmd_struct); +/** @brief Parser function for "CancelAllLoadControlEvents" ZCL command from "Demand Response and Load Control" cluster + */ +EmberAfStatus zcl_decode_demand_response_and_load_control_cluster_cancel_all_load_control_events_command (EmberAfClusterCommand * cmd, sl_zcl_demand_response_and_load_control_cluster_cancel_all_load_control_events_command_t *cmd_struct); +/** @brief Parser function for "GetProfile" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_get_profile_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_get_profile_command_t *cmd_struct); +/** @brief Parser function for "RequestMirrorResponse" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_request_mirror_response_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_request_mirror_response_command_t *cmd_struct); +/** @brief Parser function for "MirrorRemoved" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_mirror_removed_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_mirror_removed_command_t *cmd_struct); +/** @brief Parser function for "RequestFastPollMode" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_request_fast_poll_mode_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_request_fast_poll_mode_command_t *cmd_struct); +/** @brief Parser function for "ScheduleSnapshot" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_schedule_snapshot_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_schedule_snapshot_command_t *cmd_struct); +/** @brief Parser function for "TakeSnapshot" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_take_snapshot_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_take_snapshot_command_t *cmd_struct); +/** @brief Parser function for "GetSnapshot" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_get_snapshot_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_get_snapshot_command_t *cmd_struct); +/** @brief Parser function for "StartSampling" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_start_sampling_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_start_sampling_command_t *cmd_struct); +/** @brief Parser function for "GetSampledData" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_get_sampled_data_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_get_sampled_data_command_t *cmd_struct); +/** @brief Parser function for "MirrorReportAttributeResponse" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_mirror_report_attribute_response_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_mirror_report_attribute_response_command_t *cmd_struct); +/** @brief Parser function for "ResetLoadLimitCounter" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_reset_load_limit_counter_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_reset_load_limit_counter_command_t *cmd_struct); +/** @brief Parser function for "ChangeSupply" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_change_supply_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_change_supply_command_t *cmd_struct); +/** @brief Parser function for "LocalChangeSupply" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_local_change_supply_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_local_change_supply_command_t *cmd_struct); +/** @brief Parser function for "SetSupplyStatus" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_set_supply_status_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_set_supply_status_command_t *cmd_struct); +/** @brief Parser function for "SetUncontrolledFlowThreshold" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_set_uncontrolled_flow_threshold_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_set_uncontrolled_flow_threshold_command_t *cmd_struct); +/** @brief Parser function for "GetProfileResponse" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_get_profile_response_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_get_profile_response_command_t *cmd_struct); +/** @brief Parser function for "RequestFastPollModeResponse" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_request_fast_poll_mode_response_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_request_fast_poll_mode_response_command_t *cmd_struct); +/** @brief Parser function for "ScheduleSnapshotResponse" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_schedule_snapshot_response_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_schedule_snapshot_response_command_t *cmd_struct); +/** @brief Parser function for "TakeSnapshotResponse" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_take_snapshot_response_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_take_snapshot_response_command_t *cmd_struct); +/** @brief Parser function for "PublishSnapshot" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_publish_snapshot_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_publish_snapshot_command_t *cmd_struct); +/** @brief Parser function for "GetSampledDataResponse" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_get_sampled_data_response_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_get_sampled_data_response_command_t *cmd_struct); +/** @brief Parser function for "ConfigureMirror" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_configure_mirror_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_configure_mirror_command_t *cmd_struct); +/** @brief Parser function for "ConfigureNotificationScheme" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_configure_notification_scheme_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_configure_notification_scheme_command_t *cmd_struct); +/** @brief Parser function for "ConfigureNotificationFlags" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_configure_notification_flags_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_configure_notification_flags_command_t *cmd_struct); +/** @brief Parser function for "GetNotifiedMessage" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_get_notified_message_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_get_notified_message_command_t *cmd_struct); +/** @brief Parser function for "SupplyStatusResponse" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_supply_status_response_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_supply_status_response_command_t *cmd_struct); +/** @brief Parser function for "StartSamplingResponse" ZCL command from "Simple Metering" cluster + */ +EmberAfStatus zcl_decode_simple_metering_cluster_start_sampling_response_command (EmberAfClusterCommand * cmd, sl_zcl_simple_metering_cluster_start_sampling_response_command_t *cmd_struct); +/** @brief Parser function for "MessageConfirmation" ZCL command from "Messaging" cluster + */ +EmberAfStatus zcl_decode_messaging_cluster_message_confirmation_command (EmberAfClusterCommand * cmd, sl_zcl_messaging_cluster_message_confirmation_command_t *cmd_struct); +/** @brief Parser function for "GetMessageCancellation" ZCL command from "Messaging" cluster + */ +EmberAfStatus zcl_decode_messaging_cluster_get_message_cancellation_command (EmberAfClusterCommand * cmd, sl_zcl_messaging_cluster_get_message_cancellation_command_t *cmd_struct); +/** @brief Parser function for "DisplayMessage" ZCL command from "Messaging" cluster + */ +EmberAfStatus zcl_decode_messaging_cluster_display_message_command (EmberAfClusterCommand * cmd, sl_zcl_messaging_cluster_display_message_command_t *cmd_struct); +/** @brief Parser function for "CancelMessage" ZCL command from "Messaging" cluster + */ +EmberAfStatus zcl_decode_messaging_cluster_cancel_message_command (EmberAfClusterCommand * cmd, sl_zcl_messaging_cluster_cancel_message_command_t *cmd_struct); +/** @brief Parser function for "DisplayProtectedMessage" ZCL command from "Messaging" cluster + */ +EmberAfStatus zcl_decode_messaging_cluster_display_protected_message_command (EmberAfClusterCommand * cmd, sl_zcl_messaging_cluster_display_protected_message_command_t *cmd_struct); +/** @brief Parser function for "CancelAllMessages" ZCL command from "Messaging" cluster + */ +EmberAfStatus zcl_decode_messaging_cluster_cancel_all_messages_command (EmberAfClusterCommand * cmd, sl_zcl_messaging_cluster_cancel_all_messages_command_t *cmd_struct); +/** @brief Parser function for "RequestTunnel" ZCL command from "Tunneling" cluster + */ +EmberAfStatus zcl_decode_tunneling_cluster_request_tunnel_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_request_tunnel_command_t *cmd_struct); +/** @brief Parser function for "CloseTunnel" ZCL command from "Tunneling" cluster + */ +EmberAfStatus zcl_decode_tunneling_cluster_close_tunnel_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_close_tunnel_command_t *cmd_struct); +/** @brief Parser function for "TransferDataClientToServer" ZCL command from "Tunneling" cluster + */ +EmberAfStatus zcl_decode_tunneling_cluster_transfer_data_client_to_server_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_transfer_data_client_to_server_command_t *cmd_struct); +/** @brief Parser function for "TransferDataErrorClientToServer" ZCL command from "Tunneling" cluster + */ +EmberAfStatus zcl_decode_tunneling_cluster_transfer_data_error_client_to_server_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_transfer_data_error_client_to_server_command_t *cmd_struct); +/** @brief Parser function for "AckTransferDataClientToServer" ZCL command from "Tunneling" cluster + */ +EmberAfStatus zcl_decode_tunneling_cluster_ack_transfer_data_client_to_server_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_ack_transfer_data_client_to_server_command_t *cmd_struct); +/** @brief Parser function for "ReadyDataClientToServer" ZCL command from "Tunneling" cluster + */ +EmberAfStatus zcl_decode_tunneling_cluster_ready_data_client_to_server_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_ready_data_client_to_server_command_t *cmd_struct); +/** @brief Parser function for "GetSupportedTunnelProtocols" ZCL command from "Tunneling" cluster + */ +EmberAfStatus zcl_decode_tunneling_cluster_get_supported_tunnel_protocols_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_get_supported_tunnel_protocols_command_t *cmd_struct); +/** @brief Parser function for "RequestTunnelResponse" ZCL command from "Tunneling" cluster + */ +EmberAfStatus zcl_decode_tunneling_cluster_request_tunnel_response_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_request_tunnel_response_command_t *cmd_struct); +/** @brief Parser function for "TransferDataServerToClient" ZCL command from "Tunneling" cluster + */ +EmberAfStatus zcl_decode_tunneling_cluster_transfer_data_server_to_client_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_transfer_data_server_to_client_command_t *cmd_struct); +/** @brief Parser function for "TransferDataErrorServerToClient" ZCL command from "Tunneling" cluster + */ +EmberAfStatus zcl_decode_tunneling_cluster_transfer_data_error_server_to_client_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_transfer_data_error_server_to_client_command_t *cmd_struct); +/** @brief Parser function for "AckTransferDataServerToClient" ZCL command from "Tunneling" cluster + */ +EmberAfStatus zcl_decode_tunneling_cluster_ack_transfer_data_server_to_client_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_ack_transfer_data_server_to_client_command_t *cmd_struct); +/** @brief Parser function for "ReadyDataServerToClient" ZCL command from "Tunneling" cluster + */ +EmberAfStatus zcl_decode_tunneling_cluster_ready_data_server_to_client_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_ready_data_server_to_client_command_t *cmd_struct); +/** @brief Parser function for "SupportedTunnelProtocolsResponse" ZCL command from "Tunneling" cluster + */ +EmberAfStatus zcl_decode_tunneling_cluster_supported_tunnel_protocols_response_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_supported_tunnel_protocols_response_command_t *cmd_struct); +/** @brief Parser function for "TunnelClosureNotification" ZCL command from "Tunneling" cluster + */ +EmberAfStatus zcl_decode_tunneling_cluster_tunnel_closure_notification_command (EmberAfClusterCommand * cmd, sl_zcl_tunneling_cluster_tunnel_closure_notification_command_t *cmd_struct); +/** @brief Parser function for "SelectAvailableEmergencyCredit" ZCL command from "Prepayment" cluster + */ +EmberAfStatus zcl_decode_prepayment_cluster_select_available_emergency_credit_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_select_available_emergency_credit_command_t *cmd_struct); +/** @brief Parser function for "ChangeDebt" ZCL command from "Prepayment" cluster + */ +EmberAfStatus zcl_decode_prepayment_cluster_change_debt_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_change_debt_command_t *cmd_struct); +/** @brief Parser function for "EmergencyCreditSetup" ZCL command from "Prepayment" cluster + */ +EmberAfStatus zcl_decode_prepayment_cluster_emergency_credit_setup_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_emergency_credit_setup_command_t *cmd_struct); +/** @brief Parser function for "ConsumerTopUp" ZCL command from "Prepayment" cluster + */ +EmberAfStatus zcl_decode_prepayment_cluster_consumer_top_up_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_consumer_top_up_command_t *cmd_struct); +/** @brief Parser function for "CreditAdjustment" ZCL command from "Prepayment" cluster + */ +EmberAfStatus zcl_decode_prepayment_cluster_credit_adjustment_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_credit_adjustment_command_t *cmd_struct); +/** @brief Parser function for "ChangePaymentMode" ZCL command from "Prepayment" cluster + */ +EmberAfStatus zcl_decode_prepayment_cluster_change_payment_mode_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_change_payment_mode_command_t *cmd_struct); +/** @brief Parser function for "GetPrepaySnapshot" ZCL command from "Prepayment" cluster + */ +EmberAfStatus zcl_decode_prepayment_cluster_get_prepay_snapshot_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_get_prepay_snapshot_command_t *cmd_struct); +/** @brief Parser function for "GetTopUpLog" ZCL command from "Prepayment" cluster + */ +EmberAfStatus zcl_decode_prepayment_cluster_get_top_up_log_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_get_top_up_log_command_t *cmd_struct); +/** @brief Parser function for "SetLowCreditWarningLevel" ZCL command from "Prepayment" cluster + */ +EmberAfStatus zcl_decode_prepayment_cluster_set_low_credit_warning_level_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_set_low_credit_warning_level_command_t *cmd_struct); +/** @brief Parser function for "GetDebtRepaymentLog" ZCL command from "Prepayment" cluster + */ +EmberAfStatus zcl_decode_prepayment_cluster_get_debt_repayment_log_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_get_debt_repayment_log_command_t *cmd_struct); +/** @brief Parser function for "SetMaximumCreditLimit" ZCL command from "Prepayment" cluster + */ +EmberAfStatus zcl_decode_prepayment_cluster_set_maximum_credit_limit_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_set_maximum_credit_limit_command_t *cmd_struct); +/** @brief Parser function for "SetOverallDebtCap" ZCL command from "Prepayment" cluster + */ +EmberAfStatus zcl_decode_prepayment_cluster_set_overall_debt_cap_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_set_overall_debt_cap_command_t *cmd_struct); +/** @brief Parser function for "PublishPrepaySnapshot" ZCL command from "Prepayment" cluster + */ +EmberAfStatus zcl_decode_prepayment_cluster_publish_prepay_snapshot_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_publish_prepay_snapshot_command_t *cmd_struct); +/** @brief Parser function for "ChangePaymentModeResponse" ZCL command from "Prepayment" cluster + */ +EmberAfStatus zcl_decode_prepayment_cluster_change_payment_mode_response_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_change_payment_mode_response_command_t *cmd_struct); +/** @brief Parser function for "ConsumerTopUpResponse" ZCL command from "Prepayment" cluster + */ +EmberAfStatus zcl_decode_prepayment_cluster_consumer_top_up_response_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_consumer_top_up_response_command_t *cmd_struct); +/** @brief Parser function for "PublishTopUpLog" ZCL command from "Prepayment" cluster + */ +EmberAfStatus zcl_decode_prepayment_cluster_publish_top_up_log_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_publish_top_up_log_command_t *cmd_struct); +/** @brief Parser function for "PublishDebtLog" ZCL command from "Prepayment" cluster + */ +EmberAfStatus zcl_decode_prepayment_cluster_publish_debt_log_command (EmberAfClusterCommand * cmd, sl_zcl_prepayment_cluster_publish_debt_log_command_t *cmd_struct); +/** @brief Parser function for "ManageEvent" ZCL command from "Energy Management" cluster + */ +EmberAfStatus zcl_decode_energy_management_cluster_manage_event_command (EmberAfClusterCommand * cmd, sl_zcl_energy_management_cluster_manage_event_command_t *cmd_struct); +/** @brief Parser function for "ReportEventStatus" ZCL command from "Energy Management" cluster + */ +EmberAfStatus zcl_decode_energy_management_cluster_report_event_status_command (EmberAfClusterCommand * cmd, sl_zcl_energy_management_cluster_report_event_status_command_t *cmd_struct); +/** @brief Parser function for "GetCalendar" ZCL command from "Calendar" cluster + */ +EmberAfStatus zcl_decode_calendar_cluster_get_calendar_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_get_calendar_command_t *cmd_struct); +/** @brief Parser function for "GetDayProfiles" ZCL command from "Calendar" cluster + */ +EmberAfStatus zcl_decode_calendar_cluster_get_day_profiles_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_get_day_profiles_command_t *cmd_struct); +/** @brief Parser function for "GetWeekProfiles" ZCL command from "Calendar" cluster + */ +EmberAfStatus zcl_decode_calendar_cluster_get_week_profiles_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_get_week_profiles_command_t *cmd_struct); +/** @brief Parser function for "GetSeasons" ZCL command from "Calendar" cluster + */ +EmberAfStatus zcl_decode_calendar_cluster_get_seasons_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_get_seasons_command_t *cmd_struct); +/** @brief Parser function for "GetSpecialDays" ZCL command from "Calendar" cluster + */ +EmberAfStatus zcl_decode_calendar_cluster_get_special_days_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_get_special_days_command_t *cmd_struct); +/** @brief Parser function for "PublishCalendar" ZCL command from "Calendar" cluster + */ +EmberAfStatus zcl_decode_calendar_cluster_publish_calendar_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_publish_calendar_command_t *cmd_struct); +/** @brief Parser function for "PublishDayProfile" ZCL command from "Calendar" cluster + */ +EmberAfStatus zcl_decode_calendar_cluster_publish_day_profile_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_publish_day_profile_command_t *cmd_struct); +/** @brief Parser function for "PublishWeekProfile" ZCL command from "Calendar" cluster + */ +EmberAfStatus zcl_decode_calendar_cluster_publish_week_profile_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_publish_week_profile_command_t *cmd_struct); +/** @brief Parser function for "PublishSeasons" ZCL command from "Calendar" cluster + */ +EmberAfStatus zcl_decode_calendar_cluster_publish_seasons_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_publish_seasons_command_t *cmd_struct); +/** @brief Parser function for "PublishSpecialDays" ZCL command from "Calendar" cluster + */ +EmberAfStatus zcl_decode_calendar_cluster_publish_special_days_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_publish_special_days_command_t *cmd_struct); +/** @brief Parser function for "CancelCalendar" ZCL command from "Calendar" cluster + */ +EmberAfStatus zcl_decode_calendar_cluster_cancel_calendar_command (EmberAfClusterCommand * cmd, sl_zcl_calendar_cluster_cancel_calendar_command_t *cmd_struct); +/** @brief Parser function for "RequestNewPassword" ZCL command from "Device Management" cluster + */ +EmberAfStatus zcl_decode_device_management_cluster_request_new_password_command (EmberAfClusterCommand * cmd, sl_zcl_device_management_cluster_request_new_password_command_t *cmd_struct); +/** @brief Parser function for "ReportEventConfiguration" ZCL command from "Device Management" cluster + */ +EmberAfStatus zcl_decode_device_management_cluster_report_event_configuration_command (EmberAfClusterCommand * cmd, sl_zcl_device_management_cluster_report_event_configuration_command_t *cmd_struct); +/** @brief Parser function for "PublishChangeOfTenancy" ZCL command from "Device Management" cluster + */ +EmberAfStatus zcl_decode_device_management_cluster_publish_change_of_tenancy_command (EmberAfClusterCommand * cmd, sl_zcl_device_management_cluster_publish_change_of_tenancy_command_t *cmd_struct); +/** @brief Parser function for "PublishChangeOfSupplier" ZCL command from "Device Management" cluster + */ +EmberAfStatus zcl_decode_device_management_cluster_publish_change_of_supplier_command (EmberAfClusterCommand * cmd, sl_zcl_device_management_cluster_publish_change_of_supplier_command_t *cmd_struct); +/** @brief Parser function for "RequestNewPasswordResponse" ZCL command from "Device Management" cluster + */ +EmberAfStatus zcl_decode_device_management_cluster_request_new_password_response_command (EmberAfClusterCommand * cmd, sl_zcl_device_management_cluster_request_new_password_response_command_t *cmd_struct); +/** @brief Parser function for "UpdateSiteId" ZCL command from "Device Management" cluster + */ +EmberAfStatus zcl_decode_device_management_cluster_update_site_id_command (EmberAfClusterCommand * cmd, sl_zcl_device_management_cluster_update_site_id_command_t *cmd_struct); +/** @brief Parser function for "SetEventConfiguration" ZCL command from "Device Management" cluster + */ +EmberAfStatus zcl_decode_device_management_cluster_set_event_configuration_command (EmberAfClusterCommand * cmd, sl_zcl_device_management_cluster_set_event_configuration_command_t *cmd_struct); +/** @brief Parser function for "GetEventConfiguration" ZCL command from "Device Management" cluster + */ +EmberAfStatus zcl_decode_device_management_cluster_get_event_configuration_command (EmberAfClusterCommand * cmd, sl_zcl_device_management_cluster_get_event_configuration_command_t *cmd_struct); +/** @brief Parser function for "UpdateCIN" ZCL command from "Device Management" cluster + */ +EmberAfStatus zcl_decode_device_management_cluster_update_cin_command (EmberAfClusterCommand * cmd, sl_zcl_device_management_cluster_update_cin_command_t *cmd_struct); +/** @brief Parser function for "GetEventLog" ZCL command from "Events" cluster + */ +EmberAfStatus zcl_decode_events_cluster_get_event_log_command (EmberAfClusterCommand * cmd, sl_zcl_events_cluster_get_event_log_command_t *cmd_struct); +/** @brief Parser function for "ClearEventLogRequest" ZCL command from "Events" cluster + */ +EmberAfStatus zcl_decode_events_cluster_clear_event_log_request_command (EmberAfClusterCommand * cmd, sl_zcl_events_cluster_clear_event_log_request_command_t *cmd_struct); +/** @brief Parser function for "PublishEvent" ZCL command from "Events" cluster + */ +EmberAfStatus zcl_decode_events_cluster_publish_event_command (EmberAfClusterCommand * cmd, sl_zcl_events_cluster_publish_event_command_t *cmd_struct); +/** @brief Parser function for "PublishEventLog" ZCL command from "Events" cluster + */ +EmberAfStatus zcl_decode_events_cluster_publish_event_log_command (EmberAfClusterCommand * cmd, sl_zcl_events_cluster_publish_event_log_command_t *cmd_struct); +/** @brief Parser function for "ClearEventLogResponse" ZCL command from "Events" cluster + */ +EmberAfStatus zcl_decode_events_cluster_clear_event_log_response_command (EmberAfClusterCommand * cmd, sl_zcl_events_cluster_clear_event_log_response_command_t *cmd_struct); +/** @brief Parser function for "PairingRequest" ZCL command from "MDU Pairing" cluster + */ +EmberAfStatus zcl_decode_mdu_pairing_cluster_pairing_request_command (EmberAfClusterCommand * cmd, sl_zcl_mdu_pairing_cluster_pairing_request_command_t *cmd_struct); +/** @brief Parser function for "PairingResponse" ZCL command from "MDU Pairing" cluster + */ +EmberAfStatus zcl_decode_mdu_pairing_cluster_pairing_response_command (EmberAfClusterCommand * cmd, sl_zcl_mdu_pairing_cluster_pairing_response_command_t *cmd_struct); +/** @brief Parser function for "SuspendZclMessages" ZCL command from "Sub-GHz" cluster + */ +EmberAfStatus zcl_decode_sub_g_hz_cluster_suspend_zcl_messages_command (EmberAfClusterCommand * cmd, sl_zcl_sub_g_hz_cluster_suspend_zcl_messages_command_t *cmd_struct); +/** @brief Parser function for "InitiateKeyEstablishmentRequest" ZCL command from "Key Establishment" cluster + */ +EmberAfStatus zcl_decode_key_establishment_cluster_initiate_key_establishment_request_command (EmberAfClusterCommand * cmd, sl_zcl_key_establishment_cluster_initiate_key_establishment_request_command_t *cmd_struct); +/** @brief Parser function for "EphemeralDataRequest" ZCL command from "Key Establishment" cluster + */ +EmberAfStatus zcl_decode_key_establishment_cluster_ephemeral_data_request_command (EmberAfClusterCommand * cmd, sl_zcl_key_establishment_cluster_ephemeral_data_request_command_t *cmd_struct); +/** @brief Parser function for "ConfirmKeyDataRequest" ZCL command from "Key Establishment" cluster + */ +EmberAfStatus zcl_decode_key_establishment_cluster_confirm_key_data_request_command (EmberAfClusterCommand * cmd, sl_zcl_key_establishment_cluster_confirm_key_data_request_command_t *cmd_struct); +/** @brief Parser function for "TerminateKeyEstablishmentFromClient" ZCL command from "Key Establishment" cluster + */ +EmberAfStatus zcl_decode_key_establishment_cluster_terminate_key_establishment_from_client_command (EmberAfClusterCommand * cmd, sl_zcl_key_establishment_cluster_terminate_key_establishment_from_client_command_t *cmd_struct); +/** @brief Parser function for "InitiateKeyEstablishmentResponse" ZCL command from "Key Establishment" cluster + */ +EmberAfStatus zcl_decode_key_establishment_cluster_initiate_key_establishment_response_command (EmberAfClusterCommand * cmd, sl_zcl_key_establishment_cluster_initiate_key_establishment_response_command_t *cmd_struct); +/** @brief Parser function for "EphemeralDataResponse" ZCL command from "Key Establishment" cluster + */ +EmberAfStatus zcl_decode_key_establishment_cluster_ephemeral_data_response_command (EmberAfClusterCommand * cmd, sl_zcl_key_establishment_cluster_ephemeral_data_response_command_t *cmd_struct); +/** @brief Parser function for "ConfirmKeyDataResponse" ZCL command from "Key Establishment" cluster + */ +EmberAfStatus zcl_decode_key_establishment_cluster_confirm_key_data_response_command (EmberAfClusterCommand * cmd, sl_zcl_key_establishment_cluster_confirm_key_data_response_command_t *cmd_struct); +/** @brief Parser function for "TerminateKeyEstablishmentFromServer" ZCL command from "Key Establishment" cluster + */ +EmberAfStatus zcl_decode_key_establishment_cluster_terminate_key_establishment_from_server_command (EmberAfClusterCommand * cmd, sl_zcl_key_establishment_cluster_terminate_key_establishment_from_server_command_t *cmd_struct); +/** @brief Parser function for "RequestInformation" ZCL command from "Information" cluster + */ +EmberAfStatus zcl_decode_information_cluster_request_information_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_request_information_command_t *cmd_struct); +/** @brief Parser function for "PushInformationResponse" ZCL command from "Information" cluster + */ +EmberAfStatus zcl_decode_information_cluster_push_information_response_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_push_information_response_command_t *cmd_struct); +/** @brief Parser function for "SendPreference" ZCL command from "Information" cluster + */ +EmberAfStatus zcl_decode_information_cluster_send_preference_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_send_preference_command_t *cmd_struct); +/** @brief Parser function for "RequestPreferenceResponse" ZCL command from "Information" cluster + */ +EmberAfStatus zcl_decode_information_cluster_request_preference_response_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_request_preference_response_command_t *cmd_struct); +/** @brief Parser function for "Update" ZCL command from "Information" cluster + */ +EmberAfStatus zcl_decode_information_cluster_update_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_update_command_t *cmd_struct); +/** @brief Parser function for "Delete" ZCL command from "Information" cluster + */ +EmberAfStatus zcl_decode_information_cluster_delete_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_delete_command_t *cmd_struct); +/** @brief Parser function for "ConfigureNodeDescription" ZCL command from "Information" cluster + */ +EmberAfStatus zcl_decode_information_cluster_configure_node_description_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_configure_node_description_command_t *cmd_struct); +/** @brief Parser function for "ConfigureDeliveryEnable" ZCL command from "Information" cluster + */ +EmberAfStatus zcl_decode_information_cluster_configure_delivery_enable_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_configure_delivery_enable_command_t *cmd_struct); +/** @brief Parser function for "ConfigurePushInformationTimer" ZCL command from "Information" cluster + */ +EmberAfStatus zcl_decode_information_cluster_configure_push_information_timer_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_configure_push_information_timer_command_t *cmd_struct); +/** @brief Parser function for "ConfigureSetRootId" ZCL command from "Information" cluster + */ +EmberAfStatus zcl_decode_information_cluster_configure_set_root_id_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_configure_set_root_id_command_t *cmd_struct); +/** @brief Parser function for "RequestInformationResponse" ZCL command from "Information" cluster + */ +EmberAfStatus zcl_decode_information_cluster_request_information_response_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_request_information_response_command_t *cmd_struct); +/** @brief Parser function for "PushInformation" ZCL command from "Information" cluster + */ +EmberAfStatus zcl_decode_information_cluster_push_information_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_push_information_command_t *cmd_struct); +/** @brief Parser function for "SendPreferenceResponse" ZCL command from "Information" cluster + */ +EmberAfStatus zcl_decode_information_cluster_send_preference_response_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_send_preference_response_command_t *cmd_struct); +/** @brief Parser function for "RequestPreferenceConfirmation" ZCL command from "Information" cluster + */ +EmberAfStatus zcl_decode_information_cluster_request_preference_confirmation_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_request_preference_confirmation_command_t *cmd_struct); +/** @brief Parser function for "UpdateResponse" ZCL command from "Information" cluster + */ +EmberAfStatus zcl_decode_information_cluster_update_response_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_update_response_command_t *cmd_struct); +/** @brief Parser function for "DeleteResponse" ZCL command from "Information" cluster + */ +EmberAfStatus zcl_decode_information_cluster_delete_response_command (EmberAfClusterCommand * cmd, sl_zcl_information_cluster_delete_response_command_t *cmd_struct); +/** @brief Parser function for "ReadFileRequest" ZCL command from "Data Sharing" cluster + */ +EmberAfStatus zcl_decode_data_sharing_cluster_read_file_request_command (EmberAfClusterCommand * cmd, sl_zcl_data_sharing_cluster_read_file_request_command_t *cmd_struct); +/** @brief Parser function for "ReadRecordRequest" ZCL command from "Data Sharing" cluster + */ +EmberAfStatus zcl_decode_data_sharing_cluster_read_record_request_command (EmberAfClusterCommand * cmd, sl_zcl_data_sharing_cluster_read_record_request_command_t *cmd_struct); +/** @brief Parser function for "WriteFileResponse" ZCL command from "Data Sharing" cluster + */ +EmberAfStatus zcl_decode_data_sharing_cluster_write_file_response_command (EmberAfClusterCommand * cmd, sl_zcl_data_sharing_cluster_write_file_response_command_t *cmd_struct); +/** @brief Parser function for "WriteFileRequest" ZCL command from "Data Sharing" cluster + */ +EmberAfStatus zcl_decode_data_sharing_cluster_write_file_request_command (EmberAfClusterCommand * cmd, sl_zcl_data_sharing_cluster_write_file_request_command_t *cmd_struct); +/** @brief Parser function for "ModifyFileRequest" ZCL command from "Data Sharing" cluster + */ +EmberAfStatus zcl_decode_data_sharing_cluster_modify_file_request_command (EmberAfClusterCommand * cmd, sl_zcl_data_sharing_cluster_modify_file_request_command_t *cmd_struct); +/** @brief Parser function for "ModifyRecordRequest" ZCL command from "Data Sharing" cluster + */ +EmberAfStatus zcl_decode_data_sharing_cluster_modify_record_request_command (EmberAfClusterCommand * cmd, sl_zcl_data_sharing_cluster_modify_record_request_command_t *cmd_struct); +/** @brief Parser function for "FileTransmission" ZCL command from "Data Sharing" cluster + */ +EmberAfStatus zcl_decode_data_sharing_cluster_file_transmission_command (EmberAfClusterCommand * cmd, sl_zcl_data_sharing_cluster_file_transmission_command_t *cmd_struct); +/** @brief Parser function for "RecordTransmission" ZCL command from "Data Sharing" cluster + */ +EmberAfStatus zcl_decode_data_sharing_cluster_record_transmission_command (EmberAfClusterCommand * cmd, sl_zcl_data_sharing_cluster_record_transmission_command_t *cmd_struct); +/** @brief Parser function for "SearchGame" ZCL command from "Gaming" cluster + */ +EmberAfStatus zcl_decode_gaming_cluster_search_game_command (EmberAfClusterCommand * cmd, sl_zcl_gaming_cluster_search_game_command_t *cmd_struct); +/** @brief Parser function for "JoinGame" ZCL command from "Gaming" cluster + */ +EmberAfStatus zcl_decode_gaming_cluster_join_game_command (EmberAfClusterCommand * cmd, sl_zcl_gaming_cluster_join_game_command_t *cmd_struct); +/** @brief Parser function for "ActionControl" ZCL command from "Gaming" cluster + */ +EmberAfStatus zcl_decode_gaming_cluster_action_control_command (EmberAfClusterCommand * cmd, sl_zcl_gaming_cluster_action_control_command_t *cmd_struct); +/** @brief Parser function for "GameAnnouncement" ZCL command from "Gaming" cluster + */ +EmberAfStatus zcl_decode_gaming_cluster_game_announcement_command (EmberAfClusterCommand * cmd, sl_zcl_gaming_cluster_game_announcement_command_t *cmd_struct); +/** @brief Parser function for "GeneralResponse" ZCL command from "Gaming" cluster + */ +EmberAfStatus zcl_decode_gaming_cluster_general_response_command (EmberAfClusterCommand * cmd, sl_zcl_gaming_cluster_general_response_command_t *cmd_struct); +/** @brief Parser function for "PathCreation" ZCL command from "Data Rate Control" cluster + */ +EmberAfStatus zcl_decode_data_rate_control_cluster_path_creation_command (EmberAfClusterCommand * cmd, sl_zcl_data_rate_control_cluster_path_creation_command_t *cmd_struct); +/** @brief Parser function for "DataRateNotification" ZCL command from "Data Rate Control" cluster + */ +EmberAfStatus zcl_decode_data_rate_control_cluster_data_rate_notification_command (EmberAfClusterCommand * cmd, sl_zcl_data_rate_control_cluster_data_rate_notification_command_t *cmd_struct); +/** @brief Parser function for "PathDeletion" ZCL command from "Data Rate Control" cluster + */ +EmberAfStatus zcl_decode_data_rate_control_cluster_path_deletion_command (EmberAfClusterCommand * cmd, sl_zcl_data_rate_control_cluster_path_deletion_command_t *cmd_struct); +/** @brief Parser function for "DataRateControl" ZCL command from "Data Rate Control" cluster + */ +EmberAfStatus zcl_decode_data_rate_control_cluster_data_rate_control_command (EmberAfClusterCommand * cmd, sl_zcl_data_rate_control_cluster_data_rate_control_command_t *cmd_struct); +/** @brief Parser function for "EstablishmentRequest" ZCL command from "Voice over ZigBee" cluster + */ +EmberAfStatus zcl_decode_voice_over_zig_bee_cluster_establishment_request_command (EmberAfClusterCommand * cmd, sl_zcl_voice_over_zig_bee_cluster_establishment_request_command_t *cmd_struct); +/** @brief Parser function for "VoiceTransmission" ZCL command from "Voice over ZigBee" cluster + */ +EmberAfStatus zcl_decode_voice_over_zig_bee_cluster_voice_transmission_command (EmberAfClusterCommand * cmd, sl_zcl_voice_over_zig_bee_cluster_voice_transmission_command_t *cmd_struct); +/** @brief Parser function for "ControlResponse" ZCL command from "Voice over ZigBee" cluster + */ +EmberAfStatus zcl_decode_voice_over_zig_bee_cluster_control_response_command (EmberAfClusterCommand * cmd, sl_zcl_voice_over_zig_bee_cluster_control_response_command_t *cmd_struct); +/** @brief Parser function for "EstablishmentResponse" ZCL command from "Voice over ZigBee" cluster + */ +EmberAfStatus zcl_decode_voice_over_zig_bee_cluster_establishment_response_command (EmberAfClusterCommand * cmd, sl_zcl_voice_over_zig_bee_cluster_establishment_response_command_t *cmd_struct); +/** @brief Parser function for "VoiceTransmissionResponse" ZCL command from "Voice over ZigBee" cluster + */ +EmberAfStatus zcl_decode_voice_over_zig_bee_cluster_voice_transmission_response_command (EmberAfClusterCommand * cmd, sl_zcl_voice_over_zig_bee_cluster_voice_transmission_response_command_t *cmd_struct); +/** @brief Parser function for "Control" ZCL command from "Voice over ZigBee" cluster + */ +EmberAfStatus zcl_decode_voice_over_zig_bee_cluster_control_command (EmberAfClusterCommand * cmd, sl_zcl_voice_over_zig_bee_cluster_control_command_t *cmd_struct); +/** @brief Parser function for "JoinChatRequest" ZCL command from "Chatting" cluster + */ +EmberAfStatus zcl_decode_chatting_cluster_join_chat_request_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_join_chat_request_command_t *cmd_struct); +/** @brief Parser function for "LeaveChatRequest" ZCL command from "Chatting" cluster + */ +EmberAfStatus zcl_decode_chatting_cluster_leave_chat_request_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_leave_chat_request_command_t *cmd_struct); +/** @brief Parser function for "SwitchChairmanResponse" ZCL command from "Chatting" cluster + */ +EmberAfStatus zcl_decode_chatting_cluster_switch_chairman_response_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_switch_chairman_response_command_t *cmd_struct); +/** @brief Parser function for "StartChatRequest" ZCL command from "Chatting" cluster + */ +EmberAfStatus zcl_decode_chatting_cluster_start_chat_request_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_start_chat_request_command_t *cmd_struct); +/** @brief Parser function for "ChatMessage" ZCL command from "Chatting" cluster + */ +EmberAfStatus zcl_decode_chatting_cluster_chat_message_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_chat_message_command_t *cmd_struct); +/** @brief Parser function for "GetNodeInformationRequest" ZCL command from "Chatting" cluster + */ +EmberAfStatus zcl_decode_chatting_cluster_get_node_information_request_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_get_node_information_request_command_t *cmd_struct); +/** @brief Parser function for "StartChatResponse" ZCL command from "Chatting" cluster + */ +EmberAfStatus zcl_decode_chatting_cluster_start_chat_response_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_start_chat_response_command_t *cmd_struct); +/** @brief Parser function for "JoinChatResponse" ZCL command from "Chatting" cluster + */ +EmberAfStatus zcl_decode_chatting_cluster_join_chat_response_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_join_chat_response_command_t *cmd_struct); +/** @brief Parser function for "UserLeft" ZCL command from "Chatting" cluster + */ +EmberAfStatus zcl_decode_chatting_cluster_user_left_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_user_left_command_t *cmd_struct); +/** @brief Parser function for "UserJoined" ZCL command from "Chatting" cluster + */ +EmberAfStatus zcl_decode_chatting_cluster_user_joined_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_user_joined_command_t *cmd_struct); +/** @brief Parser function for "SearchChatResponse" ZCL command from "Chatting" cluster + */ +EmberAfStatus zcl_decode_chatting_cluster_search_chat_response_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_search_chat_response_command_t *cmd_struct); +/** @brief Parser function for "SwitchChairmanRequest" ZCL command from "Chatting" cluster + */ +EmberAfStatus zcl_decode_chatting_cluster_switch_chairman_request_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_switch_chairman_request_command_t *cmd_struct); +/** @brief Parser function for "SwitchChairmanConfirm" ZCL command from "Chatting" cluster + */ +EmberAfStatus zcl_decode_chatting_cluster_switch_chairman_confirm_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_switch_chairman_confirm_command_t *cmd_struct); +/** @brief Parser function for "SwitchChairmanNotification" ZCL command from "Chatting" cluster + */ +EmberAfStatus zcl_decode_chatting_cluster_switch_chairman_notification_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_switch_chairman_notification_command_t *cmd_struct); +/** @brief Parser function for "GetNodeInformationResponse" ZCL command from "Chatting" cluster + */ +EmberAfStatus zcl_decode_chatting_cluster_get_node_information_response_command (EmberAfClusterCommand * cmd, sl_zcl_chatting_cluster_get_node_information_response_command_t *cmd_struct); +/** @brief Parser function for "BuyRequest" ZCL command from "Payment" cluster + */ +EmberAfStatus zcl_decode_payment_cluster_buy_request_command (EmberAfClusterCommand * cmd, sl_zcl_payment_cluster_buy_request_command_t *cmd_struct); +/** @brief Parser function for "AcceptPayment" ZCL command from "Payment" cluster + */ +EmberAfStatus zcl_decode_payment_cluster_accept_payment_command (EmberAfClusterCommand * cmd, sl_zcl_payment_cluster_accept_payment_command_t *cmd_struct); +/** @brief Parser function for "PaymentConfirm" ZCL command from "Payment" cluster + */ +EmberAfStatus zcl_decode_payment_cluster_payment_confirm_command (EmberAfClusterCommand * cmd, sl_zcl_payment_cluster_payment_confirm_command_t *cmd_struct); +/** @brief Parser function for "BuyConfirm" ZCL command from "Payment" cluster + */ +EmberAfStatus zcl_decode_payment_cluster_buy_confirm_command (EmberAfClusterCommand * cmd, sl_zcl_payment_cluster_buy_confirm_command_t *cmd_struct); +/** @brief Parser function for "ReceiptDelivery" ZCL command from "Payment" cluster + */ +EmberAfStatus zcl_decode_payment_cluster_receipt_delivery_command (EmberAfClusterCommand * cmd, sl_zcl_payment_cluster_receipt_delivery_command_t *cmd_struct); +/** @brief Parser function for "TransactionEnd" ZCL command from "Payment" cluster + */ +EmberAfStatus zcl_decode_payment_cluster_transaction_end_command (EmberAfClusterCommand * cmd, sl_zcl_payment_cluster_transaction_end_command_t *cmd_struct); +/** @brief Parser function for "Subscribe" ZCL command from "Billing" cluster + */ +EmberAfStatus zcl_decode_billing_cluster_subscribe_command (EmberAfClusterCommand * cmd, sl_zcl_billing_cluster_subscribe_command_t *cmd_struct); +/** @brief Parser function for "Unsubscribe" ZCL command from "Billing" cluster + */ +EmberAfStatus zcl_decode_billing_cluster_unsubscribe_command (EmberAfClusterCommand * cmd, sl_zcl_billing_cluster_unsubscribe_command_t *cmd_struct); +/** @brief Parser function for "StartBillingSession" ZCL command from "Billing" cluster + */ +EmberAfStatus zcl_decode_billing_cluster_start_billing_session_command (EmberAfClusterCommand * cmd, sl_zcl_billing_cluster_start_billing_session_command_t *cmd_struct); +/** @brief Parser function for "StopBillingSession" ZCL command from "Billing" cluster + */ +EmberAfStatus zcl_decode_billing_cluster_stop_billing_session_command (EmberAfClusterCommand * cmd, sl_zcl_billing_cluster_stop_billing_session_command_t *cmd_struct); +/** @brief Parser function for "BillStatusNotification" ZCL command from "Billing" cluster + */ +EmberAfStatus zcl_decode_billing_cluster_bill_status_notification_command (EmberAfClusterCommand * cmd, sl_zcl_billing_cluster_bill_status_notification_command_t *cmd_struct); +/** @brief Parser function for "SessionKeepAlive" ZCL command from "Billing" cluster + */ +EmberAfStatus zcl_decode_billing_cluster_session_keep_alive_command (EmberAfClusterCommand * cmd, sl_zcl_billing_cluster_session_keep_alive_command_t *cmd_struct); +/** @brief Parser function for "CheckBillStatus" ZCL command from "Billing" cluster + */ +EmberAfStatus zcl_decode_billing_cluster_check_bill_status_command (EmberAfClusterCommand * cmd, sl_zcl_billing_cluster_check_bill_status_command_t *cmd_struct); +/** @brief Parser function for "SendBillRecord" ZCL command from "Billing" cluster + */ +EmberAfStatus zcl_decode_billing_cluster_send_bill_record_command (EmberAfClusterCommand * cmd, sl_zcl_billing_cluster_send_bill_record_command_t *cmd_struct); +/** @brief Parser function for "GetAlertsResponse" ZCL command from "Appliance Events and Alert" cluster + */ +EmberAfStatus zcl_decode_appliance_events_and_alert_cluster_get_alerts_response_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_events_and_alert_cluster_get_alerts_response_command_t *cmd_struct); +/** @brief Parser function for "AlertsNotification" ZCL command from "Appliance Events and Alert" cluster + */ +EmberAfStatus zcl_decode_appliance_events_and_alert_cluster_alerts_notification_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_events_and_alert_cluster_alerts_notification_command_t *cmd_struct); +/** @brief Parser function for "EventsNotification" ZCL command from "Appliance Events and Alert" cluster + */ +EmberAfStatus zcl_decode_appliance_events_and_alert_cluster_events_notification_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_events_and_alert_cluster_events_notification_command_t *cmd_struct); +/** @brief Parser function for "LogRequest" ZCL command from "Appliance Statistics" cluster + */ +EmberAfStatus zcl_decode_appliance_statistics_cluster_log_request_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_statistics_cluster_log_request_command_t *cmd_struct); +/** @brief Parser function for "LogNotification" ZCL command from "Appliance Statistics" cluster + */ +EmberAfStatus zcl_decode_appliance_statistics_cluster_log_notification_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_statistics_cluster_log_notification_command_t *cmd_struct); +/** @brief Parser function for "LogResponse" ZCL command from "Appliance Statistics" cluster + */ +EmberAfStatus zcl_decode_appliance_statistics_cluster_log_response_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_statistics_cluster_log_response_command_t *cmd_struct); +/** @brief Parser function for "LogQueueResponse" ZCL command from "Appliance Statistics" cluster + */ +EmberAfStatus zcl_decode_appliance_statistics_cluster_log_queue_response_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_statistics_cluster_log_queue_response_command_t *cmd_struct); +/** @brief Parser function for "StatisticsAvailable" ZCL command from "Appliance Statistics" cluster + */ +EmberAfStatus zcl_decode_appliance_statistics_cluster_statistics_available_command (EmberAfClusterCommand * cmd, sl_zcl_appliance_statistics_cluster_statistics_available_command_t *cmd_struct); +/** @brief Parser function for "GetMeasurementProfileCommand" ZCL command from "Electrical Measurement" cluster + */ +EmberAfStatus zcl_decode_electrical_measurement_cluster_get_measurement_profile_command_command (EmberAfClusterCommand * cmd, sl_zcl_electrical_measurement_cluster_get_measurement_profile_command_command_t *cmd_struct); +/** @brief Parser function for "GetProfileInfoResponseCommand" ZCL command from "Electrical Measurement" cluster + */ +EmberAfStatus zcl_decode_electrical_measurement_cluster_get_profile_info_response_command_command (EmberAfClusterCommand * cmd, sl_zcl_electrical_measurement_cluster_get_profile_info_response_command_command_t *cmd_struct); +/** @brief Parser function for "GetMeasurementProfileResponseCommand" ZCL command from "Electrical Measurement" cluster + */ +EmberAfStatus zcl_decode_electrical_measurement_cluster_get_measurement_profile_response_command_command (EmberAfClusterCommand * cmd, sl_zcl_electrical_measurement_cluster_get_measurement_profile_response_command_command_t *cmd_struct); +/** @brief Parser function for "ScanRequest" ZCL command from "ZLL Commissioning" cluster + */ +EmberAfStatus zcl_decode_zll_commissioning_cluster_scan_request_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_scan_request_command_t *cmd_struct); +/** @brief Parser function for "DeviceInformationRequest" ZCL command from "ZLL Commissioning" cluster + */ +EmberAfStatus zcl_decode_zll_commissioning_cluster_device_information_request_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_device_information_request_command_t *cmd_struct); +/** @brief Parser function for "IdentifyRequest" ZCL command from "ZLL Commissioning" cluster + */ +EmberAfStatus zcl_decode_zll_commissioning_cluster_identify_request_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_identify_request_command_t *cmd_struct); +/** @brief Parser function for "ResetToFactoryNewRequest" ZCL command from "ZLL Commissioning" cluster + */ +EmberAfStatus zcl_decode_zll_commissioning_cluster_reset_to_factory_new_request_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_reset_to_factory_new_request_command_t *cmd_struct); +/** @brief Parser function for "NetworkStartRequest" ZCL command from "ZLL Commissioning" cluster + */ +EmberAfStatus zcl_decode_zll_commissioning_cluster_network_start_request_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_network_start_request_command_t *cmd_struct); +/** @brief Parser function for "NetworkJoinRouterRequest" ZCL command from "ZLL Commissioning" cluster + */ +EmberAfStatus zcl_decode_zll_commissioning_cluster_network_join_router_request_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_network_join_router_request_command_t *cmd_struct); +/** @brief Parser function for "NetworkJoinEndDeviceRequest" ZCL command from "ZLL Commissioning" cluster + */ +EmberAfStatus zcl_decode_zll_commissioning_cluster_network_join_end_device_request_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_network_join_end_device_request_command_t *cmd_struct); +/** @brief Parser function for "NetworkUpdateRequest" ZCL command from "ZLL Commissioning" cluster + */ +EmberAfStatus zcl_decode_zll_commissioning_cluster_network_update_request_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_network_update_request_command_t *cmd_struct); +/** @brief Parser function for "GetGroupIdentifiersRequest" ZCL command from "ZLL Commissioning" cluster + */ +EmberAfStatus zcl_decode_zll_commissioning_cluster_get_group_identifiers_request_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_get_group_identifiers_request_command_t *cmd_struct); +/** @brief Parser function for "GetEndpointListRequest" ZCL command from "ZLL Commissioning" cluster + */ +EmberAfStatus zcl_decode_zll_commissioning_cluster_get_endpoint_list_request_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_get_endpoint_list_request_command_t *cmd_struct); +/** @brief Parser function for "ScanResponse" ZCL command from "ZLL Commissioning" cluster + */ +EmberAfStatus zcl_decode_zll_commissioning_cluster_scan_response_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_scan_response_command_t *cmd_struct); +/** @brief Parser function for "DeviceInformationResponse" ZCL command from "ZLL Commissioning" cluster + */ +EmberAfStatus zcl_decode_zll_commissioning_cluster_device_information_response_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_device_information_response_command_t *cmd_struct); +/** @brief Parser function for "NetworkStartResponse" ZCL command from "ZLL Commissioning" cluster + */ +EmberAfStatus zcl_decode_zll_commissioning_cluster_network_start_response_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_network_start_response_command_t *cmd_struct); +/** @brief Parser function for "NetworkJoinRouterResponse" ZCL command from "ZLL Commissioning" cluster + */ +EmberAfStatus zcl_decode_zll_commissioning_cluster_network_join_router_response_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_network_join_router_response_command_t *cmd_struct); +/** @brief Parser function for "NetworkJoinEndDeviceResponse" ZCL command from "ZLL Commissioning" cluster + */ +EmberAfStatus zcl_decode_zll_commissioning_cluster_network_join_end_device_response_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_network_join_end_device_response_command_t *cmd_struct); +/** @brief Parser function for "EndpointInformation" ZCL command from "ZLL Commissioning" cluster + */ +EmberAfStatus zcl_decode_zll_commissioning_cluster_endpoint_information_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_endpoint_information_command_t *cmd_struct); +/** @brief Parser function for "GetGroupIdentifiersResponse" ZCL command from "ZLL Commissioning" cluster + */ +EmberAfStatus zcl_decode_zll_commissioning_cluster_get_group_identifiers_response_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_get_group_identifiers_response_command_t *cmd_struct); +/** @brief Parser function for "GetEndpointListResponse" ZCL command from "ZLL Commissioning" cluster + */ +EmberAfStatus zcl_decode_zll_commissioning_cluster_get_endpoint_list_response_command (EmberAfClusterCommand * cmd, sl_zcl_zll_commissioning_cluster_get_endpoint_list_response_command_t *cmd_struct); +/** @brief Parser function for "CommandOne" ZCL command from "Sample Mfg Specific Cluster" cluster + */ +EmberAfStatus zcl_decode_sample_mfg_specific_cluster_cluster_command_one_command (EmberAfClusterCommand * cmd, sl_zcl_sample_mfg_specific_cluster_cluster_command_one_command_t *cmd_struct); +/** @brief Parser function for "CommandTwo" ZCL command from "Sample Mfg Specific Cluster 2" cluster + */ +EmberAfStatus zcl_decode_sample_mfg_specific_cluster_2_cluster_command_two_command (EmberAfClusterCommand * cmd, sl_zcl_sample_mfg_specific_cluster_2_cluster_command_two_command_t *cmd_struct); +/** @brief Parser function for "SetToken" ZCL command from "Configuration Cluster" cluster + */ +EmberAfStatus zcl_decode_configuration_cluster_cluster_set_token_command (EmberAfClusterCommand * cmd, sl_zcl_configuration_cluster_cluster_set_token_command_t *cmd_struct); +/** @brief Parser function for "ReadTokens" ZCL command from "Configuration Cluster" cluster + */ +EmberAfStatus zcl_decode_configuration_cluster_cluster_read_tokens_command (EmberAfClusterCommand * cmd, sl_zcl_configuration_cluster_cluster_read_tokens_command_t *cmd_struct); +/** @brief Parser function for "UnlockTokens" ZCL command from "Configuration Cluster" cluster + */ +EmberAfStatus zcl_decode_configuration_cluster_cluster_unlock_tokens_command (EmberAfClusterCommand * cmd, sl_zcl_configuration_cluster_cluster_unlock_tokens_command_t *cmd_struct); +/** @brief Parser function for "ReturnToken" ZCL command from "Configuration Cluster" cluster + */ +EmberAfStatus zcl_decode_configuration_cluster_cluster_return_token_command (EmberAfClusterCommand * cmd, sl_zcl_configuration_cluster_cluster_return_token_command_t *cmd_struct); +/** @brief Parser function for "stream" ZCL command from "MFGLIB Cluster" cluster + */ +EmberAfStatus zcl_decode_mfglib_cluster_cluster_stream_command (EmberAfClusterCommand * cmd, sl_zcl_mfglib_cluster_cluster_stream_command_t *cmd_struct); +/** @brief Parser function for "tone" ZCL command from "MFGLIB Cluster" cluster + */ +EmberAfStatus zcl_decode_mfglib_cluster_cluster_tone_command (EmberAfClusterCommand * cmd, sl_zcl_mfglib_cluster_cluster_tone_command_t *cmd_struct); +/** @brief Parser function for "rxMode" ZCL command from "MFGLIB Cluster" cluster + */ +EmberAfStatus zcl_decode_mfglib_cluster_cluster_rx_mode_command (EmberAfClusterCommand * cmd, sl_zcl_mfglib_cluster_cluster_rx_mode_command_t *cmd_struct); +/** @brief Parser function for "EnableApsLinkKeyAuthorization" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_enable_aps_link_key_authorization_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_enable_aps_link_key_authorization_command_t *cmd_struct); +/** @brief Parser function for "DisableApsLinkKeyAuthorization" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_disable_aps_link_key_authorization_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_disable_aps_link_key_authorization_command_t *cmd_struct); +/** @brief Parser function for "ApsLinkKeyAuthorizationQuery" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_command_t *cmd_struct); +/** @brief Parser function for "EnableWwahAppEventRetryAlgorithm" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_enable_wwah_app_event_retry_algorithm_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_enable_wwah_app_event_retry_algorithm_command_t *cmd_struct); +/** @brief Parser function for "EnableWwahRejoinAlgorithm" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_enable_wwah_rejoin_algorithm_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_enable_wwah_rejoin_algorithm_command_t *cmd_struct); +/** @brief Parser function for "SetIasZoneEnrollmentMethod" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_set_ias_zone_enrollment_method_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_set_ias_zone_enrollment_method_command_t *cmd_struct); +/** @brief Parser function for "EnablePeriodicRouterCheckIns" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_enable_periodic_router_check_ins_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_enable_periodic_router_check_ins_command_t *cmd_struct); +/** @brief Parser function for "SetMacPollFailureWaitTime" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_set_mac_poll_failure_wait_time_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_set_mac_poll_failure_wait_time_command_t *cmd_struct); +/** @brief Parser function for "SetPendingNetworkUpdate" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_set_pending_network_update_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_set_pending_network_update_command_t *cmd_struct); +/** @brief Parser function for "RequireApsAcksOnUnicasts" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_require_aps_acks_on_unicasts_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_require_aps_acks_on_unicasts_command_t *cmd_struct); +/** @brief Parser function for "DebugReportQuery" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_debug_report_query_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_debug_report_query_command_t *cmd_struct); +/** @brief Parser function for "SurveyBeacons" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_survey_beacons_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_survey_beacons_command_t *cmd_struct); +/** @brief Parser function for "UseTrustCenterForClusterServer" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_use_trust_center_for_cluster_server_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_use_trust_center_for_cluster_server_command_t *cmd_struct); +/** @brief Parser function for "ApsLinkKeyAuthorizationQueryResponse" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_response_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_response_command_t *cmd_struct); +/** @brief Parser function for "PoweringOffNotification" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_powering_off_notification_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_powering_off_notification_command_t *cmd_struct); +/** @brief Parser function for "PoweringOnNotification" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_powering_on_notification_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_powering_on_notification_command_t *cmd_struct); +/** @brief Parser function for "ShortAddressChange" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_short_address_change_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_short_address_change_command_t *cmd_struct); +/** @brief Parser function for "ApsAckEnablementQueryResponse" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_aps_ack_enablement_query_response_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_aps_ack_enablement_query_response_command_t *cmd_struct); +/** @brief Parser function for "PowerDescriptorChange" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_power_descriptor_change_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_power_descriptor_change_command_t *cmd_struct); +/** @brief Parser function for "NewDebugReportNotification" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_new_debug_report_notification_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_new_debug_report_notification_command_t *cmd_struct); +/** @brief Parser function for "DebugReportQueryResponse" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_debug_report_query_response_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_debug_report_query_response_command_t *cmd_struct); +/** @brief Parser function for "TrustCenterForClusterServerQueryResponse" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_trust_center_for_cluster_server_query_response_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_trust_center_for_cluster_server_query_response_command_t *cmd_struct); +/** @brief Parser function for "SurveyBeaconsResponse" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_survey_beacons_response_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_survey_beacons_response_command_t *cmd_struct); +/** @brief Parser function for "UseTrustCenterForClusterServerResponse" ZCL command from "SL Works With All Hubs" cluster + */ +EmberAfStatus zcl_decode_sl_works_with_all_hubs_cluster_use_trust_center_for_cluster_server_response_command (EmberAfClusterCommand * cmd, sl_zcl_sl_works_with_all_hubs_cluster_use_trust_center_for_cluster_server_response_command_t *cmd_struct); + +#endif //End of SL_CATALOG_ZIGBEE_ZCL_FRAMEWORK_CORE_PRESENT + +/** @} END addtogroup */ +#endif // __ZAP_CLUSTER_COMMAND_PARSER_H__ \ No newline at end of file diff --git a/silabs_examples/credentials/host/zap/zap-command-structs.h b/silabs_examples/credentials/host/zap/zap-command-structs.h new file mode 100644 index 00000000000000..98b2071dcddb06 --- /dev/null +++ b/silabs_examples/credentials/host/zap/zap-command-structs.h @@ -0,0 +1,8461 @@ +/***************************************************************************//** + * @file zap-command-structs.h + * @brief This file contains a set of generated command structs for all incoming + commands to handle incomming zcl messages. + * This file is generated. Do not update file manually. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +#ifndef __ZAP_COMMAND_STRUCTS_H__ +#define __ZAP_COMMAND_STRUCTS_H__ 1 + +/** + * @defgroup zcl_command_structs ZCL Command Structures + * @ingroup command + * @brief Application Framework command structs reference + * + * This document describes the generated command structs that + * are used to hold data when over-the-air command payload is parsed. + */ + +/** + * + * @addtogroup zcl_command_structs + * @{ + */ + +#include "sl_component_catalog.h" +#ifdef SL_CATALOG_ZIGBEE_ZCL_FRAMEWORK_CORE_PRESENT + +#include "sl_signature_decode.h" + +#define ZAP_SIGNATURE_TYPE_INT8U (SL_SIGNATURE_FIELD_1_BYTE) +#define ZAP_SIGNATURE_TYPE_INT8S (SL_SIGNATURE_FIELD_1_BYTE) +#define ZAP_SIGNATURE_TYPE_ENUM8 (SL_SIGNATURE_FIELD_1_BYTE) +#define ZAP_SIGNATURE_TYPE_BITMAP8 (SL_SIGNATURE_FIELD_1_BYTE) +#define ZAP_SIGNATURE_TYPE_BOOLEAN (SL_SIGNATURE_FIELD_1_BYTE) + +#define ZAP_SIGNATURE_TYPE_INT16U (SL_SIGNATURE_FIELD_2_BYTES) +#define ZAP_SIGNATURE_TYPE_DATA16 (SL_SIGNATURE_FIELD_2_BYTES) +#define ZAP_SIGNATURE_TYPE_INT16S (SL_SIGNATURE_FIELD_2_BYTES) +#define ZAP_SIGNATURE_TYPE_ENUM16 (SL_SIGNATURE_FIELD_2_BYTES) +#define ZAP_SIGNATURE_TYPE_BITMAP16 (SL_SIGNATURE_FIELD_2_BYTES) +#define ZAP_SIGNATURE_TYPE_CLUSTER_ID (SL_SIGNATURE_FIELD_2_BYTES) + +#define ZAP_SIGNATURE_TYPE_INT24U (SL_SIGNATURE_FIELD_3_BYTES) +#define ZAP_SIGNATURE_TYPE_ENUM24 (SL_SIGNATURE_FIELD_3_BYTES) +#define ZAP_SIGNATURE_TYPE_BITMAP24 (SL_SIGNATURE_FIELD_3_BYTES) + +#define ZAP_SIGNATURE_TYPE_INT32U (SL_SIGNATURE_FIELD_4_BYTES) +#define ZAP_SIGNATURE_TYPE_INT32S (SL_SIGNATURE_FIELD_4_BYTES) +#define ZAP_SIGNATURE_TYPE_ENUM32 (SL_SIGNATURE_FIELD_4_BYTES) +#define ZAP_SIGNATURE_TYPE_BITMAP32 (SL_SIGNATURE_FIELD_4_BYTES) +#define ZAP_SIGNATURE_TYPE_UTC_TIME (SL_SIGNATURE_FIELD_4_BYTES) +#define ZAP_SIGNATURE_TYPE_TIME_OF_DAY (SL_SIGNATURE_FIELD_4_BYTES) + +#define ZAP_SIGNATURE_TYPE_OCTET_STRING (SL_SIGNATURE_FIELD_STRING) +#define ZAP_SIGNATURE_TYPE_CHAR_STRING (SL_SIGNATURE_FIELD_STRING) +#define ZAP_SIGNATURE_TYPE_LONG_STRING (SL_SIGNATURE_FIELD_LONG_STRING) +#define ZAP_SIGNATURE_TYPE_ARRAY (SL_SIGNATURE_FIELD_POINTER) +#define ZAP_SIGNATURE_TYPE_POINTER (SL_SIGNATURE_FIELD_POINTER) + +// TODO: These need to be validated. Not sure we copy them out. +#define ZAP_SIGNATURE_TYPE_IEEE_ADDRESS (SL_SIGNATURE_FIELD_MASK_BLOB | 0x08) +#define ZAP_SIGNATURE_TYPE_SECURITY_KEY (SL_SIGNATURE_FIELD_MASK_BLOB | 0x10) + + +/** @brief Structure for ZCL command "GetZoneIdMapResponse" from "IAS ACE" + */ +typedef struct __zcl_ias_ace_cluster_get_zone_id_map_response_command { + uint16_t section0; + uint16_t section1; + uint16_t section2; + uint16_t section3; + uint16_t section4; + uint16_t section5; + uint16_t section6; + uint16_t section7; + uint16_t section8; + uint16_t section9; + uint16_t section10; + uint16_t section11; + uint16_t section12; + uint16_t section13; + uint16_t section14; + uint16_t section15; +} sl_zcl_ias_ace_cluster_get_zone_id_map_response_command_t; + +#define sl_zcl_ias_ace_cluster_get_zone_id_map_response_command_signature { \ + 16, \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_ias_ace_cluster_get_zone_id_map_response_command_t, section0), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_ias_ace_cluster_get_zone_id_map_response_command_t, section1), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_ias_ace_cluster_get_zone_id_map_response_command_t, section2), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_ias_ace_cluster_get_zone_id_map_response_command_t, section3), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_ias_ace_cluster_get_zone_id_map_response_command_t, section4), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_ias_ace_cluster_get_zone_id_map_response_command_t, section5), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_ias_ace_cluster_get_zone_id_map_response_command_t, section6), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_ias_ace_cluster_get_zone_id_map_response_command_t, section7), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_ias_ace_cluster_get_zone_id_map_response_command_t, section8), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_ias_ace_cluster_get_zone_id_map_response_command_t, section9), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_ias_ace_cluster_get_zone_id_map_response_command_t, section10), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_ias_ace_cluster_get_zone_id_map_response_command_t, section11), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_ias_ace_cluster_get_zone_id_map_response_command_t, section12), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_ias_ace_cluster_get_zone_id_map_response_command_t, section13), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_ias_ace_cluster_get_zone_id_map_response_command_t, section14), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_ias_ace_cluster_get_zone_id_map_response_command_t, section15), \ +} + + +/** @brief Structure for ZCL command "ZoneStatusChangeNotification" from "IAS Zone" + */ +typedef struct __zcl_ias_zone_cluster_zone_status_change_notification_command { + uint16_t zoneStatus; + uint8_t extendedStatus; + uint8_t zoneId; + uint16_t delay; +} sl_zcl_ias_zone_cluster_zone_status_change_notification_command_t; + +#define sl_zcl_ias_zone_cluster_zone_status_change_notification_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_ias_zone_cluster_zone_status_change_notification_command_t, zoneStatus), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_ias_zone_cluster_zone_status_change_notification_command_t, extendedStatus), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_ias_zone_cluster_zone_status_change_notification_command_t, zoneId), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_ias_zone_cluster_zone_status_change_notification_command_t, delay), \ +} + + +/** @brief Structure for ZCL command "InitiateKeyEstablishmentRequest" from "Key Establishment" + */ +typedef struct __zcl_key_establishment_cluster_initiate_key_establishment_request_command { + uint16_t keyEstablishmentSuite; + uint8_t ephemeralDataGenerateTime; + uint8_t confirmKeyGenerateTime; + /* TYPE WARNING: Identity defaults to */ uint8_t * identity; +} sl_zcl_key_establishment_cluster_initiate_key_establishment_request_command_t; + +#define sl_zcl_key_establishment_cluster_initiate_key_establishment_request_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_key_establishment_cluster_initiate_key_establishment_request_command_t, keyEstablishmentSuite), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_key_establishment_cluster_initiate_key_establishment_request_command_t, ephemeralDataGenerateTime), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_key_establishment_cluster_initiate_key_establishment_request_command_t, confirmKeyGenerateTime), \ + (ZAP_SIGNATURE_TYPE_POINTER), offsetof(sl_zcl_key_establishment_cluster_initiate_key_establishment_request_command_t, identity), \ +} + + +/** @brief Structure for ZCL command "InitiateKeyEstablishmentResponse" from "Key Establishment" + */ +typedef struct __zcl_key_establishment_cluster_initiate_key_establishment_response_command { + uint16_t requestedKeyEstablishmentSuite; + uint8_t ephemeralDataGenerateTime; + uint8_t confirmKeyGenerateTime; + /* TYPE WARNING: Identity defaults to */ uint8_t * identity; +} sl_zcl_key_establishment_cluster_initiate_key_establishment_response_command_t; + +#define sl_zcl_key_establishment_cluster_initiate_key_establishment_response_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_key_establishment_cluster_initiate_key_establishment_response_command_t, requestedKeyEstablishmentSuite), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_key_establishment_cluster_initiate_key_establishment_response_command_t, ephemeralDataGenerateTime), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_key_establishment_cluster_initiate_key_establishment_response_command_t, confirmKeyGenerateTime), \ + (ZAP_SIGNATURE_TYPE_POINTER), offsetof(sl_zcl_key_establishment_cluster_initiate_key_establishment_response_command_t, identity), \ +} + + +/** @brief Structure for ZCL command "TakeSnapshot" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_take_snapshot_command { + uint32_t snapshotCause; +} sl_zcl_simple_metering_cluster_take_snapshot_command_t; + +#define sl_zcl_simple_metering_cluster_take_snapshot_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_BITMAP32), offsetof(sl_zcl_simple_metering_cluster_take_snapshot_command_t, snapshotCause), \ +} + + +/** @brief Structure for ZCL command "ActionControl" from "Gaming" + */ +typedef struct __zcl_gaming_cluster_action_control_command { + uint32_t actions; +} sl_zcl_gaming_cluster_action_control_command_t; + +#define sl_zcl_gaming_cluster_action_control_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_BITMAP32), offsetof(sl_zcl_gaming_cluster_action_control_command_t, actions), \ +} + + +/** @brief Structure for ZCL command "EZModeInvoke" from "Identify" + */ +typedef struct __zcl_identify_cluster_ez_mode_invoke_command { + uint8_t action; +} sl_zcl_identify_cluster_ez_mode_invoke_command_t; + +#define sl_zcl_identify_cluster_ez_mode_invoke_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_identify_cluster_ez_mode_invoke_command_t, action), \ +} + + +/** @brief Structure for ZCL command "RssiPing" from "RSSI Location" + */ +typedef struct __zcl_rssi_location_cluster_rssi_ping_command { + uint8_t locationType; +} sl_zcl_rssi_location_cluster_rssi_ping_command_t; + +#define sl_zcl_rssi_location_cluster_rssi_ping_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_rssi_location_cluster_rssi_ping_command_t, locationType), \ +} + + +/** @brief Structure for ZCL command "Squawk" from "IAS WD" + */ +typedef struct __zcl_ias_wd_cluster_squawk_command { + uint8_t squawkInfo; +} sl_zcl_ias_wd_cluster_squawk_command_t; + +#define sl_zcl_ias_wd_cluster_squawk_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_ias_wd_cluster_squawk_command_t, squawkInfo), \ +} + + +/** @brief Structure for ZCL command "GetCurrentPrice" from "Price" + */ +typedef struct __zcl_price_cluster_get_current_price_command { + uint8_t commandOptions; +} sl_zcl_price_cluster_get_current_price_command_t; + +#define sl_zcl_price_cluster_get_current_price_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_price_cluster_get_current_price_command_t, commandOptions), \ +} + + +/** @brief Structure for ZCL command "CancelAllLoadControlEvents" from "Demand Response and Load Control" + */ +typedef struct __zcl_demand_response_and_load_control_cluster_cancel_all_load_control_events_command { + uint8_t cancelControl; +} sl_zcl_demand_response_and_load_control_cluster_cancel_all_load_control_events_command_t; + +#define sl_zcl_demand_response_and_load_control_cluster_cancel_all_load_control_events_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_demand_response_and_load_control_cluster_cancel_all_load_control_events_command_t, cancelControl), \ +} + + +/** @brief Structure for ZCL command "ClearEventLogResponse" from "Events" + */ +typedef struct __zcl_events_cluster_clear_event_log_response_command { + uint8_t clearedEventsLogs; +} sl_zcl_events_cluster_clear_event_log_response_command_t; + +#define sl_zcl_events_cluster_clear_event_log_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_events_cluster_clear_event_log_response_command_t, clearedEventsLogs), \ +} + + +/** @brief Structure for ZCL command "GetAlertsResponse" from "Appliance Events and Alert" + */ +typedef struct __zcl_appliance_events_and_alert_cluster_get_alerts_response_command { + uint8_t alertsCount; + /* TYPE WARNING: AlertStructure array defaults to */ uint8_t * alertStructures; +} sl_zcl_appliance_events_and_alert_cluster_get_alerts_response_command_t; + +#define sl_zcl_appliance_events_and_alert_cluster_get_alerts_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_appliance_events_and_alert_cluster_get_alerts_response_command_t, alertsCount), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_appliance_events_and_alert_cluster_get_alerts_response_command_t, alertStructures), \ +} + + +/** @brief Structure for ZCL command "AlertsNotification" from "Appliance Events and Alert" + */ +typedef struct __zcl_appliance_events_and_alert_cluster_alerts_notification_command { + uint8_t alertsCount; + /* TYPE WARNING: AlertStructure array defaults to */ uint8_t * alertStructures; +} sl_zcl_appliance_events_and_alert_cluster_alerts_notification_command_t; + +#define sl_zcl_appliance_events_and_alert_cluster_alerts_notification_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_appliance_events_and_alert_cluster_alerts_notification_command_t, alertsCount), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_appliance_events_and_alert_cluster_alerts_notification_command_t, alertStructures), \ +} + + +/** @brief Structure for ZCL command "GetWeeklySchedule" from "Thermostat" + */ +typedef struct __zcl_thermostat_cluster_get_weekly_schedule_command { + uint8_t daysToReturn; + uint8_t modeToReturn; +} sl_zcl_thermostat_cluster_get_weekly_schedule_command_t; + +#define sl_zcl_thermostat_cluster_get_weekly_schedule_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_thermostat_cluster_get_weekly_schedule_command_t, daysToReturn), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_thermostat_cluster_get_weekly_schedule_command_t, modeToReturn), \ +} + + +/** @brief Structure for ZCL command "EstablishmentRequest" from "Voice over ZigBee" + */ +typedef struct __zcl_voice_over_zig_bee_cluster_establishment_request_command { + uint8_t flag; + uint8_t codecType; + uint8_t sampFreq; + uint8_t codecRate; + uint8_t serviceType; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * buffer; +} sl_zcl_voice_over_zig_bee_cluster_establishment_request_command_t; + +#define sl_zcl_voice_over_zig_bee_cluster_establishment_request_command_signature { \ + 6, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_voice_over_zig_bee_cluster_establishment_request_command_t, flag), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_voice_over_zig_bee_cluster_establishment_request_command_t, codecType), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_voice_over_zig_bee_cluster_establishment_request_command_t, sampFreq), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_voice_over_zig_bee_cluster_establishment_request_command_t, codecRate), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_voice_over_zig_bee_cluster_establishment_request_command_t, serviceType), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_voice_over_zig_bee_cluster_establishment_request_command_t, buffer), \ +} + + +/** @brief Structure for ZCL command "ColorLoopSet" from "Color Control" + */ +typedef struct __zcl_color_control_cluster_color_loop_set_command { + uint8_t updateFlags; + uint8_t action; + uint8_t direction; + uint16_t time; + uint16_t startHue; + uint8_t optionsMask; + uint8_t optionsOverride; +} sl_zcl_color_control_cluster_color_loop_set_command_t; + +#define sl_zcl_color_control_cluster_color_loop_set_command_signature { \ + 7, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_color_loop_set_command_t, updateFlags), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_color_control_cluster_color_loop_set_command_t, action), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_color_control_cluster_color_loop_set_command_t, direction), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_color_loop_set_command_t, time), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_color_loop_set_command_t, startHue), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_color_loop_set_command_t, optionsMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_color_loop_set_command_t, optionsOverride), \ +} + + +/** @brief Structure for ZCL command "LocationDataNotification" from "RSSI Location" + */ +typedef struct __zcl_rssi_location_cluster_location_data_notification_command { + uint8_t locationType; + int16_t coordinate1; + int16_t coordinate2; + int16_t coordinate3; + int16_t power; + uint16_t pathLossExponent; + uint8_t locationMethod; + uint8_t qualityMeasure; + uint16_t locationAge; +} sl_zcl_rssi_location_cluster_location_data_notification_command_t; + +#define sl_zcl_rssi_location_cluster_location_data_notification_command_signature { \ + 9, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_rssi_location_cluster_location_data_notification_command_t, locationType), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_location_data_notification_command_t, coordinate1), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_location_data_notification_command_t, coordinate2), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_location_data_notification_command_t, coordinate3), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_location_data_notification_command_t, power), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_rssi_location_cluster_location_data_notification_command_t, pathLossExponent), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_rssi_location_cluster_location_data_notification_command_t, locationMethod), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_rssi_location_cluster_location_data_notification_command_t, qualityMeasure), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_rssi_location_cluster_location_data_notification_command_t, locationAge), \ +} + + +/** @brief Structure for ZCL command "CompactLocationDataNotification" from "RSSI Location" + */ +typedef struct __zcl_rssi_location_cluster_compact_location_data_notification_command { + uint8_t locationType; + int16_t coordinate1; + int16_t coordinate2; + int16_t coordinate3; + uint8_t qualityMeasure; + uint16_t locationAge; +} sl_zcl_rssi_location_cluster_compact_location_data_notification_command_t; + +#define sl_zcl_rssi_location_cluster_compact_location_data_notification_command_signature { \ + 6, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_rssi_location_cluster_compact_location_data_notification_command_t, locationType), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_compact_location_data_notification_command_t, coordinate1), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_compact_location_data_notification_command_t, coordinate2), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_compact_location_data_notification_command_t, coordinate3), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_rssi_location_cluster_compact_location_data_notification_command_t, qualityMeasure), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_rssi_location_cluster_compact_location_data_notification_command_t, locationAge), \ +} + + +/** @brief Structure for ZCL command "OnWithTimedOff" from "On/off" + */ +typedef struct __zcl_on_off_cluster_on_with_timed_off_command { + uint8_t onOffControl; + uint16_t onTime; + uint16_t offWaitTime; +} sl_zcl_on_off_cluster_on_with_timed_off_command_t; + +#define sl_zcl_on_off_cluster_on_with_timed_off_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_on_off_cluster_on_with_timed_off_command_t, onOffControl), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_on_off_cluster_on_with_timed_off_command_t, onTime), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_on_off_cluster_on_with_timed_off_command_t, offWaitTime), \ +} + + +/** @brief Structure for ZCL command "GpSinkCommissioningMode" from "Green Power" + */ +typedef struct __zcl_green_power_cluster_gp_sink_commissioning_mode_command { + uint8_t options; + uint16_t gpmAddrForSecurity; + uint16_t gpmAddrForPairing; + uint8_t sinkEndpoint; +} sl_zcl_green_power_cluster_gp_sink_commissioning_mode_command_t; + +#define sl_zcl_green_power_cluster_gp_sink_commissioning_mode_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_green_power_cluster_gp_sink_commissioning_mode_command_t, options), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_green_power_cluster_gp_sink_commissioning_mode_command_t, gpmAddrForSecurity), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_green_power_cluster_gp_sink_commissioning_mode_command_t, gpmAddrForPairing), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_green_power_cluster_gp_sink_commissioning_mode_command_t, sinkEndpoint), \ +} + + +/** @brief Structure for ZCL command "CopyScene" from "Scenes" + */ +typedef struct __zcl_scenes_cluster_copy_scene_command { + uint8_t mode; + uint16_t groupIdFrom; + uint8_t sceneIdFrom; + uint16_t groupIdTo; + uint8_t sceneIdTo; +} sl_zcl_scenes_cluster_copy_scene_command_t; + +#define sl_zcl_scenes_cluster_copy_scene_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_scenes_cluster_copy_scene_command_t, mode), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_copy_scene_command_t, groupIdFrom), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_copy_scene_command_t, sceneIdFrom), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_copy_scene_command_t, groupIdTo), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_copy_scene_command_t, sceneIdTo), \ +} + + +/** @brief Structure for ZCL command "StartWarning" from "IAS WD" + */ +typedef struct __zcl_ias_wd_cluster_start_warning_command { + uint8_t warningInfo; + uint16_t warningDuration; + uint8_t strobeDutyCycle; + uint8_t strobeLevel; +} sl_zcl_ias_wd_cluster_start_warning_command_t; + +#define sl_zcl_ias_wd_cluster_start_warning_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_ias_wd_cluster_start_warning_command_t, warningInfo), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_ias_wd_cluster_start_warning_command_t, warningDuration), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_ias_wd_cluster_start_warning_command_t, strobeDutyCycle), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_ias_wd_cluster_start_warning_command_t, strobeLevel), \ +} + + +/** @brief Structure for ZCL command "GetEventLog" from "Events" + */ +typedef struct __zcl_events_cluster_get_event_log_command { + uint8_t eventControlLogId; + uint16_t eventId; + uint32_t startTime; + uint32_t endTime; + uint8_t numberOfEvents; + uint16_t eventOffset; +} sl_zcl_events_cluster_get_event_log_command_t; + +#define sl_zcl_events_cluster_get_event_log_command_signature { \ + 6, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_events_cluster_get_event_log_command_t, eventControlLogId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_events_cluster_get_event_log_command_t, eventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_events_cluster_get_event_log_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_events_cluster_get_event_log_command_t, endTime), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_events_cluster_get_event_log_command_t, numberOfEvents), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_events_cluster_get_event_log_command_t, eventOffset), \ +} + + +/** @brief Structure for ZCL command "Delete" from "Information" + */ +typedef struct __zcl_information_cluster_delete_command { + uint8_t deletionOptions; + /* TYPE WARNING: INT16U array defaults to */ uint8_t * contentIds; +} sl_zcl_information_cluster_delete_command_t; + +#define sl_zcl_information_cluster_delete_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_information_cluster_delete_command_t, deletionOptions), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_information_cluster_delete_command_t, contentIds), \ +} + + +/** @brief Structure for ZCL command "ChangePaymentModeResponse" from "Prepayment" + */ +typedef struct __zcl_prepayment_cluster_change_payment_mode_response_command { + uint8_t friendlyCredit; + uint32_t friendlyCreditCalendarId; + uint32_t emergencyCreditLimit; + uint32_t emergencyCreditThreshold; +} sl_zcl_prepayment_cluster_change_payment_mode_response_command_t; + +#define sl_zcl_prepayment_cluster_change_payment_mode_response_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_prepayment_cluster_change_payment_mode_response_command_t, friendlyCredit), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_change_payment_mode_response_command_t, friendlyCreditCalendarId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_change_payment_mode_response_command_t, emergencyCreditLimit), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_change_payment_mode_response_command_t, emergencyCreditThreshold), \ +} + + +/** @brief Structure for ZCL command "SaveStartupParameters" from "Commissioning" + */ +typedef struct __zcl_commissioning_cluster_save_startup_parameters_command { + uint8_t options; + uint8_t index; +} sl_zcl_commissioning_cluster_save_startup_parameters_command_t; + +#define sl_zcl_commissioning_cluster_save_startup_parameters_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_commissioning_cluster_save_startup_parameters_command_t, options), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_commissioning_cluster_save_startup_parameters_command_t, index), \ +} + + +/** @brief Structure for ZCL command "RestoreStartupParameters" from "Commissioning" + */ +typedef struct __zcl_commissioning_cluster_restore_startup_parameters_command { + uint8_t options; + uint8_t index; +} sl_zcl_commissioning_cluster_restore_startup_parameters_command_t; + +#define sl_zcl_commissioning_cluster_restore_startup_parameters_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_commissioning_cluster_restore_startup_parameters_command_t, options), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_commissioning_cluster_restore_startup_parameters_command_t, index), \ +} + + +/** @brief Structure for ZCL command "ResetStartupParameters" from "Commissioning" + */ +typedef struct __zcl_commissioning_cluster_reset_startup_parameters_command { + uint8_t options; + uint8_t index; +} sl_zcl_commissioning_cluster_reset_startup_parameters_command_t; + +#define sl_zcl_commissioning_cluster_reset_startup_parameters_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_commissioning_cluster_reset_startup_parameters_command_t, options), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_commissioning_cluster_reset_startup_parameters_command_t, index), \ +} + + +/** @brief Structure for ZCL command "GetLocationData" from "RSSI Location" + */ +typedef struct __zcl_rssi_location_cluster_get_location_data_command { + uint8_t flags; + uint8_t numberResponses; + uint8_t * targetAddress; +} sl_zcl_rssi_location_cluster_get_location_data_command_t; + +#define sl_zcl_rssi_location_cluster_get_location_data_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_rssi_location_cluster_get_location_data_command_t, flags), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_rssi_location_cluster_get_location_data_command_t, numberResponses), \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_rssi_location_cluster_get_location_data_command_t, targetAddress), \ +} + + +/** @brief Structure for ZCL command "GetPowerProfilePriceExtended" from "Power Profile" + */ +typedef struct __zcl_power_profile_cluster_get_power_profile_price_extended_command { + uint8_t options; + uint8_t powerProfileId; + uint16_t powerProfileStartTime; +} sl_zcl_power_profile_cluster_get_power_profile_price_extended_command_t; + +#define sl_zcl_power_profile_cluster_get_power_profile_price_extended_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_power_profile_cluster_get_power_profile_price_extended_command_t, options), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_get_power_profile_price_extended_command_t, powerProfileId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_power_profile_cluster_get_power_profile_price_extended_command_t, powerProfileStartTime), \ +} + + +/** @brief Structure for ZCL command "RestartDevice" from "Commissioning" + */ +typedef struct __zcl_commissioning_cluster_restart_device_command { + uint8_t options; + uint8_t delay; + uint8_t jitter; +} sl_zcl_commissioning_cluster_restart_device_command_t; + +#define sl_zcl_commissioning_cluster_restart_device_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_commissioning_cluster_restart_device_command_t, options), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_commissioning_cluster_restart_device_command_t, delay), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_commissioning_cluster_restart_device_command_t, jitter), \ +} + + +/** @brief Structure for ZCL command "TransferPartitionedFrame" from "Partition" + */ +typedef struct __zcl_partition_cluster_transfer_partitioned_frame_command { + uint8_t fragmentationOptions; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * partitionedIndicatorAndFrame; +} sl_zcl_partition_cluster_transfer_partitioned_frame_command_t; + +#define sl_zcl_partition_cluster_transfer_partitioned_frame_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_partition_cluster_transfer_partitioned_frame_command_t, fragmentationOptions), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_partition_cluster_transfer_partitioned_frame_command_t, partitionedIndicatorAndFrame), \ +} + + +/** @brief Structure for ZCL command "MultipleAck" from "Partition" + */ +typedef struct __zcl_partition_cluster_multiple_ack_command { + uint8_t ackOptions; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * firstFrameIdAndNackList; +} sl_zcl_partition_cluster_multiple_ack_command_t; + +#define sl_zcl_partition_cluster_multiple_ack_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_partition_cluster_multiple_ack_command_t, ackOptions), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_partition_cluster_multiple_ack_command_t, firstFrameIdAndNackList), \ +} + + +/** @brief Structure for ZCL command "WriteFileRequest" from "Data Sharing" + */ +typedef struct __zcl_data_sharing_cluster_write_file_request_command { + uint8_t writeOptions; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * fileSize; +} sl_zcl_data_sharing_cluster_write_file_request_command_t; + +#define sl_zcl_data_sharing_cluster_write_file_request_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_data_sharing_cluster_write_file_request_command_t, writeOptions), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_data_sharing_cluster_write_file_request_command_t, fileSize), \ +} + + +/** @brief Structure for ZCL command "FileTransmission" from "Data Sharing" + */ +typedef struct __zcl_data_sharing_cluster_file_transmission_command { + uint8_t transmitOptions; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * buffer; +} sl_zcl_data_sharing_cluster_file_transmission_command_t; + +#define sl_zcl_data_sharing_cluster_file_transmission_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_data_sharing_cluster_file_transmission_command_t, transmitOptions), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_data_sharing_cluster_file_transmission_command_t, buffer), \ +} + + +/** @brief Structure for ZCL command "RecordTransmission" from "Data Sharing" + */ +typedef struct __zcl_data_sharing_cluster_record_transmission_command { + uint8_t transmitOptions; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * buffer; +} sl_zcl_data_sharing_cluster_record_transmission_command_t; + +#define sl_zcl_data_sharing_cluster_record_transmission_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_data_sharing_cluster_record_transmission_command_t, transmitOptions), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_data_sharing_cluster_record_transmission_command_t, buffer), \ +} + + +/** @brief Structure for ZCL command "SearchChatResponse" from "Chatting" + */ +typedef struct __zcl_chatting_cluster_search_chat_response_command { + uint8_t options; + /* TYPE WARNING: ChatRoom array defaults to */ uint8_t * chatRoomList; +} sl_zcl_chatting_cluster_search_chat_response_command_t; + +#define sl_zcl_chatting_cluster_search_chat_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_chatting_cluster_search_chat_response_command_t, options), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_chatting_cluster_search_chat_response_command_t, chatRoomList), \ +} + + +/** @brief Structure for ZCL command "Stop" from "Level Control" + */ +typedef struct __zcl_level_control_cluster_stop_command { + uint8_t optionMask; + uint8_t optionOverride; +} sl_zcl_level_control_cluster_stop_command_t; + +#define sl_zcl_level_control_cluster_stop_command_signature { \ + 2, \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_level_control_cluster_stop_command_t, optionMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_level_control_cluster_stop_command_t, optionOverride), \ +} + + +/** @brief Structure for ZCL command "StopMoveStep" from "Color Control" + */ +typedef struct __zcl_color_control_cluster_stop_move_step_command { + uint8_t optionsMask; + uint8_t optionsOverride; +} sl_zcl_color_control_cluster_stop_move_step_command_t; + +#define sl_zcl_color_control_cluster_stop_move_step_command_signature { \ + 2, \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_stop_move_step_command_t, optionsMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_stop_move_step_command_t, optionsOverride), \ +} + + +/** @brief Structure for ZCL command "ConfigureDeliveryEnable" from "Information" + */ +typedef struct __zcl_information_cluster_configure_delivery_enable_command { + uint8_t enable; +} sl_zcl_information_cluster_configure_delivery_enable_command_t; + +#define sl_zcl_information_cluster_configure_delivery_enable_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_BOOLEAN), offsetof(sl_zcl_information_cluster_configure_delivery_enable_command_t, enable), \ +} + + +/** @brief Structure for ZCL command "SurveyBeacons" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_survey_beacons_command { + uint8_t standardBeacons; +} sl_zcl_sl_works_with_all_hubs_cluster_survey_beacons_command_t; + +#define sl_zcl_sl_works_with_all_hubs_cluster_survey_beacons_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_BOOLEAN), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_survey_beacons_command_t, standardBeacons), \ +} + + +/** @brief Structure for ZCL command "CheckInResponse" from "Poll Control" + */ +typedef struct __zcl_poll_control_cluster_check_in_response_command { + uint8_t startFastPolling; + uint16_t fastPollTimeout; +} sl_zcl_poll_control_cluster_check_in_response_command_t; + +#define sl_zcl_poll_control_cluster_check_in_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_BOOLEAN), offsetof(sl_zcl_poll_control_cluster_check_in_response_command_t, startFastPolling), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_poll_control_cluster_check_in_response_command_t, fastPollTimeout), \ +} + + +/** @brief Structure for ZCL command "GetZoneStatusResponse" from "IAS ACE" + */ +typedef struct __zcl_ias_ace_cluster_get_zone_status_response_command { + uint8_t zoneStatusComplete; + uint8_t numberOfZones; + /* TYPE WARNING: IasAceZoneStatusResult array defaults to */ uint8_t * zoneStatusResult; +} sl_zcl_ias_ace_cluster_get_zone_status_response_command_t; + +#define sl_zcl_ias_ace_cluster_get_zone_status_response_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_BOOLEAN), offsetof(sl_zcl_ias_ace_cluster_get_zone_status_response_command_t, zoneStatusComplete), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_ias_ace_cluster_get_zone_status_response_command_t, numberOfZones), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_ias_ace_cluster_get_zone_status_response_command_t, zoneStatusResult), \ +} + + +/** @brief Structure for ZCL command "SupportedTunnelProtocolsResponse" from "Tunneling" + */ +typedef struct __zcl_tunneling_cluster_supported_tunnel_protocols_response_command { + uint8_t protocolListComplete; + uint8_t protocolCount; + /* TYPE WARNING: Protocol array defaults to */ uint8_t * protocolList; +} sl_zcl_tunneling_cluster_supported_tunnel_protocols_response_command_t; + +#define sl_zcl_tunneling_cluster_supported_tunnel_protocols_response_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_BOOLEAN), offsetof(sl_zcl_tunneling_cluster_supported_tunnel_protocols_response_command_t, protocolListComplete), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_tunneling_cluster_supported_tunnel_protocols_response_command_t, protocolCount), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_tunneling_cluster_supported_tunnel_protocols_response_command_t, protocolList), \ +} + + +/** @brief Structure for ZCL command "ConfigureNodeDescription" from "Information" + */ +typedef struct __zcl_information_cluster_configure_node_description_command { + uint8_t * description; +} sl_zcl_information_cluster_configure_node_description_command_t; + +#define sl_zcl_information_cluster_configure_node_description_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_information_cluster_configure_node_description_command_t, description), \ +} + + +/** @brief Structure for ZCL command "StartChatRequest" from "Chatting" + */ +typedef struct __zcl_chatting_cluster_start_chat_request_command { + uint8_t * name; + uint16_t uid; + uint8_t * nickname; +} sl_zcl_chatting_cluster_start_chat_request_command_t; + +#define sl_zcl_chatting_cluster_start_chat_request_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_chatting_cluster_start_chat_request_command_t, name), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_start_chat_request_command_t, uid), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_chatting_cluster_start_chat_request_command_t, nickname), \ +} + + +/** @brief Structure for ZCL command "GetLocalesSupported" from "Basic" + */ +typedef struct __zcl_basic_cluster_get_locales_supported_command { + uint8_t * startLocale; + uint8_t maxLocalesRequested; +} sl_zcl_basic_cluster_get_locales_supported_command_t; + +#define sl_zcl_basic_cluster_get_locales_supported_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_basic_cluster_get_locales_supported_command_t, startLocale), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_basic_cluster_get_locales_supported_command_t, maxLocalesRequested), \ +} + + +/** @brief Structure for ZCL command "LockDoor" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_lock_door_command { + uint8_t * PIN; +} sl_zcl_door_lock_cluster_lock_door_command_t; + +#define sl_zcl_door_lock_cluster_lock_door_command_signature { \ + 1, \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_door_lock_cluster_lock_door_command_t, PIN), \ +} + + +/** @brief Structure for ZCL command "UnlockDoor" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_unlock_door_command { + uint8_t * PIN; +} sl_zcl_door_lock_cluster_unlock_door_command_t; + +#define sl_zcl_door_lock_cluster_unlock_door_command_signature { \ + 1, \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_door_lock_cluster_unlock_door_command_t, PIN), \ +} + + +/** @brief Structure for ZCL command "Toggle" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_toggle_command { + uint8_t * pin; +} sl_zcl_door_lock_cluster_toggle_command_t; + +#define sl_zcl_door_lock_cluster_toggle_command_signature { \ + 1, \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_door_lock_cluster_toggle_command_t, pin), \ +} + + +/** @brief Structure for ZCL command "ApsLinkKeyAuthorizationQuery" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_command { + uint16_t clusterId; +} sl_zcl_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_command_t; + +#define sl_zcl_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_CLUSTER_ID), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_command_t, clusterId), \ +} + + +/** @brief Structure for ZCL command "ReadHandshakeParam" from "Partition" + */ +typedef struct __zcl_partition_cluster_read_handshake_param_command { + uint16_t partitionedClusterId; + /* TYPE WARNING: ATTRIBUTE_ID array defaults to */ uint8_t * attributeList; +} sl_zcl_partition_cluster_read_handshake_param_command_t; + +#define sl_zcl_partition_cluster_read_handshake_param_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_CLUSTER_ID), offsetof(sl_zcl_partition_cluster_read_handshake_param_command_t, partitionedClusterId), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_partition_cluster_read_handshake_param_command_t, attributeList), \ +} + + +/** @brief Structure for ZCL command "ApsLinkKeyAuthorizationQueryResponse" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_response_command { + uint16_t clusterId; + uint8_t apsLinkKeyAuthStatus; +} sl_zcl_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_response_command_t; + +#define sl_zcl_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_CLUSTER_ID), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_response_command_t, clusterId), \ + (ZAP_SIGNATURE_TYPE_BOOLEAN), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_aps_link_key_authorization_query_response_command_t, apsLinkKeyAuthStatus), \ +} + + +/** @brief Structure for ZCL command "WriteHandshakeParam" from "Partition" + */ +typedef struct __zcl_partition_cluster_write_handshake_param_command { + uint16_t partitionedClusterId; + /* TYPE WARNING: WriteAttributeRecord array defaults to */ uint8_t * writeAttributeRecords; +} sl_zcl_partition_cluster_write_handshake_param_command_t; + +#define sl_zcl_partition_cluster_write_handshake_param_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_CLUSTER_ID), offsetof(sl_zcl_partition_cluster_write_handshake_param_command_t, partitionedClusterId), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_partition_cluster_write_handshake_param_command_t, writeAttributeRecords), \ +} + + +/** @brief Structure for ZCL command "ReadHandshakeParamResponse" from "Partition" + */ +typedef struct __zcl_partition_cluster_read_handshake_param_response_command { + uint16_t partitionedClusterId; + /* TYPE WARNING: ReadAttributeStatusRecord array defaults to */ uint8_t * readAttributeStatusRecords; +} sl_zcl_partition_cluster_read_handshake_param_response_command_t; + +#define sl_zcl_partition_cluster_read_handshake_param_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_CLUSTER_ID), offsetof(sl_zcl_partition_cluster_read_handshake_param_response_command_t, partitionedClusterId), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_partition_cluster_read_handshake_param_response_command_t, readAttributeStatusRecords), \ +} + + +/** @brief Structure for ZCL command "PathDeletion" from "Data Rate Control" + */ +typedef struct __zcl_data_rate_control_cluster_path_deletion_command { + uint16_t originatorAddress; + uint16_t destinationAddress; +} sl_zcl_data_rate_control_cluster_path_deletion_command_t; + +#define sl_zcl_data_rate_control_cluster_path_deletion_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_DATA16), offsetof(sl_zcl_data_rate_control_cluster_path_deletion_command_t, originatorAddress), \ + (ZAP_SIGNATURE_TYPE_DATA16), offsetof(sl_zcl_data_rate_control_cluster_path_deletion_command_t, destinationAddress), \ +} + + +/** @brief Structure for ZCL command "PathCreation" from "Data Rate Control" + */ +typedef struct __zcl_data_rate_control_cluster_path_creation_command { + uint16_t originatorAddress; + uint16_t destinationAddress; + uint8_t dataRate; +} sl_zcl_data_rate_control_cluster_path_creation_command_t; + +#define sl_zcl_data_rate_control_cluster_path_creation_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_DATA16), offsetof(sl_zcl_data_rate_control_cluster_path_creation_command_t, originatorAddress), \ + (ZAP_SIGNATURE_TYPE_DATA16), offsetof(sl_zcl_data_rate_control_cluster_path_creation_command_t, destinationAddress), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_data_rate_control_cluster_path_creation_command_t, dataRate), \ +} + + +/** @brief Structure for ZCL command "DataRateNotification" from "Data Rate Control" + */ +typedef struct __zcl_data_rate_control_cluster_data_rate_notification_command { + uint16_t originatorAddress; + uint16_t destinationAddress; + uint8_t dataRate; +} sl_zcl_data_rate_control_cluster_data_rate_notification_command_t; + +#define sl_zcl_data_rate_control_cluster_data_rate_notification_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_DATA16), offsetof(sl_zcl_data_rate_control_cluster_data_rate_notification_command_t, originatorAddress), \ + (ZAP_SIGNATURE_TYPE_DATA16), offsetof(sl_zcl_data_rate_control_cluster_data_rate_notification_command_t, destinationAddress), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_data_rate_control_cluster_data_rate_notification_command_t, dataRate), \ +} + + +/** @brief Structure for ZCL command "DataRateControl" from "Data Rate Control" + */ +typedef struct __zcl_data_rate_control_cluster_data_rate_control_command { + uint16_t originatorAddress; + uint16_t destinationAddress; + uint8_t dataRate; +} sl_zcl_data_rate_control_cluster_data_rate_control_command_t; + +#define sl_zcl_data_rate_control_cluster_data_rate_control_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_DATA16), offsetof(sl_zcl_data_rate_control_cluster_data_rate_control_command_t, originatorAddress), \ + (ZAP_SIGNATURE_TYPE_DATA16), offsetof(sl_zcl_data_rate_control_cluster_data_rate_control_command_t, destinationAddress), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_data_rate_control_cluster_data_rate_control_command_t, dataRate), \ +} + + +/** @brief Structure for ZCL command "TransferNpdu" from "BACnet Protocol Tunnel" + */ +typedef struct __zcl_ba_cnet_protocol_tunnel_cluster_transfer_npdu_command { + /* TYPE WARNING: DATA8 array defaults to */ uint8_t * npdu; +} sl_zcl_ba_cnet_protocol_tunnel_cluster_transfer_npdu_command_t; + +#define sl_zcl_ba_cnet_protocol_tunnel_cluster_transfer_npdu_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_ba_cnet_protocol_tunnel_cluster_transfer_npdu_command_t, npdu), \ +} + + +/** @brief Structure for ZCL command "ZoneEnrollRequest" from "IAS Zone" + */ +typedef struct __zcl_ias_zone_cluster_zone_enroll_request_command { + uint16_t zoneType; + uint16_t manufacturerCode; +} sl_zcl_ias_zone_cluster_zone_enroll_request_command_t; + +#define sl_zcl_ias_zone_cluster_zone_enroll_request_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_ENUM16), offsetof(sl_zcl_ias_zone_cluster_zone_enroll_request_command_t, zoneType), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_ias_zone_cluster_zone_enroll_request_command_t, manufacturerCode), \ +} + + +/** @brief Structure for ZCL command "RestartDeviceResponse" from "Commissioning" + */ +typedef struct __zcl_commissioning_cluster_restart_device_response_command { + uint8_t status; +} sl_zcl_commissioning_cluster_restart_device_response_command_t; + +#define sl_zcl_commissioning_cluster_restart_device_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_commissioning_cluster_restart_device_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "SaveStartupParametersResponse" from "Commissioning" + */ +typedef struct __zcl_commissioning_cluster_save_startup_parameters_response_command { + uint8_t status; +} sl_zcl_commissioning_cluster_save_startup_parameters_response_command_t; + +#define sl_zcl_commissioning_cluster_save_startup_parameters_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_commissioning_cluster_save_startup_parameters_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "RestoreStartupParametersResponse" from "Commissioning" + */ +typedef struct __zcl_commissioning_cluster_restore_startup_parameters_response_command { + uint8_t status; +} sl_zcl_commissioning_cluster_restore_startup_parameters_response_command_t; + +#define sl_zcl_commissioning_cluster_restore_startup_parameters_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_commissioning_cluster_restore_startup_parameters_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "ResetStartupParametersResponse" from "Commissioning" + */ +typedef struct __zcl_commissioning_cluster_reset_startup_parameters_response_command { + uint8_t status; +} sl_zcl_commissioning_cluster_reset_startup_parameters_response_command_t; + +#define sl_zcl_commissioning_cluster_reset_startup_parameters_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_commissioning_cluster_reset_startup_parameters_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "ExecutionOfACommand" from "Appliance Control" + */ +typedef struct __zcl_appliance_control_cluster_execution_of_a_command_command { + uint8_t commandId; +} sl_zcl_appliance_control_cluster_execution_of_a_command_command_t; + +#define sl_zcl_appliance_control_cluster_execution_of_a_command_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_appliance_control_cluster_execution_of_a_command_command_t, commandId), \ +} + + +/** @brief Structure for ZCL command "OverloadWarning" from "Appliance Control" + */ +typedef struct __zcl_appliance_control_cluster_overload_warning_command { + uint8_t warningEvent; +} sl_zcl_appliance_control_cluster_overload_warning_command_t; + +#define sl_zcl_appliance_control_cluster_overload_warning_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_appliance_control_cluster_overload_warning_command_t, warningEvent), \ +} + + +/** @brief Structure for ZCL command "SetPinResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_set_pin_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_set_pin_response_command_t; + +#define sl_zcl_door_lock_cluster_set_pin_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_door_lock_cluster_set_pin_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "SetRfidResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_set_rfid_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_set_rfid_response_command_t; + +#define sl_zcl_door_lock_cluster_set_rfid_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_door_lock_cluster_set_rfid_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "ArmResponse" from "IAS ACE" + */ +typedef struct __zcl_ias_ace_cluster_arm_response_command { + uint8_t armNotification; +} sl_zcl_ias_ace_cluster_arm_response_command_t; + +#define sl_zcl_ias_ace_cluster_arm_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_ias_ace_cluster_arm_response_command_t, armNotification), \ +} + + +/** @brief Structure for ZCL command "ConnectStatusNotification" from "11073 Protocol Tunnel" + */ +typedef struct __zcl_11073_protocol_tunnel_cluster_connect_status_notification_command { + uint8_t connectStatus; +} sl_zcl_11073_protocol_tunnel_cluster_connect_status_notification_command_t; + +#define sl_zcl_11073_protocol_tunnel_cluster_connect_status_notification_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_11073_protocol_tunnel_cluster_connect_status_notification_command_t, connectStatus), \ +} + + +/** @brief Structure for ZCL command "LocalChangeSupply" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_local_change_supply_command { + uint8_t proposedSupplyStatus; +} sl_zcl_simple_metering_cluster_local_change_supply_command_t; + +#define sl_zcl_simple_metering_cluster_local_change_supply_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_simple_metering_cluster_local_change_supply_command_t, proposedSupplyStatus), \ +} + + +/** @brief Structure for ZCL command "RequestNewPassword" from "Device Management" + */ +typedef struct __zcl_device_management_cluster_request_new_password_command { + uint8_t passwordType; +} sl_zcl_device_management_cluster_request_new_password_command_t; + +#define sl_zcl_device_management_cluster_request_new_password_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_device_management_cluster_request_new_password_command_t, passwordType), \ +} + + +/** @brief Structure for ZCL command "ClearEventLogRequest" from "Events" + */ +typedef struct __zcl_events_cluster_clear_event_log_request_command { + uint8_t logId; +} sl_zcl_events_cluster_clear_event_log_request_command_t; + +#define sl_zcl_events_cluster_clear_event_log_request_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_events_cluster_clear_event_log_request_command_t, logId), \ +} + + +/** @brief Structure for ZCL command "ControlResponse" from "Voice over ZigBee" + */ +typedef struct __zcl_voice_over_zig_bee_cluster_control_response_command { + uint8_t ackNack; +} sl_zcl_voice_over_zig_bee_cluster_control_response_command_t; + +#define sl_zcl_voice_over_zig_bee_cluster_control_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_voice_over_zig_bee_cluster_control_response_command_t, ackNack), \ +} + + +/** @brief Structure for ZCL command "Control" from "Voice over ZigBee" + */ +typedef struct __zcl_voice_over_zig_bee_cluster_control_command { + uint8_t controlType; +} sl_zcl_voice_over_zig_bee_cluster_control_command_t; + +#define sl_zcl_voice_over_zig_bee_cluster_control_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_voice_over_zig_bee_cluster_control_command_t, controlType), \ +} + + +/** @brief Structure for ZCL command "SetIasZoneEnrollmentMethod" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_set_ias_zone_enrollment_method_command { + uint8_t enrollmentMode; +} sl_zcl_sl_works_with_all_hubs_cluster_set_ias_zone_enrollment_method_command_t; + +#define sl_zcl_sl_works_with_all_hubs_cluster_set_ias_zone_enrollment_method_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_set_ias_zone_enrollment_method_command_t, enrollmentMode), \ +} + + +/** @brief Structure for ZCL command "UpdateCommissionState" from "Identify" + */ +typedef struct __zcl_identify_cluster_update_commission_state_command { + uint8_t action; + uint8_t commissionStateMask; +} sl_zcl_identify_cluster_update_commission_state_command_t; + +#define sl_zcl_identify_cluster_update_commission_state_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_identify_cluster_update_commission_state_command_t, action), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_identify_cluster_update_commission_state_command_t, commissionStateMask), \ +} + + +/** @brief Structure for ZCL command "SetWeeklySchedule" from "Thermostat" + */ +typedef struct __zcl_thermostat_cluster_set_weekly_schedule_command { + uint8_t numberOfTransitionsForSequence; + uint8_t dayOfWeekForSequence; + uint8_t modeForSequence; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * payload; +} sl_zcl_thermostat_cluster_set_weekly_schedule_command_t; + +#define sl_zcl_thermostat_cluster_set_weekly_schedule_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_thermostat_cluster_set_weekly_schedule_command_t, numberOfTransitionsForSequence), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_thermostat_cluster_set_weekly_schedule_command_t, dayOfWeekForSequence), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_thermostat_cluster_set_weekly_schedule_command_t, modeForSequence), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_thermostat_cluster_set_weekly_schedule_command_t, payload), \ +} + + +/** @brief Structure for ZCL command "CurrentWeeklySchedule" from "Thermostat" + */ +typedef struct __zcl_thermostat_cluster_current_weekly_schedule_command { + uint8_t numberOfTransitionsForSequence; + uint8_t dayOfWeekForSequence; + uint8_t modeForSequence; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * payload; +} sl_zcl_thermostat_cluster_current_weekly_schedule_command_t; + +#define sl_zcl_thermostat_cluster_current_weekly_schedule_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_thermostat_cluster_current_weekly_schedule_command_t, numberOfTransitionsForSequence), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_thermostat_cluster_current_weekly_schedule_command_t, dayOfWeekForSequence), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_thermostat_cluster_current_weekly_schedule_command_t, modeForSequence), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_thermostat_cluster_current_weekly_schedule_command_t, payload), \ +} + + +/** @brief Structure for ZCL command "SignalStateResponse" from "Appliance Control" + */ +typedef struct __zcl_appliance_control_cluster_signal_state_response_command { + uint8_t applianceStatus; + uint8_t remoteEnableFlagsAndDeviceStatus2; + uint32_t applianceStatus2; +} sl_zcl_appliance_control_cluster_signal_state_response_command_t; + +#define sl_zcl_appliance_control_cluster_signal_state_response_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_appliance_control_cluster_signal_state_response_command_t, applianceStatus), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_appliance_control_cluster_signal_state_response_command_t, remoteEnableFlagsAndDeviceStatus2), \ + (ZAP_SIGNATURE_TYPE_INT24U), offsetof(sl_zcl_appliance_control_cluster_signal_state_response_command_t, applianceStatus2), \ +} + + +/** @brief Structure for ZCL command "SignalStateNotification" from "Appliance Control" + */ +typedef struct __zcl_appliance_control_cluster_signal_state_notification_command { + uint8_t applianceStatus; + uint8_t remoteEnableFlagsAndDeviceStatus2; + uint32_t applianceStatus2; +} sl_zcl_appliance_control_cluster_signal_state_notification_command_t; + +#define sl_zcl_appliance_control_cluster_signal_state_notification_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_appliance_control_cluster_signal_state_notification_command_t, applianceStatus), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_appliance_control_cluster_signal_state_notification_command_t, remoteEnableFlagsAndDeviceStatus2), \ + (ZAP_SIGNATURE_TYPE_INT24U), offsetof(sl_zcl_appliance_control_cluster_signal_state_notification_command_t, applianceStatus2), \ +} + + +/** @brief Structure for ZCL command "RequestInformation" from "Information" + */ +typedef struct __zcl_information_cluster_request_information_command { + uint8_t inquiryId; + uint8_t dataTypeId; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * requestInformationPayload; +} sl_zcl_information_cluster_request_information_command_t; + +#define sl_zcl_information_cluster_request_information_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_information_cluster_request_information_command_t, inquiryId), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_information_cluster_request_information_command_t, dataTypeId), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_information_cluster_request_information_command_t, requestInformationPayload), \ +} + + +/** @brief Structure for ZCL command "Update" from "Information" + */ +typedef struct __zcl_information_cluster_update_command { + uint8_t accessControl; + uint8_t option; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * contents; +} sl_zcl_information_cluster_update_command_t; + +#define sl_zcl_information_cluster_update_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_information_cluster_update_command_t, accessControl), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_information_cluster_update_command_t, option), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_information_cluster_update_command_t, contents), \ +} + + +/** @brief Structure for ZCL command "Arm" from "IAS ACE" + */ +typedef struct __zcl_ias_ace_cluster_arm_command { + uint8_t armMode; + uint8_t * armDisarmCode; + uint8_t zoneId; +} sl_zcl_ias_ace_cluster_arm_command_t; + +#define sl_zcl_ias_ace_cluster_arm_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_ias_ace_cluster_arm_command_t, armMode), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_ias_ace_cluster_arm_command_t, armDisarmCode), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_ias_ace_cluster_arm_command_t, zoneId), \ +} + + +/** @brief Structure for ZCL command "ResetAlarm" from "Alarms" + */ +typedef struct __zcl_alarms_cluster_reset_alarm_command { + uint8_t alarmCode; + uint16_t clusterId; +} sl_zcl_alarms_cluster_reset_alarm_command_t; + +#define sl_zcl_alarms_cluster_reset_alarm_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_alarms_cluster_reset_alarm_command_t, alarmCode), \ + (ZAP_SIGNATURE_TYPE_CLUSTER_ID), offsetof(sl_zcl_alarms_cluster_reset_alarm_command_t, clusterId), \ +} + + +/** @brief Structure for ZCL command "Alarm" from "Alarms" + */ +typedef struct __zcl_alarms_cluster_alarm_command { + uint8_t alarmCode; + uint16_t clusterId; +} sl_zcl_alarms_cluster_alarm_command_t; + +#define sl_zcl_alarms_cluster_alarm_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_alarms_cluster_alarm_command_t, alarmCode), \ + (ZAP_SIGNATURE_TYPE_CLUSTER_ID), offsetof(sl_zcl_alarms_cluster_alarm_command_t, clusterId), \ +} + + +/** @brief Structure for ZCL command "TriggerEffect" from "Identify" + */ +typedef struct __zcl_identify_cluster_trigger_effect_command { + uint8_t effectId; + uint8_t effectVariant; +} sl_zcl_identify_cluster_trigger_effect_command_t; + +#define sl_zcl_identify_cluster_trigger_effect_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_identify_cluster_trigger_effect_command_t, effectId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_identify_cluster_trigger_effect_command_t, effectVariant), \ +} + + +/** @brief Structure for ZCL command "OffWithEffect" from "On/off" + */ +typedef struct __zcl_on_off_cluster_off_with_effect_command { + uint8_t effectId; + uint8_t effectVariant; +} sl_zcl_on_off_cluster_off_with_effect_command_t; + +#define sl_zcl_on_off_cluster_off_with_effect_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_on_off_cluster_off_with_effect_command_t, effectId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_on_off_cluster_off_with_effect_command_t, effectVariant), \ +} + + +/** @brief Structure for ZCL command "EstablishmentResponse" from "Voice over ZigBee" + */ +typedef struct __zcl_voice_over_zig_bee_cluster_establishment_response_command { + uint8_t ackNack; + uint8_t codecType; +} sl_zcl_voice_over_zig_bee_cluster_establishment_response_command_t; + +#define sl_zcl_voice_over_zig_bee_cluster_establishment_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_voice_over_zig_bee_cluster_establishment_response_command_t, ackNack), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_voice_over_zig_bee_cluster_establishment_response_command_t, codecType), \ +} + + +/** @brief Structure for ZCL command "SearchGame" from "Gaming" + */ +typedef struct __zcl_gaming_cluster_search_game_command { + uint8_t specificGame; + uint16_t gameId; +} sl_zcl_gaming_cluster_search_game_command_t; + +#define sl_zcl_gaming_cluster_search_game_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_gaming_cluster_search_game_command_t, specificGame), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_gaming_cluster_search_game_command_t, gameId), \ +} + + +/** @brief Structure for ZCL command "StartChatResponse" from "Chatting" + */ +typedef struct __zcl_chatting_cluster_start_chat_response_command { + uint8_t status; + uint16_t cid; +} sl_zcl_chatting_cluster_start_chat_response_command_t; + +#define sl_zcl_chatting_cluster_start_chat_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_chatting_cluster_start_chat_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_start_chat_response_command_t, cid), \ +} + + +/** @brief Structure for ZCL command "EnhancedMoveHue" from "Color Control" + */ +typedef struct __zcl_color_control_cluster_enhanced_move_hue_command { + uint8_t moveMode; + uint16_t rate; + uint8_t optionsMask; + uint8_t optionsOverride; +} sl_zcl_color_control_cluster_enhanced_move_hue_command_t; + +#define sl_zcl_color_control_cluster_enhanced_move_hue_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_color_control_cluster_enhanced_move_hue_command_t, moveMode), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_enhanced_move_hue_command_t, rate), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_enhanced_move_hue_command_t, optionsMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_enhanced_move_hue_command_t, optionsOverride), \ +} + + +/** @brief Structure for ZCL command "ConnectRequest" from "11073 Protocol Tunnel" + */ +typedef struct __zcl_11073_protocol_tunnel_cluster_connect_request_command { + uint8_t connectControl; + uint16_t idleTimeout; + uint8_t * managerTarget; + uint8_t managerEndpoint; +} sl_zcl_11073_protocol_tunnel_cluster_connect_request_command_t; + +#define sl_zcl_11073_protocol_tunnel_cluster_connect_request_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_11073_protocol_tunnel_cluster_connect_request_command_t, connectControl), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_11073_protocol_tunnel_cluster_connect_request_command_t, idleTimeout), \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_11073_protocol_tunnel_cluster_connect_request_command_t, managerTarget), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_11073_protocol_tunnel_cluster_connect_request_command_t, managerEndpoint), \ +} + + +/** @brief Structure for ZCL command "EnhancedStepHue" from "Color Control" + */ +typedef struct __zcl_color_control_cluster_enhanced_step_hue_command { + uint8_t stepMode; + uint16_t stepSize; + uint16_t transitionTime; + uint8_t optionsMask; + uint8_t optionsOverride; +} sl_zcl_color_control_cluster_enhanced_step_hue_command_t; + +#define sl_zcl_color_control_cluster_enhanced_step_hue_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_color_control_cluster_enhanced_step_hue_command_t, stepMode), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_enhanced_step_hue_command_t, stepSize), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_enhanced_step_hue_command_t, transitionTime), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_enhanced_step_hue_command_t, optionsMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_enhanced_step_hue_command_t, optionsOverride), \ +} + + +/** @brief Structure for ZCL command "MoveColorTemperature" from "Color Control" + */ +typedef struct __zcl_color_control_cluster_move_color_temperature_command { + uint8_t moveMode; + uint16_t rate; + uint16_t colorTemperatureMinimum; + uint16_t colorTemperatureMaximum; + uint8_t optionsMask; + uint8_t optionsOverride; +} sl_zcl_color_control_cluster_move_color_temperature_command_t; + +#define sl_zcl_color_control_cluster_move_color_temperature_command_signature { \ + 6, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_color_control_cluster_move_color_temperature_command_t, moveMode), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_move_color_temperature_command_t, rate), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_move_color_temperature_command_t, colorTemperatureMinimum), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_move_color_temperature_command_t, colorTemperatureMaximum), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_move_color_temperature_command_t, optionsMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_move_color_temperature_command_t, optionsOverride), \ +} + + +/** @brief Structure for ZCL command "StepColorTemperature" from "Color Control" + */ +typedef struct __zcl_color_control_cluster_step_color_temperature_command { + uint8_t stepMode; + uint16_t stepSize; + uint16_t transitionTime; + uint16_t colorTemperatureMinimum; + uint16_t colorTemperatureMaximum; + uint8_t optionsMask; + uint8_t optionsOverride; +} sl_zcl_color_control_cluster_step_color_temperature_command_t; + +#define sl_zcl_color_control_cluster_step_color_temperature_command_signature { \ + 7, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_color_control_cluster_step_color_temperature_command_t, stepMode), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_step_color_temperature_command_t, stepSize), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_step_color_temperature_command_t, transitionTime), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_step_color_temperature_command_t, colorTemperatureMinimum), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_step_color_temperature_command_t, colorTemperatureMaximum), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_step_color_temperature_command_t, optionsMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_step_color_temperature_command_t, optionsOverride), \ +} + + +/** @brief Structure for ZCL command "GetNodeInformationResponse" from "Chatting" + */ +typedef struct __zcl_chatting_cluster_get_node_information_response_command { + uint8_t status; + uint16_t cid; + uint16_t uid; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * addressEndpointAndNickname; +} sl_zcl_chatting_cluster_get_node_information_response_command_t; + +#define sl_zcl_chatting_cluster_get_node_information_response_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_chatting_cluster_get_node_information_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_get_node_information_response_command_t, cid), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_get_node_information_response_command_t, uid), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_chatting_cluster_get_node_information_response_command_t, addressEndpointAndNickname), \ +} + + +/** @brief Structure for ZCL command "JoinChatResponse" from "Chatting" + */ +typedef struct __zcl_chatting_cluster_join_chat_response_command { + uint8_t status; + uint16_t cid; + /* TYPE WARNING: ChatParticipant array defaults to */ uint8_t * chatParticipantList; +} sl_zcl_chatting_cluster_join_chat_response_command_t; + +#define sl_zcl_chatting_cluster_join_chat_response_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_chatting_cluster_join_chat_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_join_chat_response_command_t, cid), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_chatting_cluster_join_chat_response_command_t, chatParticipantList), \ +} + + +/** @brief Structure for ZCL command "PublishEvent" from "Events" + */ +typedef struct __zcl_events_cluster_publish_event_command { + uint8_t logId; + uint16_t eventId; + uint32_t eventTime; + uint8_t eventControl; + uint8_t * eventData; +} sl_zcl_events_cluster_publish_event_command_t; + +#define sl_zcl_events_cluster_publish_event_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_events_cluster_publish_event_command_t, logId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_events_cluster_publish_event_command_t, eventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_events_cluster_publish_event_command_t, eventTime), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_events_cluster_publish_event_command_t, eventControl), \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_events_cluster_publish_event_command_t, eventData), \ +} + + +/** @brief Structure for ZCL command "ConsumerTopUpResponse" from "Prepayment" + */ +typedef struct __zcl_prepayment_cluster_consumer_top_up_response_command { + uint8_t resultType; + uint32_t topUpValue; + uint8_t sourceOfTopUp; + uint32_t creditRemaining; +} sl_zcl_prepayment_cluster_consumer_top_up_response_command_t; + +#define sl_zcl_prepayment_cluster_consumer_top_up_response_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_prepayment_cluster_consumer_top_up_response_command_t, resultType), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_consumer_top_up_response_command_t, topUpValue), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_prepayment_cluster_consumer_top_up_response_command_t, sourceOfTopUp), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_consumer_top_up_response_command_t, creditRemaining), \ +} + + +/** @brief Structure for ZCL command "SetpointRaiseLower" from "Thermostat" + */ +typedef struct __zcl_thermostat_cluster_setpoint_raise_lower_command { + uint8_t mode; + int8_t amount; +} sl_zcl_thermostat_cluster_setpoint_raise_lower_command_t; + +#define sl_zcl_thermostat_cluster_setpoint_raise_lower_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_thermostat_cluster_setpoint_raise_lower_command_t, mode), \ + (ZAP_SIGNATURE_TYPE_INT8S), offsetof(sl_zcl_thermostat_cluster_setpoint_raise_lower_command_t, amount), \ +} + + +/** @brief Structure for ZCL command "MoveWithOnOff" from "Level Control" + */ +typedef struct __zcl_level_control_cluster_move_with_on_off_command { + uint8_t moveMode; + uint8_t rate; +} sl_zcl_level_control_cluster_move_with_on_off_command_t; + +#define sl_zcl_level_control_cluster_move_with_on_off_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_level_control_cluster_move_with_on_off_command_t, moveMode), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_level_control_cluster_move_with_on_off_command_t, rate), \ +} + + +/** @brief Structure for ZCL command "ZoneEnrollResponse" from "IAS Zone" + */ +typedef struct __zcl_ias_zone_cluster_zone_enroll_response_command { + uint8_t enrollResponseCode; + uint8_t zoneId; +} sl_zcl_ias_zone_cluster_zone_enroll_response_command_t; + +#define sl_zcl_ias_zone_cluster_zone_enroll_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_ias_zone_cluster_zone_enroll_response_command_t, enrollResponseCode), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_ias_zone_cluster_zone_enroll_response_command_t, zoneId), \ +} + + +/** @brief Structure for ZCL command "TerminateKeyEstablishmentFromClient" from "Key Establishment" + */ +typedef struct __zcl_key_establishment_cluster_terminate_key_establishment_from_client_command { + uint8_t statusCode; + uint8_t waitTime; + uint16_t keyEstablishmentSuite; +} sl_zcl_key_establishment_cluster_terminate_key_establishment_from_client_command_t; + +#define sl_zcl_key_establishment_cluster_terminate_key_establishment_from_client_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_key_establishment_cluster_terminate_key_establishment_from_client_command_t, statusCode), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_key_establishment_cluster_terminate_key_establishment_from_client_command_t, waitTime), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_key_establishment_cluster_terminate_key_establishment_from_client_command_t, keyEstablishmentSuite), \ +} + + +/** @brief Structure for ZCL command "TerminateKeyEstablishmentFromServer" from "Key Establishment" + */ +typedef struct __zcl_key_establishment_cluster_terminate_key_establishment_from_server_command { + uint8_t statusCode; + uint8_t waitTime; + uint16_t keyEstablishmentSuite; +} sl_zcl_key_establishment_cluster_terminate_key_establishment_from_server_command_t; + +#define sl_zcl_key_establishment_cluster_terminate_key_establishment_from_server_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_key_establishment_cluster_terminate_key_establishment_from_server_command_t, statusCode), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_key_establishment_cluster_terminate_key_establishment_from_server_command_t, waitTime), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_key_establishment_cluster_terminate_key_establishment_from_server_command_t, keyEstablishmentSuite), \ +} + + +/** @brief Structure for ZCL command "Move" from "Level Control" + */ +typedef struct __zcl_level_control_cluster_move_command { + uint8_t moveMode; + uint8_t rate; + uint8_t optionMask; + uint8_t optionOverride; +} sl_zcl_level_control_cluster_move_command_t; + +#define sl_zcl_level_control_cluster_move_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_level_control_cluster_move_command_t, moveMode), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_level_control_cluster_move_command_t, rate), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_level_control_cluster_move_command_t, optionMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_level_control_cluster_move_command_t, optionOverride), \ +} + + +/** @brief Structure for ZCL command "MoveHue" from "Color Control" + */ +typedef struct __zcl_color_control_cluster_move_hue_command { + uint8_t moveMode; + uint8_t rate; + uint8_t optionsMask; + uint8_t optionsOverride; +} sl_zcl_color_control_cluster_move_hue_command_t; + +#define sl_zcl_color_control_cluster_move_hue_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_color_control_cluster_move_hue_command_t, moveMode), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_color_control_cluster_move_hue_command_t, rate), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_move_hue_command_t, optionsMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_move_hue_command_t, optionsOverride), \ +} + + +/** @brief Structure for ZCL command "MoveSaturation" from "Color Control" + */ +typedef struct __zcl_color_control_cluster_move_saturation_command { + uint8_t moveMode; + uint8_t rate; + uint8_t optionsMask; + uint8_t optionsOverride; +} sl_zcl_color_control_cluster_move_saturation_command_t; + +#define sl_zcl_color_control_cluster_move_saturation_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_color_control_cluster_move_saturation_command_t, moveMode), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_color_control_cluster_move_saturation_command_t, rate), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_move_saturation_command_t, optionsMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_move_saturation_command_t, optionsOverride), \ +} + + +/** @brief Structure for ZCL command "GetPanelStatusResponse" from "IAS ACE" + */ +typedef struct __zcl_ias_ace_cluster_get_panel_status_response_command { + uint8_t panelStatus; + uint8_t secondsRemaining; + uint8_t audibleNotification; + uint8_t alarmStatus; +} sl_zcl_ias_ace_cluster_get_panel_status_response_command_t; + +#define sl_zcl_ias_ace_cluster_get_panel_status_response_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_ias_ace_cluster_get_panel_status_response_command_t, panelStatus), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_ias_ace_cluster_get_panel_status_response_command_t, secondsRemaining), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_ias_ace_cluster_get_panel_status_response_command_t, audibleNotification), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_ias_ace_cluster_get_panel_status_response_command_t, alarmStatus), \ +} + + +/** @brief Structure for ZCL command "PanelStatusChanged" from "IAS ACE" + */ +typedef struct __zcl_ias_ace_cluster_panel_status_changed_command { + uint8_t panelStatus; + uint8_t secondsRemaining; + uint8_t audibleNotification; + uint8_t alarmStatus; +} sl_zcl_ias_ace_cluster_panel_status_changed_command_t; + +#define sl_zcl_ias_ace_cluster_panel_status_changed_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_ias_ace_cluster_panel_status_changed_command_t, panelStatus), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_ias_ace_cluster_panel_status_changed_command_t, secondsRemaining), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_ias_ace_cluster_panel_status_changed_command_t, audibleNotification), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_ias_ace_cluster_panel_status_changed_command_t, alarmStatus), \ +} + + +/** @brief Structure for ZCL command "StepWithOnOff" from "Level Control" + */ +typedef struct __zcl_level_control_cluster_step_with_on_off_command { + uint8_t stepMode; + uint8_t stepSize; + uint16_t transitionTime; +} sl_zcl_level_control_cluster_step_with_on_off_command_t; + +#define sl_zcl_level_control_cluster_step_with_on_off_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_level_control_cluster_step_with_on_off_command_t, stepMode), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_level_control_cluster_step_with_on_off_command_t, stepSize), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_level_control_cluster_step_with_on_off_command_t, transitionTime), \ +} + + +/** @brief Structure for ZCL command "Step" from "Level Control" + */ +typedef struct __zcl_level_control_cluster_step_command { + uint8_t stepMode; + uint8_t stepSize; + uint16_t transitionTime; + uint8_t optionMask; + uint8_t optionOverride; +} sl_zcl_level_control_cluster_step_command_t; + +#define sl_zcl_level_control_cluster_step_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_level_control_cluster_step_command_t, stepMode), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_level_control_cluster_step_command_t, stepSize), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_level_control_cluster_step_command_t, transitionTime), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_level_control_cluster_step_command_t, optionMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_level_control_cluster_step_command_t, optionOverride), \ +} + + +/** @brief Structure for ZCL command "ImageNotify" from "Over the Air Bootloading" + */ +typedef struct __zcl_over_the_air_bootloading_cluster_image_notify_command { + uint8_t payloadType; + uint8_t queryJitter; + uint16_t manufacturerId; + uint16_t imageType; + uint32_t newFileVersion; +} sl_zcl_over_the_air_bootloading_cluster_image_notify_command_t; + +#define sl_zcl_over_the_air_bootloading_cluster_image_notify_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_notify_command_t, payloadType), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_notify_command_t, queryJitter), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_notify_command_t, manufacturerId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_notify_command_t, imageType), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_notify_command_t, newFileVersion), \ +} + + +/** @brief Structure for ZCL command "StepHue" from "Color Control" + */ +typedef struct __zcl_color_control_cluster_step_hue_command { + uint8_t stepMode; + uint8_t stepSize; + uint8_t transitionTime; + uint8_t optionsMask; + uint8_t optionsOverride; +} sl_zcl_color_control_cluster_step_hue_command_t; + +#define sl_zcl_color_control_cluster_step_hue_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_color_control_cluster_step_hue_command_t, stepMode), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_color_control_cluster_step_hue_command_t, stepSize), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_color_control_cluster_step_hue_command_t, transitionTime), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_step_hue_command_t, optionsMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_step_hue_command_t, optionsOverride), \ +} + + +/** @brief Structure for ZCL command "StepSaturation" from "Color Control" + */ +typedef struct __zcl_color_control_cluster_step_saturation_command { + uint8_t stepMode; + uint8_t stepSize; + uint8_t transitionTime; + uint8_t optionsMask; + uint8_t optionsOverride; +} sl_zcl_color_control_cluster_step_saturation_command_t; + +#define sl_zcl_color_control_cluster_step_saturation_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_color_control_cluster_step_saturation_command_t, stepMode), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_color_control_cluster_step_saturation_command_t, stepSize), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_color_control_cluster_step_saturation_command_t, transitionTime), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_step_saturation_command_t, optionsMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_step_saturation_command_t, optionsOverride), \ +} + + +/** @brief Structure for ZCL command "GpProxyTableResponse" from "Green Power" + */ +typedef struct __zcl_green_power_cluster_gp_proxy_table_response_command { + uint8_t status; + uint8_t totalNumberOfNonEmptyProxyTableEntries; + uint8_t startIndex; + uint8_t entriesCount; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * proxyTableEntries; +} sl_zcl_green_power_cluster_gp_proxy_table_response_command_t; + +#define sl_zcl_green_power_cluster_gp_proxy_table_response_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_green_power_cluster_gp_proxy_table_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_green_power_cluster_gp_proxy_table_response_command_t, totalNumberOfNonEmptyProxyTableEntries), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_green_power_cluster_gp_proxy_table_response_command_t, startIndex), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_green_power_cluster_gp_proxy_table_response_command_t, entriesCount), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_green_power_cluster_gp_proxy_table_response_command_t, proxyTableEntries), \ +} + + +/** @brief Structure for ZCL command "GpSinkTableResponse" from "Green Power" + */ +typedef struct __zcl_green_power_cluster_gp_sink_table_response_command { + uint8_t status; + uint8_t totalNumberofNonEmptySinkTableEntries; + uint8_t startIndex; + uint8_t sinkTableEntriesCount; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * sinkTableEntries; +} sl_zcl_green_power_cluster_gp_sink_table_response_command_t; + +#define sl_zcl_green_power_cluster_gp_sink_table_response_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_green_power_cluster_gp_sink_table_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_green_power_cluster_gp_sink_table_response_command_t, totalNumberofNonEmptySinkTableEntries), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_green_power_cluster_gp_sink_table_response_command_t, startIndex), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_green_power_cluster_gp_sink_table_response_command_t, sinkTableEntriesCount), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_green_power_cluster_gp_sink_table_response_command_t, sinkTableEntries), \ +} + + +/** @brief Structure for ZCL command "WriteFileResponse" from "Data Sharing" + */ +typedef struct __zcl_data_sharing_cluster_write_file_response_command { + uint8_t status; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * fileIndex; +} sl_zcl_data_sharing_cluster_write_file_response_command_t; + +#define sl_zcl_data_sharing_cluster_write_file_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_data_sharing_cluster_write_file_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_data_sharing_cluster_write_file_response_command_t, fileIndex), \ +} + + +/** @brief Structure for ZCL command "ConsumerTopUp" from "Prepayment" + */ +typedef struct __zcl_prepayment_cluster_consumer_top_up_command { + uint8_t originatingDevice; + uint8_t * topUpCode; +} sl_zcl_prepayment_cluster_consumer_top_up_command_t; + +#define sl_zcl_prepayment_cluster_consumer_top_up_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_prepayment_cluster_consumer_top_up_command_t, originatingDevice), \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_prepayment_cluster_consumer_top_up_command_t, topUpCode), \ +} + + +/** @brief Structure for ZCL command "GetProfile" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_get_profile_command { + uint8_t intervalChannel; + uint32_t endTime; + uint8_t numberOfPeriods; +} sl_zcl_simple_metering_cluster_get_profile_command_t; + +#define sl_zcl_simple_metering_cluster_get_profile_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_simple_metering_cluster_get_profile_command_t, intervalChannel), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_simple_metering_cluster_get_profile_command_t, endTime), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_simple_metering_cluster_get_profile_command_t, numberOfPeriods), \ +} + + +/** @brief Structure for ZCL command "GpTranslationTableResponse" from "Green Power" + */ +typedef struct __zcl_green_power_cluster_gp_translation_table_response_command { + uint8_t status; + uint8_t options; + uint8_t totalNumberOfEntries; + uint8_t startIndex; + uint8_t entriesCount; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * translationTableList; +} sl_zcl_green_power_cluster_gp_translation_table_response_command_t; + +#define sl_zcl_green_power_cluster_gp_translation_table_response_command_signature { \ + 6, \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_green_power_cluster_gp_translation_table_response_command_t, status), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_green_power_cluster_gp_translation_table_response_command_t, options), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_green_power_cluster_gp_translation_table_response_command_t, totalNumberOfEntries), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_green_power_cluster_gp_translation_table_response_command_t, startIndex), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_green_power_cluster_gp_translation_table_response_command_t, entriesCount), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_green_power_cluster_gp_translation_table_response_command_t, translationTableList), \ +} + + +/** @brief Structure for ZCL command "GetDeviceConfiguration" from "RSSI Location" + */ +typedef struct __zcl_rssi_location_cluster_get_device_configuration_command { + uint8_t * targetAddress; +} sl_zcl_rssi_location_cluster_get_device_configuration_command_t; + +#define sl_zcl_rssi_location_cluster_get_device_configuration_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_rssi_location_cluster_get_device_configuration_command_t, targetAddress), \ +} + + +/** @brief Structure for ZCL command "RequestOwnLocation" from "RSSI Location" + */ +typedef struct __zcl_rssi_location_cluster_request_own_location_command { + uint8_t * blindNode; +} sl_zcl_rssi_location_cluster_request_own_location_command_t; + +#define sl_zcl_rssi_location_cluster_request_own_location_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_rssi_location_cluster_request_own_location_command_t, blindNode), \ +} + + +/** @brief Structure for ZCL command "DisconnectRequest" from "11073 Protocol Tunnel" + */ +typedef struct __zcl_11073_protocol_tunnel_cluster_disconnect_request_command { + uint8_t * managerIEEEAddress; +} sl_zcl_11073_protocol_tunnel_cluster_disconnect_request_command_t; + +#define sl_zcl_11073_protocol_tunnel_cluster_disconnect_request_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_11073_protocol_tunnel_cluster_disconnect_request_command_t, managerIEEEAddress), \ +} + + +/** @brief Structure for ZCL command "AnchorNodeAnnounce" from "RSSI Location" + */ +typedef struct __zcl_rssi_location_cluster_anchor_node_announce_command { + uint8_t * anchorNodeIeeeAddress; + int16_t coordinate1; + int16_t coordinate2; + int16_t coordinate3; +} sl_zcl_rssi_location_cluster_anchor_node_announce_command_t; + +#define sl_zcl_rssi_location_cluster_anchor_node_announce_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_rssi_location_cluster_anchor_node_announce_command_t, anchorNodeIeeeAddress), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_anchor_node_announce_command_t, coordinate1), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_anchor_node_announce_command_t, coordinate2), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_anchor_node_announce_command_t, coordinate3), \ +} + + +/** @brief Structure for ZCL command "RssiResponse" from "RSSI Location" + */ +typedef struct __zcl_rssi_location_cluster_rssi_response_command { + uint8_t * replyingDevice; + int16_t coordinate1; + int16_t coordinate2; + int16_t coordinate3; + int8_t rssi; + uint8_t numberRssiMeasurements; +} sl_zcl_rssi_location_cluster_rssi_response_command_t; + +#define sl_zcl_rssi_location_cluster_rssi_response_command_signature { \ + 6, \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_rssi_location_cluster_rssi_response_command_t, replyingDevice), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_rssi_response_command_t, coordinate1), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_rssi_response_command_t, coordinate2), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_rssi_response_command_t, coordinate3), \ + (ZAP_SIGNATURE_TYPE_INT8S), offsetof(sl_zcl_rssi_location_cluster_rssi_response_command_t, rssi), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_rssi_location_cluster_rssi_response_command_t, numberRssiMeasurements), \ +} + + +/** @brief Structure for ZCL command "ShortAddressChange" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_short_address_change_command { + uint8_t * deviceEui64; + uint16_t deviceShort; +} sl_zcl_sl_works_with_all_hubs_cluster_short_address_change_command_t; + +#define sl_zcl_sl_works_with_all_hubs_cluster_short_address_change_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_short_address_change_command_t, deviceEui64), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_short_address_change_command_t, deviceShort), \ +} + + +/** @brief Structure for ZCL command "QuerySpecificFileRequest" from "Over the Air Bootloading" + */ +typedef struct __zcl_over_the_air_bootloading_cluster_query_specific_file_request_command { + uint8_t * requestNodeAddress; + uint16_t manufacturerId; + uint16_t imageType; + uint32_t fileVersion; + uint16_t currentZigbeeStackVersion; +} sl_zcl_over_the_air_bootloading_cluster_query_specific_file_request_command_t; + +#define sl_zcl_over_the_air_bootloading_cluster_query_specific_file_request_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_over_the_air_bootloading_cluster_query_specific_file_request_command_t, requestNodeAddress), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_query_specific_file_request_command_t, manufacturerId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_query_specific_file_request_command_t, imageType), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_over_the_air_bootloading_cluster_query_specific_file_request_command_t, fileVersion), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_query_specific_file_request_command_t, currentZigbeeStackVersion), \ +} + + +/** @brief Structure for ZCL command "EndpointInformation" from "ZLL Commissioning" + */ +typedef struct __zcl_zll_commissioning_cluster_endpoint_information_command { + uint8_t * ieeeAddress; + uint16_t networkAddress; + uint8_t endpointId; + uint16_t profileId; + uint16_t deviceId; + uint8_t version; +} sl_zcl_zll_commissioning_cluster_endpoint_information_command_t; + +#define sl_zcl_zll_commissioning_cluster_endpoint_information_command_signature { \ + 6, \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_zll_commissioning_cluster_endpoint_information_command_t, ieeeAddress), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_endpoint_information_command_t, networkAddress), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_endpoint_information_command_t, endpointId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_endpoint_information_command_t, profileId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_endpoint_information_command_t, deviceId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_endpoint_information_command_t, version), \ +} + + +/** @brief Structure for ZCL command "SendPings" from "RSSI Location" + */ +typedef struct __zcl_rssi_location_cluster_send_pings_command { + uint8_t * targetAddress; + uint8_t numberRssiMeasurements; + uint16_t calculationPeriod; +} sl_zcl_rssi_location_cluster_send_pings_command_t; + +#define sl_zcl_rssi_location_cluster_send_pings_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_rssi_location_cluster_send_pings_command_t, targetAddress), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_rssi_location_cluster_send_pings_command_t, numberRssiMeasurements), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_rssi_location_cluster_send_pings_command_t, calculationPeriod), \ +} + + +/** @brief Structure for ZCL command "ReportRssiMeasurements" from "RSSI Location" + */ +typedef struct __zcl_rssi_location_cluster_report_rssi_measurements_command { + uint8_t * measuringDevice; + uint8_t neighbors; + /* TYPE WARNING: NeighborInfo array defaults to */ uint8_t * neighborsInfo; +} sl_zcl_rssi_location_cluster_report_rssi_measurements_command_t; + +#define sl_zcl_rssi_location_cluster_report_rssi_measurements_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_rssi_location_cluster_report_rssi_measurements_command_t, measuringDevice), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_rssi_location_cluster_report_rssi_measurements_command_t, neighbors), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_rssi_location_cluster_report_rssi_measurements_command_t, neighborsInfo), \ +} + + +/** @brief Structure for ZCL command "MatchProtocolAddressResponse" from "Generic Tunnel" + */ +typedef struct __zcl_generic_tunnel_cluster_match_protocol_address_response_command { + uint8_t * deviceIeeeAddress; + uint8_t * protocolAddress; +} sl_zcl_generic_tunnel_cluster_match_protocol_address_response_command_t; + +#define sl_zcl_generic_tunnel_cluster_match_protocol_address_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_generic_tunnel_cluster_match_protocol_address_response_command_t, deviceIeeeAddress), \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_generic_tunnel_cluster_match_protocol_address_response_command_t, protocolAddress), \ +} + + +/** @brief Structure for ZCL command "MoveColor" from "Color Control" + */ +typedef struct __zcl_color_control_cluster_move_color_command { + int16_t rateX; + int16_t rateY; + uint8_t optionsMask; + uint8_t optionsOverride; +} sl_zcl_color_control_cluster_move_color_command_t; + +#define sl_zcl_color_control_cluster_move_color_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_color_control_cluster_move_color_command_t, rateX), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_color_control_cluster_move_color_command_t, rateY), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_move_color_command_t, optionsMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_move_color_command_t, optionsOverride), \ +} + + +/** @brief Structure for ZCL command "SetAbsoluteLocation" from "RSSI Location" + */ +typedef struct __zcl_rssi_location_cluster_set_absolute_location_command { + int16_t coordinate1; + int16_t coordinate2; + int16_t coordinate3; + int16_t power; + uint16_t pathLossExponent; +} sl_zcl_rssi_location_cluster_set_absolute_location_command_t; + +#define sl_zcl_rssi_location_cluster_set_absolute_location_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_set_absolute_location_command_t, coordinate1), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_set_absolute_location_command_t, coordinate2), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_set_absolute_location_command_t, coordinate3), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_set_absolute_location_command_t, power), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_rssi_location_cluster_set_absolute_location_command_t, pathLossExponent), \ +} + + +/** @brief Structure for ZCL command "StepColor" from "Color Control" + */ +typedef struct __zcl_color_control_cluster_step_color_command { + int16_t stepX; + int16_t stepY; + uint16_t transitionTime; + uint8_t optionsMask; + uint8_t optionsOverride; +} sl_zcl_color_control_cluster_step_color_command_t; + +#define sl_zcl_color_control_cluster_step_color_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_color_control_cluster_step_color_command_t, stepX), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_color_control_cluster_step_color_command_t, stepY), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_step_color_command_t, transitionTime), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_step_color_command_t, optionsMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_step_color_command_t, optionsOverride), \ +} + + +/** @brief Structure for ZCL command "SetDeviceConfiguration" from "RSSI Location" + */ +typedef struct __zcl_rssi_location_cluster_set_device_configuration_command { + int16_t power; + uint16_t pathLossExponent; + uint16_t calculationPeriod; + uint8_t numberRssiMeasurements; + uint16_t reportingPeriod; +} sl_zcl_rssi_location_cluster_set_device_configuration_command_t; + +#define sl_zcl_rssi_location_cluster_set_device_configuration_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_set_device_configuration_command_t, power), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_rssi_location_cluster_set_device_configuration_command_t, pathLossExponent), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_rssi_location_cluster_set_device_configuration_command_t, calculationPeriod), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_rssi_location_cluster_set_device_configuration_command_t, numberRssiMeasurements), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_rssi_location_cluster_set_device_configuration_command_t, reportingPeriod), \ +} + + +/** @brief Structure for ZCL command "Identify" from "Identify" + */ +typedef struct __zcl_identify_cluster_identify_command { + uint16_t identifyTime; +} sl_zcl_identify_cluster_identify_command_t; + +#define sl_zcl_identify_cluster_identify_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_identify_cluster_identify_command_t, identifyTime), \ +} + + +/** @brief Structure for ZCL command "IdentifyQueryResponse" from "Identify" + */ +typedef struct __zcl_identify_cluster_identify_query_response_command { + uint16_t timeout; +} sl_zcl_identify_cluster_identify_query_response_command_t; + +#define sl_zcl_identify_cluster_identify_query_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_identify_cluster_identify_query_response_command_t, timeout), \ +} + + +/** @brief Structure for ZCL command "ViewGroup" from "Groups" + */ +typedef struct __zcl_groups_cluster_view_group_command { + uint16_t groupId; +} sl_zcl_groups_cluster_view_group_command_t; + +#define sl_zcl_groups_cluster_view_group_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_groups_cluster_view_group_command_t, groupId), \ +} + + +/** @brief Structure for ZCL command "RemoveGroup" from "Groups" + */ +typedef struct __zcl_groups_cluster_remove_group_command { + uint16_t groupId; +} sl_zcl_groups_cluster_remove_group_command_t; + +#define sl_zcl_groups_cluster_remove_group_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_groups_cluster_remove_group_command_t, groupId), \ +} + + +/** @brief Structure for ZCL command "RemoveAllScenes" from "Scenes" + */ +typedef struct __zcl_scenes_cluster_remove_all_scenes_command { + uint16_t groupId; +} sl_zcl_scenes_cluster_remove_all_scenes_command_t; + +#define sl_zcl_scenes_cluster_remove_all_scenes_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_remove_all_scenes_command_t, groupId), \ +} + + +/** @brief Structure for ZCL command "GetSceneMembership" from "Scenes" + */ +typedef struct __zcl_scenes_cluster_get_scene_membership_command { + uint16_t groupId; +} sl_zcl_scenes_cluster_get_scene_membership_command_t; + +#define sl_zcl_scenes_cluster_get_scene_membership_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_get_scene_membership_command_t, groupId), \ +} + + +/** @brief Structure for ZCL command "MoveToClosestFrequency" from "Level Control" + */ +typedef struct __zcl_level_control_cluster_move_to_closest_frequency_command { + uint16_t frequency; +} sl_zcl_level_control_cluster_move_to_closest_frequency_command_t; + +#define sl_zcl_level_control_cluster_move_to_closest_frequency_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_level_control_cluster_move_to_closest_frequency_command_t, frequency), \ +} + + +/** @brief Structure for ZCL command "SetShortPollInterval" from "Poll Control" + */ +typedef struct __zcl_poll_control_cluster_set_short_poll_interval_command { + uint16_t newShortPollInterval; +} sl_zcl_poll_control_cluster_set_short_poll_interval_command_t; + +#define sl_zcl_poll_control_cluster_set_short_poll_interval_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_poll_control_cluster_set_short_poll_interval_command_t, newShortPollInterval), \ +} + + +/** @brief Structure for ZCL command "GetLogRecord" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_get_log_record_command { + uint16_t logIndex; +} sl_zcl_door_lock_cluster_get_log_record_command_t; + +#define sl_zcl_door_lock_cluster_get_log_record_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_get_log_record_command_t, logIndex), \ +} + + +/** @brief Structure for ZCL command "GetPin" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_get_pin_command { + uint16_t userId; +} sl_zcl_door_lock_cluster_get_pin_command_t; + +#define sl_zcl_door_lock_cluster_get_pin_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_get_pin_command_t, userId), \ +} + + +/** @brief Structure for ZCL command "ClearPin" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_clear_pin_command { + uint16_t userId; +} sl_zcl_door_lock_cluster_clear_pin_command_t; + +#define sl_zcl_door_lock_cluster_clear_pin_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_clear_pin_command_t, userId), \ +} + + +/** @brief Structure for ZCL command "GetUserStatus" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_get_user_status_command { + uint16_t userId; +} sl_zcl_door_lock_cluster_get_user_status_command_t; + +#define sl_zcl_door_lock_cluster_get_user_status_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_get_user_status_command_t, userId), \ +} + + +/** @brief Structure for ZCL command "GetUserType" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_get_user_type_command { + uint16_t userId; +} sl_zcl_door_lock_cluster_get_user_type_command_t; + +#define sl_zcl_door_lock_cluster_get_user_type_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_get_user_type_command_t, userId), \ +} + + +/** @brief Structure for ZCL command "GetRfid" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_get_rfid_command { + uint16_t userId; +} sl_zcl_door_lock_cluster_get_rfid_command_t; + +#define sl_zcl_door_lock_cluster_get_rfid_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_get_rfid_command_t, userId), \ +} + + +/** @brief Structure for ZCL command "ClearRfid" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_clear_rfid_command { + uint16_t userId; +} sl_zcl_door_lock_cluster_clear_rfid_command_t; + +#define sl_zcl_door_lock_cluster_clear_rfid_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_clear_rfid_command_t, userId), \ +} + + +/** @brief Structure for ZCL command "GetDisposableSchedule" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_get_disposable_schedule_command { + uint16_t userId; +} sl_zcl_door_lock_cluster_get_disposable_schedule_command_t; + +#define sl_zcl_door_lock_cluster_get_disposable_schedule_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_get_disposable_schedule_command_t, userId), \ +} + + +/** @brief Structure for ZCL command "ClearDisposableSchedule" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_clear_disposable_schedule_command { + uint16_t userId; +} sl_zcl_door_lock_cluster_clear_disposable_schedule_command_t; + +#define sl_zcl_door_lock_cluster_clear_disposable_schedule_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_clear_disposable_schedule_command_t, userId), \ +} + + +/** @brief Structure for ZCL command "ClearBiometricCredential" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_clear_biometric_credential_command { + uint16_t userId; +} sl_zcl_door_lock_cluster_clear_biometric_credential_command_t; + +#define sl_zcl_door_lock_cluster_clear_biometric_credential_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_clear_biometric_credential_command_t, userId), \ +} + + +/** @brief Structure for ZCL command "WindowCoveringGoToLiftValue" from "Window Covering" + */ +typedef struct __zcl_window_covering_cluster_window_covering_go_to_lift_value_command { + uint16_t liftValue; +} sl_zcl_window_covering_cluster_window_covering_go_to_lift_value_command_t; + +#define sl_zcl_window_covering_cluster_window_covering_go_to_lift_value_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_window_covering_cluster_window_covering_go_to_lift_value_command_t, liftValue), \ +} + + +/** @brief Structure for ZCL command "WindowCoveringGoToTiltValue" from "Window Covering" + */ +typedef struct __zcl_window_covering_cluster_window_covering_go_to_tilt_value_command { + uint16_t tiltValue; +} sl_zcl_window_covering_cluster_window_covering_go_to_tilt_value_command_t; + +#define sl_zcl_window_covering_cluster_window_covering_go_to_tilt_value_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_window_covering_cluster_window_covering_go_to_tilt_value_command_t, tiltValue), \ +} + + +/** @brief Structure for ZCL command "RequestMirrorResponse" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_request_mirror_response_command { + uint16_t endpointId; +} sl_zcl_simple_metering_cluster_request_mirror_response_command_t; + +#define sl_zcl_simple_metering_cluster_request_mirror_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_simple_metering_cluster_request_mirror_response_command_t, endpointId), \ +} + + +/** @brief Structure for ZCL command "MirrorRemoved" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_mirror_removed_command { + uint16_t endpointId; +} sl_zcl_simple_metering_cluster_mirror_removed_command_t; + +#define sl_zcl_simple_metering_cluster_mirror_removed_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_simple_metering_cluster_mirror_removed_command_t, endpointId), \ +} + + +/** @brief Structure for ZCL command "StartSamplingResponse" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_start_sampling_response_command { + uint16_t sampleId; +} sl_zcl_simple_metering_cluster_start_sampling_response_command_t; + +#define sl_zcl_simple_metering_cluster_start_sampling_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_simple_metering_cluster_start_sampling_response_command_t, sampleId), \ +} + + +/** @brief Structure for ZCL command "CloseTunnel" from "Tunneling" + */ +typedef struct __zcl_tunneling_cluster_close_tunnel_command { + uint16_t tunnelId; +} sl_zcl_tunneling_cluster_close_tunnel_command_t; + +#define sl_zcl_tunneling_cluster_close_tunnel_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_tunneling_cluster_close_tunnel_command_t, tunnelId), \ +} + + +/** @brief Structure for ZCL command "TunnelClosureNotification" from "Tunneling" + */ +typedef struct __zcl_tunneling_cluster_tunnel_closure_notification_command { + uint16_t tunnelId; +} sl_zcl_tunneling_cluster_tunnel_closure_notification_command_t; + +#define sl_zcl_tunneling_cluster_tunnel_closure_notification_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_tunneling_cluster_tunnel_closure_notification_command_t, tunnelId), \ +} + + +/** @brief Structure for ZCL command "GetEventConfiguration" from "Device Management" + */ +typedef struct __zcl_device_management_cluster_get_event_configuration_command { + uint16_t eventId; +} sl_zcl_device_management_cluster_get_event_configuration_command_t; + +#define sl_zcl_device_management_cluster_get_event_configuration_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_device_management_cluster_get_event_configuration_command_t, eventId), \ +} + + +/** @brief Structure for ZCL command "ConfigureSetRootId" from "Information" + */ +typedef struct __zcl_information_cluster_configure_set_root_id_command { + uint16_t rootId; +} sl_zcl_information_cluster_configure_set_root_id_command_t; + +#define sl_zcl_information_cluster_configure_set_root_id_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_information_cluster_configure_set_root_id_command_t, rootId), \ +} + + +/** @brief Structure for ZCL command "SwitchChairmanRequest" from "Chatting" + */ +typedef struct __zcl_chatting_cluster_switch_chairman_request_command { + uint16_t cid; +} sl_zcl_chatting_cluster_switch_chairman_request_command_t; + +#define sl_zcl_chatting_cluster_switch_chairman_request_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_switch_chairman_request_command_t, cid), \ +} + + +/** @brief Structure for ZCL command "ReadTokens" from "Configuration Cluster" + */ +typedef struct __zcl_configuration_cluster_cluster_read_tokens_command { + uint16_t token; +} sl_zcl_configuration_cluster_cluster_read_tokens_command_t; + +#define sl_zcl_configuration_cluster_cluster_read_tokens_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_configuration_cluster_cluster_read_tokens_command_t, token), \ +} + + +/** @brief Structure for ZCL command "EnablePeriodicRouterCheckIns" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_enable_periodic_router_check_ins_command { + uint16_t checkInInterval; +} sl_zcl_sl_works_with_all_hubs_cluster_enable_periodic_router_check_ins_command_t; + +#define sl_zcl_sl_works_with_all_hubs_cluster_enable_periodic_router_check_ins_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_enable_periodic_router_check_ins_command_t, checkInInterval), \ +} + + +/** @brief Structure for ZCL command "RelayStatusLog" from "Thermostat" + */ +typedef struct __zcl_thermostat_cluster_relay_status_log_command { + uint16_t timeOfDay; + uint16_t relayStatus; + int16_t localTemperature; + uint8_t humidityInPercentage; + int16_t setpoint; + uint16_t unreadEntries; +} sl_zcl_thermostat_cluster_relay_status_log_command_t; + +#define sl_zcl_thermostat_cluster_relay_status_log_command_signature { \ + 6, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_thermostat_cluster_relay_status_log_command_t, timeOfDay), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_thermostat_cluster_relay_status_log_command_t, relayStatus), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_thermostat_cluster_relay_status_log_command_t, localTemperature), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_thermostat_cluster_relay_status_log_command_t, humidityInPercentage), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_thermostat_cluster_relay_status_log_command_t, setpoint), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_thermostat_cluster_relay_status_log_command_t, unreadEntries), \ +} + + +/** @brief Structure for ZCL command "JoinGame" from "Gaming" + */ +typedef struct __zcl_gaming_cluster_join_game_command { + uint16_t gameId; + uint8_t joinAsMaster; + uint8_t * nameOfGame; +} sl_zcl_gaming_cluster_join_game_command_t; + +#define sl_zcl_gaming_cluster_join_game_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_gaming_cluster_join_game_command_t, gameId), \ + (ZAP_SIGNATURE_TYPE_BOOLEAN), offsetof(sl_zcl_gaming_cluster_join_game_command_t, joinAsMaster), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_gaming_cluster_join_game_command_t, nameOfGame), \ +} + + +/** @brief Structure for ZCL command "GameAnnouncement" from "Gaming" + */ +typedef struct __zcl_gaming_cluster_game_announcement_command { + uint16_t gameId; + uint8_t gameMaster; + uint8_t * listOfGame; +} sl_zcl_gaming_cluster_game_announcement_command_t; + +#define sl_zcl_gaming_cluster_game_announcement_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_gaming_cluster_game_announcement_command_t, gameId), \ + (ZAP_SIGNATURE_TYPE_BOOLEAN), offsetof(sl_zcl_gaming_cluster_game_announcement_command_t, gameMaster), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_gaming_cluster_game_announcement_command_t, listOfGame), \ +} + + +/** @brief Structure for ZCL command "AddGroup" from "Groups" + */ +typedef struct __zcl_groups_cluster_add_group_command { + uint16_t groupId; + uint8_t * groupName; +} sl_zcl_groups_cluster_add_group_command_t; + +#define sl_zcl_groups_cluster_add_group_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_groups_cluster_add_group_command_t, groupId), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_groups_cluster_add_group_command_t, groupName), \ +} + + +/** @brief Structure for ZCL command "AddGroupIfIdentifying" from "Groups" + */ +typedef struct __zcl_groups_cluster_add_group_if_identifying_command { + uint16_t groupId; + uint8_t * groupName; +} sl_zcl_groups_cluster_add_group_if_identifying_command_t; + +#define sl_zcl_groups_cluster_add_group_if_identifying_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_groups_cluster_add_group_if_identifying_command_t, groupId), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_groups_cluster_add_group_if_identifying_command_t, groupName), \ +} + + +/** @brief Structure for ZCL command "JoinChatRequest" from "Chatting" + */ +typedef struct __zcl_chatting_cluster_join_chat_request_command { + uint16_t uid; + uint8_t * nickname; + uint16_t cid; +} sl_zcl_chatting_cluster_join_chat_request_command_t; + +#define sl_zcl_chatting_cluster_join_chat_request_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_join_chat_request_command_t, uid), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_chatting_cluster_join_chat_request_command_t, nickname), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_join_chat_request_command_t, cid), \ +} + + +/** @brief Structure for ZCL command "UnlockWithTimeout" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_unlock_with_timeout_command { + uint16_t timeoutInSeconds; + uint8_t * pin; +} sl_zcl_door_lock_cluster_unlock_with_timeout_command_t; + +#define sl_zcl_door_lock_cluster_unlock_with_timeout_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_unlock_with_timeout_command_t, timeoutInSeconds), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_door_lock_cluster_unlock_with_timeout_command_t, pin), \ +} + + +/** @brief Structure for ZCL command "SetUserType" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_set_user_type_command { + uint16_t userId; + uint8_t userType; +} sl_zcl_door_lock_cluster_set_user_type_command_t; + +#define sl_zcl_door_lock_cluster_set_user_type_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_set_user_type_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_door_lock_cluster_set_user_type_command_t, userType), \ +} + + +/** @brief Structure for ZCL command "GetUserTypeResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_get_user_type_response_command { + uint16_t userId; + uint8_t userType; +} sl_zcl_door_lock_cluster_get_user_type_response_command_t; + +#define sl_zcl_door_lock_cluster_get_user_type_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_get_user_type_response_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_door_lock_cluster_get_user_type_response_command_t, userType), \ +} + + +/** @brief Structure for ZCL command "TransferDataErrorClientToServer" from "Tunneling" + */ +typedef struct __zcl_tunneling_cluster_transfer_data_error_client_to_server_command { + uint16_t tunnelId; + uint8_t transferDataStatus; +} sl_zcl_tunneling_cluster_transfer_data_error_client_to_server_command_t; + +#define sl_zcl_tunneling_cluster_transfer_data_error_client_to_server_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_tunneling_cluster_transfer_data_error_client_to_server_command_t, tunnelId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_tunneling_cluster_transfer_data_error_client_to_server_command_t, transferDataStatus), \ +} + + +/** @brief Structure for ZCL command "TransferDataErrorServerToClient" from "Tunneling" + */ +typedef struct __zcl_tunneling_cluster_transfer_data_error_server_to_client_command { + uint16_t tunnelId; + uint8_t transferDataStatus; +} sl_zcl_tunneling_cluster_transfer_data_error_server_to_client_command_t; + +#define sl_zcl_tunneling_cluster_transfer_data_error_server_to_client_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_tunneling_cluster_transfer_data_error_server_to_client_command_t, tunnelId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_tunneling_cluster_transfer_data_error_server_to_client_command_t, transferDataStatus), \ +} + + +/** @brief Structure for ZCL command "SetPin" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_set_pin_command { + uint16_t userId; + uint8_t userStatus; + uint8_t userType; + uint8_t * pin; +} sl_zcl_door_lock_cluster_set_pin_command_t; + +#define sl_zcl_door_lock_cluster_set_pin_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_set_pin_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_door_lock_cluster_set_pin_command_t, userStatus), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_door_lock_cluster_set_pin_command_t, userType), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_door_lock_cluster_set_pin_command_t, pin), \ +} + + +/** @brief Structure for ZCL command "SetRfid" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_set_rfid_command { + uint16_t userId; + uint8_t userStatus; + uint8_t userType; + uint8_t * id; +} sl_zcl_door_lock_cluster_set_rfid_command_t; + +#define sl_zcl_door_lock_cluster_set_rfid_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_set_rfid_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_door_lock_cluster_set_rfid_command_t, userStatus), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_door_lock_cluster_set_rfid_command_t, userType), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_door_lock_cluster_set_rfid_command_t, id), \ +} + + +/** @brief Structure for ZCL command "GetPinResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_get_pin_response_command { + uint16_t userId; + uint8_t userStatus; + uint8_t userType; + uint8_t * pin; +} sl_zcl_door_lock_cluster_get_pin_response_command_t; + +#define sl_zcl_door_lock_cluster_get_pin_response_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_get_pin_response_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_door_lock_cluster_get_pin_response_command_t, userStatus), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_door_lock_cluster_get_pin_response_command_t, userType), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_door_lock_cluster_get_pin_response_command_t, pin), \ +} + + +/** @brief Structure for ZCL command "GetRfidResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_get_rfid_response_command { + uint16_t userId; + uint8_t userStatus; + uint8_t userType; + uint8_t * rfid; +} sl_zcl_door_lock_cluster_get_rfid_response_command_t; + +#define sl_zcl_door_lock_cluster_get_rfid_response_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_get_rfid_response_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_door_lock_cluster_get_rfid_response_command_t, userStatus), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_door_lock_cluster_get_rfid_response_command_t, userType), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_door_lock_cluster_get_rfid_response_command_t, rfid), \ +} + + +/** @brief Structure for ZCL command "EnhancedMoveToHue" from "Color Control" + */ +typedef struct __zcl_color_control_cluster_enhanced_move_to_hue_command { + uint16_t enhancedHue; + uint8_t direction; + uint16_t transitionTime; + uint8_t optionsMask; + uint8_t optionsOverride; +} sl_zcl_color_control_cluster_enhanced_move_to_hue_command_t; + +#define sl_zcl_color_control_cluster_enhanced_move_to_hue_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_enhanced_move_to_hue_command_t, enhancedHue), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_color_control_cluster_enhanced_move_to_hue_command_t, direction), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_enhanced_move_to_hue_command_t, transitionTime), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_enhanced_move_to_hue_command_t, optionsMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_enhanced_move_to_hue_command_t, optionsOverride), \ +} + + +/** @brief Structure for ZCL command "RequestTunnelResponse" from "Tunneling" + */ +typedef struct __zcl_tunneling_cluster_request_tunnel_response_command { + uint16_t tunnelId; + uint8_t tunnelStatus; + uint16_t maximumIncomingTransferSize; +} sl_zcl_tunneling_cluster_request_tunnel_response_command_t; + +#define sl_zcl_tunneling_cluster_request_tunnel_response_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_tunneling_cluster_request_tunnel_response_command_t, tunnelId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_tunneling_cluster_request_tunnel_response_command_t, tunnelStatus), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_tunneling_cluster_request_tunnel_response_command_t, maximumIncomingTransferSize), \ +} + + +/** @brief Structure for ZCL command "WriteFunctions" from "Appliance Control" + */ +typedef struct __zcl_appliance_control_cluster_write_functions_command { + uint16_t functionId; + uint8_t functionDataType; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * functionData; +} sl_zcl_appliance_control_cluster_write_functions_command_t; + +#define sl_zcl_appliance_control_cluster_write_functions_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_appliance_control_cluster_write_functions_command_t, functionId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_appliance_control_cluster_write_functions_command_t, functionDataType), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_appliance_control_cluster_write_functions_command_t, functionData), \ +} + + +/** @brief Structure for ZCL command "AckTransferDataClientToServer" from "Tunneling" + */ +typedef struct __zcl_tunneling_cluster_ack_transfer_data_client_to_server_command { + uint16_t tunnelId; + uint16_t numberOfBytesLeft; +} sl_zcl_tunneling_cluster_ack_transfer_data_client_to_server_command_t; + +#define sl_zcl_tunneling_cluster_ack_transfer_data_client_to_server_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_tunneling_cluster_ack_transfer_data_client_to_server_command_t, tunnelId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_tunneling_cluster_ack_transfer_data_client_to_server_command_t, numberOfBytesLeft), \ +} + + +/** @brief Structure for ZCL command "ReadyDataClientToServer" from "Tunneling" + */ +typedef struct __zcl_tunneling_cluster_ready_data_client_to_server_command { + uint16_t tunnelId; + uint16_t numberOfOctetsLeft; +} sl_zcl_tunneling_cluster_ready_data_client_to_server_command_t; + +#define sl_zcl_tunneling_cluster_ready_data_client_to_server_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_tunneling_cluster_ready_data_client_to_server_command_t, tunnelId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_tunneling_cluster_ready_data_client_to_server_command_t, numberOfOctetsLeft), \ +} + + +/** @brief Structure for ZCL command "AckTransferDataServerToClient" from "Tunneling" + */ +typedef struct __zcl_tunneling_cluster_ack_transfer_data_server_to_client_command { + uint16_t tunnelId; + uint16_t numberOfBytesLeft; +} sl_zcl_tunneling_cluster_ack_transfer_data_server_to_client_command_t; + +#define sl_zcl_tunneling_cluster_ack_transfer_data_server_to_client_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_tunneling_cluster_ack_transfer_data_server_to_client_command_t, tunnelId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_tunneling_cluster_ack_transfer_data_server_to_client_command_t, numberOfBytesLeft), \ +} + + +/** @brief Structure for ZCL command "ReadyDataServerToClient" from "Tunneling" + */ +typedef struct __zcl_tunneling_cluster_ready_data_server_to_client_command { + uint16_t tunnelId; + uint16_t numberOfOctetsLeft; +} sl_zcl_tunneling_cluster_ready_data_server_to_client_command_t; + +#define sl_zcl_tunneling_cluster_ready_data_server_to_client_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_tunneling_cluster_ready_data_server_to_client_command_t, tunnelId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_tunneling_cluster_ready_data_server_to_client_command_t, numberOfOctetsLeft), \ +} + + +/** @brief Structure for ZCL command "LeaveChatRequest" from "Chatting" + */ +typedef struct __zcl_chatting_cluster_leave_chat_request_command { + uint16_t cid; + uint16_t uid; +} sl_zcl_chatting_cluster_leave_chat_request_command_t; + +#define sl_zcl_chatting_cluster_leave_chat_request_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_leave_chat_request_command_t, cid), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_leave_chat_request_command_t, uid), \ +} + + +/** @brief Structure for ZCL command "SwitchChairmanResponse" from "Chatting" + */ +typedef struct __zcl_chatting_cluster_switch_chairman_response_command { + uint16_t cid; + uint16_t uid; +} sl_zcl_chatting_cluster_switch_chairman_response_command_t; + +#define sl_zcl_chatting_cluster_switch_chairman_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_switch_chairman_response_command_t, cid), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_switch_chairman_response_command_t, uid), \ +} + + +/** @brief Structure for ZCL command "GetNodeInformationRequest" from "Chatting" + */ +typedef struct __zcl_chatting_cluster_get_node_information_request_command { + uint16_t cid; + uint16_t uid; +} sl_zcl_chatting_cluster_get_node_information_request_command_t; + +#define sl_zcl_chatting_cluster_get_node_information_request_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_get_node_information_request_command_t, cid), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_get_node_information_request_command_t, uid), \ +} + + +/** @brief Structure for ZCL command "MoveToColorTemperature" from "Color Control" + */ +typedef struct __zcl_color_control_cluster_move_to_color_temperature_command { + uint16_t colorTemperature; + uint16_t transitionTime; + uint8_t optionsMask; + uint8_t optionsOverride; +} sl_zcl_color_control_cluster_move_to_color_temperature_command_t; + +#define sl_zcl_color_control_cluster_move_to_color_temperature_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_move_to_color_temperature_command_t, colorTemperature), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_move_to_color_temperature_command_t, transitionTime), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_move_to_color_temperature_command_t, optionsMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_move_to_color_temperature_command_t, optionsOverride), \ +} + + +/** @brief Structure for ZCL command "UserLeft" from "Chatting" + */ +typedef struct __zcl_chatting_cluster_user_left_command { + uint16_t cid; + uint16_t uid; + uint8_t * nickname; +} sl_zcl_chatting_cluster_user_left_command_t; + +#define sl_zcl_chatting_cluster_user_left_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_user_left_command_t, cid), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_user_left_command_t, uid), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_chatting_cluster_user_left_command_t, nickname), \ +} + + +/** @brief Structure for ZCL command "UserJoined" from "Chatting" + */ +typedef struct __zcl_chatting_cluster_user_joined_command { + uint16_t cid; + uint16_t uid; + uint8_t * nickname; +} sl_zcl_chatting_cluster_user_joined_command_t; + +#define sl_zcl_chatting_cluster_user_joined_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_user_joined_command_t, cid), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_user_joined_command_t, uid), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_chatting_cluster_user_joined_command_t, nickname), \ +} + + +/** @brief Structure for ZCL command "SwitchChairmanNotification" from "Chatting" + */ +typedef struct __zcl_chatting_cluster_switch_chairman_notification_command { + uint16_t cid; + uint16_t uid; + uint16_t address; + uint8_t endpoint; +} sl_zcl_chatting_cluster_switch_chairman_notification_command_t; + +#define sl_zcl_chatting_cluster_switch_chairman_notification_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_switch_chairman_notification_command_t, cid), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_switch_chairman_notification_command_t, uid), \ + (ZAP_SIGNATURE_TYPE_DATA16), offsetof(sl_zcl_chatting_cluster_switch_chairman_notification_command_t, address), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_chatting_cluster_switch_chairman_notification_command_t, endpoint), \ +} + + +/** @brief Structure for ZCL command "ModifyRecordRequest" from "Data Sharing" + */ +typedef struct __zcl_data_sharing_cluster_modify_record_request_command { + uint16_t fileIndex; + uint16_t fileStartRecord; + uint16_t recordCount; +} sl_zcl_data_sharing_cluster_modify_record_request_command_t; + +#define sl_zcl_data_sharing_cluster_modify_record_request_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_data_sharing_cluster_modify_record_request_command_t, fileIndex), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_data_sharing_cluster_modify_record_request_command_t, fileStartRecord), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_data_sharing_cluster_modify_record_request_command_t, recordCount), \ +} + + +/** @brief Structure for ZCL command "MoveToColor" from "Color Control" + */ +typedef struct __zcl_color_control_cluster_move_to_color_command { + uint16_t colorX; + uint16_t colorY; + uint16_t transitionTime; + uint8_t optionsMask; + uint8_t optionsOverride; +} sl_zcl_color_control_cluster_move_to_color_command_t; + +#define sl_zcl_color_control_cluster_move_to_color_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_move_to_color_command_t, colorX), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_move_to_color_command_t, colorY), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_move_to_color_command_t, transitionTime), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_move_to_color_command_t, optionsMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_move_to_color_command_t, optionsOverride), \ +} + + +/** @brief Structure for ZCL command "ChatMessage" from "Chatting" + */ +typedef struct __zcl_chatting_cluster_chat_message_command { + uint16_t destinationUid; + uint16_t sourceUid; + uint16_t cid; + uint8_t * nickname; + uint8_t * message; +} sl_zcl_chatting_cluster_chat_message_command_t; + +#define sl_zcl_chatting_cluster_chat_message_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_chat_message_command_t, destinationUid), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_chat_message_command_t, sourceUid), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_chat_message_command_t, cid), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_chatting_cluster_chat_message_command_t, nickname), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_chatting_cluster_chat_message_command_t, message), \ +} + + +/** @brief Structure for ZCL command "EnableWwahRejoinAlgorithm" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_enable_wwah_rejoin_algorithm_command { + uint16_t fastRejoinTimeoutSeconds; + uint16_t durationBetweenRejoinsSeconds; + uint16_t fastRejoinFirstBackoffSeconds; + uint16_t maxBackoffTimeSeconds; + uint16_t maxBackoffIterations; +} sl_zcl_sl_works_with_all_hubs_cluster_enable_wwah_rejoin_algorithm_command_t; + +#define sl_zcl_sl_works_with_all_hubs_cluster_enable_wwah_rejoin_algorithm_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_enable_wwah_rejoin_algorithm_command_t, fastRejoinTimeoutSeconds), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_enable_wwah_rejoin_algorithm_command_t, durationBetweenRejoinsSeconds), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_enable_wwah_rejoin_algorithm_command_t, fastRejoinFirstBackoffSeconds), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_enable_wwah_rejoin_algorithm_command_t, maxBackoffTimeSeconds), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_enable_wwah_rejoin_algorithm_command_t, maxBackoffIterations), \ +} + + +/** @brief Structure for ZCL command "UpgradeEndResponse" from "Over the Air Bootloading" + */ +typedef struct __zcl_over_the_air_bootloading_cluster_upgrade_end_response_command { + uint16_t manufacturerId; + uint16_t imageType; + uint32_t fileVersion; + uint32_t currentTime; + uint32_t upgradeTime; +} sl_zcl_over_the_air_bootloading_cluster_upgrade_end_response_command_t; + +#define sl_zcl_over_the_air_bootloading_cluster_upgrade_end_response_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_upgrade_end_response_command_t, manufacturerId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_upgrade_end_response_command_t, imageType), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_over_the_air_bootloading_cluster_upgrade_end_response_command_t, fileVersion), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_over_the_air_bootloading_cluster_upgrade_end_response_command_t, currentTime), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_over_the_air_bootloading_cluster_upgrade_end_response_command_t, upgradeTime), \ +} + + +/** @brief Structure for ZCL command "GetMeasurementProfileCommand" from "Electrical Measurement" + */ +typedef struct __zcl_electrical_measurement_cluster_get_measurement_profile_command_command { + uint16_t attributeId; + uint32_t startTime; + uint8_t numberOfIntervals; +} sl_zcl_electrical_measurement_cluster_get_measurement_profile_command_command_t; + +#define sl_zcl_electrical_measurement_cluster_get_measurement_profile_command_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_electrical_measurement_cluster_get_measurement_profile_command_command_t, attributeId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_electrical_measurement_cluster_get_measurement_profile_command_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_electrical_measurement_cluster_get_measurement_profile_command_command_t, numberOfIntervals), \ +} + + +/** @brief Structure for ZCL command "GetLogRecordResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_get_log_record_response_command { + uint16_t logEntryId; + uint32_t timestamp; + uint8_t eventType; + uint8_t source; + uint8_t eventIdOrAlarmCode; + uint16_t userId; + uint8_t * pin; +} sl_zcl_door_lock_cluster_get_log_record_response_command_t; + +#define sl_zcl_door_lock_cluster_get_log_record_response_command_signature { \ + 7, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_get_log_record_response_command_t, logEntryId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_door_lock_cluster_get_log_record_response_command_t, timestamp), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_door_lock_cluster_get_log_record_response_command_t, eventType), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_get_log_record_response_command_t, source), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_get_log_record_response_command_t, eventIdOrAlarmCode), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_get_log_record_response_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_door_lock_cluster_get_log_record_response_command_t, pin), \ +} + + +/** @brief Structure for ZCL command "SetDisposableSchedule" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_set_disposable_schedule_command { + uint16_t userId; + uint32_t localStartTime; + uint32_t localEndTime; +} sl_zcl_door_lock_cluster_set_disposable_schedule_command_t; + +#define sl_zcl_door_lock_cluster_set_disposable_schedule_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_set_disposable_schedule_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_door_lock_cluster_set_disposable_schedule_command_t, localStartTime), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_door_lock_cluster_set_disposable_schedule_command_t, localEndTime), \ +} + + +/** @brief Structure for ZCL command "ModifyFileRequest" from "Data Sharing" + */ +typedef struct __zcl_data_sharing_cluster_modify_file_request_command { + uint16_t fileIndex; + uint32_t fileStartPosition; + uint32_t octetCount; +} sl_zcl_data_sharing_cluster_modify_file_request_command_t; + +#define sl_zcl_data_sharing_cluster_modify_file_request_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_data_sharing_cluster_modify_file_request_command_t, fileIndex), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_data_sharing_cluster_modify_file_request_command_t, fileStartPosition), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_data_sharing_cluster_modify_file_request_command_t, octetCount), \ +} + + +/** @brief Structure for ZCL command "GetOverallSchedulePriceResponse" from "Power Profile" + */ +typedef struct __zcl_power_profile_cluster_get_overall_schedule_price_response_command { + uint16_t currency; + uint32_t price; + uint8_t priceTrailingDigit; +} sl_zcl_power_profile_cluster_get_overall_schedule_price_response_command_t; + +#define sl_zcl_power_profile_cluster_get_overall_schedule_price_response_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_power_profile_cluster_get_overall_schedule_price_response_command_t, currency), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_power_profile_cluster_get_overall_schedule_price_response_command_t, price), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_get_overall_schedule_price_response_command_t, priceTrailingDigit), \ +} + + +/** @brief Structure for ZCL command "ViewScene" from "Scenes" + */ +typedef struct __zcl_scenes_cluster_view_scene_command { + uint16_t groupId; + uint8_t sceneId; +} sl_zcl_scenes_cluster_view_scene_command_t; + +#define sl_zcl_scenes_cluster_view_scene_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_view_scene_command_t, groupId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_view_scene_command_t, sceneId), \ +} + + +/** @brief Structure for ZCL command "RemoveScene" from "Scenes" + */ +typedef struct __zcl_scenes_cluster_remove_scene_command { + uint16_t groupId; + uint8_t sceneId; +} sl_zcl_scenes_cluster_remove_scene_command_t; + +#define sl_zcl_scenes_cluster_remove_scene_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_remove_scene_command_t, groupId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_remove_scene_command_t, sceneId), \ +} + + +/** @brief Structure for ZCL command "StoreScene" from "Scenes" + */ +typedef struct __zcl_scenes_cluster_store_scene_command { + uint16_t groupId; + uint8_t sceneId; +} sl_zcl_scenes_cluster_store_scene_command_t; + +#define sl_zcl_scenes_cluster_store_scene_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_store_scene_command_t, groupId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_store_scene_command_t, sceneId), \ +} + + +/** @brief Structure for ZCL command "EnhancedViewScene" from "Scenes" + */ +typedef struct __zcl_scenes_cluster_enhanced_view_scene_command { + uint16_t groupId; + uint8_t sceneId; +} sl_zcl_scenes_cluster_enhanced_view_scene_command_t; + +#define sl_zcl_scenes_cluster_enhanced_view_scene_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_enhanced_view_scene_command_t, groupId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_enhanced_view_scene_command_t, sceneId), \ +} + + +/** @brief Structure for ZCL command "SetUserStatus" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_set_user_status_command { + uint16_t userId; + uint8_t userStatus; +} sl_zcl_door_lock_cluster_set_user_status_command_t; + +#define sl_zcl_door_lock_cluster_set_user_status_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_set_user_status_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_set_user_status_command_t, userStatus), \ +} + + +/** @brief Structure for ZCL command "GetUserStatusResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_get_user_status_response_command { + uint16_t userId; + uint8_t status; +} sl_zcl_door_lock_cluster_get_user_status_response_command_t; + +#define sl_zcl_door_lock_cluster_get_user_status_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_get_user_status_response_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_get_user_status_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "EnhancedMoveToHueAndSaturation" from "Color Control" + */ +typedef struct __zcl_color_control_cluster_enhanced_move_to_hue_and_saturation_command { + uint16_t enhancedHue; + uint8_t saturation; + uint16_t transitionTime; + uint8_t optionsMask; + uint8_t optionsOverride; +} sl_zcl_color_control_cluster_enhanced_move_to_hue_and_saturation_command_t; + +#define sl_zcl_color_control_cluster_enhanced_move_to_hue_and_saturation_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_enhanced_move_to_hue_and_saturation_command_t, enhancedHue), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_color_control_cluster_enhanced_move_to_hue_and_saturation_command_t, saturation), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_enhanced_move_to_hue_and_saturation_command_t, transitionTime), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_enhanced_move_to_hue_and_saturation_command_t, optionsMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_enhanced_move_to_hue_and_saturation_command_t, optionsOverride), \ +} + + +/** @brief Structure for ZCL command "AddScene" from "Scenes" + */ +typedef struct __zcl_scenes_cluster_add_scene_command { + uint16_t groupId; + uint8_t sceneId; + uint16_t transitionTime; + uint8_t * sceneName; + /* TYPE WARNING: SceneExtensionFieldSet array defaults to */ uint8_t * extensionFieldSets; +} sl_zcl_scenes_cluster_add_scene_command_t; + +#define sl_zcl_scenes_cluster_add_scene_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_add_scene_command_t, groupId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_add_scene_command_t, sceneId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_add_scene_command_t, transitionTime), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_scenes_cluster_add_scene_command_t, sceneName), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_scenes_cluster_add_scene_command_t, extensionFieldSets), \ +} + + +/** @brief Structure for ZCL command "EnhancedAddScene" from "Scenes" + */ +typedef struct __zcl_scenes_cluster_enhanced_add_scene_command { + uint16_t groupId; + uint8_t sceneId; + uint16_t transitionTime; + uint8_t * sceneName; + /* TYPE WARNING: SceneExtensionFieldSet array defaults to */ uint8_t * extensionFieldSets; +} sl_zcl_scenes_cluster_enhanced_add_scene_command_t; + +#define sl_zcl_scenes_cluster_enhanced_add_scene_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_enhanced_add_scene_command_t, groupId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_enhanced_add_scene_command_t, sceneId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_enhanced_add_scene_command_t, transitionTime), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_scenes_cluster_enhanced_add_scene_command_t, sceneName), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_scenes_cluster_enhanced_add_scene_command_t, extensionFieldSets), \ +} + + +/** @brief Structure for ZCL command "RecallScene" from "Scenes" + */ +typedef struct __zcl_scenes_cluster_recall_scene_command { + uint16_t groupId; + uint8_t sceneId; + uint16_t transitionTime; +} sl_zcl_scenes_cluster_recall_scene_command_t; + +#define sl_zcl_scenes_cluster_recall_scene_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_recall_scene_command_t, groupId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_recall_scene_command_t, sceneId), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_recall_scene_command_t, transitionTime), \ +} + + +/** @brief Structure for ZCL command "GetDisposableScheduleResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_get_disposable_schedule_response_command { + uint16_t userId; + uint8_t status; + uint32_t localStartTime; + uint32_t localEndTime; +} sl_zcl_door_lock_cluster_get_disposable_schedule_response_command_t; + +#define sl_zcl_door_lock_cluster_get_disposable_schedule_response_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_get_disposable_schedule_response_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_get_disposable_schedule_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_door_lock_cluster_get_disposable_schedule_response_command_t, localStartTime), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_door_lock_cluster_get_disposable_schedule_response_command_t, localEndTime), \ +} + + +/** @brief Structure for ZCL command "PublishEventLog" from "Events" + */ +typedef struct __zcl_events_cluster_publish_event_log_command { + uint16_t totalNumberOfEvents; + uint8_t commandIndex; + uint8_t totalCommands; + uint8_t logPayloadControl; + /* TYPE WARNING: EventLogPayload array defaults to */ uint8_t * logPayload; +} sl_zcl_events_cluster_publish_event_log_command_t; + +#define sl_zcl_events_cluster_publish_event_log_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_events_cluster_publish_event_log_command_t, totalNumberOfEvents), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_events_cluster_publish_event_log_command_t, commandIndex), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_events_cluster_publish_event_log_command_t, totalCommands), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_events_cluster_publish_event_log_command_t, logPayloadControl), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_events_cluster_publish_event_log_command_t, logPayload), \ +} + + +/** @brief Structure for ZCL command "TransferDataClientToServer" from "Tunneling" + */ +typedef struct __zcl_tunneling_cluster_transfer_data_client_to_server_command { + uint16_t tunnelId; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * data; +} sl_zcl_tunneling_cluster_transfer_data_client_to_server_command_t; + +#define sl_zcl_tunneling_cluster_transfer_data_client_to_server_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_tunneling_cluster_transfer_data_client_to_server_command_t, tunnelId), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_tunneling_cluster_transfer_data_client_to_server_command_t, data), \ +} + + +/** @brief Structure for ZCL command "TransferDataServerToClient" from "Tunneling" + */ +typedef struct __zcl_tunneling_cluster_transfer_data_server_to_client_command { + uint16_t tunnelId; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * data; +} sl_zcl_tunneling_cluster_transfer_data_server_to_client_command_t; + +#define sl_zcl_tunneling_cluster_transfer_data_server_to_client_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_tunneling_cluster_transfer_data_server_to_client_command_t, tunnelId), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_tunneling_cluster_transfer_data_server_to_client_command_t, data), \ +} + + +/** @brief Structure for ZCL command "SendPreference" from "Information" + */ +typedef struct __zcl_information_cluster_send_preference_command { + uint16_t preferenceType; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * preferencePayload; +} sl_zcl_information_cluster_send_preference_command_t; + +#define sl_zcl_information_cluster_send_preference_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_information_cluster_send_preference_command_t, preferenceType), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_information_cluster_send_preference_command_t, preferencePayload), \ +} + + +/** @brief Structure for ZCL command "ReadFileRequest" from "Data Sharing" + */ +typedef struct __zcl_data_sharing_cluster_read_file_request_command { + uint16_t fileIndex; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * fileStartPositionAndRequestedOctetCount; +} sl_zcl_data_sharing_cluster_read_file_request_command_t; + +#define sl_zcl_data_sharing_cluster_read_file_request_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_data_sharing_cluster_read_file_request_command_t, fileIndex), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_data_sharing_cluster_read_file_request_command_t, fileStartPositionAndRequestedOctetCount), \ +} + + +/** @brief Structure for ZCL command "ReadRecordRequest" from "Data Sharing" + */ +typedef struct __zcl_data_sharing_cluster_read_record_request_command { + uint16_t fileIndex; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * fileStartRecordAndRequestedRecordCount; +} sl_zcl_data_sharing_cluster_read_record_request_command_t; + +#define sl_zcl_data_sharing_cluster_read_record_request_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_data_sharing_cluster_read_record_request_command_t, fileIndex), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_data_sharing_cluster_read_record_request_command_t, fileStartRecordAndRequestedRecordCount), \ +} + + +/** @brief Structure for ZCL command "SetToken" from "Configuration Cluster" + */ +typedef struct __zcl_configuration_cluster_cluster_set_token_command { + uint16_t token; + uint8_t * data; +} sl_zcl_configuration_cluster_cluster_set_token_command_t; + +#define sl_zcl_configuration_cluster_cluster_set_token_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_configuration_cluster_cluster_set_token_command_t, token), \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_configuration_cluster_cluster_set_token_command_t, data), \ +} + + +/** @brief Structure for ZCL command "ReturnToken" from "Configuration Cluster" + */ +typedef struct __zcl_configuration_cluster_cluster_return_token_command { + uint16_t token; + uint8_t * data; +} sl_zcl_configuration_cluster_cluster_return_token_command_t; + +#define sl_zcl_configuration_cluster_cluster_return_token_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_configuration_cluster_cluster_return_token_command_t, token), \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_configuration_cluster_cluster_return_token_command_t, data), \ +} + + +/** @brief Structure for ZCL command "SwitchChairmanConfirm" from "Chatting" + */ +typedef struct __zcl_chatting_cluster_switch_chairman_confirm_command { + uint16_t cid; + /* TYPE WARNING: NodeInformation array defaults to */ uint8_t * nodeInformationList; +} sl_zcl_chatting_cluster_switch_chairman_confirm_command_t; + +#define sl_zcl_chatting_cluster_switch_chairman_confirm_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_chatting_cluster_switch_chairman_confirm_command_t, cid), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_chatting_cluster_switch_chairman_confirm_command_t, nodeInformationList), \ +} + + +/** @brief Structure for ZCL command "GetSampledData" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_get_sampled_data_command { + uint16_t sampleId; + uint32_t earliestSampleTime; + uint8_t sampleType; + uint16_t numberOfSamples; +} sl_zcl_simple_metering_cluster_get_sampled_data_command_t; + +#define sl_zcl_simple_metering_cluster_get_sampled_data_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_simple_metering_cluster_get_sampled_data_command_t, sampleId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_simple_metering_cluster_get_sampled_data_command_t, earliestSampleTime), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_simple_metering_cluster_get_sampled_data_command_t, sampleType), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_simple_metering_cluster_get_sampled_data_command_t, numberOfSamples), \ +} + + +/** @brief Structure for ZCL command "GetSampledDataResponse" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_get_sampled_data_response_command { + uint16_t sampleId; + uint32_t sampleStartTime; + uint8_t sampleType; + uint16_t sampleRequestInterval; + uint16_t numberOfSamples; + /* TYPE WARNING: INT24U array defaults to */ uint8_t * samples; +} sl_zcl_simple_metering_cluster_get_sampled_data_response_command_t; + +#define sl_zcl_simple_metering_cluster_get_sampled_data_response_command_signature { \ + 6, \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_simple_metering_cluster_get_sampled_data_response_command_t, sampleId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_simple_metering_cluster_get_sampled_data_response_command_t, sampleStartTime), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_simple_metering_cluster_get_sampled_data_response_command_t, sampleType), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_simple_metering_cluster_get_sampled_data_response_command_t, sampleRequestInterval), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_simple_metering_cluster_get_sampled_data_response_command_t, numberOfSamples), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_simple_metering_cluster_get_sampled_data_response_command_t, samples), \ +} + + +/** @brief Structure for ZCL command "SetLongPollInterval" from "Poll Control" + */ +typedef struct __zcl_poll_control_cluster_set_long_poll_interval_command { + uint32_t newLongPollInterval; +} sl_zcl_poll_control_cluster_set_long_poll_interval_command_t; + +#define sl_zcl_poll_control_cluster_set_long_poll_interval_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_poll_control_cluster_set_long_poll_interval_command_t, newLongPollInterval), \ +} + + +/** @brief Structure for ZCL command "GetPriceMatrix" from "Price" + */ +typedef struct __zcl_price_cluster_get_price_matrix_command { + uint32_t issuerTariffId; +} sl_zcl_price_cluster_get_price_matrix_command_t; + +#define sl_zcl_price_cluster_get_price_matrix_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_get_price_matrix_command_t, issuerTariffId), \ +} + + +/** @brief Structure for ZCL command "GetBlockThresholds" from "Price" + */ +typedef struct __zcl_price_cluster_get_block_thresholds_command { + uint32_t issuerTariffId; +} sl_zcl_price_cluster_get_block_thresholds_command_t; + +#define sl_zcl_price_cluster_get_block_thresholds_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_get_block_thresholds_command_t, issuerTariffId), \ +} + + +/** @brief Structure for ZCL command "GetTierLabels" from "Price" + */ +typedef struct __zcl_price_cluster_get_tier_labels_command { + uint32_t issuerTariffId; +} sl_zcl_price_cluster_get_tier_labels_command_t; + +#define sl_zcl_price_cluster_get_tier_labels_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_get_tier_labels_command_t, issuerTariffId), \ +} + + +/** @brief Structure for ZCL command "SetLowCreditWarningLevel" from "Prepayment" + */ +typedef struct __zcl_prepayment_cluster_set_low_credit_warning_level_command { + uint32_t lowCreditWarningLevel; +} sl_zcl_prepayment_cluster_set_low_credit_warning_level_command_t; + +#define sl_zcl_prepayment_cluster_set_low_credit_warning_level_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_set_low_credit_warning_level_command_t, lowCreditWarningLevel), \ +} + + +/** @brief Structure for ZCL command "ConfigurePushInformationTimer" from "Information" + */ +typedef struct __zcl_information_cluster_configure_push_information_timer_command { + uint32_t timer; +} sl_zcl_information_cluster_configure_push_information_timer_command_t; + +#define sl_zcl_information_cluster_configure_push_information_timer_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_information_cluster_configure_push_information_timer_command_t, timer), \ +} + + +/** @brief Structure for ZCL command "LogRequest" from "Appliance Statistics" + */ +typedef struct __zcl_appliance_statistics_cluster_log_request_command { + uint32_t logId; +} sl_zcl_appliance_statistics_cluster_log_request_command_t; + +#define sl_zcl_appliance_statistics_cluster_log_request_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_appliance_statistics_cluster_log_request_command_t, logId), \ +} + + +/** @brief Structure for ZCL command "ResetToFactoryNewRequest" from "ZLL Commissioning" + */ +typedef struct __zcl_zll_commissioning_cluster_reset_to_factory_new_request_command { + uint32_t transaction; +} sl_zcl_zll_commissioning_cluster_reset_to_factory_new_request_command_t; + +#define sl_zcl_zll_commissioning_cluster_reset_to_factory_new_request_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_zll_commissioning_cluster_reset_to_factory_new_request_command_t, transaction), \ +} + + +/** @brief Structure for ZCL command "CancelLoadControlEvent" from "Demand Response and Load Control" + */ +typedef struct __zcl_demand_response_and_load_control_cluster_cancel_load_control_event_command { + uint32_t issuerEventId; + uint16_t deviceClass; + uint8_t utilityEnrollmentGroup; + uint8_t cancelControl; + uint32_t effectiveTime; +} sl_zcl_demand_response_and_load_control_cluster_cancel_load_control_event_command_t; + +#define sl_zcl_demand_response_and_load_control_cluster_cancel_load_control_event_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_demand_response_and_load_control_cluster_cancel_load_control_event_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_demand_response_and_load_control_cluster_cancel_load_control_event_command_t, deviceClass), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_demand_response_and_load_control_cluster_cancel_load_control_event_command_t, utilityEnrollmentGroup), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_demand_response_and_load_control_cluster_cancel_load_control_event_command_t, cancelControl), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_demand_response_and_load_control_cluster_cancel_load_control_event_command_t, effectiveTime), \ +} + + +/** @brief Structure for ZCL command "ManageEvent" from "Energy Management" + */ +typedef struct __zcl_energy_management_cluster_manage_event_command { + uint32_t issuerEventId; + uint16_t deviceClass; + uint8_t utilityEnrollmentGroup; + uint8_t actionRequired; +} sl_zcl_energy_management_cluster_manage_event_command_t; + +#define sl_zcl_energy_management_cluster_manage_event_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_energy_management_cluster_manage_event_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_energy_management_cluster_manage_event_command_t, deviceClass), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_energy_management_cluster_manage_event_command_t, utilityEnrollmentGroup), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_energy_management_cluster_manage_event_command_t, actionRequired), \ +} + + +/** @brief Structure for ZCL command "LoadControlEvent" from "Demand Response and Load Control" + */ +typedef struct __zcl_demand_response_and_load_control_cluster_load_control_event_command { + uint32_t issuerEventId; + uint16_t deviceClass; + uint8_t utilityEnrollmentGroup; + uint32_t startTime; + uint16_t durationInMinutes; + uint8_t criticalityLevel; + uint8_t coolingTemperatureOffset; + uint8_t heatingTemperatureOffset; + int16_t coolingTemperatureSetPoint; + int16_t heatingTemperatureSetPoint; + int8_t averageLoadAdjustmentPercentage; + uint8_t dutyCycle; + uint8_t eventControl; +} sl_zcl_demand_response_and_load_control_cluster_load_control_event_command_t; + +#define sl_zcl_demand_response_and_load_control_cluster_load_control_event_command_signature { \ + 13, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_demand_response_and_load_control_cluster_load_control_event_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_demand_response_and_load_control_cluster_load_control_event_command_t, deviceClass), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_demand_response_and_load_control_cluster_load_control_event_command_t, utilityEnrollmentGroup), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_demand_response_and_load_control_cluster_load_control_event_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_demand_response_and_load_control_cluster_load_control_event_command_t, durationInMinutes), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_demand_response_and_load_control_cluster_load_control_event_command_t, criticalityLevel), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_demand_response_and_load_control_cluster_load_control_event_command_t, coolingTemperatureOffset), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_demand_response_and_load_control_cluster_load_control_event_command_t, heatingTemperatureOffset), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_demand_response_and_load_control_cluster_load_control_event_command_t, coolingTemperatureSetPoint), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_demand_response_and_load_control_cluster_load_control_event_command_t, heatingTemperatureSetPoint), \ + (ZAP_SIGNATURE_TYPE_INT8S), offsetof(sl_zcl_demand_response_and_load_control_cluster_load_control_event_command_t, averageLoadAdjustmentPercentage), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_demand_response_and_load_control_cluster_load_control_event_command_t, dutyCycle), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_demand_response_and_load_control_cluster_load_control_event_command_t, eventControl), \ +} + + +/** @brief Structure for ZCL command "CancelMessage" from "Messaging" + */ +typedef struct __zcl_messaging_cluster_cancel_message_command { + uint32_t messageId; + uint8_t messageControl; +} sl_zcl_messaging_cluster_cancel_message_command_t; + +#define sl_zcl_messaging_cluster_cancel_message_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_messaging_cluster_cancel_message_command_t, messageId), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_messaging_cluster_cancel_message_command_t, messageControl), \ +} + + +/** @brief Structure for ZCL command "ScanRequest" from "ZLL Commissioning" + */ +typedef struct __zcl_zll_commissioning_cluster_scan_request_command { + uint32_t transaction; + uint8_t zigbeeInformation; + uint8_t zllInformation; +} sl_zcl_zll_commissioning_cluster_scan_request_command_t; + +#define sl_zcl_zll_commissioning_cluster_scan_request_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_zll_commissioning_cluster_scan_request_command_t, transaction), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_zll_commissioning_cluster_scan_request_command_t, zigbeeInformation), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_zll_commissioning_cluster_scan_request_command_t, zllInformation), \ +} + + +/** @brief Structure for ZCL command "DisplayProtectedMessage" from "Messaging" + */ +typedef struct __zcl_messaging_cluster_display_protected_message_command { + uint32_t messageId; + uint8_t messageControl; + uint32_t startTime; + uint16_t durationInMinutes; + uint8_t * message; + uint8_t optionalExtendedMessageControl; +} sl_zcl_messaging_cluster_display_protected_message_command_t; + +#define sl_zcl_messaging_cluster_display_protected_message_command_signature { \ + 6, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_messaging_cluster_display_protected_message_command_t, messageId), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_messaging_cluster_display_protected_message_command_t, messageControl), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_messaging_cluster_display_protected_message_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_messaging_cluster_display_protected_message_command_t, durationInMinutes), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_messaging_cluster_display_protected_message_command_t, message), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_messaging_cluster_display_protected_message_command_t, optionalExtendedMessageControl), \ +} + + +/** @brief Structure for ZCL command "DisplayMessage" from "Messaging" + */ +typedef struct __zcl_messaging_cluster_display_message_command { + uint32_t messageId; + uint8_t messageControl; + uint32_t startTime; + uint16_t durationInMinutes; + uint8_t * message; + uint8_t optionalExtendedMessageControl; +} sl_zcl_messaging_cluster_display_message_command_t; + +#define sl_zcl_messaging_cluster_display_message_command_signature { \ + 6, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_messaging_cluster_display_message_command_t, messageId), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_messaging_cluster_display_message_command_t, messageControl), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_messaging_cluster_display_message_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_messaging_cluster_display_message_command_t, durationInMinutes), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_messaging_cluster_display_message_command_t, message), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_messaging_cluster_display_message_command_t, optionalExtendedMessageControl), \ +} + + +/** @brief Structure for ZCL command "CppEventResponse" from "Price" + */ +typedef struct __zcl_price_cluster_cpp_event_response_command { + uint32_t issuerEventId; + uint8_t cppAuth; +} sl_zcl_price_cluster_cpp_event_response_command_t; + +#define sl_zcl_price_cluster_cpp_event_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_cpp_event_response_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_cpp_event_response_command_t, cppAuth), \ +} + + +/** @brief Structure for ZCL command "TakeSnapshotResponse" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_take_snapshot_response_command { + uint32_t snapshotId; + uint8_t snapshotConfirmation; +} sl_zcl_simple_metering_cluster_take_snapshot_response_command_t; + +#define sl_zcl_simple_metering_cluster_take_snapshot_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_simple_metering_cluster_take_snapshot_response_command_t, snapshotId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_simple_metering_cluster_take_snapshot_response_command_t, snapshotConfirmation), \ +} + + +/** @brief Structure for ZCL command "NetworkJoinRouterResponse" from "ZLL Commissioning" + */ +typedef struct __zcl_zll_commissioning_cluster_network_join_router_response_command { + uint32_t transaction; + uint8_t status; +} sl_zcl_zll_commissioning_cluster_network_join_router_response_command_t; + +#define sl_zcl_zll_commissioning_cluster_network_join_router_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_router_response_command_t, transaction), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_zll_commissioning_cluster_network_join_router_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "NetworkJoinEndDeviceResponse" from "ZLL Commissioning" + */ +typedef struct __zcl_zll_commissioning_cluster_network_join_end_device_response_command { + uint32_t transaction; + uint8_t status; +} sl_zcl_zll_commissioning_cluster_network_join_end_device_response_command_t; + +#define sl_zcl_zll_commissioning_cluster_network_join_end_device_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_end_device_response_command_t, transaction), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_zll_commissioning_cluster_network_join_end_device_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "SetSupplyStatus" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_set_supply_status_command { + uint32_t issuerEventId; + uint8_t supplyTamperState; + uint8_t supplyDepletionState; + uint8_t supplyUncontrolledFlowState; + uint8_t loadLimitSupplyState; +} sl_zcl_simple_metering_cluster_set_supply_status_command_t; + +#define sl_zcl_simple_metering_cluster_set_supply_status_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_simple_metering_cluster_set_supply_status_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_simple_metering_cluster_set_supply_status_command_t, supplyTamperState), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_simple_metering_cluster_set_supply_status_command_t, supplyDepletionState), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_simple_metering_cluster_set_supply_status_command_t, supplyUncontrolledFlowState), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_simple_metering_cluster_set_supply_status_command_t, loadLimitSupplyState), \ +} + + +/** @brief Structure for ZCL command "GetMeasurementProfileResponseCommand" from "Electrical Measurement" + */ +typedef struct __zcl_electrical_measurement_cluster_get_measurement_profile_response_command_command { + uint32_t startTime; + uint8_t status; + uint8_t profileIntervalPeriod; + uint8_t numberOfIntervalsDelivered; + uint16_t attributeId; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * intervals; +} sl_zcl_electrical_measurement_cluster_get_measurement_profile_response_command_command_t; + +#define sl_zcl_electrical_measurement_cluster_get_measurement_profile_response_command_command_signature { \ + 6, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_electrical_measurement_cluster_get_measurement_profile_response_command_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_electrical_measurement_cluster_get_measurement_profile_response_command_command_t, status), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_electrical_measurement_cluster_get_measurement_profile_response_command_command_t, profileIntervalPeriod), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_electrical_measurement_cluster_get_measurement_profile_response_command_command_t, numberOfIntervalsDelivered), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_electrical_measurement_cluster_get_measurement_profile_response_command_command_t, attributeId), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_electrical_measurement_cluster_get_measurement_profile_response_command_command_t, intervals), \ +} + + +/** @brief Structure for ZCL command "NetworkStartResponse" from "ZLL Commissioning" + */ +typedef struct __zcl_zll_commissioning_cluster_network_start_response_command { + uint32_t transaction; + uint8_t status; + uint8_t * extendedPanId; + uint8_t networkUpdateId; + uint8_t logicalChannel; + uint16_t panId; +} sl_zcl_zll_commissioning_cluster_network_start_response_command_t; + +#define sl_zcl_zll_commissioning_cluster_network_start_response_command_signature { \ + 6, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_zll_commissioning_cluster_network_start_response_command_t, transaction), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_zll_commissioning_cluster_network_start_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_zll_commissioning_cluster_network_start_response_command_t, extendedPanId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_network_start_response_command_t, networkUpdateId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_network_start_response_command_t, logicalChannel), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_start_response_command_t, panId), \ +} + + +/** @brief Structure for ZCL command "ReportEventStatus" from "Energy Management" + */ +typedef struct __zcl_energy_management_cluster_report_event_status_command { + uint32_t issuerEventId; + uint8_t eventStatus; + uint32_t eventStatusTime; + uint8_t criticalityLevelApplied; + uint16_t coolingTemperatureSetPointApplied; + uint16_t heatingTemperatureSetPointApplied; + int8_t averageLoadAdjustmentPercentageApplied; + uint8_t dutyCycleApplied; + uint8_t eventControl; +} sl_zcl_energy_management_cluster_report_event_status_command_t; + +#define sl_zcl_energy_management_cluster_report_event_status_command_signature { \ + 9, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_energy_management_cluster_report_event_status_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_energy_management_cluster_report_event_status_command_t, eventStatus), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_energy_management_cluster_report_event_status_command_t, eventStatusTime), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_energy_management_cluster_report_event_status_command_t, criticalityLevelApplied), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_energy_management_cluster_report_event_status_command_t, coolingTemperatureSetPointApplied), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_energy_management_cluster_report_event_status_command_t, heatingTemperatureSetPointApplied), \ + (ZAP_SIGNATURE_TYPE_INT8S), offsetof(sl_zcl_energy_management_cluster_report_event_status_command_t, averageLoadAdjustmentPercentageApplied), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_energy_management_cluster_report_event_status_command_t, dutyCycleApplied), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_energy_management_cluster_report_event_status_command_t, eventControl), \ +} + + +/** @brief Structure for ZCL command "ReportEventStatus" from "Demand Response and Load Control" + */ +typedef struct __zcl_demand_response_and_load_control_cluster_report_event_status_command { + uint32_t issuerEventId; + uint8_t eventStatus; + uint32_t eventStatusTime; + uint8_t criticalityLevelApplied; + uint16_t coolingTemperatureSetPointApplied; + uint16_t heatingTemperatureSetPointApplied; + int8_t averageLoadAdjustmentPercentageApplied; + uint8_t dutyCycleApplied; + uint8_t eventControl; + uint8_t signatureType; + /* TYPE WARNING: Signature defaults to */ uint8_t * signature; +} sl_zcl_demand_response_and_load_control_cluster_report_event_status_command_t; + +#define sl_zcl_demand_response_and_load_control_cluster_report_event_status_command_signature { \ + 11, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_demand_response_and_load_control_cluster_report_event_status_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_demand_response_and_load_control_cluster_report_event_status_command_t, eventStatus), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_demand_response_and_load_control_cluster_report_event_status_command_t, eventStatusTime), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_demand_response_and_load_control_cluster_report_event_status_command_t, criticalityLevelApplied), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_demand_response_and_load_control_cluster_report_event_status_command_t, coolingTemperatureSetPointApplied), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_demand_response_and_load_control_cluster_report_event_status_command_t, heatingTemperatureSetPointApplied), \ + (ZAP_SIGNATURE_TYPE_INT8S), offsetof(sl_zcl_demand_response_and_load_control_cluster_report_event_status_command_t, averageLoadAdjustmentPercentageApplied), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_demand_response_and_load_control_cluster_report_event_status_command_t, dutyCycleApplied), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_demand_response_and_load_control_cluster_report_event_status_command_t, eventControl), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_demand_response_and_load_control_cluster_report_event_status_command_t, signatureType), \ + (ZAP_SIGNATURE_TYPE_POINTER), offsetof(sl_zcl_demand_response_and_load_control_cluster_report_event_status_command_t, signature), \ +} + + +/** @brief Structure for ZCL command "PairingRequest" from "MDU Pairing" + */ +typedef struct __zcl_mdu_pairing_cluster_pairing_request_command { + uint32_t localPairingInformationVersion; + uint8_t * eui64OfRequestingDevice; +} sl_zcl_mdu_pairing_cluster_pairing_request_command_t; + +#define sl_zcl_mdu_pairing_cluster_pairing_request_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_mdu_pairing_cluster_pairing_request_command_t, localPairingInformationVersion), \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_mdu_pairing_cluster_pairing_request_command_t, eui64OfRequestingDevice), \ +} + + +/** @brief Structure for ZCL command "NetworkStartRequest" from "ZLL Commissioning" + */ +typedef struct __zcl_zll_commissioning_cluster_network_start_request_command { + uint32_t transaction; + uint8_t * extendedPanId; + uint8_t keyIndex; + /* TYPE WARNING: security_key defaults to */ uint8_t * encryptedNetworkKey; + uint8_t logicalChannel; + uint16_t panId; + uint16_t networkAddress; + uint16_t groupIdentifiersBegin; + uint16_t groupIdentifiersEnd; + uint16_t freeNetworkAddressRangeBegin; + uint16_t freeNetworkAddressRangeEnd; + uint16_t freeGroupIdentifierRangeBegin; + uint16_t freeGroupIdentifierRangeEnd; + uint8_t * initiatorIeeeAddress; + uint16_t initiatorNetworkAddress; +} sl_zcl_zll_commissioning_cluster_network_start_request_command_t; + +#define sl_zcl_zll_commissioning_cluster_network_start_request_command_signature { \ + 15, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_zll_commissioning_cluster_network_start_request_command_t, transaction), \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_zll_commissioning_cluster_network_start_request_command_t, extendedPanId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_zll_commissioning_cluster_network_start_request_command_t, keyIndex), \ + (ZAP_SIGNATURE_TYPE_SECURITY_KEY), offsetof(sl_zcl_zll_commissioning_cluster_network_start_request_command_t, encryptedNetworkKey), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_network_start_request_command_t, logicalChannel), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_start_request_command_t, panId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_start_request_command_t, networkAddress), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_start_request_command_t, groupIdentifiersBegin), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_start_request_command_t, groupIdentifiersEnd), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_start_request_command_t, freeNetworkAddressRangeBegin), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_start_request_command_t, freeNetworkAddressRangeEnd), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_start_request_command_t, freeGroupIdentifierRangeBegin), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_start_request_command_t, freeGroupIdentifierRangeEnd), \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_zll_commissioning_cluster_network_start_request_command_t, initiatorIeeeAddress), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_start_request_command_t, initiatorNetworkAddress), \ +} + + +/** @brief Structure for ZCL command "NetworkJoinRouterRequest" from "ZLL Commissioning" + */ +typedef struct __zcl_zll_commissioning_cluster_network_join_router_request_command { + uint32_t transaction; + uint8_t * extendedPanId; + uint8_t keyIndex; + /* TYPE WARNING: security_key defaults to */ uint8_t * encryptedNetworkKey; + uint8_t networkUpdateId; + uint8_t logicalChannel; + uint16_t panId; + uint16_t networkAddress; + uint16_t groupIdentifiersBegin; + uint16_t groupIdentifiersEnd; + uint16_t freeNetworkAddressRangeBegin; + uint16_t freeNetworkAddressRangeEnd; + uint16_t freeGroupIdentifierRangeBegin; + uint16_t freeGroupIdentifierRangeEnd; +} sl_zcl_zll_commissioning_cluster_network_join_router_request_command_t; + +#define sl_zcl_zll_commissioning_cluster_network_join_router_request_command_signature { \ + 14, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_router_request_command_t, transaction), \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_zll_commissioning_cluster_network_join_router_request_command_t, extendedPanId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_zll_commissioning_cluster_network_join_router_request_command_t, keyIndex), \ + (ZAP_SIGNATURE_TYPE_SECURITY_KEY), offsetof(sl_zcl_zll_commissioning_cluster_network_join_router_request_command_t, encryptedNetworkKey), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_router_request_command_t, networkUpdateId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_router_request_command_t, logicalChannel), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_router_request_command_t, panId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_router_request_command_t, networkAddress), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_router_request_command_t, groupIdentifiersBegin), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_router_request_command_t, groupIdentifiersEnd), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_router_request_command_t, freeNetworkAddressRangeBegin), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_router_request_command_t, freeNetworkAddressRangeEnd), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_router_request_command_t, freeGroupIdentifierRangeBegin), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_router_request_command_t, freeGroupIdentifierRangeEnd), \ +} + + +/** @brief Structure for ZCL command "NetworkJoinEndDeviceRequest" from "ZLL Commissioning" + */ +typedef struct __zcl_zll_commissioning_cluster_network_join_end_device_request_command { + uint32_t transaction; + uint8_t * extendedPanId; + uint8_t keyIndex; + /* TYPE WARNING: security_key defaults to */ uint8_t * encryptedNetworkKey; + uint8_t networkUpdateId; + uint8_t logicalChannel; + uint16_t panId; + uint16_t networkAddress; + uint16_t groupIdentifiersBegin; + uint16_t groupIdentifiersEnd; + uint16_t freeNetworkAddressRangeBegin; + uint16_t freeNetworkAddressRangeEnd; + uint16_t freeGroupIdentifierRangeBegin; + uint16_t freeGroupIdentifierRangeEnd; +} sl_zcl_zll_commissioning_cluster_network_join_end_device_request_command_t; + +#define sl_zcl_zll_commissioning_cluster_network_join_end_device_request_command_signature { \ + 14, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_end_device_request_command_t, transaction), \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_zll_commissioning_cluster_network_join_end_device_request_command_t, extendedPanId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_zll_commissioning_cluster_network_join_end_device_request_command_t, keyIndex), \ + (ZAP_SIGNATURE_TYPE_SECURITY_KEY), offsetof(sl_zcl_zll_commissioning_cluster_network_join_end_device_request_command_t, encryptedNetworkKey), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_end_device_request_command_t, networkUpdateId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_end_device_request_command_t, logicalChannel), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_end_device_request_command_t, panId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_end_device_request_command_t, networkAddress), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_end_device_request_command_t, groupIdentifiersBegin), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_end_device_request_command_t, groupIdentifiersEnd), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_end_device_request_command_t, freeNetworkAddressRangeBegin), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_end_device_request_command_t, freeNetworkAddressRangeEnd), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_end_device_request_command_t, freeGroupIdentifierRangeBegin), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_join_end_device_request_command_t, freeGroupIdentifierRangeEnd), \ +} + + +/** @brief Structure for ZCL command "NetworkUpdateRequest" from "ZLL Commissioning" + */ +typedef struct __zcl_zll_commissioning_cluster_network_update_request_command { + uint32_t transaction; + uint8_t * extendedPanId; + uint8_t networkUpdateId; + uint8_t logicalChannel; + uint16_t panId; + uint16_t networkAddress; +} sl_zcl_zll_commissioning_cluster_network_update_request_command_t; + +#define sl_zcl_zll_commissioning_cluster_network_update_request_command_signature { \ + 6, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_zll_commissioning_cluster_network_update_request_command_t, transaction), \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_zll_commissioning_cluster_network_update_request_command_t, extendedPanId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_network_update_request_command_t, networkUpdateId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_network_update_request_command_t, logicalChannel), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_update_request_command_t, panId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_network_update_request_command_t, networkAddress), \ +} + + +/** @brief Structure for ZCL command "IdentifyRequest" from "ZLL Commissioning" + */ +typedef struct __zcl_zll_commissioning_cluster_identify_request_command { + uint32_t transaction; + uint16_t identifyDuration; +} sl_zcl_zll_commissioning_cluster_identify_request_command_t; + +#define sl_zcl_zll_commissioning_cluster_identify_request_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_zll_commissioning_cluster_identify_request_command_t, transaction), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_identify_request_command_t, identifyDuration), \ +} + + +/** @brief Structure for ZCL command "ConfigureMirror" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_configure_mirror_command { + uint32_t issuerEventId; + uint32_t reportingInterval; + uint8_t mirrorNotificationReporting; + uint8_t notificationScheme; +} sl_zcl_simple_metering_cluster_configure_mirror_command_t; + +#define sl_zcl_simple_metering_cluster_configure_mirror_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_simple_metering_cluster_configure_mirror_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_INT24U), offsetof(sl_zcl_simple_metering_cluster_configure_mirror_command_t, reportingInterval), \ + (ZAP_SIGNATURE_TYPE_BOOLEAN), offsetof(sl_zcl_simple_metering_cluster_configure_mirror_command_t, mirrorNotificationReporting), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_simple_metering_cluster_configure_mirror_command_t, notificationScheme), \ +} + + +/** @brief Structure for ZCL command "ResetLoadLimitCounter" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_reset_load_limit_counter_command { + uint32_t providerId; + uint32_t issuerEventId; +} sl_zcl_simple_metering_cluster_reset_load_limit_counter_command_t; + +#define sl_zcl_simple_metering_cluster_reset_load_limit_counter_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_simple_metering_cluster_reset_load_limit_counter_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_simple_metering_cluster_reset_load_limit_counter_command_t, issuerEventId), \ +} + + +/** @brief Structure for ZCL command "GetSeasons" from "Calendar" + */ +typedef struct __zcl_calendar_cluster_get_seasons_command { + uint32_t providerId; + uint32_t issuerCalendarId; +} sl_zcl_calendar_cluster_get_seasons_command_t; + +#define sl_zcl_calendar_cluster_get_seasons_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_get_seasons_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_get_seasons_command_t, issuerCalendarId), \ +} + + +/** @brief Structure for ZCL command "CancelTariff" from "Price" + */ +typedef struct __zcl_price_cluster_cancel_tariff_command { + uint32_t providerId; + uint32_t issuerTariffId; + uint8_t tariffType; +} sl_zcl_price_cluster_cancel_tariff_command_t; + +#define sl_zcl_price_cluster_cancel_tariff_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_cancel_tariff_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_cancel_tariff_command_t, issuerTariffId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_cancel_tariff_command_t, tariffType), \ +} + + +/** @brief Structure for ZCL command "CancelCalendar" from "Calendar" + */ +typedef struct __zcl_calendar_cluster_cancel_calendar_command { + uint32_t providerId; + uint32_t issuerCalendarId; + uint8_t calendarType; +} sl_zcl_calendar_cluster_cancel_calendar_command_t; + +#define sl_zcl_calendar_cluster_cancel_calendar_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_cancel_calendar_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_cancel_calendar_command_t, issuerCalendarId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_calendar_cluster_cancel_calendar_command_t, calendarType), \ +} + + +/** @brief Structure for ZCL command "PublishChangeOfSupplier" from "Device Management" + */ +typedef struct __zcl_device_management_cluster_publish_change_of_supplier_command { + uint32_t currentProviderId; + uint32_t issuerEventId; + uint8_t tariffType; + uint32_t proposedProviderId; + uint32_t providerChangeImplementationTime; + uint32_t providerChangeControl; + uint8_t * proposedProviderName; + uint8_t * proposedProviderContactDetails; +} sl_zcl_device_management_cluster_publish_change_of_supplier_command_t; + +#define sl_zcl_device_management_cluster_publish_change_of_supplier_command_signature { \ + 8, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_device_management_cluster_publish_change_of_supplier_command_t, currentProviderId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_device_management_cluster_publish_change_of_supplier_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_device_management_cluster_publish_change_of_supplier_command_t, tariffType), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_device_management_cluster_publish_change_of_supplier_command_t, proposedProviderId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_device_management_cluster_publish_change_of_supplier_command_t, providerChangeImplementationTime), \ + (ZAP_SIGNATURE_TYPE_BITMAP32), offsetof(sl_zcl_device_management_cluster_publish_change_of_supplier_command_t, providerChangeControl), \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_device_management_cluster_publish_change_of_supplier_command_t, proposedProviderName), \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_device_management_cluster_publish_change_of_supplier_command_t, proposedProviderContactDetails), \ +} + + +/** @brief Structure for ZCL command "PublishChangeOfTenancy" from "Device Management" + */ +typedef struct __zcl_device_management_cluster_publish_change_of_tenancy_command { + uint32_t providerId; + uint32_t issuerEventId; + uint8_t tariffType; + uint32_t implementationDateTime; + uint32_t proposedTenancyChangeControl; +} sl_zcl_device_management_cluster_publish_change_of_tenancy_command_t; + +#define sl_zcl_device_management_cluster_publish_change_of_tenancy_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_device_management_cluster_publish_change_of_tenancy_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_device_management_cluster_publish_change_of_tenancy_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_device_management_cluster_publish_change_of_tenancy_command_t, tariffType), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_device_management_cluster_publish_change_of_tenancy_command_t, implementationDateTime), \ + (ZAP_SIGNATURE_TYPE_BITMAP32), offsetof(sl_zcl_device_management_cluster_publish_change_of_tenancy_command_t, proposedTenancyChangeControl), \ +} + + +/** @brief Structure for ZCL command "SetUncontrolledFlowThreshold" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_set_uncontrolled_flow_threshold_command { + uint32_t providerId; + uint32_t issuerEventId; + uint16_t uncontrolledFlowThreshold; + uint8_t unitOfMeasure; + uint16_t multiplier; + uint16_t divisor; + uint8_t stabilisationPeriod; + uint16_t measurementPeriod; +} sl_zcl_simple_metering_cluster_set_uncontrolled_flow_threshold_command_t; + +#define sl_zcl_simple_metering_cluster_set_uncontrolled_flow_threshold_command_signature { \ + 8, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_simple_metering_cluster_set_uncontrolled_flow_threshold_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_simple_metering_cluster_set_uncontrolled_flow_threshold_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_simple_metering_cluster_set_uncontrolled_flow_threshold_command_t, uncontrolledFlowThreshold), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_simple_metering_cluster_set_uncontrolled_flow_threshold_command_t, unitOfMeasure), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_simple_metering_cluster_set_uncontrolled_flow_threshold_command_t, multiplier), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_simple_metering_cluster_set_uncontrolled_flow_threshold_command_t, divisor), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_simple_metering_cluster_set_uncontrolled_flow_threshold_command_t, stabilisationPeriod), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_simple_metering_cluster_set_uncontrolled_flow_threshold_command_t, measurementPeriod), \ +} + + +/** @brief Structure for ZCL command "PowerDescriptorChange" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_power_descriptor_change_command { + uint32_t currentPowerMode; + uint32_t availablePowerSources; + uint32_t currentPowerSource; + uint32_t currentPowerSourceLevel; +} sl_zcl_sl_works_with_all_hubs_cluster_power_descriptor_change_command_t; + +#define sl_zcl_sl_works_with_all_hubs_cluster_power_descriptor_change_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_power_descriptor_change_command_t, currentPowerMode), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_power_descriptor_change_command_t, availablePowerSources), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_power_descriptor_change_command_t, currentPowerSource), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_power_descriptor_change_command_t, currentPowerSourceLevel), \ +} + + +/** @brief Structure for ZCL command "PublishDayProfile" from "Calendar" + */ +typedef struct __zcl_calendar_cluster_publish_day_profile_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t issuerCalendarId; + uint8_t dayId; + uint8_t totalNumberOfScheduleEntries; + uint8_t commandIndex; + uint8_t totalNumberOfCommands; + uint8_t calendarType; + /* TYPE WARNING: ScheduleEntry array defaults to */ uint8_t * dayScheduleEntries; +} sl_zcl_calendar_cluster_publish_day_profile_command_t; + +#define sl_zcl_calendar_cluster_publish_day_profile_command_signature { \ + 9, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_publish_day_profile_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_publish_day_profile_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_publish_day_profile_command_t, issuerCalendarId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_publish_day_profile_command_t, dayId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_publish_day_profile_command_t, totalNumberOfScheduleEntries), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_publish_day_profile_command_t, commandIndex), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_publish_day_profile_command_t, totalNumberOfCommands), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_calendar_cluster_publish_day_profile_command_t, calendarType), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_calendar_cluster_publish_day_profile_command_t, dayScheduleEntries), \ +} + + +/** @brief Structure for ZCL command "PublishWeekProfile" from "Calendar" + */ +typedef struct __zcl_calendar_cluster_publish_week_profile_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t issuerCalendarId; + uint8_t weekId; + uint8_t dayIdRefMonday; + uint8_t dayIdRefTuesday; + uint8_t dayIdRefWednesday; + uint8_t dayIdRefThursday; + uint8_t dayIdRefFriday; + uint8_t dayIdRefSaturday; + uint8_t dayIdRefSunday; +} sl_zcl_calendar_cluster_publish_week_profile_command_t; + +#define sl_zcl_calendar_cluster_publish_week_profile_command_signature { \ + 11, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_publish_week_profile_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_publish_week_profile_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_publish_week_profile_command_t, issuerCalendarId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_publish_week_profile_command_t, weekId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_publish_week_profile_command_t, dayIdRefMonday), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_publish_week_profile_command_t, dayIdRefTuesday), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_publish_week_profile_command_t, dayIdRefWednesday), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_publish_week_profile_command_t, dayIdRefThursday), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_publish_week_profile_command_t, dayIdRefFriday), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_publish_week_profile_command_t, dayIdRefSaturday), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_publish_week_profile_command_t, dayIdRefSunday), \ +} + + +/** @brief Structure for ZCL command "PublishTierLabels" from "Price" + */ +typedef struct __zcl_price_cluster_publish_tier_labels_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t issuerTariffId; + uint8_t commandIndex; + uint8_t numberOfCommands; + uint8_t numberOfLabels; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * tierLabelsPayload; +} sl_zcl_price_cluster_publish_tier_labels_command_t; + +#define sl_zcl_price_cluster_publish_tier_labels_command_signature { \ + 7, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_tier_labels_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_tier_labels_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_tier_labels_command_t, issuerTariffId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_publish_tier_labels_command_t, commandIndex), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_publish_tier_labels_command_t, numberOfCommands), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_publish_tier_labels_command_t, numberOfLabels), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_price_cluster_publish_tier_labels_command_t, tierLabelsPayload), \ +} + + +/** @brief Structure for ZCL command "PublishSeasons" from "Calendar" + */ +typedef struct __zcl_calendar_cluster_publish_seasons_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t issuerCalendarId; + uint8_t commandIndex; + uint8_t totalNumberOfCommands; + /* TYPE WARNING: SeasonEntry array defaults to */ uint8_t * seasonEntries; +} sl_zcl_calendar_cluster_publish_seasons_command_t; + +#define sl_zcl_calendar_cluster_publish_seasons_command_signature { \ + 6, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_publish_seasons_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_publish_seasons_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_publish_seasons_command_t, issuerCalendarId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_publish_seasons_command_t, commandIndex), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_publish_seasons_command_t, totalNumberOfCommands), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_calendar_cluster_publish_seasons_command_t, seasonEntries), \ +} + + +/** @brief Structure for ZCL command "PublishTariffInformation" from "Price" + */ +typedef struct __zcl_price_cluster_publish_tariff_information_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t issuerTariffId; + uint32_t startTime; + uint8_t tariffTypeChargingScheme; + uint8_t * tariffLabel; + uint8_t numberOfPriceTiersInUse; + uint8_t numberOfBlockThresholdsInUse; + uint8_t unitOfMeasure; + uint16_t currency; + uint8_t priceTrailingDigit; + uint32_t standingCharge; + uint8_t tierBlockMode; + uint32_t blockThresholdMultiplier; + uint32_t blockThresholdDivisor; +} sl_zcl_price_cluster_publish_tariff_information_command_t; + +#define sl_zcl_price_cluster_publish_tariff_information_command_signature { \ + 15, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_tariff_information_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_tariff_information_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_tariff_information_command_t, issuerTariffId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_publish_tariff_information_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_price_cluster_publish_tariff_information_command_t, tariffTypeChargingScheme), \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_price_cluster_publish_tariff_information_command_t, tariffLabel), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_publish_tariff_information_command_t, numberOfPriceTiersInUse), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_publish_tariff_information_command_t, numberOfBlockThresholdsInUse), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_publish_tariff_information_command_t, unitOfMeasure), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_price_cluster_publish_tariff_information_command_t, currency), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_price_cluster_publish_tariff_information_command_t, priceTrailingDigit), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_tariff_information_command_t, standingCharge), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_publish_tariff_information_command_t, tierBlockMode), \ + (ZAP_SIGNATURE_TYPE_INT24U), offsetof(sl_zcl_price_cluster_publish_tariff_information_command_t, blockThresholdMultiplier), \ + (ZAP_SIGNATURE_TYPE_INT24U), offsetof(sl_zcl_price_cluster_publish_tariff_information_command_t, blockThresholdDivisor), \ +} + + +/** @brief Structure for ZCL command "PublishCalendar" from "Calendar" + */ +typedef struct __zcl_calendar_cluster_publish_calendar_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t issuerCalendarId; + uint32_t startTime; + uint8_t calendarType; + uint8_t calendarTimeReference; + uint8_t * calendarName; + uint8_t numberOfSeasons; + uint8_t numberOfWeekProfiles; + uint8_t numberOfDayProfiles; +} sl_zcl_calendar_cluster_publish_calendar_command_t; + +#define sl_zcl_calendar_cluster_publish_calendar_command_signature { \ + 10, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_publish_calendar_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_publish_calendar_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_publish_calendar_command_t, issuerCalendarId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_calendar_cluster_publish_calendar_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_calendar_cluster_publish_calendar_command_t, calendarType), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_calendar_cluster_publish_calendar_command_t, calendarTimeReference), \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_calendar_cluster_publish_calendar_command_t, calendarName), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_publish_calendar_command_t, numberOfSeasons), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_publish_calendar_command_t, numberOfWeekProfiles), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_publish_calendar_command_t, numberOfDayProfiles), \ +} + + +/** @brief Structure for ZCL command "PublishSpecialDays" from "Calendar" + */ +typedef struct __zcl_calendar_cluster_publish_special_days_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t issuerCalendarId; + uint32_t startTime; + uint8_t calendarType; + uint8_t totalNumberOfSpecialDays; + uint8_t commandIndex; + uint8_t totalNumberOfCommands; + /* TYPE WARNING: SpecialDay array defaults to */ uint8_t * specialDayEntries; +} sl_zcl_calendar_cluster_publish_special_days_command_t; + +#define sl_zcl_calendar_cluster_publish_special_days_command_signature { \ + 9, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_publish_special_days_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_publish_special_days_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_publish_special_days_command_t, issuerCalendarId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_calendar_cluster_publish_special_days_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_calendar_cluster_publish_special_days_command_t, calendarType), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_publish_special_days_command_t, totalNumberOfSpecialDays), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_publish_special_days_command_t, commandIndex), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_publish_special_days_command_t, totalNumberOfCommands), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_calendar_cluster_publish_special_days_command_t, specialDayEntries), \ +} + + +/** @brief Structure for ZCL command "GetDayProfiles" from "Calendar" + */ +typedef struct __zcl_calendar_cluster_get_day_profiles_command { + uint32_t providerId; + uint32_t issuerCalendarId; + uint8_t startDayId; + uint8_t numberOfDays; +} sl_zcl_calendar_cluster_get_day_profiles_command_t; + +#define sl_zcl_calendar_cluster_get_day_profiles_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_get_day_profiles_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_get_day_profiles_command_t, issuerCalendarId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_get_day_profiles_command_t, startDayId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_get_day_profiles_command_t, numberOfDays), \ +} + + +/** @brief Structure for ZCL command "GetWeekProfiles" from "Calendar" + */ +typedef struct __zcl_calendar_cluster_get_week_profiles_command { + uint32_t providerId; + uint32_t issuerCalendarId; + uint8_t startWeekId; + uint8_t numberOfWeeks; +} sl_zcl_calendar_cluster_get_week_profiles_command_t; + +#define sl_zcl_calendar_cluster_get_week_profiles_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_get_week_profiles_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_get_week_profiles_command_t, issuerCalendarId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_get_week_profiles_command_t, startWeekId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_get_week_profiles_command_t, numberOfWeeks), \ +} + + +/** @brief Structure for ZCL command "ChangePaymentMode" from "Prepayment" + */ +typedef struct __zcl_prepayment_cluster_change_payment_mode_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t implementationDateTime; + uint16_t proposedPaymentControlConfiguration; + uint32_t cutOffValue; +} sl_zcl_prepayment_cluster_change_payment_mode_command_t; + +#define sl_zcl_prepayment_cluster_change_payment_mode_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_change_payment_mode_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_change_payment_mode_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_prepayment_cluster_change_payment_mode_command_t, implementationDateTime), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_prepayment_cluster_change_payment_mode_command_t, proposedPaymentControlConfiguration), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_change_payment_mode_command_t, cutOffValue), \ +} + + +/** @brief Structure for ZCL command "PublishBillingPeriod" from "Price" + */ +typedef struct __zcl_price_cluster_publish_billing_period_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t billingPeriodStartTime; + uint32_t billingPeriodDuration; + uint8_t billingPeriodDurationType; + uint8_t tariffType; +} sl_zcl_price_cluster_publish_billing_period_command_t; + +#define sl_zcl_price_cluster_publish_billing_period_command_signature { \ + 6, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_billing_period_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_billing_period_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_publish_billing_period_command_t, billingPeriodStartTime), \ + (ZAP_SIGNATURE_TYPE_BITMAP24), offsetof(sl_zcl_price_cluster_publish_billing_period_command_t, billingPeriodDuration), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_price_cluster_publish_billing_period_command_t, billingPeriodDurationType), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_publish_billing_period_command_t, tariffType), \ +} + + +/** @brief Structure for ZCL command "PublishConsolidatedBill" from "Price" + */ +typedef struct __zcl_price_cluster_publish_consolidated_bill_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t billingPeriodStartTime; + uint32_t billingPeriodDuration; + uint8_t billingPeriodDurationType; + uint8_t tariffType; + uint32_t consolidatedBill; + uint16_t currency; + uint8_t billTrailingDigit; +} sl_zcl_price_cluster_publish_consolidated_bill_command_t; + +#define sl_zcl_price_cluster_publish_consolidated_bill_command_signature { \ + 9, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_consolidated_bill_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_consolidated_bill_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_publish_consolidated_bill_command_t, billingPeriodStartTime), \ + (ZAP_SIGNATURE_TYPE_BITMAP24), offsetof(sl_zcl_price_cluster_publish_consolidated_bill_command_t, billingPeriodDuration), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_price_cluster_publish_consolidated_bill_command_t, billingPeriodDurationType), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_publish_consolidated_bill_command_t, tariffType), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_consolidated_bill_command_t, consolidatedBill), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_price_cluster_publish_consolidated_bill_command_t, currency), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_price_cluster_publish_consolidated_bill_command_t, billTrailingDigit), \ +} + + +/** @brief Structure for ZCL command "PriceAcknowledgement" from "Price" + */ +typedef struct __zcl_price_cluster_price_acknowledgement_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t priceAckTime; + uint8_t control; +} sl_zcl_price_cluster_price_acknowledgement_command_t; + +#define sl_zcl_price_cluster_price_acknowledgement_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_price_acknowledgement_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_price_acknowledgement_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_price_acknowledgement_command_t, priceAckTime), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_price_cluster_price_acknowledgement_command_t, control), \ +} + + +/** @brief Structure for ZCL command "SupplyStatusResponse" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_supply_status_response_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t implementationDateTime; + uint8_t supplyStatus; +} sl_zcl_simple_metering_cluster_supply_status_response_command_t; + +#define sl_zcl_simple_metering_cluster_supply_status_response_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_simple_metering_cluster_supply_status_response_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_simple_metering_cluster_supply_status_response_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_simple_metering_cluster_supply_status_response_command_t, implementationDateTime), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_simple_metering_cluster_supply_status_response_command_t, supplyStatus), \ +} + + +/** @brief Structure for ZCL command "PublishCO2Value" from "Price" + */ +typedef struct __zcl_price_cluster_publish_co2_value_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t startTime; + uint8_t tariffType; + uint32_t cO2Value; + uint8_t cO2ValueUnit; + uint8_t cO2ValueTrailingDigit; +} sl_zcl_price_cluster_publish_co2_value_command_t; + +#define sl_zcl_price_cluster_publish_co2_value_command_signature { \ + 7, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_co2_value_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_co2_value_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_publish_co2_value_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_publish_co2_value_command_t, tariffType), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_co2_value_command_t, cO2Value), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_publish_co2_value_command_t, cO2ValueUnit), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_price_cluster_publish_co2_value_command_t, cO2ValueTrailingDigit), \ +} + + +/** @brief Structure for ZCL command "PublishCppEvent" from "Price" + */ +typedef struct __zcl_price_cluster_publish_cpp_event_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t startTime; + uint16_t durationInMinutes; + uint8_t tariffType; + uint8_t cppPriceTier; + uint8_t cppAuth; +} sl_zcl_price_cluster_publish_cpp_event_command_t; + +#define sl_zcl_price_cluster_publish_cpp_event_command_signature { \ + 7, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_cpp_event_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_cpp_event_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_publish_cpp_event_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_price_cluster_publish_cpp_event_command_t, durationInMinutes), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_publish_cpp_event_command_t, tariffType), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_publish_cpp_event_command_t, cppPriceTier), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_publish_cpp_event_command_t, cppAuth), \ +} + + +/** @brief Structure for ZCL command "PublishCurrencyConversion" from "Price" + */ +typedef struct __zcl_price_cluster_publish_currency_conversion_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t startTime; + uint16_t oldCurrency; + uint16_t newCurrency; + uint32_t conversionFactor; + uint8_t conversionFactorTrailingDigit; + uint32_t currencyChangeControlFlags; +} sl_zcl_price_cluster_publish_currency_conversion_command_t; + +#define sl_zcl_price_cluster_publish_currency_conversion_command_signature { \ + 8, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_currency_conversion_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_currency_conversion_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_publish_currency_conversion_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_price_cluster_publish_currency_conversion_command_t, oldCurrency), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_price_cluster_publish_currency_conversion_command_t, newCurrency), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_currency_conversion_command_t, conversionFactor), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_price_cluster_publish_currency_conversion_command_t, conversionFactorTrailingDigit), \ + (ZAP_SIGNATURE_TYPE_BITMAP32), offsetof(sl_zcl_price_cluster_publish_currency_conversion_command_t, currencyChangeControlFlags), \ +} + + +/** @brief Structure for ZCL command "PublishBlockPeriod" from "Price" + */ +typedef struct __zcl_price_cluster_publish_block_period_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t blockPeriodStartTime; + uint32_t blockPeriodDuration; + uint8_t blockPeriodControl; + uint8_t blockPeriodDurationType; + uint8_t tariffType; + uint8_t tariffResolutionPeriod; +} sl_zcl_price_cluster_publish_block_period_command_t; + +#define sl_zcl_price_cluster_publish_block_period_command_signature { \ + 8, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_block_period_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_block_period_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_publish_block_period_command_t, blockPeriodStartTime), \ + (ZAP_SIGNATURE_TYPE_INT24U), offsetof(sl_zcl_price_cluster_publish_block_period_command_t, blockPeriodDuration), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_price_cluster_publish_block_period_command_t, blockPeriodControl), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_price_cluster_publish_block_period_command_t, blockPeriodDurationType), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_publish_block_period_command_t, tariffType), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_publish_block_period_command_t, tariffResolutionPeriod), \ +} + + +/** @brief Structure for ZCL command "SetOverallDebtCap" from "Prepayment" + */ +typedef struct __zcl_prepayment_cluster_set_overall_debt_cap_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t implementationDateTime; + uint32_t overallDebtCap; +} sl_zcl_prepayment_cluster_set_overall_debt_cap_command_t; + +#define sl_zcl_prepayment_cluster_set_overall_debt_cap_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_set_overall_debt_cap_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_set_overall_debt_cap_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_prepayment_cluster_set_overall_debt_cap_command_t, implementationDateTime), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_set_overall_debt_cap_command_t, overallDebtCap), \ +} + + +/** @brief Structure for ZCL command "PublishCreditPayment" from "Price" + */ +typedef struct __zcl_price_cluster_publish_credit_payment_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t creditPaymentDueDate; + uint32_t creditPaymentOverDueAmount; + uint8_t creditPaymentStatus; + uint32_t creditPayment; + uint32_t creditPaymentDate; + uint8_t * creditPaymentRef; +} sl_zcl_price_cluster_publish_credit_payment_command_t; + +#define sl_zcl_price_cluster_publish_credit_payment_command_signature { \ + 8, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_credit_payment_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_credit_payment_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_publish_credit_payment_command_t, creditPaymentDueDate), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_credit_payment_command_t, creditPaymentOverDueAmount), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_publish_credit_payment_command_t, creditPaymentStatus), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_credit_payment_command_t, creditPayment), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_publish_credit_payment_command_t, creditPaymentDate), \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_price_cluster_publish_credit_payment_command_t, creditPaymentRef), \ +} + + +/** @brief Structure for ZCL command "SetMaximumCreditLimit" from "Prepayment" + */ +typedef struct __zcl_prepayment_cluster_set_maximum_credit_limit_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t implementationDateTime; + uint32_t maximumCreditLevel; + uint32_t maximumCreditPerTopUp; +} sl_zcl_prepayment_cluster_set_maximum_credit_limit_command_t; + +#define sl_zcl_prepayment_cluster_set_maximum_credit_limit_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_set_maximum_credit_limit_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_set_maximum_credit_limit_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_prepayment_cluster_set_maximum_credit_limit_command_t, implementationDateTime), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_set_maximum_credit_limit_command_t, maximumCreditLevel), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_set_maximum_credit_limit_command_t, maximumCreditPerTopUp), \ +} + + +/** @brief Structure for ZCL command "PublishPriceMatrix" from "Price" + */ +typedef struct __zcl_price_cluster_publish_price_matrix_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t startTime; + uint32_t issuerTariffId; + uint8_t commandIndex; + uint8_t numberOfCommands; + uint8_t subPayloadControl; + /* TYPE WARNING: PriceMatrixSubPayload array defaults to */ uint8_t * payload; +} sl_zcl_price_cluster_publish_price_matrix_command_t; + +#define sl_zcl_price_cluster_publish_price_matrix_command_signature { \ + 8, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_price_matrix_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_price_matrix_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_publish_price_matrix_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_price_matrix_command_t, issuerTariffId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_publish_price_matrix_command_t, commandIndex), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_publish_price_matrix_command_t, numberOfCommands), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_price_cluster_publish_price_matrix_command_t, subPayloadControl), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_price_cluster_publish_price_matrix_command_t, payload), \ +} + + +/** @brief Structure for ZCL command "PublishBlockThresholds" from "Price" + */ +typedef struct __zcl_price_cluster_publish_block_thresholds_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t startTime; + uint32_t issuerTariffId; + uint8_t commandIndex; + uint8_t numberOfCommands; + uint8_t subPayloadControl; + /* TYPE WARNING: BlockThresholdSubPayload array defaults to */ uint8_t * payload; +} sl_zcl_price_cluster_publish_block_thresholds_command_t; + +#define sl_zcl_price_cluster_publish_block_thresholds_command_signature { \ + 8, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_block_thresholds_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_block_thresholds_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_publish_block_thresholds_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_block_thresholds_command_t, issuerTariffId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_publish_block_thresholds_command_t, commandIndex), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_publish_block_thresholds_command_t, numberOfCommands), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_price_cluster_publish_block_thresholds_command_t, subPayloadControl), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_price_cluster_publish_block_thresholds_command_t, payload), \ +} + + +/** @brief Structure for ZCL command "ChangeSupply" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_change_supply_command { + uint32_t providerId; + uint32_t issuerEventId; + uint32_t requestDateTime; + uint32_t implementationDateTime; + uint8_t proposedSupplyStatus; + uint8_t supplyControlBits; +} sl_zcl_simple_metering_cluster_change_supply_command_t; + +#define sl_zcl_simple_metering_cluster_change_supply_command_signature { \ + 6, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_simple_metering_cluster_change_supply_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_simple_metering_cluster_change_supply_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_simple_metering_cluster_change_supply_command_t, requestDateTime), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_simple_metering_cluster_change_supply_command_t, implementationDateTime), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_simple_metering_cluster_change_supply_command_t, proposedSupplyStatus), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_simple_metering_cluster_change_supply_command_t, supplyControlBits), \ +} + + +/** @brief Structure for ZCL command "DeviceInformationRequest" from "ZLL Commissioning" + */ +typedef struct __zcl_zll_commissioning_cluster_device_information_request_command { + uint32_t transaction; + uint8_t startIndex; +} sl_zcl_zll_commissioning_cluster_device_information_request_command_t; + +#define sl_zcl_zll_commissioning_cluster_device_information_request_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_zll_commissioning_cluster_device_information_request_command_t, transaction), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_device_information_request_command_t, startIndex), \ +} + + +/** @brief Structure for ZCL command "ConfigureNotificationScheme" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_configure_notification_scheme_command { + uint32_t issuerEventId; + uint8_t notificationScheme; + uint32_t notificationFlagOrder; +} sl_zcl_simple_metering_cluster_configure_notification_scheme_command_t; + +#define sl_zcl_simple_metering_cluster_configure_notification_scheme_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_simple_metering_cluster_configure_notification_scheme_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_simple_metering_cluster_configure_notification_scheme_command_t, notificationScheme), \ + (ZAP_SIGNATURE_TYPE_BITMAP32), offsetof(sl_zcl_simple_metering_cluster_configure_notification_scheme_command_t, notificationFlagOrder), \ +} + + +/** @brief Structure for ZCL command "ScanResponse" from "ZLL Commissioning" + */ +typedef struct __zcl_zll_commissioning_cluster_scan_response_command { + uint32_t transaction; + uint8_t rssiCorrection; + uint8_t zigbeeInformation; + uint8_t zllInformation; + uint16_t keyBitmask; + uint32_t responseId; + uint8_t * extendedPanId; + uint8_t networkUpdateId; + uint8_t logicalChannel; + uint16_t panId; + uint16_t networkAddress; + uint8_t numberOfSubDevices; + uint8_t totalGroupIds; + uint8_t endpointId; + uint16_t profileId; + uint16_t deviceId; + uint8_t version; + uint8_t groupIdCount; +} sl_zcl_zll_commissioning_cluster_scan_response_command_t; + +#define sl_zcl_zll_commissioning_cluster_scan_response_command_signature { \ + 18, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_zll_commissioning_cluster_scan_response_command_t, transaction), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_scan_response_command_t, rssiCorrection), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_zll_commissioning_cluster_scan_response_command_t, zigbeeInformation), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_zll_commissioning_cluster_scan_response_command_t, zllInformation), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_zll_commissioning_cluster_scan_response_command_t, keyBitmask), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_zll_commissioning_cluster_scan_response_command_t, responseId), \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_zll_commissioning_cluster_scan_response_command_t, extendedPanId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_scan_response_command_t, networkUpdateId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_scan_response_command_t, logicalChannel), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_scan_response_command_t, panId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_scan_response_command_t, networkAddress), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_scan_response_command_t, numberOfSubDevices), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_scan_response_command_t, totalGroupIds), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_scan_response_command_t, endpointId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_scan_response_command_t, profileId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_zll_commissioning_cluster_scan_response_command_t, deviceId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_scan_response_command_t, version), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_scan_response_command_t, groupIdCount), \ +} + + +/** @brief Structure for ZCL command "ConfigureNotificationFlags" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_configure_notification_flags_command { + uint32_t issuerEventId; + uint8_t notificationScheme; + uint16_t notificationFlagAttributeId; + uint16_t clusterId; + uint16_t manufacturerCode; + uint8_t numberOfCommands; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * commandIds; +} sl_zcl_simple_metering_cluster_configure_notification_flags_command_t; + +#define sl_zcl_simple_metering_cluster_configure_notification_flags_command_signature { \ + 7, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_simple_metering_cluster_configure_notification_flags_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_simple_metering_cluster_configure_notification_flags_command_t, notificationScheme), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_simple_metering_cluster_configure_notification_flags_command_t, notificationFlagAttributeId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_simple_metering_cluster_configure_notification_flags_command_t, clusterId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_simple_metering_cluster_configure_notification_flags_command_t, manufacturerCode), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_simple_metering_cluster_configure_notification_flags_command_t, numberOfCommands), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_simple_metering_cluster_configure_notification_flags_command_t, commandIds), \ +} + + +/** @brief Structure for ZCL command "PairingResponse" from "MDU Pairing" + */ +typedef struct __zcl_mdu_pairing_cluster_pairing_response_command { + uint32_t pairingInformationVersion; + uint8_t totalNumberOfDevices; + uint8_t commandIndex; + uint8_t totalNumberOfCommands; + /* TYPE WARNING: IEEE_ADDRESS array defaults to */ uint8_t * eui64s; +} sl_zcl_mdu_pairing_cluster_pairing_response_command_t; + +#define sl_zcl_mdu_pairing_cluster_pairing_response_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_mdu_pairing_cluster_pairing_response_command_t, pairingInformationVersion), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_mdu_pairing_cluster_pairing_response_command_t, totalNumberOfDevices), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_mdu_pairing_cluster_pairing_response_command_t, commandIndex), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_mdu_pairing_cluster_pairing_response_command_t, totalNumberOfCommands), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_mdu_pairing_cluster_pairing_response_command_t, eui64s), \ +} + + +/** @brief Structure for ZCL command "DeviceInformationResponse" from "ZLL Commissioning" + */ +typedef struct __zcl_zll_commissioning_cluster_device_information_response_command { + uint32_t transaction; + uint8_t numberOfSubDevices; + uint8_t startIndex; + uint8_t deviceInformationRecordCount; + /* TYPE WARNING: DeviceInformationRecord array defaults to */ uint8_t * deviceInformationRecordList; +} sl_zcl_zll_commissioning_cluster_device_information_response_command_t; + +#define sl_zcl_zll_commissioning_cluster_device_information_response_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_zll_commissioning_cluster_device_information_response_command_t, transaction), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_device_information_response_command_t, numberOfSubDevices), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_device_information_response_command_t, startIndex), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_device_information_response_command_t, deviceInformationRecordCount), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_zll_commissioning_cluster_device_information_response_command_t, deviceInformationRecordList), \ +} + + +/** @brief Structure for ZCL command "ScheduleSnapshot" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_schedule_snapshot_command { + uint32_t issuerEventId; + uint8_t commandIndex; + uint8_t commandCount; + /* TYPE WARNING: SnapshotSchedulePayload array defaults to */ uint8_t * snapshotSchedulePayload; +} sl_zcl_simple_metering_cluster_schedule_snapshot_command_t; + +#define sl_zcl_simple_metering_cluster_schedule_snapshot_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_simple_metering_cluster_schedule_snapshot_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_simple_metering_cluster_schedule_snapshot_command_t, commandIndex), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_simple_metering_cluster_schedule_snapshot_command_t, commandCount), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_simple_metering_cluster_schedule_snapshot_command_t, snapshotSchedulePayload), \ +} + + +/** @brief Structure for ZCL command "ChangeDebt" from "Prepayment" + */ +typedef struct __zcl_prepayment_cluster_change_debt_command { + uint32_t issuerEventId; + uint8_t * debtLabel; + uint32_t debtAmount; + uint8_t debtRecoveryMethod; + uint8_t debtAmountType; + uint32_t debtRecoveryStartTime; + uint16_t debtRecoveryCollectionTime; + uint8_t debtRecoveryFrequency; + uint32_t debtRecoveryAmount; + uint16_t debtRecoveryBalancePercentage; +} sl_zcl_prepayment_cluster_change_debt_command_t; + +#define sl_zcl_prepayment_cluster_change_debt_command_signature { \ + 10, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_change_debt_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_prepayment_cluster_change_debt_command_t, debtLabel), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_change_debt_command_t, debtAmount), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_prepayment_cluster_change_debt_command_t, debtRecoveryMethod), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_prepayment_cluster_change_debt_command_t, debtAmountType), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_prepayment_cluster_change_debt_command_t, debtRecoveryStartTime), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_prepayment_cluster_change_debt_command_t, debtRecoveryCollectionTime), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_prepayment_cluster_change_debt_command_t, debtRecoveryFrequency), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_change_debt_command_t, debtRecoveryAmount), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_prepayment_cluster_change_debt_command_t, debtRecoveryBalancePercentage), \ +} + + +/** @brief Structure for ZCL command "PublishPrice" from "Price" + */ +typedef struct __zcl_price_cluster_publish_price_command { + uint32_t providerId; + uint8_t * rateLabel; + uint32_t issuerEventId; + uint32_t currentTime; + uint8_t unitOfMeasure; + uint16_t currency; + uint8_t priceTrailingDigitAndPriceTier; + uint8_t numberOfPriceTiersAndRegisterTier; + uint32_t startTime; + uint16_t durationInMinutes; + uint32_t price; + uint8_t priceRatio; + uint32_t generationPrice; + uint8_t generationPriceRatio; + uint32_t alternateCostDelivered; + uint8_t alternateCostUnit; + uint8_t alternateCostTrailingDigit; + uint8_t numberOfBlockThresholds; + uint8_t priceControl; + uint8_t numberOfGenerationTiers; + uint8_t generationTier; + uint8_t extendedNumberOfPriceTiers; + uint8_t extendedPriceTier; + uint8_t extendedRegisterTier; +} sl_zcl_price_cluster_publish_price_command_t; + +#define sl_zcl_price_cluster_publish_price_command_signature { \ + 24, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_price_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_price_cluster_publish_price_command_t, rateLabel), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_price_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_publish_price_command_t, currentTime), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_publish_price_command_t, unitOfMeasure), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_price_cluster_publish_price_command_t, currency), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_price_cluster_publish_price_command_t, priceTrailingDigitAndPriceTier), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_price_cluster_publish_price_command_t, numberOfPriceTiersAndRegisterTier), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_publish_price_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_price_cluster_publish_price_command_t, durationInMinutes), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_price_command_t, price), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_publish_price_command_t, priceRatio), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_price_command_t, generationPrice), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_publish_price_command_t, generationPriceRatio), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_price_command_t, alternateCostDelivered), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_publish_price_command_t, alternateCostUnit), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_price_cluster_publish_price_command_t, alternateCostTrailingDigit), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_publish_price_command_t, numberOfBlockThresholds), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_price_cluster_publish_price_command_t, priceControl), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_publish_price_command_t, numberOfGenerationTiers), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_publish_price_command_t, generationTier), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_publish_price_command_t, extendedNumberOfPriceTiers), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_publish_price_command_t, extendedPriceTier), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_publish_price_command_t, extendedRegisterTier), \ +} + + +/** @brief Structure for ZCL command "ScheduleSnapshotResponse" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_schedule_snapshot_response_command { + uint32_t issuerEventId; + /* TYPE WARNING: SnapshotResponsePayload array defaults to */ uint8_t * snapshotResponsePayload; +} sl_zcl_simple_metering_cluster_schedule_snapshot_response_command_t; + +#define sl_zcl_simple_metering_cluster_schedule_snapshot_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_simple_metering_cluster_schedule_snapshot_response_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_simple_metering_cluster_schedule_snapshot_response_command_t, snapshotResponsePayload), \ +} + + +/** @brief Structure for ZCL command "SetEventConfiguration" from "Device Management" + */ +typedef struct __zcl_device_management_cluster_set_event_configuration_command { + uint32_t issuerEventId; + uint32_t startDateTime; + uint8_t eventConfiguration; + uint8_t configurationControl; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * eventConfigurationPayload; +} sl_zcl_device_management_cluster_set_event_configuration_command_t; + +#define sl_zcl_device_management_cluster_set_event_configuration_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_device_management_cluster_set_event_configuration_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_device_management_cluster_set_event_configuration_command_t, startDateTime), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_device_management_cluster_set_event_configuration_command_t, eventConfiguration), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_device_management_cluster_set_event_configuration_command_t, configurationControl), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_device_management_cluster_set_event_configuration_command_t, eventConfigurationPayload), \ +} + + +/** @brief Structure for ZCL command "MessageConfirmation" from "Messaging" + */ +typedef struct __zcl_messaging_cluster_message_confirmation_command { + uint32_t messageId; + uint32_t confirmationTime; + uint8_t messageConfirmationControl; + uint8_t * messageResponse; +} sl_zcl_messaging_cluster_message_confirmation_command_t; + +#define sl_zcl_messaging_cluster_message_confirmation_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_messaging_cluster_message_confirmation_command_t, messageId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_messaging_cluster_message_confirmation_command_t, confirmationTime), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_messaging_cluster_message_confirmation_command_t, messageConfirmationControl), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_messaging_cluster_message_confirmation_command_t, messageResponse), \ +} + + +/** @brief Structure for ZCL command "StartSampling" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_start_sampling_command { + uint32_t issuerEventId; + uint32_t startSamplingTime; + uint8_t sampleType; + uint16_t sampleRequestInterval; + uint16_t maxNumberOfSamples; +} sl_zcl_simple_metering_cluster_start_sampling_command_t; + +#define sl_zcl_simple_metering_cluster_start_sampling_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_simple_metering_cluster_start_sampling_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_simple_metering_cluster_start_sampling_command_t, startSamplingTime), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_simple_metering_cluster_start_sampling_command_t, sampleType), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_simple_metering_cluster_start_sampling_command_t, sampleRequestInterval), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_simple_metering_cluster_start_sampling_command_t, maxNumberOfSamples), \ +} + + +/** @brief Structure for ZCL command "CreditAdjustment" from "Prepayment" + */ +typedef struct __zcl_prepayment_cluster_credit_adjustment_command { + uint32_t issuerEventId; + uint32_t startTime; + uint8_t creditAdjustmentType; + uint32_t creditAdjustmentValue; +} sl_zcl_prepayment_cluster_credit_adjustment_command_t; + +#define sl_zcl_prepayment_cluster_credit_adjustment_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_credit_adjustment_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_prepayment_cluster_credit_adjustment_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_prepayment_cluster_credit_adjustment_command_t, creditAdjustmentType), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_credit_adjustment_command_t, creditAdjustmentValue), \ +} + + +/** @brief Structure for ZCL command "RequestNewPasswordResponse" from "Device Management" + */ +typedef struct __zcl_device_management_cluster_request_new_password_response_command { + uint32_t issuerEventId; + uint32_t implementationDateTime; + uint16_t durationInMinutes; + uint8_t passwordType; + uint8_t * password; +} sl_zcl_device_management_cluster_request_new_password_response_command_t; + +#define sl_zcl_device_management_cluster_request_new_password_response_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_device_management_cluster_request_new_password_response_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_device_management_cluster_request_new_password_response_command_t, implementationDateTime), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_device_management_cluster_request_new_password_response_command_t, durationInMinutes), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_device_management_cluster_request_new_password_response_command_t, passwordType), \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_device_management_cluster_request_new_password_response_command_t, password), \ +} + + +/** @brief Structure for ZCL command "PublishConversionFactor" from "Price" + */ +typedef struct __zcl_price_cluster_publish_conversion_factor_command { + uint32_t issuerEventId; + uint32_t startTime; + uint32_t conversionFactor; + uint8_t conversionFactorTrailingDigit; +} sl_zcl_price_cluster_publish_conversion_factor_command_t; + +#define sl_zcl_price_cluster_publish_conversion_factor_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_conversion_factor_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_publish_conversion_factor_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_conversion_factor_command_t, conversionFactor), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_price_cluster_publish_conversion_factor_command_t, conversionFactorTrailingDigit), \ +} + + +/** @brief Structure for ZCL command "PublishCalorificValue" from "Price" + */ +typedef struct __zcl_price_cluster_publish_calorific_value_command { + uint32_t issuerEventId; + uint32_t startTime; + uint32_t calorificValue; + uint8_t calorificValueUnit; + uint8_t calorificValueTrailingDigit; +} sl_zcl_price_cluster_publish_calorific_value_command_t; + +#define sl_zcl_price_cluster_publish_calorific_value_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_calorific_value_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_publish_calorific_value_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_publish_calorific_value_command_t, calorificValue), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_publish_calorific_value_command_t, calorificValueUnit), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_price_cluster_publish_calorific_value_command_t, calorificValueTrailingDigit), \ +} + + +/** @brief Structure for ZCL command "EmergencyCreditSetup" from "Prepayment" + */ +typedef struct __zcl_prepayment_cluster_emergency_credit_setup_command { + uint32_t issuerEventId; + uint32_t startTime; + uint32_t emergencyCreditLimit; + uint32_t emergencyCreditThreshold; +} sl_zcl_prepayment_cluster_emergency_credit_setup_command_t; + +#define sl_zcl_prepayment_cluster_emergency_credit_setup_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_emergency_credit_setup_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_prepayment_cluster_emergency_credit_setup_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_emergency_credit_setup_command_t, emergencyCreditLimit), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_emergency_credit_setup_command_t, emergencyCreditThreshold), \ +} + + +/** @brief Structure for ZCL command "UpdateSiteId" from "Device Management" + */ +typedef struct __zcl_device_management_cluster_update_site_id_command { + uint32_t issuerEventId; + uint32_t siteIdTime; + uint32_t providerId; + uint8_t * siteId; +} sl_zcl_device_management_cluster_update_site_id_command_t; + +#define sl_zcl_device_management_cluster_update_site_id_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_device_management_cluster_update_site_id_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_device_management_cluster_update_site_id_command_t, siteIdTime), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_device_management_cluster_update_site_id_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_device_management_cluster_update_site_id_command_t, siteId), \ +} + + +/** @brief Structure for ZCL command "UpdateCIN" from "Device Management" + */ +typedef struct __zcl_device_management_cluster_update_cin_command { + uint32_t issuerEventId; + uint32_t implementationTime; + uint32_t providerId; + uint8_t * customerIdNumber; +} sl_zcl_device_management_cluster_update_cin_command_t; + +#define sl_zcl_device_management_cluster_update_cin_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_device_management_cluster_update_cin_command_t, issuerEventId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_device_management_cluster_update_cin_command_t, implementationTime), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_device_management_cluster_update_cin_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_device_management_cluster_update_cin_command_t, customerIdNumber), \ +} + + +/** @brief Structure for ZCL command "PublishSnapshot" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_publish_snapshot_command { + uint32_t snapshotId; + uint32_t snapshotTime; + uint8_t totalSnapshotsFound; + uint8_t commandIndex; + uint8_t totalCommands; + uint32_t snapshotCause; + uint8_t snapshotPayloadType; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * snapshotPayload; +} sl_zcl_simple_metering_cluster_publish_snapshot_command_t; + +#define sl_zcl_simple_metering_cluster_publish_snapshot_command_signature { \ + 8, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_simple_metering_cluster_publish_snapshot_command_t, snapshotId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_simple_metering_cluster_publish_snapshot_command_t, snapshotTime), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_simple_metering_cluster_publish_snapshot_command_t, totalSnapshotsFound), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_simple_metering_cluster_publish_snapshot_command_t, commandIndex), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_simple_metering_cluster_publish_snapshot_command_t, totalCommands), \ + (ZAP_SIGNATURE_TYPE_BITMAP32), offsetof(sl_zcl_simple_metering_cluster_publish_snapshot_command_t, snapshotCause), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_simple_metering_cluster_publish_snapshot_command_t, snapshotPayloadType), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_simple_metering_cluster_publish_snapshot_command_t, snapshotPayload), \ +} + + +/** @brief Structure for ZCL command "PublishPrepaySnapshot" from "Prepayment" + */ +typedef struct __zcl_prepayment_cluster_publish_prepay_snapshot_command { + uint32_t snapshotId; + uint32_t snapshotTime; + uint8_t totalSnapshotsFound; + uint8_t commandIndex; + uint8_t totalNumberOfCommands; + uint32_t snapshotCause; + uint8_t snapshotPayloadType; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * snapshotPayload; +} sl_zcl_prepayment_cluster_publish_prepay_snapshot_command_t; + +#define sl_zcl_prepayment_cluster_publish_prepay_snapshot_command_signature { \ + 8, \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_prepayment_cluster_publish_prepay_snapshot_command_t, snapshotId), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_prepayment_cluster_publish_prepay_snapshot_command_t, snapshotTime), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_prepayment_cluster_publish_prepay_snapshot_command_t, totalSnapshotsFound), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_prepayment_cluster_publish_prepay_snapshot_command_t, commandIndex), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_prepayment_cluster_publish_prepay_snapshot_command_t, totalNumberOfCommands), \ + (ZAP_SIGNATURE_TYPE_BITMAP32), offsetof(sl_zcl_prepayment_cluster_publish_prepay_snapshot_command_t, snapshotCause), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_prepayment_cluster_publish_prepay_snapshot_command_t, snapshotPayloadType), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_prepayment_cluster_publish_prepay_snapshot_command_t, snapshotPayload), \ +} + + +/** @brief Structure for ZCL command "PowerProfileRequest" from "Power Profile" + */ +typedef struct __zcl_power_profile_cluster_power_profile_request_command { + uint8_t powerProfileId; +} sl_zcl_power_profile_cluster_power_profile_request_command_t; + +#define sl_zcl_power_profile_cluster_power_profile_request_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_power_profile_request_command_t, powerProfileId), \ +} + + +/** @brief Structure for ZCL command "PowerProfileScheduleConstraintsRequest" from "Power Profile" + */ +typedef struct __zcl_power_profile_cluster_power_profile_schedule_constraints_request_command { + uint8_t powerProfileId; +} sl_zcl_power_profile_cluster_power_profile_schedule_constraints_request_command_t; + +#define sl_zcl_power_profile_cluster_power_profile_schedule_constraints_request_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_power_profile_schedule_constraints_request_command_t, powerProfileId), \ +} + + +/** @brief Structure for ZCL command "EnergyPhasesScheduleStateRequest" from "Power Profile" + */ +typedef struct __zcl_power_profile_cluster_energy_phases_schedule_state_request_command { + uint8_t powerProfileId; +} sl_zcl_power_profile_cluster_energy_phases_schedule_state_request_command_t; + +#define sl_zcl_power_profile_cluster_energy_phases_schedule_state_request_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_energy_phases_schedule_state_request_command_t, powerProfileId), \ +} + + +/** @brief Structure for ZCL command "GetPowerProfilePrice" from "Power Profile" + */ +typedef struct __zcl_power_profile_cluster_get_power_profile_price_command { + uint8_t powerProfileId; +} sl_zcl_power_profile_cluster_get_power_profile_price_command_t; + +#define sl_zcl_power_profile_cluster_get_power_profile_price_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_get_power_profile_price_command_t, powerProfileId), \ +} + + +/** @brief Structure for ZCL command "EnergyPhasesScheduleRequest" from "Power Profile" + */ +typedef struct __zcl_power_profile_cluster_energy_phases_schedule_request_command { + uint8_t powerProfileId; +} sl_zcl_power_profile_cluster_energy_phases_schedule_request_command_t; + +#define sl_zcl_power_profile_cluster_energy_phases_schedule_request_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_energy_phases_schedule_request_command_t, powerProfileId), \ +} + + +/** @brief Structure for ZCL command "GetHolidaySchedule" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_get_holiday_schedule_command { + uint8_t scheduleId; +} sl_zcl_door_lock_cluster_get_holiday_schedule_command_t; + +#define sl_zcl_door_lock_cluster_get_holiday_schedule_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_get_holiday_schedule_command_t, scheduleId), \ +} + + +/** @brief Structure for ZCL command "ClearHolidaySchedule" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_clear_holiday_schedule_command { + uint8_t scheduleId; +} sl_zcl_door_lock_cluster_clear_holiday_schedule_command_t; + +#define sl_zcl_door_lock_cluster_clear_holiday_schedule_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_clear_holiday_schedule_command_t, scheduleId), \ +} + + +/** @brief Structure for ZCL command "LockDoorResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_lock_door_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_lock_door_response_command_t; + +#define sl_zcl_door_lock_cluster_lock_door_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_lock_door_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "UnlockDoorResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_unlock_door_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_unlock_door_response_command_t; + +#define sl_zcl_door_lock_cluster_unlock_door_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_unlock_door_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "ToggleResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_toggle_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_toggle_response_command_t; + +#define sl_zcl_door_lock_cluster_toggle_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_toggle_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "UnlockWithTimeoutResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_unlock_with_timeout_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_unlock_with_timeout_response_command_t; + +#define sl_zcl_door_lock_cluster_unlock_with_timeout_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_unlock_with_timeout_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "ClearPinResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_clear_pin_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_clear_pin_response_command_t; + +#define sl_zcl_door_lock_cluster_clear_pin_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_clear_pin_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "ClearAllPinsResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_clear_all_pins_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_clear_all_pins_response_command_t; + +#define sl_zcl_door_lock_cluster_clear_all_pins_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_clear_all_pins_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "SetUserStatusResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_set_user_status_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_set_user_status_response_command_t; + +#define sl_zcl_door_lock_cluster_set_user_status_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_set_user_status_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "SetWeekdayScheduleResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_set_weekday_schedule_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_set_weekday_schedule_response_command_t; + +#define sl_zcl_door_lock_cluster_set_weekday_schedule_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_set_weekday_schedule_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "ClearWeekdayScheduleResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_clear_weekday_schedule_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_clear_weekday_schedule_response_command_t; + +#define sl_zcl_door_lock_cluster_clear_weekday_schedule_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_clear_weekday_schedule_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "SetYeardayScheduleResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_set_yearday_schedule_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_set_yearday_schedule_response_command_t; + +#define sl_zcl_door_lock_cluster_set_yearday_schedule_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_set_yearday_schedule_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "ClearYeardayScheduleResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_clear_yearday_schedule_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_clear_yearday_schedule_response_command_t; + +#define sl_zcl_door_lock_cluster_clear_yearday_schedule_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_clear_yearday_schedule_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "SetHolidayScheduleResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_set_holiday_schedule_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_set_holiday_schedule_response_command_t; + +#define sl_zcl_door_lock_cluster_set_holiday_schedule_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_set_holiday_schedule_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "ClearHolidayScheduleResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_clear_holiday_schedule_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_clear_holiday_schedule_response_command_t; + +#define sl_zcl_door_lock_cluster_clear_holiday_schedule_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_clear_holiday_schedule_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "SetUserTypeResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_set_user_type_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_set_user_type_response_command_t; + +#define sl_zcl_door_lock_cluster_set_user_type_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_set_user_type_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "ClearRfidResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_clear_rfid_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_clear_rfid_response_command_t; + +#define sl_zcl_door_lock_cluster_clear_rfid_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_clear_rfid_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "ClearAllRfidsResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_clear_all_rfids_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_clear_all_rfids_response_command_t; + +#define sl_zcl_door_lock_cluster_clear_all_rfids_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_clear_all_rfids_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "SetDisposableScheduleResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_set_disposable_schedule_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_set_disposable_schedule_response_command_t; + +#define sl_zcl_door_lock_cluster_set_disposable_schedule_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_set_disposable_schedule_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "ClearDisposableScheduleResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_clear_disposable_schedule_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_clear_disposable_schedule_response_command_t; + +#define sl_zcl_door_lock_cluster_clear_disposable_schedule_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_clear_disposable_schedule_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "ClearBiometricCredentialResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_clear_biometric_credential_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_clear_biometric_credential_response_command_t; + +#define sl_zcl_door_lock_cluster_clear_biometric_credential_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_clear_biometric_credential_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "ClearAllBiometricCredentialsResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_clear_all_biometric_credentials_response_command { + uint8_t status; +} sl_zcl_door_lock_cluster_clear_all_biometric_credentials_response_command_t; + +#define sl_zcl_door_lock_cluster_clear_all_biometric_credentials_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_clear_all_biometric_credentials_response_command_t, status), \ +} + + +/** @brief Structure for ZCL command "WindowCoveringGoToLiftPercentage" from "Window Covering" + */ +typedef struct __zcl_window_covering_cluster_window_covering_go_to_lift_percentage_command { + uint8_t percentageLiftValue; +} sl_zcl_window_covering_cluster_window_covering_go_to_lift_percentage_command_t; + +#define sl_zcl_window_covering_cluster_window_covering_go_to_lift_percentage_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_window_covering_cluster_window_covering_go_to_lift_percentage_command_t, percentageLiftValue), \ +} + + +/** @brief Structure for ZCL command "WindowCoveringGoToTiltPercentage" from "Window Covering" + */ +typedef struct __zcl_window_covering_cluster_window_covering_go_to_tilt_percentage_command { + uint8_t percentageTiltValue; +} sl_zcl_window_covering_cluster_window_covering_go_to_tilt_percentage_command_t; + +#define sl_zcl_window_covering_cluster_window_covering_go_to_tilt_percentage_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_window_covering_cluster_window_covering_go_to_tilt_percentage_command_t, percentageTiltValue), \ +} + + +/** @brief Structure for ZCL command "BarrierControlGoToPercent" from "Barrier Control" + */ +typedef struct __zcl_barrier_control_cluster_barrier_control_go_to_percent_command { + uint8_t percentOpen; +} sl_zcl_barrier_control_cluster_barrier_control_go_to_percent_command_t; + +#define sl_zcl_barrier_control_cluster_barrier_control_go_to_percent_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_barrier_control_cluster_barrier_control_go_to_percent_command_t, percentOpen), \ +} + + +/** @brief Structure for ZCL command "GetZoneInformation" from "IAS ACE" + */ +typedef struct __zcl_ias_ace_cluster_get_zone_information_command { + uint8_t zoneId; +} sl_zcl_ias_ace_cluster_get_zone_information_command_t; + +#define sl_zcl_ias_ace_cluster_get_zone_information_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_ias_ace_cluster_get_zone_information_command_t, zoneId), \ +} + + +/** @brief Structure for ZCL command "GetSupportedTunnelProtocols" from "Tunneling" + */ +typedef struct __zcl_tunneling_cluster_get_supported_tunnel_protocols_command { + uint8_t protocolOffset; +} sl_zcl_tunneling_cluster_get_supported_tunnel_protocols_command_t; + +#define sl_zcl_tunneling_cluster_get_supported_tunnel_protocols_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_tunneling_cluster_get_supported_tunnel_protocols_command_t, protocolOffset), \ +} + + +/** @brief Structure for ZCL command "SuspendZclMessages" from "Sub-GHz" + */ +typedef struct __zcl_sub_g_hz_cluster_suspend_zcl_messages_command { + uint8_t period; +} sl_zcl_sub_g_hz_cluster_suspend_zcl_messages_command_t; + +#define sl_zcl_sub_g_hz_cluster_suspend_zcl_messages_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_sub_g_hz_cluster_suspend_zcl_messages_command_t, period), \ +} + + +/** @brief Structure for ZCL command "GetGroupIdentifiersRequest" from "ZLL Commissioning" + */ +typedef struct __zcl_zll_commissioning_cluster_get_group_identifiers_request_command { + uint8_t startIndex; +} sl_zcl_zll_commissioning_cluster_get_group_identifiers_request_command_t; + +#define sl_zcl_zll_commissioning_cluster_get_group_identifiers_request_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_get_group_identifiers_request_command_t, startIndex), \ +} + + +/** @brief Structure for ZCL command "GetEndpointListRequest" from "ZLL Commissioning" + */ +typedef struct __zcl_zll_commissioning_cluster_get_endpoint_list_request_command { + uint8_t startIndex; +} sl_zcl_zll_commissioning_cluster_get_endpoint_list_request_command_t; + +#define sl_zcl_zll_commissioning_cluster_get_endpoint_list_request_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_get_endpoint_list_request_command_t, startIndex), \ +} + + +/** @brief Structure for ZCL command "CommandOne" from "Sample Mfg Specific Cluster" + */ +typedef struct __zcl_sample_mfg_specific_cluster_cluster_command_one_command { + uint8_t argOne; +} sl_zcl_sample_mfg_specific_cluster_cluster_command_one_command_t; + +#define sl_zcl_sample_mfg_specific_cluster_cluster_command_one_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_sample_mfg_specific_cluster_cluster_command_one_command_t, argOne), \ +} + + +/** @brief Structure for ZCL command "CommandTwo" from "Sample Mfg Specific Cluster 2" + */ +typedef struct __zcl_sample_mfg_specific_cluster_2_cluster_command_two_command { + uint8_t argOne; +} sl_zcl_sample_mfg_specific_cluster_2_cluster_command_two_command_t; + +#define sl_zcl_sample_mfg_specific_cluster_2_cluster_command_two_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_sample_mfg_specific_cluster_2_cluster_command_two_command_t, argOne), \ +} + + +/** @brief Structure for ZCL command "SetMacPollFailureWaitTime" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_set_mac_poll_failure_wait_time_command { + uint8_t waitTime; +} sl_zcl_sl_works_with_all_hubs_cluster_set_mac_poll_failure_wait_time_command_t; + +#define sl_zcl_sl_works_with_all_hubs_cluster_set_mac_poll_failure_wait_time_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_set_mac_poll_failure_wait_time_command_t, waitTime), \ +} + + +/** @brief Structure for ZCL command "DebugReportQuery" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_debug_report_query_command { + uint8_t debugReportId; +} sl_zcl_sl_works_with_all_hubs_cluster_debug_report_query_command_t; + +#define sl_zcl_sl_works_with_all_hubs_cluster_debug_report_query_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_debug_report_query_command_t, debugReportId), \ +} + + +/** @brief Structure for ZCL command "MirrorReportAttributeResponse" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_mirror_report_attribute_response_command { + uint8_t notificationScheme; + /* TYPE WARNING: BITMAP32 array defaults to */ uint8_t * notificationFlags; +} sl_zcl_simple_metering_cluster_mirror_report_attribute_response_command_t; + +#define sl_zcl_simple_metering_cluster_mirror_report_attribute_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_simple_metering_cluster_mirror_report_attribute_response_command_t, notificationScheme), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_simple_metering_cluster_mirror_report_attribute_response_command_t, notificationFlags), \ +} + + +/** @brief Structure for ZCL command "GeneralResponse" from "Gaming" + */ +typedef struct __zcl_gaming_cluster_general_response_command { + uint8_t commandId; + uint8_t status; + uint8_t * message; +} sl_zcl_gaming_cluster_general_response_command_t; + +#define sl_zcl_gaming_cluster_general_response_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_gaming_cluster_general_response_command_t, commandId), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_gaming_cluster_general_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_gaming_cluster_general_response_command_t, message), \ +} + + +/** @brief Structure for ZCL command "LocationDataResponse" from "RSSI Location" + */ +typedef struct __zcl_rssi_location_cluster_location_data_response_command { + uint8_t status; + uint8_t locationType; + int16_t coordinate1; + int16_t coordinate2; + int16_t coordinate3; + int16_t power; + uint16_t pathLossExponent; + uint8_t locationMethod; + uint8_t qualityMeasure; + uint16_t locationAge; +} sl_zcl_rssi_location_cluster_location_data_response_command_t; + +#define sl_zcl_rssi_location_cluster_location_data_response_command_signature { \ + 10, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_rssi_location_cluster_location_data_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_rssi_location_cluster_location_data_response_command_t, locationType), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_location_data_response_command_t, coordinate1), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_location_data_response_command_t, coordinate2), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_location_data_response_command_t, coordinate3), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_location_data_response_command_t, power), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_rssi_location_cluster_location_data_response_command_t, pathLossExponent), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_rssi_location_cluster_location_data_response_command_t, locationMethod), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_rssi_location_cluster_location_data_response_command_t, qualityMeasure), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_rssi_location_cluster_location_data_response_command_t, locationAge), \ +} + + +/** @brief Structure for ZCL command "GetLocalesSupportedResponse" from "Basic" + */ +typedef struct __zcl_basic_cluster_get_locales_supported_response_command { + uint8_t discoveryComplete; + /* TYPE WARNING: CHAR_STRING array defaults to */ uint8_t * localeSupported; +} sl_zcl_basic_cluster_get_locales_supported_response_command_t; + +#define sl_zcl_basic_cluster_get_locales_supported_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_basic_cluster_get_locales_supported_response_command_t, discoveryComplete), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_basic_cluster_get_locales_supported_response_command_t, localeSupported), \ +} + + +/** @brief Structure for ZCL command "ZoneStatusChanged" from "IAS ACE" + */ +typedef struct __zcl_ias_ace_cluster_zone_status_changed_command { + uint8_t zoneId; + uint16_t zoneStatus; + uint8_t audibleNotification; + uint8_t * zoneLabel; +} sl_zcl_ias_ace_cluster_zone_status_changed_command_t; + +#define sl_zcl_ias_ace_cluster_zone_status_changed_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_ias_ace_cluster_zone_status_changed_command_t, zoneId), \ + (ZAP_SIGNATURE_TYPE_ENUM16), offsetof(sl_zcl_ias_ace_cluster_zone_status_changed_command_t, zoneStatus), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_ias_ace_cluster_zone_status_changed_command_t, audibleNotification), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_ias_ace_cluster_zone_status_changed_command_t, zoneLabel), \ +} + + +/** @brief Structure for ZCL command "GetZoneInformationResponse" from "IAS ACE" + */ +typedef struct __zcl_ias_ace_cluster_get_zone_information_response_command { + uint8_t zoneId; + uint16_t zoneType; + uint8_t * ieeeAddress; + uint8_t * zoneLabel; +} sl_zcl_ias_ace_cluster_get_zone_information_response_command_t; + +#define sl_zcl_ias_ace_cluster_get_zone_information_response_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_ias_ace_cluster_get_zone_information_response_command_t, zoneId), \ + (ZAP_SIGNATURE_TYPE_ENUM16), offsetof(sl_zcl_ias_ace_cluster_get_zone_information_response_command_t, zoneType), \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_ias_ace_cluster_get_zone_information_response_command_t, ieeeAddress), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_ias_ace_cluster_get_zone_information_response_command_t, zoneLabel), \ +} + + +/** @brief Structure for ZCL command "VoiceTransmissionResponse" from "Voice over ZigBee" + */ +typedef struct __zcl_voice_over_zig_bee_cluster_voice_transmission_response_command { + uint8_t sequenceNumber; + uint8_t errorFlag; +} sl_zcl_voice_over_zig_bee_cluster_voice_transmission_response_command_t; + +#define sl_zcl_voice_over_zig_bee_cluster_voice_transmission_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_voice_over_zig_bee_cluster_voice_transmission_response_command_t, sequenceNumber), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_voice_over_zig_bee_cluster_voice_transmission_response_command_t, errorFlag), \ +} + + +/** @brief Structure for ZCL command "EventsNotification" from "Appliance Events and Alert" + */ +typedef struct __zcl_appliance_events_and_alert_cluster_events_notification_command { + uint8_t eventHeader; + uint8_t eventId; +} sl_zcl_appliance_events_and_alert_cluster_events_notification_command_t; + +#define sl_zcl_appliance_events_and_alert_cluster_events_notification_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_appliance_events_and_alert_cluster_events_notification_command_t, eventHeader), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_appliance_events_and_alert_cluster_events_notification_command_t, eventId), \ +} + + +/** @brief Structure for ZCL command "GetAlarmResponse" from "Alarms" + */ +typedef struct __zcl_alarms_cluster_get_alarm_response_command { + uint8_t status; + uint8_t alarmCode; + uint16_t clusterId; + uint32_t timeStamp; +} sl_zcl_alarms_cluster_get_alarm_response_command_t; + +#define sl_zcl_alarms_cluster_get_alarm_response_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_alarms_cluster_get_alarm_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_alarms_cluster_get_alarm_response_command_t, alarmCode), \ + (ZAP_SIGNATURE_TYPE_CLUSTER_ID), offsetof(sl_zcl_alarms_cluster_get_alarm_response_command_t, clusterId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_alarms_cluster_get_alarm_response_command_t, timeStamp), \ +} + + +/** @brief Structure for ZCL command "MoveToHue" from "Color Control" + */ +typedef struct __zcl_color_control_cluster_move_to_hue_command { + uint8_t hue; + uint8_t direction; + uint16_t transitionTime; + uint8_t optionsMask; + uint8_t optionsOverride; +} sl_zcl_color_control_cluster_move_to_hue_command_t; + +#define sl_zcl_color_control_cluster_move_to_hue_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_color_control_cluster_move_to_hue_command_t, hue), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_color_control_cluster_move_to_hue_command_t, direction), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_move_to_hue_command_t, transitionTime), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_move_to_hue_command_t, optionsMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_move_to_hue_command_t, optionsOverride), \ +} + + +/** @brief Structure for ZCL command "ProgrammingEventNotification" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_programming_event_notification_command { + uint8_t source; + uint8_t eventCode; + uint16_t userId; + uint8_t * pin; + uint8_t userType; + uint8_t userStatus; + uint32_t timeStamp; + uint8_t * data; +} sl_zcl_door_lock_cluster_programming_event_notification_command_t; + +#define sl_zcl_door_lock_cluster_programming_event_notification_command_signature { \ + 8, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_programming_event_notification_command_t, source), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_door_lock_cluster_programming_event_notification_command_t, eventCode), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_programming_event_notification_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_door_lock_cluster_programming_event_notification_command_t, pin), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_door_lock_cluster_programming_event_notification_command_t, userType), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_door_lock_cluster_programming_event_notification_command_t, userStatus), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_door_lock_cluster_programming_event_notification_command_t, timeStamp), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_door_lock_cluster_programming_event_notification_command_t, data), \ +} + + +/** @brief Structure for ZCL command "OperationEventNotification" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_operation_event_notification_command { + uint8_t source; + uint8_t eventCode; + uint16_t userId; + uint8_t * pin; + uint32_t timeStamp; + uint8_t * data; +} sl_zcl_door_lock_cluster_operation_event_notification_command_t; + +#define sl_zcl_door_lock_cluster_operation_event_notification_command_signature { \ + 6, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_operation_event_notification_command_t, source), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_door_lock_cluster_operation_event_notification_command_t, eventCode), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_operation_event_notification_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_door_lock_cluster_operation_event_notification_command_t, pin), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_door_lock_cluster_operation_event_notification_command_t, timeStamp), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_door_lock_cluster_operation_event_notification_command_t, data), \ +} + + +/** @brief Structure for ZCL command "GetProfileInfoResponseCommand" from "Electrical Measurement" + */ +typedef struct __zcl_electrical_measurement_cluster_get_profile_info_response_command_command { + uint8_t profileCount; + uint8_t profileIntervalPeriod; + uint8_t maxNumberOfIntervals; + /* TYPE WARNING: INT16U array defaults to */ uint8_t * listOfAttributes; +} sl_zcl_electrical_measurement_cluster_get_profile_info_response_command_command_t; + +#define sl_zcl_electrical_measurement_cluster_get_profile_info_response_command_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_electrical_measurement_cluster_get_profile_info_response_command_command_t, profileCount), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_electrical_measurement_cluster_get_profile_info_response_command_command_t, profileIntervalPeriod), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_electrical_measurement_cluster_get_profile_info_response_command_command_t, maxNumberOfIntervals), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_electrical_measurement_cluster_get_profile_info_response_command_command_t, listOfAttributes), \ +} + + +/** @brief Structure for ZCL command "BypassResponse" from "IAS ACE" + */ +typedef struct __zcl_ias_ace_cluster_bypass_response_command { + uint8_t numberOfZones; + /* TYPE WARNING: IasAceBypassResult array defaults to */ uint8_t * bypassResult; +} sl_zcl_ias_ace_cluster_bypass_response_command_t; + +#define sl_zcl_ias_ace_cluster_bypass_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_ias_ace_cluster_bypass_response_command_t, numberOfZones), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_ias_ace_cluster_bypass_response_command_t, bypassResult), \ +} + + +/** @brief Structure for ZCL command "DeviceConfigurationResponse" from "RSSI Location" + */ +typedef struct __zcl_rssi_location_cluster_device_configuration_response_command { + uint8_t status; + int16_t power; + uint16_t pathLossExponent; + uint16_t calculationPeriod; + uint8_t numberRssiMeasurements; + uint16_t reportingPeriod; +} sl_zcl_rssi_location_cluster_device_configuration_response_command_t; + +#define sl_zcl_rssi_location_cluster_device_configuration_response_command_signature { \ + 6, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_rssi_location_cluster_device_configuration_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_INT16S), offsetof(sl_zcl_rssi_location_cluster_device_configuration_response_command_t, power), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_rssi_location_cluster_device_configuration_response_command_t, pathLossExponent), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_rssi_location_cluster_device_configuration_response_command_t, calculationPeriod), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_rssi_location_cluster_device_configuration_response_command_t, numberRssiMeasurements), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_rssi_location_cluster_device_configuration_response_command_t, reportingPeriod), \ +} + + +/** @brief Structure for ZCL command "AddGroupResponse" from "Groups" + */ +typedef struct __zcl_groups_cluster_add_group_response_command { + uint8_t status; + uint16_t groupId; +} sl_zcl_groups_cluster_add_group_response_command_t; + +#define sl_zcl_groups_cluster_add_group_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_groups_cluster_add_group_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_groups_cluster_add_group_response_command_t, groupId), \ +} + + +/** @brief Structure for ZCL command "RemoveGroupResponse" from "Groups" + */ +typedef struct __zcl_groups_cluster_remove_group_response_command { + uint8_t status; + uint16_t groupId; +} sl_zcl_groups_cluster_remove_group_response_command_t; + +#define sl_zcl_groups_cluster_remove_group_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_groups_cluster_remove_group_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_groups_cluster_remove_group_response_command_t, groupId), \ +} + + +/** @brief Structure for ZCL command "RemoveAllScenesResponse" from "Scenes" + */ +typedef struct __zcl_scenes_cluster_remove_all_scenes_response_command { + uint8_t status; + uint16_t groupId; +} sl_zcl_scenes_cluster_remove_all_scenes_response_command_t; + +#define sl_zcl_scenes_cluster_remove_all_scenes_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_remove_all_scenes_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_remove_all_scenes_response_command_t, groupId), \ +} + + +/** @brief Structure for ZCL command "MoveToLevelWithOnOff" from "Level Control" + */ +typedef struct __zcl_level_control_cluster_move_to_level_with_on_off_command { + uint8_t level; + uint16_t transitionTime; +} sl_zcl_level_control_cluster_move_to_level_with_on_off_command_t; + +#define sl_zcl_level_control_cluster_move_to_level_with_on_off_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_level_control_cluster_move_to_level_with_on_off_command_t, level), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_level_control_cluster_move_to_level_with_on_off_command_t, transitionTime), \ +} + + +/** @brief Structure for ZCL command "GetWeekdaySchedule" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_get_weekday_schedule_command { + uint8_t scheduleId; + uint16_t userId; +} sl_zcl_door_lock_cluster_get_weekday_schedule_command_t; + +#define sl_zcl_door_lock_cluster_get_weekday_schedule_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_get_weekday_schedule_command_t, scheduleId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_get_weekday_schedule_command_t, userId), \ +} + + +/** @brief Structure for ZCL command "ClearWeekdaySchedule" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_clear_weekday_schedule_command { + uint8_t scheduleId; + uint16_t userId; +} sl_zcl_door_lock_cluster_clear_weekday_schedule_command_t; + +#define sl_zcl_door_lock_cluster_clear_weekday_schedule_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_clear_weekday_schedule_command_t, scheduleId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_clear_weekday_schedule_command_t, userId), \ +} + + +/** @brief Structure for ZCL command "GetYeardaySchedule" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_get_yearday_schedule_command { + uint8_t scheduleId; + uint16_t userId; +} sl_zcl_door_lock_cluster_get_yearday_schedule_command_t; + +#define sl_zcl_door_lock_cluster_get_yearday_schedule_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_get_yearday_schedule_command_t, scheduleId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_get_yearday_schedule_command_t, userId), \ +} + + +/** @brief Structure for ZCL command "ClearYeardaySchedule" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_clear_yearday_schedule_command { + uint8_t scheduleId; + uint16_t userId; +} sl_zcl_door_lock_cluster_clear_yearday_schedule_command_t; + +#define sl_zcl_door_lock_cluster_clear_yearday_schedule_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_clear_yearday_schedule_command_t, scheduleId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_clear_yearday_schedule_command_t, userId), \ +} + + +/** @brief Structure for ZCL command "SetPendingNetworkUpdate" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_set_pending_network_update_command { + uint8_t channel; + uint16_t panId; +} sl_zcl_sl_works_with_all_hubs_cluster_set_pending_network_update_command_t; + +#define sl_zcl_sl_works_with_all_hubs_cluster_set_pending_network_update_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_set_pending_network_update_command_t, channel), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_set_pending_network_update_command_t, panId), \ +} + + +/** @brief Structure for ZCL command "GetNotifiedMessage" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_get_notified_message_command { + uint8_t notificationScheme; + uint16_t notificationFlagAttributeId; + uint32_t notificationFlagsN; +} sl_zcl_simple_metering_cluster_get_notified_message_command_t; + +#define sl_zcl_simple_metering_cluster_get_notified_message_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_simple_metering_cluster_get_notified_message_command_t, notificationScheme), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_simple_metering_cluster_get_notified_message_command_t, notificationFlagAttributeId), \ + (ZAP_SIGNATURE_TYPE_BITMAP32), offsetof(sl_zcl_simple_metering_cluster_get_notified_message_command_t, notificationFlagsN), \ +} + + +/** @brief Structure for ZCL command "SetWeekdaySchedule" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_set_weekday_schedule_command { + uint8_t scheduleId; + uint16_t userId; + uint8_t daysMask; + uint8_t startHour; + uint8_t startMinute; + uint8_t endHour; + uint8_t endMinute; +} sl_zcl_door_lock_cluster_set_weekday_schedule_command_t; + +#define sl_zcl_door_lock_cluster_set_weekday_schedule_command_signature { \ + 7, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_set_weekday_schedule_command_t, scheduleId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_set_weekday_schedule_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_door_lock_cluster_set_weekday_schedule_command_t, daysMask), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_set_weekday_schedule_command_t, startHour), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_set_weekday_schedule_command_t, startMinute), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_set_weekday_schedule_command_t, endHour), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_set_weekday_schedule_command_t, endMinute), \ +} + + +/** @brief Structure for ZCL command "MoveToLevel" from "Level Control" + */ +typedef struct __zcl_level_control_cluster_move_to_level_command { + uint8_t level; + uint16_t transitionTime; + uint8_t optionMask; + uint8_t optionOverride; +} sl_zcl_level_control_cluster_move_to_level_command_t; + +#define sl_zcl_level_control_cluster_move_to_level_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_level_control_cluster_move_to_level_command_t, level), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_level_control_cluster_move_to_level_command_t, transitionTime), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_level_control_cluster_move_to_level_command_t, optionMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_level_control_cluster_move_to_level_command_t, optionOverride), \ +} + + +/** @brief Structure for ZCL command "MoveToSaturation" from "Color Control" + */ +typedef struct __zcl_color_control_cluster_move_to_saturation_command { + uint8_t saturation; + uint16_t transitionTime; + uint8_t optionsMask; + uint8_t optionsOverride; +} sl_zcl_color_control_cluster_move_to_saturation_command_t; + +#define sl_zcl_color_control_cluster_move_to_saturation_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_color_control_cluster_move_to_saturation_command_t, saturation), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_move_to_saturation_command_t, transitionTime), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_move_to_saturation_command_t, optionsMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_move_to_saturation_command_t, optionsOverride), \ +} + + +/** @brief Structure for ZCL command "RequestTunnel" from "Tunneling" + */ +typedef struct __zcl_tunneling_cluster_request_tunnel_command { + uint8_t protocolId; + uint16_t manufacturerCode; + uint8_t flowControlSupport; + uint16_t maximumIncomingTransferSize; +} sl_zcl_tunneling_cluster_request_tunnel_command_t; + +#define sl_zcl_tunneling_cluster_request_tunnel_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_tunneling_cluster_request_tunnel_command_t, protocolId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_tunneling_cluster_request_tunnel_command_t, manufacturerCode), \ + (ZAP_SIGNATURE_TYPE_BOOLEAN), offsetof(sl_zcl_tunneling_cluster_request_tunnel_command_t, flowControlSupport), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_tunneling_cluster_request_tunnel_command_t, maximumIncomingTransferSize), \ +} + + +/** @brief Structure for ZCL command "ViewGroupResponse" from "Groups" + */ +typedef struct __zcl_groups_cluster_view_group_response_command { + uint8_t status; + uint16_t groupId; + uint8_t * groupName; +} sl_zcl_groups_cluster_view_group_response_command_t; + +#define sl_zcl_groups_cluster_view_group_response_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_groups_cluster_view_group_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_groups_cluster_view_group_response_command_t, groupId), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_groups_cluster_view_group_response_command_t, groupName), \ +} + + +/** @brief Structure for ZCL command "PowerProfileScheduleConstraintsNotification" from "Power Profile" + */ +typedef struct __zcl_power_profile_cluster_power_profile_schedule_constraints_notification_command { + uint8_t powerProfileId; + uint16_t startAfter; + uint16_t stopBefore; +} sl_zcl_power_profile_cluster_power_profile_schedule_constraints_notification_command_t; + +#define sl_zcl_power_profile_cluster_power_profile_schedule_constraints_notification_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_power_profile_schedule_constraints_notification_command_t, powerProfileId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_power_profile_cluster_power_profile_schedule_constraints_notification_command_t, startAfter), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_power_profile_cluster_power_profile_schedule_constraints_notification_command_t, stopBefore), \ +} + + +/** @brief Structure for ZCL command "PowerProfileScheduleConstraintsResponse" from "Power Profile" + */ +typedef struct __zcl_power_profile_cluster_power_profile_schedule_constraints_response_command { + uint8_t powerProfileId; + uint16_t startAfter; + uint16_t stopBefore; +} sl_zcl_power_profile_cluster_power_profile_schedule_constraints_response_command_t; + +#define sl_zcl_power_profile_cluster_power_profile_schedule_constraints_response_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_power_profile_schedule_constraints_response_command_t, powerProfileId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_power_profile_cluster_power_profile_schedule_constraints_response_command_t, startAfter), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_power_profile_cluster_power_profile_schedule_constraints_response_command_t, stopBefore), \ +} + + +/** @brief Structure for ZCL command "UpgradeEndRequest" from "Over the Air Bootloading" + */ +typedef struct __zcl_over_the_air_bootloading_cluster_upgrade_end_request_command { + uint8_t status; + uint16_t manufacturerId; + uint16_t imageType; + uint32_t fileVersion; +} sl_zcl_over_the_air_bootloading_cluster_upgrade_end_request_command_t; + +#define sl_zcl_over_the_air_bootloading_cluster_upgrade_end_request_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_over_the_air_bootloading_cluster_upgrade_end_request_command_t, status), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_upgrade_end_request_command_t, manufacturerId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_upgrade_end_request_command_t, imageType), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_over_the_air_bootloading_cluster_upgrade_end_request_command_t, fileVersion), \ +} + + +/** @brief Structure for ZCL command "QueryNextImageRequest" from "Over the Air Bootloading" + */ +typedef struct __zcl_over_the_air_bootloading_cluster_query_next_image_request_command { + uint8_t fieldControl; + uint16_t manufacturerId; + uint16_t imageType; + uint32_t currentFileVersion; + uint16_t hardwareVersion; +} sl_zcl_over_the_air_bootloading_cluster_query_next_image_request_command_t; + +#define sl_zcl_over_the_air_bootloading_cluster_query_next_image_request_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_over_the_air_bootloading_cluster_query_next_image_request_command_t, fieldControl), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_query_next_image_request_command_t, manufacturerId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_query_next_image_request_command_t, imageType), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_over_the_air_bootloading_cluster_query_next_image_request_command_t, currentFileVersion), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_query_next_image_request_command_t, hardwareVersion), \ +} + + +/** @brief Structure for ZCL command "QueryNextImageResponse" from "Over the Air Bootloading" + */ +typedef struct __zcl_over_the_air_bootloading_cluster_query_next_image_response_command { + uint8_t status; + uint16_t manufacturerId; + uint16_t imageType; + uint32_t fileVersion; + uint32_t imageSize; +} sl_zcl_over_the_air_bootloading_cluster_query_next_image_response_command_t; + +#define sl_zcl_over_the_air_bootloading_cluster_query_next_image_response_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_over_the_air_bootloading_cluster_query_next_image_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_query_next_image_response_command_t, manufacturerId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_query_next_image_response_command_t, imageType), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_over_the_air_bootloading_cluster_query_next_image_response_command_t, fileVersion), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_over_the_air_bootloading_cluster_query_next_image_response_command_t, imageSize), \ +} + + +/** @brief Structure for ZCL command "QuerySpecificFileResponse" from "Over the Air Bootloading" + */ +typedef struct __zcl_over_the_air_bootloading_cluster_query_specific_file_response_command { + uint8_t status; + uint16_t manufacturerId; + uint16_t imageType; + uint32_t fileVersion; + uint32_t imageSize; +} sl_zcl_over_the_air_bootloading_cluster_query_specific_file_response_command_t; + +#define sl_zcl_over_the_air_bootloading_cluster_query_specific_file_response_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_over_the_air_bootloading_cluster_query_specific_file_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_query_specific_file_response_command_t, manufacturerId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_query_specific_file_response_command_t, imageType), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_over_the_air_bootloading_cluster_query_specific_file_response_command_t, fileVersion), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_over_the_air_bootloading_cluster_query_specific_file_response_command_t, imageSize), \ +} + + +/** @brief Structure for ZCL command "ImageBlockRequest" from "Over the Air Bootloading" + */ +typedef struct __zcl_over_the_air_bootloading_cluster_image_block_request_command { + uint8_t fieldControl; + uint16_t manufacturerId; + uint16_t imageType; + uint32_t fileVersion; + uint32_t fileOffset; + uint8_t maxDataSize; + uint8_t * requestNodeAddress; +} sl_zcl_over_the_air_bootloading_cluster_image_block_request_command_t; + +#define sl_zcl_over_the_air_bootloading_cluster_image_block_request_command_signature { \ + 7, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_block_request_command_t, fieldControl), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_block_request_command_t, manufacturerId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_block_request_command_t, imageType), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_block_request_command_t, fileVersion), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_block_request_command_t, fileOffset), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_block_request_command_t, maxDataSize), \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_block_request_command_t, requestNodeAddress), \ +} + + +/** @brief Structure for ZCL command "ImagePageRequest" from "Over the Air Bootloading" + */ +typedef struct __zcl_over_the_air_bootloading_cluster_image_page_request_command { + uint8_t fieldControl; + uint16_t manufacturerId; + uint16_t imageType; + uint32_t fileVersion; + uint32_t fileOffset; + uint8_t maxDataSize; + uint16_t pageSize; + uint16_t responseSpacing; + uint8_t * requestNodeAddress; +} sl_zcl_over_the_air_bootloading_cluster_image_page_request_command_t; + +#define sl_zcl_over_the_air_bootloading_cluster_image_page_request_command_signature { \ + 9, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_page_request_command_t, fieldControl), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_page_request_command_t, manufacturerId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_page_request_command_t, imageType), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_page_request_command_t, fileVersion), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_page_request_command_t, fileOffset), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_page_request_command_t, maxDataSize), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_page_request_command_t, pageSize), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_page_request_command_t, responseSpacing), \ + (ZAP_SIGNATURE_TYPE_IEEE_ADDRESS), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_page_request_command_t, requestNodeAddress), \ +} + + +/** @brief Structure for ZCL command "ImageBlockResponse" from "Over the Air Bootloading" + */ +typedef struct __zcl_over_the_air_bootloading_cluster_image_block_response_command { + uint8_t status; + uint16_t manufacturerId; + uint16_t imageType; + uint32_t fileVersion; + uint32_t fileOffset; + uint8_t dataSize; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * imageData; +} sl_zcl_over_the_air_bootloading_cluster_image_block_response_command_t; + +#define sl_zcl_over_the_air_bootloading_cluster_image_block_response_command_signature { \ + 7, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_block_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_block_response_command_t, manufacturerId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_block_response_command_t, imageType), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_block_response_command_t, fileVersion), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_block_response_command_t, fileOffset), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_block_response_command_t, dataSize), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_over_the_air_bootloading_cluster_image_block_response_command_t, imageData), \ +} + + +/** @brief Structure for ZCL command "SetYeardaySchedule" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_set_yearday_schedule_command { + uint8_t scheduleId; + uint16_t userId; + uint32_t localStartTime; + uint32_t localEndTime; +} sl_zcl_door_lock_cluster_set_yearday_schedule_command_t; + +#define sl_zcl_door_lock_cluster_set_yearday_schedule_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_set_yearday_schedule_command_t, scheduleId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_set_yearday_schedule_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_door_lock_cluster_set_yearday_schedule_command_t, localStartTime), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_door_lock_cluster_set_yearday_schedule_command_t, localEndTime), \ +} + + +/** @brief Structure for ZCL command "GetPowerProfilePriceResponse" from "Power Profile" + */ +typedef struct __zcl_power_profile_cluster_get_power_profile_price_response_command { + uint8_t powerProfileId; + uint16_t currency; + uint32_t price; + uint8_t priceTrailingDigit; +} sl_zcl_power_profile_cluster_get_power_profile_price_response_command_t; + +#define sl_zcl_power_profile_cluster_get_power_profile_price_response_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_get_power_profile_price_response_command_t, powerProfileId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_power_profile_cluster_get_power_profile_price_response_command_t, currency), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_power_profile_cluster_get_power_profile_price_response_command_t, price), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_get_power_profile_price_response_command_t, priceTrailingDigit), \ +} + + +/** @brief Structure for ZCL command "GetPowerProfilePriceExtendedResponse" from "Power Profile" + */ +typedef struct __zcl_power_profile_cluster_get_power_profile_price_extended_response_command { + uint8_t powerProfileId; + uint16_t currency; + uint32_t price; + uint8_t priceTrailingDigit; +} sl_zcl_power_profile_cluster_get_power_profile_price_extended_response_command_t; + +#define sl_zcl_power_profile_cluster_get_power_profile_price_extended_response_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_get_power_profile_price_extended_response_command_t, powerProfileId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_power_profile_cluster_get_power_profile_price_extended_response_command_t, currency), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_power_profile_cluster_get_power_profile_price_extended_response_command_t, price), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_get_power_profile_price_extended_response_command_t, priceTrailingDigit), \ +} + + +/** @brief Structure for ZCL command "AddSceneResponse" from "Scenes" + */ +typedef struct __zcl_scenes_cluster_add_scene_response_command { + uint8_t status; + uint16_t groupId; + uint8_t sceneId; +} sl_zcl_scenes_cluster_add_scene_response_command_t; + +#define sl_zcl_scenes_cluster_add_scene_response_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_add_scene_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_add_scene_response_command_t, groupId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_add_scene_response_command_t, sceneId), \ +} + + +/** @brief Structure for ZCL command "RemoveSceneResponse" from "Scenes" + */ +typedef struct __zcl_scenes_cluster_remove_scene_response_command { + uint8_t status; + uint16_t groupId; + uint8_t sceneId; +} sl_zcl_scenes_cluster_remove_scene_response_command_t; + +#define sl_zcl_scenes_cluster_remove_scene_response_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_remove_scene_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_remove_scene_response_command_t, groupId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_remove_scene_response_command_t, sceneId), \ +} + + +/** @brief Structure for ZCL command "StoreSceneResponse" from "Scenes" + */ +typedef struct __zcl_scenes_cluster_store_scene_response_command { + uint8_t status; + uint16_t groupId; + uint8_t sceneId; +} sl_zcl_scenes_cluster_store_scene_response_command_t; + +#define sl_zcl_scenes_cluster_store_scene_response_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_store_scene_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_store_scene_response_command_t, groupId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_store_scene_response_command_t, sceneId), \ +} + + +/** @brief Structure for ZCL command "EnhancedAddSceneResponse" from "Scenes" + */ +typedef struct __zcl_scenes_cluster_enhanced_add_scene_response_command { + uint8_t status; + uint16_t groupId; + uint8_t sceneId; +} sl_zcl_scenes_cluster_enhanced_add_scene_response_command_t; + +#define sl_zcl_scenes_cluster_enhanced_add_scene_response_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_enhanced_add_scene_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_enhanced_add_scene_response_command_t, groupId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_enhanced_add_scene_response_command_t, sceneId), \ +} + + +/** @brief Structure for ZCL command "CopySceneResponse" from "Scenes" + */ +typedef struct __zcl_scenes_cluster_copy_scene_response_command { + uint8_t status; + uint16_t groupIdFrom; + uint8_t sceneIdFrom; +} sl_zcl_scenes_cluster_copy_scene_response_command_t; + +#define sl_zcl_scenes_cluster_copy_scene_response_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_copy_scene_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_copy_scene_response_command_t, groupIdFrom), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_copy_scene_response_command_t, sceneIdFrom), \ +} + + +/** @brief Structure for ZCL command "EnhancedViewSceneResponse" from "Scenes" + */ +typedef struct __zcl_scenes_cluster_enhanced_view_scene_response_command { + uint8_t status; + uint16_t groupId; + uint8_t sceneId; + uint16_t transitionTime; + uint8_t * sceneName; + /* TYPE WARNING: SceneExtensionFieldSet array defaults to */ uint8_t * extensionFieldSets; +} sl_zcl_scenes_cluster_enhanced_view_scene_response_command_t; + +#define sl_zcl_scenes_cluster_enhanced_view_scene_response_command_signature { \ + 6, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_enhanced_view_scene_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_enhanced_view_scene_response_command_t, groupId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_scenes_cluster_enhanced_view_scene_response_command_t, sceneId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_scenes_cluster_enhanced_view_scene_response_command_t, transitionTime), \ + (ZAP_SIGNATURE_TYPE_CHAR_STRING), offsetof(sl_zcl_scenes_cluster_enhanced_view_scene_response_command_t, sceneName), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_scenes_cluster_enhanced_view_scene_response_command_t, extensionFieldSets), \ +} + + +/** @brief Structure for ZCL command "GetYeardayScheduleResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_get_yearday_schedule_response_command { + uint8_t scheduleId; + uint16_t userId; + uint8_t status; + uint32_t localStartTime; + uint32_t localEndTime; +} sl_zcl_door_lock_cluster_get_yearday_schedule_response_command_t; + +#define sl_zcl_door_lock_cluster_get_yearday_schedule_response_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_get_yearday_schedule_response_command_t, scheduleId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_get_yearday_schedule_response_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_get_yearday_schedule_response_command_t, status), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_door_lock_cluster_get_yearday_schedule_response_command_t, localStartTime), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_door_lock_cluster_get_yearday_schedule_response_command_t, localEndTime), \ +} + + +/** @brief Structure for ZCL command "GetWeekdayScheduleResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_get_weekday_schedule_response_command { + uint8_t scheduleId; + uint16_t userId; + uint8_t status; + uint8_t daysMask; + uint8_t startHour; + uint8_t startMinute; + uint8_t endHour; + uint8_t endMinute; +} sl_zcl_door_lock_cluster_get_weekday_schedule_response_command_t; + +#define sl_zcl_door_lock_cluster_get_weekday_schedule_response_command_signature { \ + 8, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_get_weekday_schedule_response_command_t, scheduleId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_door_lock_cluster_get_weekday_schedule_response_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_get_weekday_schedule_response_command_t, status), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_get_weekday_schedule_response_command_t, daysMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_get_weekday_schedule_response_command_t, startHour), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_get_weekday_schedule_response_command_t, startMinute), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_get_weekday_schedule_response_command_t, endHour), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_get_weekday_schedule_response_command_t, endMinute), \ +} + + +/** @brief Structure for ZCL command "RequestPreferenceResponse" from "Information" + */ +typedef struct __zcl_information_cluster_request_preference_response_command { + uint8_t statusFeedback; + uint16_t preferenceType; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * preferencePayload; +} sl_zcl_information_cluster_request_preference_response_command_t; + +#define sl_zcl_information_cluster_request_preference_response_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_information_cluster_request_preference_response_command_t, statusFeedback), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_information_cluster_request_preference_response_command_t, preferenceType), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_information_cluster_request_preference_response_command_t, preferencePayload), \ +} + + +/** @brief Structure for ZCL command "GetGroupMembership" from "Groups" + */ +typedef struct __zcl_groups_cluster_get_group_membership_command { + uint8_t groupCount; + /* TYPE WARNING: INT16U array defaults to */ uint8_t * groupList; +} sl_zcl_groups_cluster_get_group_membership_command_t; + +#define sl_zcl_groups_cluster_get_group_membership_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_groups_cluster_get_group_membership_command_t, groupCount), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_groups_cluster_get_group_membership_command_t, groupList), \ +} + + +/** @brief Structure for ZCL command "NewDebugReportNotification" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_new_debug_report_notification_command { + uint8_t debugReportId; + uint32_t debugReportSize; +} sl_zcl_sl_works_with_all_hubs_cluster_new_debug_report_notification_command_t; + +#define sl_zcl_sl_works_with_all_hubs_cluster_new_debug_report_notification_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_new_debug_report_notification_command_t, debugReportId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_new_debug_report_notification_command_t, debugReportSize), \ +} + + +/** @brief Structure for ZCL command "SetHolidaySchedule" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_set_holiday_schedule_command { + uint8_t scheduleId; + uint32_t localStartTime; + uint32_t localEndTime; + uint8_t operatingModeDuringHoliday; +} sl_zcl_door_lock_cluster_set_holiday_schedule_command_t; + +#define sl_zcl_door_lock_cluster_set_holiday_schedule_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_set_holiday_schedule_command_t, scheduleId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_door_lock_cluster_set_holiday_schedule_command_t, localStartTime), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_door_lock_cluster_set_holiday_schedule_command_t, localEndTime), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_door_lock_cluster_set_holiday_schedule_command_t, operatingModeDuringHoliday), \ +} + + +/** @brief Structure for ZCL command "LogQueueResponse" from "Appliance Statistics" + */ +typedef struct __zcl_appliance_statistics_cluster_log_queue_response_command { + uint8_t logQueueSize; + /* TYPE WARNING: INT32U array defaults to */ uint8_t * logIds; +} sl_zcl_appliance_statistics_cluster_log_queue_response_command_t; + +#define sl_zcl_appliance_statistics_cluster_log_queue_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_appliance_statistics_cluster_log_queue_response_command_t, logQueueSize), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_appliance_statistics_cluster_log_queue_response_command_t, logIds), \ +} + + +/** @brief Structure for ZCL command "StatisticsAvailable" from "Appliance Statistics" + */ +typedef struct __zcl_appliance_statistics_cluster_statistics_available_command { + uint8_t logQueueSize; + /* TYPE WARNING: INT32U array defaults to */ uint8_t * logIds; +} sl_zcl_appliance_statistics_cluster_statistics_available_command_t; + +#define sl_zcl_appliance_statistics_cluster_statistics_available_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_appliance_statistics_cluster_statistics_available_command_t, logQueueSize), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_appliance_statistics_cluster_statistics_available_command_t, logIds), \ +} + + +/** @brief Structure for ZCL command "stream" from "MFGLIB Cluster" + */ +typedef struct __zcl_mfglib_cluster_cluster_stream_command { + uint8_t channel; + int8_t power; + uint16_t time; +} sl_zcl_mfglib_cluster_cluster_stream_command_t; + +#define sl_zcl_mfglib_cluster_cluster_stream_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_mfglib_cluster_cluster_stream_command_t, channel), \ + (ZAP_SIGNATURE_TYPE_INT8S), offsetof(sl_zcl_mfglib_cluster_cluster_stream_command_t, power), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_mfglib_cluster_cluster_stream_command_t, time), \ +} + + +/** @brief Structure for ZCL command "tone" from "MFGLIB Cluster" + */ +typedef struct __zcl_mfglib_cluster_cluster_tone_command { + uint8_t channel; + int8_t power; + uint16_t time; +} sl_zcl_mfglib_cluster_cluster_tone_command_t; + +#define sl_zcl_mfglib_cluster_cluster_tone_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_mfglib_cluster_cluster_tone_command_t, channel), \ + (ZAP_SIGNATURE_TYPE_INT8S), offsetof(sl_zcl_mfglib_cluster_cluster_tone_command_t, power), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_mfglib_cluster_cluster_tone_command_t, time), \ +} + + +/** @brief Structure for ZCL command "rxMode" from "MFGLIB Cluster" + */ +typedef struct __zcl_mfglib_cluster_cluster_rx_mode_command { + uint8_t channel; + int8_t power; + uint16_t time; +} sl_zcl_mfglib_cluster_cluster_rx_mode_command_t; + +#define sl_zcl_mfglib_cluster_cluster_rx_mode_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_mfglib_cluster_cluster_rx_mode_command_t, channel), \ + (ZAP_SIGNATURE_TYPE_INT8S), offsetof(sl_zcl_mfglib_cluster_cluster_rx_mode_command_t, power), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_mfglib_cluster_cluster_rx_mode_command_t, time), \ +} + + +/** @brief Structure for ZCL command "InitiateTestMode" from "IAS Zone" + */ +typedef struct __zcl_ias_zone_cluster_initiate_test_mode_command { + uint8_t testModeDuration; + uint8_t currentZoneSensitivityLevel; +} sl_zcl_ias_zone_cluster_initiate_test_mode_command_t; + +#define sl_zcl_ias_zone_cluster_initiate_test_mode_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_ias_zone_cluster_initiate_test_mode_command_t, testModeDuration), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_ias_zone_cluster_initiate_test_mode_command_t, currentZoneSensitivityLevel), \ +} + + +/** @brief Structure for ZCL command "RequestFastPollMode" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_request_fast_poll_mode_command { + uint8_t fastPollUpdatePeriod; + uint8_t duration; +} sl_zcl_simple_metering_cluster_request_fast_poll_mode_command_t; + +#define sl_zcl_simple_metering_cluster_request_fast_poll_mode_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_simple_metering_cluster_request_fast_poll_mode_command_t, fastPollUpdatePeriod), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_simple_metering_cluster_request_fast_poll_mode_command_t, duration), \ +} + + +/** @brief Structure for ZCL command "GetZoneStatus" from "IAS ACE" + */ +typedef struct __zcl_ias_ace_cluster_get_zone_status_command { + uint8_t startingZoneId; + uint8_t maxNumberOfZoneIds; + uint8_t zoneStatusMaskFlag; + uint16_t zoneStatusMask; +} sl_zcl_ias_ace_cluster_get_zone_status_command_t; + +#define sl_zcl_ias_ace_cluster_get_zone_status_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_ias_ace_cluster_get_zone_status_command_t, startingZoneId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_ias_ace_cluster_get_zone_status_command_t, maxNumberOfZoneIds), \ + (ZAP_SIGNATURE_TYPE_BOOLEAN), offsetof(sl_zcl_ias_ace_cluster_get_zone_status_command_t, zoneStatusMaskFlag), \ + (ZAP_SIGNATURE_TYPE_BITMAP16), offsetof(sl_zcl_ias_ace_cluster_get_zone_status_command_t, zoneStatusMask), \ +} + + +/** @brief Structure for ZCL command "MoveToHueAndSaturation" from "Color Control" + */ +typedef struct __zcl_color_control_cluster_move_to_hue_and_saturation_command { + uint8_t hue; + uint8_t saturation; + uint16_t transitionTime; + uint8_t optionsMask; + uint8_t optionsOverride; +} sl_zcl_color_control_cluster_move_to_hue_and_saturation_command_t; + +#define sl_zcl_color_control_cluster_move_to_hue_and_saturation_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_color_control_cluster_move_to_hue_and_saturation_command_t, hue), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_color_control_cluster_move_to_hue_and_saturation_command_t, saturation), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_color_control_cluster_move_to_hue_and_saturation_command_t, transitionTime), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_move_to_hue_and_saturation_command_t, optionsMask), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_BITMAP8), offsetof(sl_zcl_color_control_cluster_move_to_hue_and_saturation_command_t, optionsOverride), \ +} + + +/** @brief Structure for ZCL command "GetGroupMembershipResponse" from "Groups" + */ +typedef struct __zcl_groups_cluster_get_group_membership_response_command { + uint8_t capacity; + uint8_t groupCount; + /* TYPE WARNING: INT16U array defaults to */ uint8_t * groupList; +} sl_zcl_groups_cluster_get_group_membership_response_command_t; + +#define sl_zcl_groups_cluster_get_group_membership_response_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_groups_cluster_get_group_membership_response_command_t, capacity), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_groups_cluster_get_group_membership_response_command_t, groupCount), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_groups_cluster_get_group_membership_response_command_t, groupList), \ +} + + +/** @brief Structure for ZCL command "EnableWwahAppEventRetryAlgorithm" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_enable_wwah_app_event_retry_algorithm_command { + uint8_t firstBackoffTimeSeconds; + uint8_t backoffSeqCommonRatio; + uint32_t maxBackoffTimeSeconds; + uint8_t maxRedeliveryAttempts; +} sl_zcl_sl_works_with_all_hubs_cluster_enable_wwah_app_event_retry_algorithm_command_t; + +#define sl_zcl_sl_works_with_all_hubs_cluster_enable_wwah_app_event_retry_algorithm_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_enable_wwah_app_event_retry_algorithm_command_t, firstBackoffTimeSeconds), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_enable_wwah_app_event_retry_algorithm_command_t, backoffSeqCommonRatio), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_enable_wwah_app_event_retry_algorithm_command_t, maxBackoffTimeSeconds), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_enable_wwah_app_event_retry_algorithm_command_t, maxRedeliveryAttempts), \ +} + + +/** @brief Structure for ZCL command "GetHolidayScheduleResponse" from "Door Lock" + */ +typedef struct __zcl_door_lock_cluster_get_holiday_schedule_response_command { + uint8_t scheduleId; + uint8_t status; + uint32_t localStartTime; + uint32_t localEndTime; + uint8_t operatingModeDuringHoliday; +} sl_zcl_door_lock_cluster_get_holiday_schedule_response_command_t; + +#define sl_zcl_door_lock_cluster_get_holiday_schedule_response_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_get_holiday_schedule_response_command_t, scheduleId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_door_lock_cluster_get_holiday_schedule_response_command_t, status), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_door_lock_cluster_get_holiday_schedule_response_command_t, localStartTime), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_door_lock_cluster_get_holiday_schedule_response_command_t, localEndTime), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_door_lock_cluster_get_holiday_schedule_response_command_t, operatingModeDuringHoliday), \ +} + + +/** @brief Structure for ZCL command "PowerProfileNotification" from "Power Profile" + */ +typedef struct __zcl_power_profile_cluster_power_profile_notification_command { + uint8_t totalProfileNum; + uint8_t powerProfileId; + uint8_t numOfTransferredPhases; + /* TYPE WARNING: TransferredPhase array defaults to */ uint8_t * transferredPhases; +} sl_zcl_power_profile_cluster_power_profile_notification_command_t; + +#define sl_zcl_power_profile_cluster_power_profile_notification_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_power_profile_notification_command_t, totalProfileNum), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_power_profile_notification_command_t, powerProfileId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_power_profile_notification_command_t, numOfTransferredPhases), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_power_profile_cluster_power_profile_notification_command_t, transferredPhases), \ +} + + +/** @brief Structure for ZCL command "PowerProfileResponse" from "Power Profile" + */ +typedef struct __zcl_power_profile_cluster_power_profile_response_command { + uint8_t totalProfileNum; + uint8_t powerProfileId; + uint8_t numOfTransferredPhases; + /* TYPE WARNING: TransferredPhase array defaults to */ uint8_t * transferredPhases; +} sl_zcl_power_profile_cluster_power_profile_response_command_t; + +#define sl_zcl_power_profile_cluster_power_profile_response_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_power_profile_response_command_t, totalProfileNum), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_power_profile_response_command_t, powerProfileId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_power_profile_response_command_t, numOfTransferredPhases), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_power_profile_cluster_power_profile_response_command_t, transferredPhases), \ +} + + +/** @brief Structure for ZCL command "GetGroupIdentifiersResponse" from "ZLL Commissioning" + */ +typedef struct __zcl_zll_commissioning_cluster_get_group_identifiers_response_command { + uint8_t total; + uint8_t startIndex; + uint8_t count; + /* TYPE WARNING: GroupInformationRecord array defaults to */ uint8_t * groupInformationRecordList; +} sl_zcl_zll_commissioning_cluster_get_group_identifiers_response_command_t; + +#define sl_zcl_zll_commissioning_cluster_get_group_identifiers_response_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_get_group_identifiers_response_command_t, total), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_get_group_identifiers_response_command_t, startIndex), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_get_group_identifiers_response_command_t, count), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_zll_commissioning_cluster_get_group_identifiers_response_command_t, groupInformationRecordList), \ +} + + +/** @brief Structure for ZCL command "GetEndpointListResponse" from "ZLL Commissioning" + */ +typedef struct __zcl_zll_commissioning_cluster_get_endpoint_list_response_command { + uint8_t total; + uint8_t startIndex; + uint8_t count; + /* TYPE WARNING: EndpointInformationRecord array defaults to */ uint8_t * endpointInformationRecordList; +} sl_zcl_zll_commissioning_cluster_get_endpoint_list_response_command_t; + +#define sl_zcl_zll_commissioning_cluster_get_endpoint_list_response_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_get_endpoint_list_response_command_t, total), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_get_endpoint_list_response_command_t, startIndex), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_zll_commissioning_cluster_get_endpoint_list_response_command_t, count), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_zll_commissioning_cluster_get_endpoint_list_response_command_t, endpointInformationRecordList), \ +} + + +/** @brief Structure for ZCL command "EnergyPhasesScheduleNotification" from "Power Profile" + */ +typedef struct __zcl_power_profile_cluster_energy_phases_schedule_notification_command { + uint8_t powerProfileId; + uint8_t numOfScheduledPhases; + /* TYPE WARNING: ScheduledPhase array defaults to */ uint8_t * scheduledPhases; +} sl_zcl_power_profile_cluster_energy_phases_schedule_notification_command_t; + +#define sl_zcl_power_profile_cluster_energy_phases_schedule_notification_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_energy_phases_schedule_notification_command_t, powerProfileId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_energy_phases_schedule_notification_command_t, numOfScheduledPhases), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_power_profile_cluster_energy_phases_schedule_notification_command_t, scheduledPhases), \ +} + + +/** @brief Structure for ZCL command "EnergyPhasesScheduleResponse" from "Power Profile" + */ +typedef struct __zcl_power_profile_cluster_energy_phases_schedule_response_command { + uint8_t powerProfileId; + uint8_t numOfScheduledPhases; + /* TYPE WARNING: ScheduledPhase array defaults to */ uint8_t * scheduledPhases; +} sl_zcl_power_profile_cluster_energy_phases_schedule_response_command_t; + +#define sl_zcl_power_profile_cluster_energy_phases_schedule_response_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_energy_phases_schedule_response_command_t, powerProfileId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_energy_phases_schedule_response_command_t, numOfScheduledPhases), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_power_profile_cluster_energy_phases_schedule_response_command_t, scheduledPhases), \ +} + + +/** @brief Structure for ZCL command "EnergyPhasesScheduleStateResponse" from "Power Profile" + */ +typedef struct __zcl_power_profile_cluster_energy_phases_schedule_state_response_command { + uint8_t powerProfileId; + uint8_t numOfScheduledPhases; + /* TYPE WARNING: ScheduledPhase array defaults to */ uint8_t * scheduledPhases; +} sl_zcl_power_profile_cluster_energy_phases_schedule_state_response_command_t; + +#define sl_zcl_power_profile_cluster_energy_phases_schedule_state_response_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_energy_phases_schedule_state_response_command_t, powerProfileId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_energy_phases_schedule_state_response_command_t, numOfScheduledPhases), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_power_profile_cluster_energy_phases_schedule_state_response_command_t, scheduledPhases), \ +} + + +/** @brief Structure for ZCL command "EnergyPhasesScheduleStateNotification" from "Power Profile" + */ +typedef struct __zcl_power_profile_cluster_energy_phases_schedule_state_notification_command { + uint8_t powerProfileId; + uint8_t numOfScheduledPhases; + /* TYPE WARNING: ScheduledPhase array defaults to */ uint8_t * scheduledPhases; +} sl_zcl_power_profile_cluster_energy_phases_schedule_state_notification_command_t; + +#define sl_zcl_power_profile_cluster_energy_phases_schedule_state_notification_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_energy_phases_schedule_state_notification_command_t, powerProfileId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_energy_phases_schedule_state_notification_command_t, numOfScheduledPhases), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_power_profile_cluster_energy_phases_schedule_state_notification_command_t, scheduledPhases), \ +} + + +/** @brief Structure for ZCL command "PublishTopUpLog" from "Prepayment" + */ +typedef struct __zcl_prepayment_cluster_publish_top_up_log_command { + uint8_t commandIndex; + uint8_t totalNumberOfCommands; + /* TYPE WARNING: TopUpPayload array defaults to */ uint8_t * topUpPayload; +} sl_zcl_prepayment_cluster_publish_top_up_log_command_t; + +#define sl_zcl_prepayment_cluster_publish_top_up_log_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_prepayment_cluster_publish_top_up_log_command_t, commandIndex), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_prepayment_cluster_publish_top_up_log_command_t, totalNumberOfCommands), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_prepayment_cluster_publish_top_up_log_command_t, topUpPayload), \ +} + + +/** @brief Structure for ZCL command "PublishDebtLog" from "Prepayment" + */ +typedef struct __zcl_prepayment_cluster_publish_debt_log_command { + uint8_t commandIndex; + uint8_t totalNumberOfCommands; + /* TYPE WARNING: DebtPayload array defaults to */ uint8_t * debtPayload; +} sl_zcl_prepayment_cluster_publish_debt_log_command_t; + +#define sl_zcl_prepayment_cluster_publish_debt_log_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_prepayment_cluster_publish_debt_log_command_t, commandIndex), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_prepayment_cluster_publish_debt_log_command_t, totalNumberOfCommands), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_prepayment_cluster_publish_debt_log_command_t, debtPayload), \ +} + + +/** @brief Structure for ZCL command "ReportEventConfiguration" from "Device Management" + */ +typedef struct __zcl_device_management_cluster_report_event_configuration_command { + uint8_t commandIndex; + uint8_t totalCommands; + /* TYPE WARNING: EventConfigurationPayload array defaults to */ uint8_t * eventConfigurationPayload; +} sl_zcl_device_management_cluster_report_event_configuration_command_t; + +#define sl_zcl_device_management_cluster_report_event_configuration_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_device_management_cluster_report_event_configuration_command_t, commandIndex), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_device_management_cluster_report_event_configuration_command_t, totalCommands), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_device_management_cluster_report_event_configuration_command_t, eventConfigurationPayload), \ +} + + +/** @brief Structure for ZCL command "SetBypassedZoneList" from "IAS ACE" + */ +typedef struct __zcl_ias_ace_cluster_set_bypassed_zone_list_command { + uint8_t numberOfZones; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * zoneIds; +} sl_zcl_ias_ace_cluster_set_bypassed_zone_list_command_t; + +#define sl_zcl_ias_ace_cluster_set_bypassed_zone_list_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_ias_ace_cluster_set_bypassed_zone_list_command_t, numberOfZones), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_ias_ace_cluster_set_bypassed_zone_list_command_t, zoneIds), \ +} + + +/** @brief Structure for ZCL command "RequestInformationResponse" from "Information" + */ +typedef struct __zcl_information_cluster_request_information_response_command { + uint8_t number; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * buffer; +} sl_zcl_information_cluster_request_information_response_command_t; + +#define sl_zcl_information_cluster_request_information_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_information_cluster_request_information_response_command_t, number), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_information_cluster_request_information_response_command_t, buffer), \ +} + + +/** @brief Structure for ZCL command "DebugReportQueryResponse" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_debug_report_query_response_command { + uint8_t debugReportId; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * debugReportData; +} sl_zcl_sl_works_with_all_hubs_cluster_debug_report_query_response_command_t; + +#define sl_zcl_sl_works_with_all_hubs_cluster_debug_report_query_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_debug_report_query_response_command_t, debugReportId), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_sl_works_with_all_hubs_cluster_debug_report_query_response_command_t, debugReportData), \ +} + + +/** @brief Structure for ZCL command "PowerProfileStateResponse" from "Power Profile" + */ +typedef struct __zcl_power_profile_cluster_power_profile_state_response_command { + uint8_t powerProfileCount; + /* TYPE WARNING: PowerProfileRecord array defaults to */ uint8_t * powerProfileRecords; +} sl_zcl_power_profile_cluster_power_profile_state_response_command_t; + +#define sl_zcl_power_profile_cluster_power_profile_state_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_power_profile_state_response_command_t, powerProfileCount), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_power_profile_cluster_power_profile_state_response_command_t, powerProfileRecords), \ +} + + +/** @brief Structure for ZCL command "PowerProfilesStateNotification" from "Power Profile" + */ +typedef struct __zcl_power_profile_cluster_power_profiles_state_notification_command { + uint8_t powerProfileCount; + /* TYPE WARNING: PowerProfileRecord array defaults to */ uint8_t * powerProfileRecords; +} sl_zcl_power_profile_cluster_power_profiles_state_notification_command_t; + +#define sl_zcl_power_profile_cluster_power_profiles_state_notification_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_power_profile_cluster_power_profiles_state_notification_command_t, powerProfileCount), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_power_profile_cluster_power_profiles_state_notification_command_t, powerProfileRecords), \ +} + + +/** @brief Structure for ZCL command "RequestFastPollModeResponse" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_request_fast_poll_mode_response_command { + uint8_t appliedUpdatePeriod; + uint32_t fastPollModeEndtime; +} sl_zcl_simple_metering_cluster_request_fast_poll_mode_response_command_t; + +#define sl_zcl_simple_metering_cluster_request_fast_poll_mode_response_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_simple_metering_cluster_request_fast_poll_mode_response_command_t, appliedUpdatePeriod), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_simple_metering_cluster_request_fast_poll_mode_response_command_t, fastPollModeEndtime), \ +} + + +/** @brief Structure for ZCL command "GpTranslationTableRequest" from "Green Power" + */ +typedef struct __zcl_green_power_cluster_gp_translation_table_request_command { + uint8_t startIndex; +} sl_zcl_green_power_cluster_gp_translation_table_request_command_t; + +#define sl_zcl_green_power_cluster_gp_translation_table_request_command_signature { \ + 1, \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_green_power_cluster_gp_translation_table_request_command_t, startIndex), \ +} + + +/** @brief Structure for ZCL command "PushInformation" from "Information" + */ +typedef struct __zcl_information_cluster_push_information_command { + /* TYPE WARNING: INT8U array defaults to */ uint8_t * contents; +} sl_zcl_information_cluster_push_information_command_t; + +#define sl_zcl_information_cluster_push_information_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_information_cluster_push_information_command_t, contents), \ +} + + +/** @brief Structure for ZCL command "SendPreferenceResponse" from "Information" + */ +typedef struct __zcl_information_cluster_send_preference_response_command { + /* TYPE WARNING: Status array defaults to */ uint8_t * statusFeedbackList; +} sl_zcl_information_cluster_send_preference_response_command_t; + +#define sl_zcl_information_cluster_send_preference_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_information_cluster_send_preference_response_command_t, statusFeedbackList), \ +} + + +/** @brief Structure for ZCL command "RequestPreferenceConfirmation" from "Information" + */ +typedef struct __zcl_information_cluster_request_preference_confirmation_command { + /* TYPE WARNING: Status array defaults to */ uint8_t * statusFeedbackList; +} sl_zcl_information_cluster_request_preference_confirmation_command_t; + +#define sl_zcl_information_cluster_request_preference_confirmation_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_information_cluster_request_preference_confirmation_command_t, statusFeedbackList), \ +} + + +/** @brief Structure for ZCL command "VoiceTransmission" from "Voice over ZigBee" + */ +typedef struct __zcl_voice_over_zig_bee_cluster_voice_transmission_command { + /* TYPE WARNING: INT8U array defaults to */ uint8_t * voiceData; +} sl_zcl_voice_over_zig_bee_cluster_voice_transmission_command_t; + +#define sl_zcl_voice_over_zig_bee_cluster_voice_transmission_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_voice_over_zig_bee_cluster_voice_transmission_command_t, voiceData), \ +} + + +/** @brief Structure for ZCL command "MatchProtocolAddress" from "Generic Tunnel" + */ +typedef struct __zcl_generic_tunnel_cluster_match_protocol_address_command { + uint8_t * protocolAddress; +} sl_zcl_generic_tunnel_cluster_match_protocol_address_command_t; + +#define sl_zcl_generic_tunnel_cluster_match_protocol_address_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_generic_tunnel_cluster_match_protocol_address_command_t, protocolAddress), \ +} + + +/** @brief Structure for ZCL command "AdvertiseProtocolAddress" from "Generic Tunnel" + */ +typedef struct __zcl_generic_tunnel_cluster_advertise_protocol_address_command { + uint8_t * protocolAddress; +} sl_zcl_generic_tunnel_cluster_advertise_protocol_address_command_t; + +#define sl_zcl_generic_tunnel_cluster_advertise_protocol_address_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_generic_tunnel_cluster_advertise_protocol_address_command_t, protocolAddress), \ +} + + +/** @brief Structure for ZCL command "TransferAPDU" from "11073 Protocol Tunnel" + */ +typedef struct __zcl_11073_protocol_tunnel_cluster_transfer_apdu_command { + uint8_t * apdu; +} sl_zcl_11073_protocol_tunnel_cluster_transfer_apdu_command_t; + +#define sl_zcl_11073_protocol_tunnel_cluster_transfer_apdu_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_11073_protocol_tunnel_cluster_transfer_apdu_command_t, apdu), \ +} + + +/** @brief Structure for ZCL command "TransferApduFromClient" from "ISO 7816 Protocol Tunnel" + */ +typedef struct __zcl_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_client_command { + uint8_t * apdu; +} sl_zcl_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_client_command_t; + +#define sl_zcl_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_client_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_client_command_t, apdu), \ +} + + +/** @brief Structure for ZCL command "TransferApduFromServer" from "ISO 7816 Protocol Tunnel" + */ +typedef struct __zcl_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_server_command { + uint8_t * apdu; +} sl_zcl_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_server_command_t; + +#define sl_zcl_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_server_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_iso_7816_protocol_tunnel_cluster_transfer_apdu_from_server_command_t, apdu), \ +} + + +/** @brief Structure for ZCL command "UnlockTokens" from "Configuration Cluster" + */ +typedef struct __zcl_configuration_cluster_cluster_unlock_tokens_command { + uint8_t * data; +} sl_zcl_configuration_cluster_cluster_unlock_tokens_command_t; + +#define sl_zcl_configuration_cluster_cluster_unlock_tokens_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_configuration_cluster_cluster_unlock_tokens_command_t, data), \ +} + + +/** @brief Structure for ZCL command "TransactionEnd" from "Payment" + */ +typedef struct __zcl_payment_cluster_transaction_end_command { + uint8_t * serialNumber; + uint8_t status; +} sl_zcl_payment_cluster_transaction_end_command_t; + +#define sl_zcl_payment_cluster_transaction_end_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_payment_cluster_transaction_end_command_t, serialNumber), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_payment_cluster_transaction_end_command_t, status), \ +} + + +/** @brief Structure for ZCL command "BillStatusNotification" from "Billing" + */ +typedef struct __zcl_billing_cluster_bill_status_notification_command { + uint8_t * userId; + uint8_t status; +} sl_zcl_billing_cluster_bill_status_notification_command_t; + +#define sl_zcl_billing_cluster_bill_status_notification_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_billing_cluster_bill_status_notification_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_billing_cluster_bill_status_notification_command_t, status), \ +} + + +/** @brief Structure for ZCL command "PaymentConfirm" from "Payment" + */ +typedef struct __zcl_payment_cluster_payment_confirm_command { + uint8_t * serialNumber; + uint16_t transId; + uint8_t transStatus; +} sl_zcl_payment_cluster_payment_confirm_command_t; + +#define sl_zcl_payment_cluster_payment_confirm_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_payment_cluster_payment_confirm_command_t, serialNumber), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_payment_cluster_payment_confirm_command_t, transId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_payment_cluster_payment_confirm_command_t, transStatus), \ +} + + +/** @brief Structure for ZCL command "Subscribe" from "Billing" + */ +typedef struct __zcl_billing_cluster_subscribe_command { + uint8_t * userId; + uint16_t serviceId; + uint16_t serviceProviderId; +} sl_zcl_billing_cluster_subscribe_command_t; + +#define sl_zcl_billing_cluster_subscribe_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_billing_cluster_subscribe_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_billing_cluster_subscribe_command_t, serviceId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_billing_cluster_subscribe_command_t, serviceProviderId), \ +} + + +/** @brief Structure for ZCL command "Unsubscribe" from "Billing" + */ +typedef struct __zcl_billing_cluster_unsubscribe_command { + uint8_t * userId; + uint16_t serviceId; + uint16_t serviceProviderId; +} sl_zcl_billing_cluster_unsubscribe_command_t; + +#define sl_zcl_billing_cluster_unsubscribe_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_billing_cluster_unsubscribe_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_billing_cluster_unsubscribe_command_t, serviceId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_billing_cluster_unsubscribe_command_t, serviceProviderId), \ +} + + +/** @brief Structure for ZCL command "StartBillingSession" from "Billing" + */ +typedef struct __zcl_billing_cluster_start_billing_session_command { + uint8_t * userId; + uint16_t serviceId; + uint16_t serviceProviderId; +} sl_zcl_billing_cluster_start_billing_session_command_t; + +#define sl_zcl_billing_cluster_start_billing_session_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_billing_cluster_start_billing_session_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_billing_cluster_start_billing_session_command_t, serviceId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_billing_cluster_start_billing_session_command_t, serviceProviderId), \ +} + + +/** @brief Structure for ZCL command "StopBillingSession" from "Billing" + */ +typedef struct __zcl_billing_cluster_stop_billing_session_command { + uint8_t * userId; + uint16_t serviceId; + uint16_t serviceProviderId; +} sl_zcl_billing_cluster_stop_billing_session_command_t; + +#define sl_zcl_billing_cluster_stop_billing_session_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_billing_cluster_stop_billing_session_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_billing_cluster_stop_billing_session_command_t, serviceId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_billing_cluster_stop_billing_session_command_t, serviceProviderId), \ +} + + +/** @brief Structure for ZCL command "SessionKeepAlive" from "Billing" + */ +typedef struct __zcl_billing_cluster_session_keep_alive_command { + uint8_t * userId; + uint16_t serviceId; + uint16_t serviceProviderId; +} sl_zcl_billing_cluster_session_keep_alive_command_t; + +#define sl_zcl_billing_cluster_session_keep_alive_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_billing_cluster_session_keep_alive_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_billing_cluster_session_keep_alive_command_t, serviceId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_billing_cluster_session_keep_alive_command_t, serviceProviderId), \ +} + + +/** @brief Structure for ZCL command "CheckBillStatus" from "Billing" + */ +typedef struct __zcl_billing_cluster_check_bill_status_command { + uint8_t * userId; + uint16_t serviceId; + uint16_t serviceProviderId; +} sl_zcl_billing_cluster_check_bill_status_command_t; + +#define sl_zcl_billing_cluster_check_bill_status_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_billing_cluster_check_bill_status_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_billing_cluster_check_bill_status_command_t, serviceId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_billing_cluster_check_bill_status_command_t, serviceProviderId), \ +} + + +/** @brief Structure for ZCL command "BuyRequest" from "Payment" + */ +typedef struct __zcl_payment_cluster_buy_request_command { + uint8_t * userId; + uint16_t userType; + uint16_t serviceId; + uint8_t * goodId; +} sl_zcl_payment_cluster_buy_request_command_t; + +#define sl_zcl_payment_cluster_buy_request_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_payment_cluster_buy_request_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_payment_cluster_buy_request_command_t, userType), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_payment_cluster_buy_request_command_t, serviceId), \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_payment_cluster_buy_request_command_t, goodId), \ +} + + +/** @brief Structure for ZCL command "AcceptPayment" from "Payment" + */ +typedef struct __zcl_payment_cluster_accept_payment_command { + uint8_t * userId; + uint16_t userType; + uint16_t serviceId; + uint8_t * goodId; +} sl_zcl_payment_cluster_accept_payment_command_t; + +#define sl_zcl_payment_cluster_accept_payment_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_payment_cluster_accept_payment_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_payment_cluster_accept_payment_command_t, userType), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_payment_cluster_accept_payment_command_t, serviceId), \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_payment_cluster_accept_payment_command_t, goodId), \ +} + + +/** @brief Structure for ZCL command "SendBillRecord" from "Billing" + */ +typedef struct __zcl_billing_cluster_send_bill_record_command { + uint8_t * userId; + uint16_t serviceId; + uint16_t serviceProviderId; + uint8_t * timestamp; + uint16_t duration; +} sl_zcl_billing_cluster_send_bill_record_command_t; + +#define sl_zcl_billing_cluster_send_bill_record_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_billing_cluster_send_bill_record_command_t, userId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_billing_cluster_send_bill_record_command_t, serviceId), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_billing_cluster_send_bill_record_command_t, serviceProviderId), \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_billing_cluster_send_bill_record_command_t, timestamp), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_billing_cluster_send_bill_record_command_t, duration), \ +} + + +/** @brief Structure for ZCL command "ReceiptDelivery" from "Payment" + */ +typedef struct __zcl_payment_cluster_receipt_delivery_command { + uint8_t * serialNumber; + uint32_t currency; + uint8_t priceTrailingDigit; + uint32_t price; + uint8_t * timestamp; +} sl_zcl_payment_cluster_receipt_delivery_command_t; + +#define sl_zcl_payment_cluster_receipt_delivery_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_payment_cluster_receipt_delivery_command_t, serialNumber), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_payment_cluster_receipt_delivery_command_t, currency), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_payment_cluster_receipt_delivery_command_t, priceTrailingDigit), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_payment_cluster_receipt_delivery_command_t, price), \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_payment_cluster_receipt_delivery_command_t, timestamp), \ +} + + +/** @brief Structure for ZCL command "BuyConfirm" from "Payment" + */ +typedef struct __zcl_payment_cluster_buy_confirm_command { + uint8_t * serialNumber; + uint32_t currency; + uint8_t priceTrailingDigit; + uint32_t price; + uint8_t * timestamp; + uint16_t transId; + uint8_t transStatus; +} sl_zcl_payment_cluster_buy_confirm_command_t; + +#define sl_zcl_payment_cluster_buy_confirm_command_signature { \ + 7, \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_payment_cluster_buy_confirm_command_t, serialNumber), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_payment_cluster_buy_confirm_command_t, currency), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_payment_cluster_buy_confirm_command_t, priceTrailingDigit), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_payment_cluster_buy_confirm_command_t, price), \ + (ZAP_SIGNATURE_TYPE_OCTET_STRING), offsetof(sl_zcl_payment_cluster_buy_confirm_command_t, timestamp), \ + (ZAP_SIGNATURE_TYPE_INT16U), offsetof(sl_zcl_payment_cluster_buy_confirm_command_t, transId), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_payment_cluster_buy_confirm_command_t, transStatus), \ +} + + +/** @brief Structure for ZCL command "EphemeralDataRequest" from "Key Establishment" + */ +typedef struct __zcl_key_establishment_cluster_ephemeral_data_request_command { + /* TYPE WARNING: EphemeralData defaults to */ uint8_t * ephemeralData; +} sl_zcl_key_establishment_cluster_ephemeral_data_request_command_t; + +#define sl_zcl_key_establishment_cluster_ephemeral_data_request_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_POINTER), offsetof(sl_zcl_key_establishment_cluster_ephemeral_data_request_command_t, ephemeralData), \ +} + + +/** @brief Structure for ZCL command "ConfirmKeyDataRequest" from "Key Establishment" + */ +typedef struct __zcl_key_establishment_cluster_confirm_key_data_request_command { + /* TYPE WARNING: Smac defaults to */ uint8_t * secureMessageAuthenticationCode; +} sl_zcl_key_establishment_cluster_confirm_key_data_request_command_t; + +#define sl_zcl_key_establishment_cluster_confirm_key_data_request_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_POINTER), offsetof(sl_zcl_key_establishment_cluster_confirm_key_data_request_command_t, secureMessageAuthenticationCode), \ +} + + +/** @brief Structure for ZCL command "EphemeralDataResponse" from "Key Establishment" + */ +typedef struct __zcl_key_establishment_cluster_ephemeral_data_response_command { + /* TYPE WARNING: EphemeralData defaults to */ uint8_t * ephemeralData; +} sl_zcl_key_establishment_cluster_ephemeral_data_response_command_t; + +#define sl_zcl_key_establishment_cluster_ephemeral_data_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_POINTER), offsetof(sl_zcl_key_establishment_cluster_ephemeral_data_response_command_t, ephemeralData), \ +} + + +/** @brief Structure for ZCL command "ConfirmKeyDataResponse" from "Key Establishment" + */ +typedef struct __zcl_key_establishment_cluster_confirm_key_data_response_command { + /* TYPE WARNING: Smac defaults to */ uint8_t * secureMessageAuthenticationCode; +} sl_zcl_key_establishment_cluster_confirm_key_data_response_command_t; + +#define sl_zcl_key_establishment_cluster_confirm_key_data_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_POINTER), offsetof(sl_zcl_key_establishment_cluster_confirm_key_data_response_command_t, secureMessageAuthenticationCode), \ +} + + +/** @brief Structure for ZCL command "PushInformationResponse" from "Information" + */ +typedef struct __zcl_information_cluster_push_information_response_command { + /* TYPE WARNING: Notification array defaults to */ uint8_t * notificationList; +} sl_zcl_information_cluster_push_information_response_command_t; + +#define sl_zcl_information_cluster_push_information_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_information_cluster_push_information_response_command_t, notificationList), \ +} + + +/** @brief Structure for ZCL command "UpdateResponse" from "Information" + */ +typedef struct __zcl_information_cluster_update_response_command { + /* TYPE WARNING: Notification array defaults to */ uint8_t * notificationList; +} sl_zcl_information_cluster_update_response_command_t; + +#define sl_zcl_information_cluster_update_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_information_cluster_update_response_command_t, notificationList), \ +} + + +/** @brief Structure for ZCL command "DeleteResponse" from "Information" + */ +typedef struct __zcl_information_cluster_delete_response_command { + /* TYPE WARNING: Notification array defaults to */ uint8_t * notificationList; +} sl_zcl_information_cluster_delete_response_command_t; + +#define sl_zcl_information_cluster_delete_response_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_information_cluster_delete_response_command_t, notificationList), \ +} + + +/** @brief Structure for ZCL command "LogNotification" from "Appliance Statistics" + */ +typedef struct __zcl_appliance_statistics_cluster_log_notification_command { + uint32_t timeStamp; + uint32_t logId; + uint32_t logLength; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * logPayload; +} sl_zcl_appliance_statistics_cluster_log_notification_command_t; + +#define sl_zcl_appliance_statistics_cluster_log_notification_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_TIME_OF_DAY), offsetof(sl_zcl_appliance_statistics_cluster_log_notification_command_t, timeStamp), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_appliance_statistics_cluster_log_notification_command_t, logId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_appliance_statistics_cluster_log_notification_command_t, logLength), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_appliance_statistics_cluster_log_notification_command_t, logPayload), \ +} + + +/** @brief Structure for ZCL command "LogResponse" from "Appliance Statistics" + */ +typedef struct __zcl_appliance_statistics_cluster_log_response_command { + uint32_t timeStamp; + uint32_t logId; + uint32_t logLength; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * logPayload; +} sl_zcl_appliance_statistics_cluster_log_response_command_t; + +#define sl_zcl_appliance_statistics_cluster_log_response_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_TIME_OF_DAY), offsetof(sl_zcl_appliance_statistics_cluster_log_response_command_t, timeStamp), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_appliance_statistics_cluster_log_response_command_t, logId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_appliance_statistics_cluster_log_response_command_t, logLength), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_appliance_statistics_cluster_log_response_command_t, logPayload), \ +} + + +/** @brief Structure for ZCL command "GetMessageCancellation" from "Messaging" + */ +typedef struct __zcl_messaging_cluster_get_message_cancellation_command { + uint32_t earliestImplementationTime; +} sl_zcl_messaging_cluster_get_message_cancellation_command_t; + +#define sl_zcl_messaging_cluster_get_message_cancellation_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_messaging_cluster_get_message_cancellation_command_t, earliestImplementationTime), \ +} + + +/** @brief Structure for ZCL command "CancelAllMessages" from "Messaging" + */ +typedef struct __zcl_messaging_cluster_cancel_all_messages_command { + uint32_t implementationDateTime; +} sl_zcl_messaging_cluster_cancel_all_messages_command_t; + +#define sl_zcl_messaging_cluster_cancel_all_messages_command_signature { \ + 1, \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_messaging_cluster_cancel_all_messages_command_t, implementationDateTime), \ +} + + +/** @brief Structure for ZCL command "SelectAvailableEmergencyCredit" from "Prepayment" + */ +typedef struct __zcl_prepayment_cluster_select_available_emergency_credit_command { + uint32_t commandIssueDateTime; + uint8_t originatingDevice; +} sl_zcl_prepayment_cluster_select_available_emergency_credit_command_t; + +#define sl_zcl_prepayment_cluster_select_available_emergency_credit_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_prepayment_cluster_select_available_emergency_credit_command_t, commandIssueDateTime), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_prepayment_cluster_select_available_emergency_credit_command_t, originatingDevice), \ +} + + +/** @brief Structure for ZCL command "GetProfileResponse" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_get_profile_response_command { + uint32_t endTime; + uint8_t status; + uint8_t profileIntervalPeriod; + uint8_t numberOfPeriodsDelivered; + /* TYPE WARNING: INT24U array defaults to */ uint8_t * intervals; +} sl_zcl_simple_metering_cluster_get_profile_response_command_t; + +#define sl_zcl_simple_metering_cluster_get_profile_response_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_simple_metering_cluster_get_profile_response_command_t, endTime), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_simple_metering_cluster_get_profile_response_command_t, status), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_simple_metering_cluster_get_profile_response_command_t, profileIntervalPeriod), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_simple_metering_cluster_get_profile_response_command_t, numberOfPeriodsDelivered), \ + (ZAP_SIGNATURE_TYPE_ARRAY), offsetof(sl_zcl_simple_metering_cluster_get_profile_response_command_t, intervals), \ +} + + +/** @brief Structure for ZCL command "GetConversionFactor" from "Price" + */ +typedef struct __zcl_price_cluster_get_conversion_factor_command { + uint32_t earliestStartTime; + uint32_t minIssuerEventId; + uint8_t numberOfCommands; +} sl_zcl_price_cluster_get_conversion_factor_command_t; + +#define sl_zcl_price_cluster_get_conversion_factor_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_get_conversion_factor_command_t, earliestStartTime), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_get_conversion_factor_command_t, minIssuerEventId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_get_conversion_factor_command_t, numberOfCommands), \ +} + + +/** @brief Structure for ZCL command "GetCalorificValue" from "Price" + */ +typedef struct __zcl_price_cluster_get_calorific_value_command { + uint32_t earliestStartTime; + uint32_t minIssuerEventId; + uint8_t numberOfCommands; +} sl_zcl_price_cluster_get_calorific_value_command_t; + +#define sl_zcl_price_cluster_get_calorific_value_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_get_calorific_value_command_t, earliestStartTime), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_get_calorific_value_command_t, minIssuerEventId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_get_calorific_value_command_t, numberOfCommands), \ +} + + +/** @brief Structure for ZCL command "GetTariffInformation" from "Price" + */ +typedef struct __zcl_price_cluster_get_tariff_information_command { + uint32_t earliestStartTime; + uint32_t minIssuerEventId; + uint8_t numberOfCommands; + uint8_t tariffType; +} sl_zcl_price_cluster_get_tariff_information_command_t; + +#define sl_zcl_price_cluster_get_tariff_information_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_get_tariff_information_command_t, earliestStartTime), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_get_tariff_information_command_t, minIssuerEventId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_get_tariff_information_command_t, numberOfCommands), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_get_tariff_information_command_t, tariffType), \ +} + + +/** @brief Structure for ZCL command "GetCO2Value" from "Price" + */ +typedef struct __zcl_price_cluster_get_co2_value_command { + uint32_t earliestStartTime; + uint32_t minIssuerEventId; + uint8_t numberOfCommands; + uint8_t tariffType; +} sl_zcl_price_cluster_get_co2_value_command_t; + +#define sl_zcl_price_cluster_get_co2_value_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_get_co2_value_command_t, earliestStartTime), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_get_co2_value_command_t, minIssuerEventId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_get_co2_value_command_t, numberOfCommands), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_get_co2_value_command_t, tariffType), \ +} + + +/** @brief Structure for ZCL command "GetBillingPeriod" from "Price" + */ +typedef struct __zcl_price_cluster_get_billing_period_command { + uint32_t earliestStartTime; + uint32_t minIssuerEventId; + uint8_t numberOfCommands; + uint8_t tariffType; +} sl_zcl_price_cluster_get_billing_period_command_t; + +#define sl_zcl_price_cluster_get_billing_period_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_get_billing_period_command_t, earliestStartTime), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_get_billing_period_command_t, minIssuerEventId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_get_billing_period_command_t, numberOfCommands), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_get_billing_period_command_t, tariffType), \ +} + + +/** @brief Structure for ZCL command "GetConsolidatedBill" from "Price" + */ +typedef struct __zcl_price_cluster_get_consolidated_bill_command { + uint32_t earliestStartTime; + uint32_t minIssuerEventId; + uint8_t numberOfCommands; + uint8_t tariffType; +} sl_zcl_price_cluster_get_consolidated_bill_command_t; + +#define sl_zcl_price_cluster_get_consolidated_bill_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_get_consolidated_bill_command_t, earliestStartTime), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_price_cluster_get_consolidated_bill_command_t, minIssuerEventId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_get_consolidated_bill_command_t, numberOfCommands), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_get_consolidated_bill_command_t, tariffType), \ +} + + +/** @brief Structure for ZCL command "GetCalendar" from "Calendar" + */ +typedef struct __zcl_calendar_cluster_get_calendar_command { + uint32_t earliestStartTime; + uint32_t minIssuerEventId; + uint8_t numberOfCalendars; + uint8_t calendarType; + uint32_t providerId; +} sl_zcl_calendar_cluster_get_calendar_command_t; + +#define sl_zcl_calendar_cluster_get_calendar_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_calendar_cluster_get_calendar_command_t, earliestStartTime), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_get_calendar_command_t, minIssuerEventId), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_get_calendar_command_t, numberOfCalendars), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_calendar_cluster_get_calendar_command_t, calendarType), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_get_calendar_command_t, providerId), \ +} + + +/** @brief Structure for ZCL command "GetScheduledPrices" from "Price" + */ +typedef struct __zcl_price_cluster_get_scheduled_prices_command { + uint32_t startTime; + uint8_t numberOfEvents; +} sl_zcl_price_cluster_get_scheduled_prices_command_t; + +#define sl_zcl_price_cluster_get_scheduled_prices_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_get_scheduled_prices_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_get_scheduled_prices_command_t, numberOfEvents), \ +} + + +/** @brief Structure for ZCL command "GetCreditPayment" from "Price" + */ +typedef struct __zcl_price_cluster_get_credit_payment_command { + uint32_t latestEndTime; + uint8_t numberOfRecords; +} sl_zcl_price_cluster_get_credit_payment_command_t; + +#define sl_zcl_price_cluster_get_credit_payment_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_get_credit_payment_command_t, latestEndTime), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_get_credit_payment_command_t, numberOfRecords), \ +} + + +/** @brief Structure for ZCL command "GetTopUpLog" from "Prepayment" + */ +typedef struct __zcl_prepayment_cluster_get_top_up_log_command { + uint32_t latestEndTime; + uint8_t numberOfRecords; +} sl_zcl_prepayment_cluster_get_top_up_log_command_t; + +#define sl_zcl_prepayment_cluster_get_top_up_log_command_signature { \ + 2, \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_prepayment_cluster_get_top_up_log_command_t, latestEndTime), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_prepayment_cluster_get_top_up_log_command_t, numberOfRecords), \ +} + + +/** @brief Structure for ZCL command "GetBlockPeriods" from "Price" + */ +typedef struct __zcl_price_cluster_get_block_periods_command { + uint32_t startTime; + uint8_t numberOfEvents; + uint8_t tariffType; +} sl_zcl_price_cluster_get_block_periods_command_t; + +#define sl_zcl_price_cluster_get_block_periods_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_price_cluster_get_block_periods_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_price_cluster_get_block_periods_command_t, numberOfEvents), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_price_cluster_get_block_periods_command_t, tariffType), \ +} + + +/** @brief Structure for ZCL command "GetDebtRepaymentLog" from "Prepayment" + */ +typedef struct __zcl_prepayment_cluster_get_debt_repayment_log_command { + uint32_t latestEndTime; + uint8_t numberOfDebts; + uint8_t debtType; +} sl_zcl_prepayment_cluster_get_debt_repayment_log_command_t; + +#define sl_zcl_prepayment_cluster_get_debt_repayment_log_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_prepayment_cluster_get_debt_repayment_log_command_t, latestEndTime), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_prepayment_cluster_get_debt_repayment_log_command_t, numberOfDebts), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_prepayment_cluster_get_debt_repayment_log_command_t, debtType), \ +} + + +/** @brief Structure for ZCL command "GetSpecialDays" from "Calendar" + */ +typedef struct __zcl_calendar_cluster_get_special_days_command { + uint32_t startTime; + uint8_t numberOfEvents; + uint8_t calendarType; + uint32_t providerId; + uint32_t issuerCalendarId; +} sl_zcl_calendar_cluster_get_special_days_command_t; + +#define sl_zcl_calendar_cluster_get_special_days_command_signature { \ + 5, \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_calendar_cluster_get_special_days_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_calendar_cluster_get_special_days_command_t, numberOfEvents), \ + (ZAP_SIGNATURE_TYPE_ENUM8), offsetof(sl_zcl_calendar_cluster_get_special_days_command_t, calendarType), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_get_special_days_command_t, providerId), \ + (ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_calendar_cluster_get_special_days_command_t, issuerCalendarId), \ +} + + +/** @brief Structure for ZCL command "GetScheduledEvents" from "Demand Response and Load Control" + */ +typedef struct __zcl_demand_response_and_load_control_cluster_get_scheduled_events_command { + uint32_t startTime; + uint8_t numberOfEvents; + uint32_t issuerEventId; +} sl_zcl_demand_response_and_load_control_cluster_get_scheduled_events_command_t; + +#define sl_zcl_demand_response_and_load_control_cluster_get_scheduled_events_command_signature { \ + 3, \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_demand_response_and_load_control_cluster_get_scheduled_events_command_t, startTime), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_demand_response_and_load_control_cluster_get_scheduled_events_command_t, numberOfEvents), \ + (SL_SIGNATURE_FIELD_MASK_OPTIONAL_FIELD|ZAP_SIGNATURE_TYPE_INT32U), offsetof(sl_zcl_demand_response_and_load_control_cluster_get_scheduled_events_command_t, issuerEventId), \ +} + + +/** @brief Structure for ZCL command "GetSnapshot" from "Simple Metering" + */ +typedef struct __zcl_simple_metering_cluster_get_snapshot_command { + uint32_t earliestStartTime; + uint32_t latestEndTime; + uint8_t snapshotOffset; + uint32_t snapshotCause; +} sl_zcl_simple_metering_cluster_get_snapshot_command_t; + +#define sl_zcl_simple_metering_cluster_get_snapshot_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_simple_metering_cluster_get_snapshot_command_t, earliestStartTime), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_simple_metering_cluster_get_snapshot_command_t, latestEndTime), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_simple_metering_cluster_get_snapshot_command_t, snapshotOffset), \ + (ZAP_SIGNATURE_TYPE_BITMAP32), offsetof(sl_zcl_simple_metering_cluster_get_snapshot_command_t, snapshotCause), \ +} + + +/** @brief Structure for ZCL command "GetPrepaySnapshot" from "Prepayment" + */ +typedef struct __zcl_prepayment_cluster_get_prepay_snapshot_command { + uint32_t earliestStartTime; + uint32_t latestEndTime; + uint8_t snapshotOffset; + uint32_t snapshotCause; +} sl_zcl_prepayment_cluster_get_prepay_snapshot_command_t; + +#define sl_zcl_prepayment_cluster_get_prepay_snapshot_command_signature { \ + 4, \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_prepayment_cluster_get_prepay_snapshot_command_t, earliestStartTime), \ + (ZAP_SIGNATURE_TYPE_UTC_TIME), offsetof(sl_zcl_prepayment_cluster_get_prepay_snapshot_command_t, latestEndTime), \ + (ZAP_SIGNATURE_TYPE_INT8U), offsetof(sl_zcl_prepayment_cluster_get_prepay_snapshot_command_t, snapshotOffset), \ + (ZAP_SIGNATURE_TYPE_BITMAP32), offsetof(sl_zcl_prepayment_cluster_get_prepay_snapshot_command_t, snapshotCause), \ +} + + +/** @brief Structure for ZCL command "GpPairingSearch" from "Green Power" + */ +typedef struct __zcl_green_power_cluster_gp_pairing_search_command { + uint16_t options; + uint32_t gpdSrcId; + uint8_t * gpdIeee; + uint8_t endpoint; +} sl_zcl_green_power_cluster_gp_pairing_search_command_t; + + +/** @brief Structure for ZCL command "GpNotification" from "Green Power" + */ +typedef struct __zcl_green_power_cluster_gp_notification_command { + uint16_t options; + uint32_t gpdSrcId; + uint8_t * gpdIeee; + uint8_t gpdEndpoint; + uint32_t gpdSecurityFrameCounter; + uint8_t gpdCommandId; + uint8_t * gpdCommandPayload; + uint16_t gppShortAddress; + uint8_t gppDistance; +} sl_zcl_green_power_cluster_gp_notification_command_t; + + +/** @brief Structure for ZCL command "GpCommissioningNotification" from "Green Power" + */ +typedef struct __zcl_green_power_cluster_gp_commissioning_notification_command { + uint16_t options; + uint32_t gpdSrcId; + uint8_t * gpdIeee; + uint8_t endpoint; + uint32_t gpdSecurityFrameCounter; + uint8_t gpdCommandId; + uint8_t * gpdCommandPayload; + uint16_t gppShortAddress; + uint8_t gppLink; + uint32_t mic; +} sl_zcl_green_power_cluster_gp_commissioning_notification_command_t; + + +/** @brief Structure for ZCL command "GpTranslationTableUpdate" from "Green Power" + */ +typedef struct __zcl_green_power_cluster_gp_translation_table_update_command { + uint16_t options; + uint32_t gpdSrcId; + uint8_t * gpdIeee; + uint8_t endpoint; + /* TYPE WARNING: GpTranslationTableUpdateTranslation array defaults to */ uint8_t * translations; +} sl_zcl_green_power_cluster_gp_translation_table_update_command_t; + + +/** @brief Structure for ZCL command "GpPairing" from "Green Power" + */ +typedef struct __zcl_green_power_cluster_gp_pairing_command { + uint32_t options; + uint32_t gpdSrcId; + uint8_t * gpdIeee; + uint8_t endpoint; + uint8_t * sinkIeeeAddress; + uint16_t sinkNwkAddress; + uint16_t sinkGroupId; + uint8_t deviceId; + uint32_t gpdSecurityFrameCounter; + /* TYPE WARNING: security_key defaults to */ uint8_t * gpdKey; + uint16_t assignedAlias; + uint8_t groupcastRadius; +} sl_zcl_green_power_cluster_gp_pairing_command_t; + + +/** @brief Structure for ZCL command "GpProxyTableRequest" from "Green Power" + */ +typedef struct __zcl_green_power_cluster_gp_proxy_table_request_command { + uint8_t options; + uint32_t gpdSrcId; + uint8_t * gpdIeee; + uint8_t endpoint; + uint8_t index; +} sl_zcl_green_power_cluster_gp_proxy_table_request_command_t; + + +/** @brief Structure for ZCL command "GpPairingConfiguration" from "Green Power" + */ +typedef struct __zcl_green_power_cluster_gp_pairing_configuration_command { + uint8_t actions; + uint16_t options; + uint32_t gpdSrcId; + uint8_t * gpdIeee; + uint8_t endpoint; + uint8_t deviceId; + uint8_t groupListCount; + /* TYPE WARNING: GpPairingConfigurationGroupList array defaults to */ uint8_t * groupList; + uint16_t gpdAssignedAlias; + uint8_t groupcastRadius; + uint8_t securityOptions; + uint32_t gpdSecurityFrameCounter; + /* TYPE WARNING: security_key defaults to */ uint8_t * gpdSecurityKey; + uint8_t numberOfPairedEndpoints; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * pairedEndpoints; + uint8_t applicationInformation; + uint16_t manufacturerId; + uint16_t modeId; + uint8_t numberOfGpdCommands; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * gpdCommandIdList; + uint8_t clusterIdListCount; + /* TYPE WARNING: INT16U array defaults to */ uint8_t * clusterListServer; + /* TYPE WARNING: INT16U array defaults to */ uint8_t * clusterListClient; + uint8_t switchInformationLength; + uint8_t switchConfiguration; + uint8_t currentContactStatus; + uint8_t totalNumberOfReports; + uint8_t numberOfReports; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * reportDescriptor; +} sl_zcl_green_power_cluster_gp_pairing_configuration_command_t; + + +/** @brief Structure for ZCL command "GpResponse" from "Green Power" + */ +typedef struct __zcl_green_power_cluster_gp_response_command { + uint8_t options; + uint16_t tempMasterShortAddress; + uint8_t tempMasterTxChannel; + uint32_t gpdSrcId; + uint8_t * gpdIeee; + uint8_t endpoint; + uint8_t gpdCommandId; + uint8_t * gpdCommandPayload; +} sl_zcl_green_power_cluster_gp_response_command_t; + + +/** @brief Structure for ZCL command "GpProxyCommissioningMode" from "Green Power" + */ +typedef struct __zcl_green_power_cluster_gp_proxy_commissioning_mode_command { + uint8_t options; + uint16_t commissioningWindow; + uint8_t channel; +} sl_zcl_green_power_cluster_gp_proxy_commissioning_mode_command_t; + + +/** @brief Structure for ZCL command "GpNotificationResponse" from "Green Power" + */ +typedef struct __zcl_green_power_cluster_gp_notification_response_command { + uint8_t options; + uint32_t gpdSrcId; + uint8_t * gpdIeee; + uint8_t endpoint; + uint32_t gpdSecurityFrameCounter; +} sl_zcl_green_power_cluster_gp_notification_response_command_t; + + +/** @brief Structure for ZCL command "GpTunnelingStop" from "Green Power" + */ +typedef struct __zcl_green_power_cluster_gp_tunneling_stop_command { + uint8_t options; + uint32_t gpdSrcId; + uint8_t * gpdIeee; + uint8_t endpoint; + uint32_t gpdSecurityFrameCounter; + uint16_t gppShortAddress; + int8_t gppDistance; +} sl_zcl_green_power_cluster_gp_tunneling_stop_command_t; + + +/** @brief Structure for ZCL command "PoweringOffNotification" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_powering_off_notification_command { + uint8_t powerNotificationReason; + uint16_t manufacturerId; + uint8_t manufacturerReasonLength; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * manufacturerReason; +} sl_zcl_sl_works_with_all_hubs_cluster_powering_off_notification_command_t; + + +/** @brief Structure for ZCL command "PoweringOnNotification" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_powering_on_notification_command { + uint8_t powerNotificationReason; + uint16_t manufacturerId; + uint8_t manufacturerReasonLength; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * manufacturerReason; +} sl_zcl_sl_works_with_all_hubs_cluster_powering_on_notification_command_t; + + +/** @brief Structure for ZCL command "GpSinkTableRequest" from "Green Power" + */ +typedef struct __zcl_green_power_cluster_gp_sink_table_request_command { + uint8_t options; + uint32_t gpdSrcId; + uint8_t * gpdIeee; + uint8_t endpoint; + uint8_t index; +} sl_zcl_green_power_cluster_gp_sink_table_request_command_t; + + +/** @brief Structure for ZCL command "EnableApsLinkKeyAuthorization" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_enable_aps_link_key_authorization_command { + uint8_t numberExemptClusters; + /* TYPE WARNING: CLUSTER_ID array defaults to */ uint8_t * clusterId; +} sl_zcl_sl_works_with_all_hubs_cluster_enable_aps_link_key_authorization_command_t; + + +/** @brief Structure for ZCL command "DisableApsLinkKeyAuthorization" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_disable_aps_link_key_authorization_command { + uint8_t numberExemptClusters; + /* TYPE WARNING: CLUSTER_ID array defaults to */ uint8_t * clusterId; +} sl_zcl_sl_works_with_all_hubs_cluster_disable_aps_link_key_authorization_command_t; + + +/** @brief Structure for ZCL command "RequireApsAcksOnUnicasts" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_require_aps_acks_on_unicasts_command { + uint8_t numberExemptClusters; + /* TYPE WARNING: CLUSTER_ID array defaults to */ uint8_t * clusterId; +} sl_zcl_sl_works_with_all_hubs_cluster_require_aps_acks_on_unicasts_command_t; + + +/** @brief Structure for ZCL command "UseTrustCenterForClusterServer" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_use_trust_center_for_cluster_server_command { + uint8_t numberOfClusters; + /* TYPE WARNING: CLUSTER_ID array defaults to */ uint8_t * clusterId; +} sl_zcl_sl_works_with_all_hubs_cluster_use_trust_center_for_cluster_server_command_t; + + +/** @brief Structure for ZCL command "ApsAckEnablementQueryResponse" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_aps_ack_enablement_query_response_command { + uint8_t numberExemptClusters; + /* TYPE WARNING: CLUSTER_ID array defaults to */ uint8_t * clusterId; +} sl_zcl_sl_works_with_all_hubs_cluster_aps_ack_enablement_query_response_command_t; + + +/** @brief Structure for ZCL command "TrustCenterForClusterServerQueryResponse" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_trust_center_for_cluster_server_query_response_command { + uint8_t numberOfClusters; + /* TYPE WARNING: CLUSTER_ID array defaults to */ uint8_t * clusterId; +} sl_zcl_sl_works_with_all_hubs_cluster_trust_center_for_cluster_server_query_response_command_t; + + +/** @brief Structure for ZCL command "ViewSceneResponse" from "Scenes" + */ +typedef struct __zcl_scenes_cluster_view_scene_response_command { + uint8_t status; + uint16_t groupId; + uint8_t sceneId; + uint16_t transitionTime; + uint8_t * sceneName; + /* TYPE WARNING: SceneExtensionFieldSet array defaults to */ uint8_t * extensionFieldSets; +} sl_zcl_scenes_cluster_view_scene_response_command_t; + + +/** @brief Structure for ZCL command "GetSceneMembershipResponse" from "Scenes" + */ +typedef struct __zcl_scenes_cluster_get_scene_membership_response_command { + uint8_t status; + uint8_t capacity; + uint16_t groupId; + uint8_t sceneCount; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * sceneList; +} sl_zcl_scenes_cluster_get_scene_membership_response_command_t; + + +/** @brief Structure for ZCL command "UseTrustCenterForClusterServerResponse" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_use_trust_center_for_cluster_server_response_command { + uint8_t status; + uint8_t clusterStatusLength; + /* TYPE WARNING: WwahClusterStatusToUseTC array defaults to */ uint8_t * clusterStatus; +} sl_zcl_sl_works_with_all_hubs_cluster_use_trust_center_for_cluster_server_response_command_t; + + +/** @brief Structure for ZCL command "Bypass" from "IAS ACE" + */ +typedef struct __zcl_ias_ace_cluster_bypass_command { + uint8_t numberOfZones; + /* TYPE WARNING: INT8U array defaults to */ uint8_t * zoneIds; + uint8_t * armDisarmCode; +} sl_zcl_ias_ace_cluster_bypass_command_t; + + +/** @brief Structure for ZCL command "SurveyBeaconsResponse" from "SL Works With All Hubs" + */ +typedef struct __zcl_sl_works_with_all_hubs_cluster_survey_beacons_response_command { + uint8_t numberOfBeacons; + /* TYPE WARNING: WwahBeaconSurvey array defaults to */ uint8_t * beacon; +} sl_zcl_sl_works_with_all_hubs_cluster_survey_beacons_response_command_t; + + + +#endif //End of SL_CATALOG_ZIGBEE_ZCL_FRAMEWORK_CORE_PRESENT + +/** @} END addtogroup */ +#endif // __ZAP_COMMAND_STRUCTS_H__ + diff --git a/silabs_examples/credentials/host/zap/zap-command.h b/silabs_examples/credentials/host/zap/zap-command.h new file mode 100644 index 00000000000000..803cd86f1c4eb0 --- /dev/null +++ b/silabs_examples/credentials/host/zap/zap-command.h @@ -0,0 +1,12730 @@ +/***************************************************************************//** + * @file zap-command.h + * @brief This file contains the generated client API + * This file is generated. Do not update file manually. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + +// Enclosing macro to prevent multiple inclusion +#ifndef SILABS_CLUSTER_CLIENT_API +#define SILABS_CLUSTER_CLIENT_API + +// This is generated client API + +#include "af.h" +#include "zap-id.h" + +/** +* @addtogroup command Application Framework command interface Reference +* This document describes the ZCL command interface used by the Silabs +* Application Framework for filling ZCL command buffers. +* @{ +*/ + +// Global, non-cluster-specific Commands + +/** @brief Command description for ReadAttributes +* +* Command: ReadAttributes +* @param clusterId EmberAfClusterId*/ +// @param attributeIds /* TYPE WARNING: array array defaults to */ uint8_t * +// @param attributeIdsLen uint16_t +#define emberAfFillCommandGlobalServerToClientReadAttributes(clusterId, \ + attributeIds, attributeIdsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_READ_ATTRIBUTES_COMMAND_ID, \ + "b", \ + attributeIds, attributeIdsLen); + +/** @brief Command description for ReadAttributes +* +* Command: ReadAttributes +* @param clusterId EmberAfClusterId*/ +// @param attributeIds /* TYPE WARNING: array array defaults to */ uint8_t * +// @param attributeIdsLen uint16_t +#define emberAfFillCommandGlobalClientToServerReadAttributes(clusterId, \ + attributeIds, attributeIdsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_READ_ATTRIBUTES_COMMAND_ID, \ + "b", \ + attributeIds, attributeIdsLen); +/** @brief Command description for ReadAttributesResponse +* +* Command: ReadAttributesResponse +* @param clusterId EmberAfClusterId*/ +// @param readAttributeStatusRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param readAttributeStatusRecordsLen uint16_t +#define emberAfFillCommandGlobalServerToClientReadAttributesResponse(clusterId, \ + readAttributeStatusRecords, readAttributeStatusRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_READ_ATTRIBUTES_RESPONSE_COMMAND_ID, \ + "b", \ + readAttributeStatusRecords, readAttributeStatusRecordsLen); + +/** @brief Command description for ReadAttributesResponse +* +* Command: ReadAttributesResponse +* @param clusterId EmberAfClusterId*/ +// @param readAttributeStatusRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param readAttributeStatusRecordsLen uint16_t +#define emberAfFillCommandGlobalClientToServerReadAttributesResponse(clusterId, \ + readAttributeStatusRecords, readAttributeStatusRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_READ_ATTRIBUTES_RESPONSE_COMMAND_ID, \ + "b", \ + readAttributeStatusRecords, readAttributeStatusRecordsLen); +/** @brief Command description for WriteAttributes +* +* Command: WriteAttributes +* @param clusterId EmberAfClusterId*/ +// @param writeAttributeRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param writeAttributeRecordsLen uint16_t +#define emberAfFillCommandGlobalServerToClientWriteAttributes(clusterId, \ + writeAttributeRecords, writeAttributeRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_WRITE_ATTRIBUTES_COMMAND_ID, \ + "b", \ + writeAttributeRecords, writeAttributeRecordsLen); + +/** @brief Command description for WriteAttributes +* +* Command: WriteAttributes +* @param clusterId EmberAfClusterId*/ +// @param writeAttributeRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param writeAttributeRecordsLen uint16_t +#define emberAfFillCommandGlobalClientToServerWriteAttributes(clusterId, \ + writeAttributeRecords, writeAttributeRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_WRITE_ATTRIBUTES_COMMAND_ID, \ + "b", \ + writeAttributeRecords, writeAttributeRecordsLen); +/** @brief Command description for WriteAttributesUndivided +* +* Command: WriteAttributesUndivided +* @param clusterId EmberAfClusterId*/ +// @param writeAttributeRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param writeAttributeRecordsLen uint16_t +#define emberAfFillCommandGlobalServerToClientWriteAttributesUndivided(clusterId, \ + writeAttributeRecords, writeAttributeRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_WRITE_ATTRIBUTES_UNDIVIDED_COMMAND_ID, \ + "b", \ + writeAttributeRecords, writeAttributeRecordsLen); + +/** @brief Command description for WriteAttributesUndivided +* +* Command: WriteAttributesUndivided +* @param clusterId EmberAfClusterId*/ +// @param writeAttributeRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param writeAttributeRecordsLen uint16_t +#define emberAfFillCommandGlobalClientToServerWriteAttributesUndivided(clusterId, \ + writeAttributeRecords, writeAttributeRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_WRITE_ATTRIBUTES_UNDIVIDED_COMMAND_ID, \ + "b", \ + writeAttributeRecords, writeAttributeRecordsLen); +/** @brief Command description for WriteAttributesResponse +* +* Command: WriteAttributesResponse +* @param clusterId EmberAfClusterId*/ +// @param writeAttributeStatusRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param writeAttributeStatusRecordsLen uint16_t +#define emberAfFillCommandGlobalServerToClientWriteAttributesResponse(clusterId, \ + writeAttributeStatusRecords, writeAttributeStatusRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_WRITE_ATTRIBUTES_RESPONSE_COMMAND_ID, \ + "b", \ + writeAttributeStatusRecords, writeAttributeStatusRecordsLen); + +/** @brief Command description for WriteAttributesResponse +* +* Command: WriteAttributesResponse +* @param clusterId EmberAfClusterId*/ +// @param writeAttributeStatusRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param writeAttributeStatusRecordsLen uint16_t +#define emberAfFillCommandGlobalClientToServerWriteAttributesResponse(clusterId, \ + writeAttributeStatusRecords, writeAttributeStatusRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_WRITE_ATTRIBUTES_RESPONSE_COMMAND_ID, \ + "b", \ + writeAttributeStatusRecords, writeAttributeStatusRecordsLen); +/** @brief Command description for WriteAttributesNoResponse +* +* Command: WriteAttributesNoResponse +* @param clusterId EmberAfClusterId*/ +// @param writeAttributeRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param writeAttributeRecordsLen uint16_t +#define emberAfFillCommandGlobalServerToClientWriteAttributesNoResponse(clusterId, \ + writeAttributeRecords, writeAttributeRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_WRITE_ATTRIBUTES_NO_RESPONSE_COMMAND_ID, \ + "b", \ + writeAttributeRecords, writeAttributeRecordsLen); + +/** @brief Command description for WriteAttributesNoResponse +* +* Command: WriteAttributesNoResponse +* @param clusterId EmberAfClusterId*/ +// @param writeAttributeRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param writeAttributeRecordsLen uint16_t +#define emberAfFillCommandGlobalClientToServerWriteAttributesNoResponse(clusterId, \ + writeAttributeRecords, writeAttributeRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_WRITE_ATTRIBUTES_NO_RESPONSE_COMMAND_ID, \ + "b", \ + writeAttributeRecords, writeAttributeRecordsLen); +/** @brief Command description for ConfigureReporting +* +* Command: ConfigureReporting +* @param clusterId EmberAfClusterId*/ +// @param configureReportingRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param configureReportingRecordsLen uint16_t +#define emberAfFillCommandGlobalServerToClientConfigureReporting(clusterId, \ + configureReportingRecords, configureReportingRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_CONFIGURE_REPORTING_COMMAND_ID, \ + "b", \ + configureReportingRecords, configureReportingRecordsLen); + +/** @brief Command description for ConfigureReporting +* +* Command: ConfigureReporting +* @param clusterId EmberAfClusterId*/ +// @param configureReportingRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param configureReportingRecordsLen uint16_t +#define emberAfFillCommandGlobalClientToServerConfigureReporting(clusterId, \ + configureReportingRecords, configureReportingRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_CONFIGURE_REPORTING_COMMAND_ID, \ + "b", \ + configureReportingRecords, configureReportingRecordsLen); +/** @brief Command description for ConfigureReportingResponse +* +* Command: ConfigureReportingResponse +* @param clusterId EmberAfClusterId*/ +// @param configureReportingStatusRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param configureReportingStatusRecordsLen uint16_t +#define emberAfFillCommandGlobalServerToClientConfigureReportingResponse(clusterId, \ + configureReportingStatusRecords, configureReportingStatusRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_CONFIGURE_REPORTING_RESPONSE_COMMAND_ID, \ + "b", \ + configureReportingStatusRecords, configureReportingStatusRecordsLen); + +/** @brief Command description for ConfigureReportingResponse +* +* Command: ConfigureReportingResponse +* @param clusterId EmberAfClusterId*/ +// @param configureReportingStatusRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param configureReportingStatusRecordsLen uint16_t +#define emberAfFillCommandGlobalClientToServerConfigureReportingResponse(clusterId, \ + configureReportingStatusRecords, configureReportingStatusRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_CONFIGURE_REPORTING_RESPONSE_COMMAND_ID, \ + "b", \ + configureReportingStatusRecords, configureReportingStatusRecordsLen); +/** @brief Command description for ReadReportingConfiguration +* +* Command: ReadReportingConfiguration +* @param clusterId EmberAfClusterId*/ +// @param readReportingConfigurationAttributeRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param readReportingConfigurationAttributeRecordsLen uint16_t +#define emberAfFillCommandGlobalServerToClientReadReportingConfiguration(clusterId, \ + readReportingConfigurationAttributeRecords, readReportingConfigurationAttributeRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_READ_REPORTING_CONFIGURATION_COMMAND_ID, \ + "b", \ + readReportingConfigurationAttributeRecords, readReportingConfigurationAttributeRecordsLen); + +/** @brief Command description for ReadReportingConfiguration +* +* Command: ReadReportingConfiguration +* @param clusterId EmberAfClusterId*/ +// @param readReportingConfigurationAttributeRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param readReportingConfigurationAttributeRecordsLen uint16_t +#define emberAfFillCommandGlobalClientToServerReadReportingConfiguration(clusterId, \ + readReportingConfigurationAttributeRecords, readReportingConfigurationAttributeRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_READ_REPORTING_CONFIGURATION_COMMAND_ID, \ + "b", \ + readReportingConfigurationAttributeRecords, readReportingConfigurationAttributeRecordsLen); +/** @brief Command description for ReadReportingConfigurationResponse +* +* Command: ReadReportingConfigurationResponse +* @param clusterId EmberAfClusterId*/ +// @param readReportingConfigurationRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param readReportingConfigurationRecordsLen uint16_t +#define emberAfFillCommandGlobalServerToClientReadReportingConfigurationResponse(clusterId, \ + readReportingConfigurationRecords, readReportingConfigurationRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_READ_REPORTING_CONFIGURATION_RESPONSE_COMMAND_ID, \ + "b", \ + readReportingConfigurationRecords, readReportingConfigurationRecordsLen); + +/** @brief Command description for ReadReportingConfigurationResponse +* +* Command: ReadReportingConfigurationResponse +* @param clusterId EmberAfClusterId*/ +// @param readReportingConfigurationRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param readReportingConfigurationRecordsLen uint16_t +#define emberAfFillCommandGlobalClientToServerReadReportingConfigurationResponse(clusterId, \ + readReportingConfigurationRecords, readReportingConfigurationRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_READ_REPORTING_CONFIGURATION_RESPONSE_COMMAND_ID, \ + "b", \ + readReportingConfigurationRecords, readReportingConfigurationRecordsLen); +/** @brief Command description for ReportAttributes +* +* Command: ReportAttributes +* @param clusterId EmberAfClusterId*/ +// @param reportAttributeRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param reportAttributeRecordsLen uint16_t +#define emberAfFillCommandGlobalServerToClientReportAttributes(clusterId, \ + reportAttributeRecords, reportAttributeRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_REPORT_ATTRIBUTES_COMMAND_ID, \ + "b", \ + reportAttributeRecords, reportAttributeRecordsLen); + +/** @brief Command description for ReportAttributes +* +* Command: ReportAttributes +* @param clusterId EmberAfClusterId*/ +// @param reportAttributeRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param reportAttributeRecordsLen uint16_t +#define emberAfFillCommandGlobalClientToServerReportAttributes(clusterId, \ + reportAttributeRecords, reportAttributeRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_REPORT_ATTRIBUTES_COMMAND_ID, \ + "b", \ + reportAttributeRecords, reportAttributeRecordsLen); +/** @brief Command description for DefaultResponse +* +* Command: DefaultResponse +* @param clusterId EmberAfClusterId*/ +// @param commandId uint8_t + +// @param status uint8_t + +#define emberAfFillCommandGlobalServerToClientDefaultResponse(clusterId, \ + commandId, status) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_DEFAULT_RESPONSE_COMMAND_ID, \ + "uu", \ + commandId, status); + +/** @brief Command description for DefaultResponse +* +* Command: DefaultResponse +* @param clusterId EmberAfClusterId*/ +// @param commandId uint8_t + +// @param status uint8_t + +#define emberAfFillCommandGlobalClientToServerDefaultResponse(clusterId, \ + commandId, status) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_DEFAULT_RESPONSE_COMMAND_ID, \ + "uu", \ + commandId, status); +/** @brief Command description for DiscoverAttributes +* +* Command: DiscoverAttributes +* @param clusterId EmberAfClusterId*/ +// @param startId uint16_t + +// @param maxAttributeIds uint8_t + +#define emberAfFillCommandGlobalServerToClientDiscoverAttributes(clusterId, \ + startId, maxAttributeIds) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID, \ + "vu", \ + startId, maxAttributeIds); + +/** @brief Command description for DiscoverAttributes +* +* Command: DiscoverAttributes +* @param clusterId EmberAfClusterId*/ +// @param startId uint16_t + +// @param maxAttributeIds uint8_t + +#define emberAfFillCommandGlobalClientToServerDiscoverAttributes(clusterId, \ + startId, maxAttributeIds) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID, \ + "vu", \ + startId, maxAttributeIds); +/** @brief Command description for DiscoverAttributesResponse +* +* Command: DiscoverAttributesResponse +* @param clusterId EmberAfClusterId*/ +// @param discoveryComplete uint8_t + +// @param discoverAttributesInfoRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param discoverAttributesInfoRecordsLen uint16_t +#define emberAfFillCommandGlobalServerToClientDiscoverAttributesResponse(clusterId, \ + discoveryComplete, discoverAttributesInfoRecords, discoverAttributesInfoRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_DISCOVER_ATTRIBUTES_RESPONSE_COMMAND_ID, \ + "ub", \ + discoveryComplete, discoverAttributesInfoRecords, discoverAttributesInfoRecordsLen); + +/** @brief Command description for DiscoverAttributesResponse +* +* Command: DiscoverAttributesResponse +* @param clusterId EmberAfClusterId*/ +// @param discoveryComplete uint8_t + +// @param discoverAttributesInfoRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param discoverAttributesInfoRecordsLen uint16_t +#define emberAfFillCommandGlobalClientToServerDiscoverAttributesResponse(clusterId, \ + discoveryComplete, discoverAttributesInfoRecords, discoverAttributesInfoRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_DISCOVER_ATTRIBUTES_RESPONSE_COMMAND_ID, \ + "ub", \ + discoveryComplete, discoverAttributesInfoRecords, discoverAttributesInfoRecordsLen); +/** @brief Command description for ReadAttributesStructured +* +* Command: ReadAttributesStructured +* @param clusterId EmberAfClusterId*/ +// @param readStructuredAttributeRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param readStructuredAttributeRecordsLen uint16_t +#define emberAfFillCommandGlobalServerToClientReadAttributesStructured(clusterId, \ + readStructuredAttributeRecords, readStructuredAttributeRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_READ_ATTRIBUTES_STRUCTURED_COMMAND_ID, \ + "b", \ + readStructuredAttributeRecords, readStructuredAttributeRecordsLen); + +/** @brief Command description for ReadAttributesStructured +* +* Command: ReadAttributesStructured +* @param clusterId EmberAfClusterId*/ +// @param readStructuredAttributeRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param readStructuredAttributeRecordsLen uint16_t +#define emberAfFillCommandGlobalClientToServerReadAttributesStructured(clusterId, \ + readStructuredAttributeRecords, readStructuredAttributeRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_READ_ATTRIBUTES_STRUCTURED_COMMAND_ID, \ + "b", \ + readStructuredAttributeRecords, readStructuredAttributeRecordsLen); +/** @brief Command description for WriteAttributesStructured +* +* Command: WriteAttributesStructured +* @param clusterId EmberAfClusterId*/ +// @param writeStructuredAttributeRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param writeStructuredAttributeRecordsLen uint16_t +#define emberAfFillCommandGlobalServerToClientWriteAttributesStructured(clusterId, \ + writeStructuredAttributeRecords, writeStructuredAttributeRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_WRITE_ATTRIBUTES_STRUCTURED_COMMAND_ID, \ + "b", \ + writeStructuredAttributeRecords, writeStructuredAttributeRecordsLen); + +/** @brief Command description for WriteAttributesStructured +* +* Command: WriteAttributesStructured +* @param clusterId EmberAfClusterId*/ +// @param writeStructuredAttributeRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param writeStructuredAttributeRecordsLen uint16_t +#define emberAfFillCommandGlobalClientToServerWriteAttributesStructured(clusterId, \ + writeStructuredAttributeRecords, writeStructuredAttributeRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_WRITE_ATTRIBUTES_STRUCTURED_COMMAND_ID, \ + "b", \ + writeStructuredAttributeRecords, writeStructuredAttributeRecordsLen); +/** @brief Command description for WriteAttributesStructuredResponse +* +* Command: WriteAttributesStructuredResponse +* @param clusterId EmberAfClusterId*/ +// @param writeStructuredAttributeStatusRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param writeStructuredAttributeStatusRecordsLen uint16_t +#define emberAfFillCommandGlobalServerToClientWriteAttributesStructuredResponse(clusterId, \ + writeStructuredAttributeStatusRecords, writeStructuredAttributeStatusRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_WRITE_ATTRIBUTES_STRUCTURED_RESPONSE_COMMAND_ID, \ + "b", \ + writeStructuredAttributeStatusRecords, writeStructuredAttributeStatusRecordsLen); + +/** @brief Command description for WriteAttributesStructuredResponse +* +* Command: WriteAttributesStructuredResponse +* @param clusterId EmberAfClusterId*/ +// @param writeStructuredAttributeStatusRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param writeStructuredAttributeStatusRecordsLen uint16_t +#define emberAfFillCommandGlobalClientToServerWriteAttributesStructuredResponse(clusterId, \ + writeStructuredAttributeStatusRecords, writeStructuredAttributeStatusRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_WRITE_ATTRIBUTES_STRUCTURED_RESPONSE_COMMAND_ID, \ + "b", \ + writeStructuredAttributeStatusRecords, writeStructuredAttributeStatusRecordsLen); +/** @brief Command description for DiscoverCommandsReceived +* +* Command: DiscoverCommandsReceived +* @param clusterId EmberAfClusterId*/ +// @param startCommandId uint8_t + +// @param maxCommandIds uint8_t + +#define emberAfFillCommandGlobalServerToClientDiscoverCommandsReceived(clusterId, \ + startCommandId, maxCommandIds) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_DISCOVER_COMMANDS_RECEIVED_COMMAND_ID, \ + "uu", \ + startCommandId, maxCommandIds); + +/** @brief Command description for DiscoverCommandsReceived +* +* Command: DiscoverCommandsReceived +* @param clusterId EmberAfClusterId*/ +// @param startCommandId uint8_t + +// @param maxCommandIds uint8_t + +#define emberAfFillCommandGlobalClientToServerDiscoverCommandsReceived(clusterId, \ + startCommandId, maxCommandIds) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_DISCOVER_COMMANDS_RECEIVED_COMMAND_ID, \ + "uu", \ + startCommandId, maxCommandIds); +/** @brief Command description for DiscoverCommandsReceivedResponse +* +* Command: DiscoverCommandsReceivedResponse +* @param clusterId EmberAfClusterId*/ +// @param discoveryComplete uint8_t + +// @param commandIds /* TYPE WARNING: array array defaults to */ uint8_t * +// @param commandIdsLen uint16_t +#define emberAfFillCommandGlobalServerToClientDiscoverCommandsReceivedResponse(clusterId, \ + discoveryComplete, commandIds, commandIdsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_DISCOVER_COMMANDS_RECEIVED_RESPONSE_COMMAND_ID, \ + "ub", \ + discoveryComplete, commandIds, commandIdsLen); + +/** @brief Command description for DiscoverCommandsReceivedResponse +* +* Command: DiscoverCommandsReceivedResponse +* @param clusterId EmberAfClusterId*/ +// @param discoveryComplete uint8_t + +// @param commandIds /* TYPE WARNING: array array defaults to */ uint8_t * +// @param commandIdsLen uint16_t +#define emberAfFillCommandGlobalClientToServerDiscoverCommandsReceivedResponse(clusterId, \ + discoveryComplete, commandIds, commandIdsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_DISCOVER_COMMANDS_RECEIVED_RESPONSE_COMMAND_ID, \ + "ub", \ + discoveryComplete, commandIds, commandIdsLen); +/** @brief Command description for DiscoverCommandsGenerated +* +* Command: DiscoverCommandsGenerated +* @param clusterId EmberAfClusterId*/ +// @param startCommandId uint8_t + +// @param maxCommandIds uint8_t + +#define emberAfFillCommandGlobalServerToClientDiscoverCommandsGenerated(clusterId, \ + startCommandId, maxCommandIds) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_DISCOVER_COMMANDS_GENERATED_COMMAND_ID, \ + "uu", \ + startCommandId, maxCommandIds); + +/** @brief Command description for DiscoverCommandsGenerated +* +* Command: DiscoverCommandsGenerated +* @param clusterId EmberAfClusterId*/ +// @param startCommandId uint8_t + +// @param maxCommandIds uint8_t + +#define emberAfFillCommandGlobalClientToServerDiscoverCommandsGenerated(clusterId, \ + startCommandId, maxCommandIds) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_DISCOVER_COMMANDS_GENERATED_COMMAND_ID, \ + "uu", \ + startCommandId, maxCommandIds); +/** @brief Command description for DiscoverCommandsGeneratedResponse +* +* Command: DiscoverCommandsGeneratedResponse +* @param clusterId EmberAfClusterId*/ +// @param discoveryComplete uint8_t + +// @param commandIds /* TYPE WARNING: array array defaults to */ uint8_t * +// @param commandIdsLen uint16_t +#define emberAfFillCommandGlobalServerToClientDiscoverCommandsGeneratedResponse(clusterId, \ + discoveryComplete, commandIds, commandIdsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_DISCOVER_COMMANDS_GENERATED_RESPONSE_COMMAND_ID, \ + "ub", \ + discoveryComplete, commandIds, commandIdsLen); + +/** @brief Command description for DiscoverCommandsGeneratedResponse +* +* Command: DiscoverCommandsGeneratedResponse +* @param clusterId EmberAfClusterId*/ +// @param discoveryComplete uint8_t + +// @param commandIds /* TYPE WARNING: array array defaults to */ uint8_t * +// @param commandIdsLen uint16_t +#define emberAfFillCommandGlobalClientToServerDiscoverCommandsGeneratedResponse(clusterId, \ + discoveryComplete, commandIds, commandIdsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_DISCOVER_COMMANDS_GENERATED_RESPONSE_COMMAND_ID, \ + "ub", \ + discoveryComplete, commandIds, commandIdsLen); +/** @brief Command description for DiscoverAttributesExtended +* +* Command: DiscoverAttributesExtended +* @param clusterId EmberAfClusterId*/ +// @param startId uint16_t + +// @param maxAttributeIds uint8_t + +#define emberAfFillCommandGlobalServerToClientDiscoverAttributesExtended(clusterId, \ + startId, maxAttributeIds) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_DISCOVER_ATTRIBUTES_EXTENDED_COMMAND_ID, \ + "vu", \ + startId, maxAttributeIds); + +/** @brief Command description for DiscoverAttributesExtended +* +* Command: DiscoverAttributesExtended +* @param clusterId EmberAfClusterId*/ +// @param startId uint16_t + +// @param maxAttributeIds uint8_t + +#define emberAfFillCommandGlobalClientToServerDiscoverAttributesExtended(clusterId, \ + startId, maxAttributeIds) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_DISCOVER_ATTRIBUTES_EXTENDED_COMMAND_ID, \ + "vu", \ + startId, maxAttributeIds); +/** @brief Command description for DiscoverAttributesExtendedResponse +* +* Command: DiscoverAttributesExtendedResponse +* @param clusterId EmberAfClusterId*/ +// @param discoveryComplete uint8_t + +// @param extendedDiscoverAttributesInfoRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param extendedDiscoverAttributesInfoRecordsLen uint16_t +#define emberAfFillCommandGlobalServerToClientDiscoverAttributesExtendedResponse(clusterId, \ + discoveryComplete, extendedDiscoverAttributesInfoRecords, extendedDiscoverAttributesInfoRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + clusterId, \ + ZCL_DISCOVER_ATTRIBUTES_EXTENDED_RESPONSE_COMMAND_ID, \ + "ub", \ + discoveryComplete, extendedDiscoverAttributesInfoRecords, extendedDiscoverAttributesInfoRecordsLen); + +/** @brief Command description for DiscoverAttributesExtendedResponse +* +* Command: DiscoverAttributesExtendedResponse +* @param clusterId EmberAfClusterId*/ +// @param discoveryComplete uint8_t + +// @param extendedDiscoverAttributesInfoRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param extendedDiscoverAttributesInfoRecordsLen uint16_t +#define emberAfFillCommandGlobalClientToServerDiscoverAttributesExtendedResponse(clusterId, \ + discoveryComplete, extendedDiscoverAttributesInfoRecords, extendedDiscoverAttributesInfoRecordsLen) \ +emberAfFillExternalBuffer((ZCL_GLOBAL_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + clusterId, \ + ZCL_DISCOVER_ATTRIBUTES_EXTENDED_RESPONSE_COMMAND_ID, \ + "ub", \ + discoveryComplete, extendedDiscoverAttributesInfoRecords, extendedDiscoverAttributesInfoRecordsLen); +/** @} END Global Commands */ + + +// Cluster Specific Commands + + +/** @brief Command that resets all attribute values to factory default. +* Cluster: Basic, Attributes for determining basic information about a device, setting user device information such as location, and enabling a device. +* Command: ResetToFactoryDefaults*/ +#define emberAfFillCommandBasicClusterResetToFactoryDefaults( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_BASIC_CLUSTER_ID, \ + ZCL_RESET_TO_FACTORY_DEFAULTS_COMMAND_ID, \ + "" \ +); + + + +/** @brief This command gets locales supported. +* Cluster: Basic, Attributes for determining basic information about a device, setting user device information such as location, and enabling a device. +* Command: GetLocalesSupported*/ +// @param startLocale uint8_t * + +// @param maxLocalesRequested uint8_t + +#define emberAfFillCommandBasicClusterGetLocalesSupported( \ + startLocale, maxLocalesRequested) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_BASIC_CLUSTER_ID, \ + ZCL_GET_LOCALES_SUPPORTED_COMMAND_ID, \ + "su", \ + startLocale, maxLocalesRequested); + + + +/** @brief The locales supported response command is sent in response to a get locales supported command, and is used to discover which locales the device supports. +* Cluster: Basic, Attributes for determining basic information about a device, setting user device information such as location, and enabling a device. +* Command: GetLocalesSupportedResponse*/ +// @param discoveryComplete uint8_t + +// @param localeSupported /* TYPE WARNING: array array defaults to */ uint8_t * +// @param localeSupportedLen uint16_t +#define emberAfFillCommandBasicClusterGetLocalesSupportedResponse( \ + discoveryComplete, localeSupported, localeSupportedLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_BASIC_CLUSTER_ID, \ + ZCL_GET_LOCALES_SUPPORTED_RESPONSE_COMMAND_ID, \ + "ub", \ + discoveryComplete, localeSupported, localeSupportedLen); + + + +/** @brief Command description for Identify +* Cluster: Identify, Attributes and commands for putting a device into Identification mode (e.g. flashing a light). +* Command: Identify*/ +// @param identifyTime uint16_t + +#define emberAfFillCommandIdentifyClusterIdentify( \ + identifyTime) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_IDENTIFY_CLUSTER_ID, \ + ZCL_IDENTIFY_COMMAND_ID, \ + "v", \ + identifyTime); + + + +/** @brief Command description for IdentifyQueryResponse +* Cluster: Identify, Attributes and commands for putting a device into Identification mode (e.g. flashing a light). +* Command: IdentifyQueryResponse*/ +// @param timeout uint16_t + +#define emberAfFillCommandIdentifyClusterIdentifyQueryResponse( \ + timeout) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_IDENTIFY_CLUSTER_ID, \ + ZCL_IDENTIFY_QUERY_RESPONSE_COMMAND_ID, \ + "v", \ + timeout); + + + +/** @brief Command description for IdentifyQuery +* Cluster: Identify, Attributes and commands for putting a device into Identification mode (e.g. flashing a light). +* Command: IdentifyQuery*/ +#define emberAfFillCommandIdentifyClusterIdentifyQuery( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_IDENTIFY_CLUSTER_ID, \ + ZCL_IDENTIFY_QUERY_COMMAND_ID, \ + "" \ +); + + + +/** @brief Invoke EZMode on an Identify Server +* Cluster: Identify, Attributes and commands for putting a device into Identification mode (e.g. flashing a light). +* Command: EZModeInvoke*/ +// @param action uint8_t + +#define emberAfFillCommandIdentifyClusterEZModeInvoke( \ + action) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_IDENTIFY_CLUSTER_ID, \ + ZCL_EZ_MODE_INVOKE_COMMAND_ID, \ + "u", \ + action); + + + +/** @brief Update Commission State on the server device. +* Cluster: Identify, Attributes and commands for putting a device into Identification mode (e.g. flashing a light). +* Command: UpdateCommissionState*/ +// @param action uint8_t + +// @param commissionStateMask uint8_t + +#define emberAfFillCommandIdentifyClusterUpdateCommissionState( \ + action, commissionStateMask) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_IDENTIFY_CLUSTER_ID, \ + ZCL_UPDATE_COMMISSION_STATE_COMMAND_ID, \ + "uu", \ + action, commissionStateMask); + + + +/** @brief Command description for TriggerEffect +* Cluster: Identify, Attributes and commands for putting a device into Identification mode (e.g. flashing a light). +* Command: TriggerEffect*/ +// @param effectId uint8_t + +// @param effectVariant uint8_t + +#define emberAfFillCommandIdentifyClusterTriggerEffect( \ + effectId, effectVariant) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_IDENTIFY_CLUSTER_ID, \ + ZCL_TRIGGER_EFFECT_COMMAND_ID, \ + "uu", \ + effectId, effectVariant); + + + +/** @brief Command description for AddGroup +* Cluster: Groups, Attributes and commands for group configuration and manipulation. +* Command: AddGroup*/ +// @param groupId uint16_t + +// @param groupName uint8_t * + +#define emberAfFillCommandGroupsClusterAddGroup( \ + groupId, groupName) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GROUPS_CLUSTER_ID, \ + ZCL_ADD_GROUP_COMMAND_ID, \ + "vs", \ + groupId, groupName); + + + +/** @brief Command description for AddGroupResponse +* Cluster: Groups, Attributes and commands for group configuration and manipulation. +* Command: AddGroupResponse*/ +// @param status uint8_t + +// @param groupId uint16_t + +#define emberAfFillCommandGroupsClusterAddGroupResponse( \ + status, groupId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_GROUPS_CLUSTER_ID, \ + ZCL_ADD_GROUP_RESPONSE_COMMAND_ID, \ + "uv", \ + status, groupId); + + + +/** @brief Command description for ViewGroup +* Cluster: Groups, Attributes and commands for group configuration and manipulation. +* Command: ViewGroup*/ +// @param groupId uint16_t + +#define emberAfFillCommandGroupsClusterViewGroup( \ + groupId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GROUPS_CLUSTER_ID, \ + ZCL_VIEW_GROUP_COMMAND_ID, \ + "v", \ + groupId); + + + +/** @brief Command description for ViewGroupResponse +* Cluster: Groups, Attributes and commands for group configuration and manipulation. +* Command: ViewGroupResponse*/ +// @param status uint8_t + +// @param groupId uint16_t + +// @param groupName uint8_t * + +#define emberAfFillCommandGroupsClusterViewGroupResponse( \ + status, groupId, groupName) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_GROUPS_CLUSTER_ID, \ + ZCL_VIEW_GROUP_RESPONSE_COMMAND_ID, \ + "uvs", \ + status, groupId, groupName); + + + +/** @brief Command description for GetGroupMembership +* Cluster: Groups, Attributes and commands for group configuration and manipulation. +* Command: GetGroupMembership*/ +// @param groupCount uint8_t + +// @param groupList /* TYPE WARNING: array array defaults to */ uint8_t * +// @param groupListLen uint16_t +#define emberAfFillCommandGroupsClusterGetGroupMembership( \ + groupCount, groupList, groupListLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GROUPS_CLUSTER_ID, \ + ZCL_GET_GROUP_MEMBERSHIP_COMMAND_ID, \ + "ub", \ + groupCount, groupList, groupListLen); + + + +/** @brief Command description for GetGroupMembershipResponse +* Cluster: Groups, Attributes and commands for group configuration and manipulation. +* Command: GetGroupMembershipResponse*/ +// @param capacity uint8_t + +// @param groupCount uint8_t + +// @param groupList /* TYPE WARNING: array array defaults to */ uint8_t * +// @param groupListLen uint16_t +#define emberAfFillCommandGroupsClusterGetGroupMembershipResponse( \ + capacity, groupCount, groupList, groupListLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_GROUPS_CLUSTER_ID, \ + ZCL_GET_GROUP_MEMBERSHIP_RESPONSE_COMMAND_ID, \ + "uub", \ + capacity, groupCount, groupList, groupListLen); + + + +/** @brief Command description for RemoveGroup +* Cluster: Groups, Attributes and commands for group configuration and manipulation. +* Command: RemoveGroup*/ +// @param groupId uint16_t + +#define emberAfFillCommandGroupsClusterRemoveGroup( \ + groupId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GROUPS_CLUSTER_ID, \ + ZCL_REMOVE_GROUP_COMMAND_ID, \ + "v", \ + groupId); + + + +/** @brief Command description for RemoveGroupResponse +* Cluster: Groups, Attributes and commands for group configuration and manipulation. +* Command: RemoveGroupResponse*/ +// @param status uint8_t + +// @param groupId uint16_t + +#define emberAfFillCommandGroupsClusterRemoveGroupResponse( \ + status, groupId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_GROUPS_CLUSTER_ID, \ + ZCL_REMOVE_GROUP_RESPONSE_COMMAND_ID, \ + "uv", \ + status, groupId); + + + +/** @brief Command description for RemoveAllGroups +* Cluster: Groups, Attributes and commands for group configuration and manipulation. +* Command: RemoveAllGroups*/ +#define emberAfFillCommandGroupsClusterRemoveAllGroups( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GROUPS_CLUSTER_ID, \ + ZCL_REMOVE_ALL_GROUPS_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for AddGroupIfIdentifying +* Cluster: Groups, Attributes and commands for group configuration and manipulation. +* Command: AddGroupIfIdentifying*/ +// @param groupId uint16_t + +// @param groupName uint8_t * + +#define emberAfFillCommandGroupsClusterAddGroupIfIdentifying( \ + groupId, groupName) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GROUPS_CLUSTER_ID, \ + ZCL_ADD_GROUP_IF_IDENTIFYING_COMMAND_ID, \ + "vs", \ + groupId, groupName); + + + +/** @brief Add a scene to the scene table. Extension field sets are supported, and are inputed as arrays of the form [[cluster ID] [length] [value0...n] ...] +* Cluster: Scenes, Attributes and commands for scene configuration and manipulation. +* Command: AddScene*/ +// @param groupId uint16_t + +// @param sceneId uint8_t + +// @param transitionTime uint16_t + +// @param sceneName uint8_t * + +// @param extensionFieldSets /* TYPE WARNING: array array defaults to */ uint8_t * +// @param extensionFieldSetsLen uint16_t +#define emberAfFillCommandScenesClusterAddScene( \ + groupId, sceneId, transitionTime, sceneName, extensionFieldSets, extensionFieldSetsLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SCENES_CLUSTER_ID, \ + ZCL_ADD_SCENE_COMMAND_ID, \ + "vuvsb", \ + groupId, sceneId, transitionTime, sceneName, extensionFieldSets, extensionFieldSetsLen); + + + +/** @brief Command description for AddSceneResponse +* Cluster: Scenes, Attributes and commands for scene configuration and manipulation. +* Command: AddSceneResponse*/ +// @param status uint8_t + +// @param groupId uint16_t + +// @param sceneId uint8_t + +#define emberAfFillCommandScenesClusterAddSceneResponse( \ + status, groupId, sceneId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SCENES_CLUSTER_ID, \ + ZCL_ADD_SCENE_RESPONSE_COMMAND_ID, \ + "uvu", \ + status, groupId, sceneId); + + + +/** @brief Command description for ViewScene +* Cluster: Scenes, Attributes and commands for scene configuration and manipulation. +* Command: ViewScene*/ +// @param groupId uint16_t + +// @param sceneId uint8_t + +#define emberAfFillCommandScenesClusterViewScene( \ + groupId, sceneId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SCENES_CLUSTER_ID, \ + ZCL_VIEW_SCENE_COMMAND_ID, \ + "vu", \ + groupId, sceneId); + + + +/** @brief Command description for ViewSceneResponse +* Cluster: Scenes, Attributes and commands for scene configuration and manipulation. +* Command: ViewSceneResponse*/ +// @param status uint8_t + +// @param groupId uint16_t + +// @param sceneId uint8_t + +// @param transitionTime uint16_t + +// @param sceneName uint8_t * + +// @param extensionFieldSets /* TYPE WARNING: array array defaults to */ uint8_t * +// @param extensionFieldSetsLen uint16_t +#define emberAfFillCommandScenesClusterViewSceneResponse( \ + status, groupId, sceneId, transitionTime, sceneName, extensionFieldSets, extensionFieldSetsLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SCENES_CLUSTER_ID, \ + ZCL_VIEW_SCENE_RESPONSE_COMMAND_ID, \ + "uvuvsb", \ + status, groupId, sceneId, transitionTime, sceneName, extensionFieldSets, extensionFieldSetsLen); + + + +/** @brief Command description for RemoveScene +* Cluster: Scenes, Attributes and commands for scene configuration and manipulation. +* Command: RemoveScene*/ +// @param groupId uint16_t + +// @param sceneId uint8_t + +#define emberAfFillCommandScenesClusterRemoveScene( \ + groupId, sceneId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SCENES_CLUSTER_ID, \ + ZCL_REMOVE_SCENE_COMMAND_ID, \ + "vu", \ + groupId, sceneId); + + + +/** @brief Command description for RemoveSceneResponse +* Cluster: Scenes, Attributes and commands for scene configuration and manipulation. +* Command: RemoveSceneResponse*/ +// @param status uint8_t + +// @param groupId uint16_t + +// @param sceneId uint8_t + +#define emberAfFillCommandScenesClusterRemoveSceneResponse( \ + status, groupId, sceneId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SCENES_CLUSTER_ID, \ + ZCL_REMOVE_SCENE_RESPONSE_COMMAND_ID, \ + "uvu", \ + status, groupId, sceneId); + + + +/** @brief Command description for RemoveAllScenes +* Cluster: Scenes, Attributes and commands for scene configuration and manipulation. +* Command: RemoveAllScenes*/ +// @param groupId uint16_t + +#define emberAfFillCommandScenesClusterRemoveAllScenes( \ + groupId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SCENES_CLUSTER_ID, \ + ZCL_REMOVE_ALL_SCENES_COMMAND_ID, \ + "v", \ + groupId); + + + +/** @brief Command description for RemoveAllScenesResponse +* Cluster: Scenes, Attributes and commands for scene configuration and manipulation. +* Command: RemoveAllScenesResponse*/ +// @param status uint8_t + +// @param groupId uint16_t + +#define emberAfFillCommandScenesClusterRemoveAllScenesResponse( \ + status, groupId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SCENES_CLUSTER_ID, \ + ZCL_REMOVE_ALL_SCENES_RESPONSE_COMMAND_ID, \ + "uv", \ + status, groupId); + + + +/** @brief Command description for StoreScene +* Cluster: Scenes, Attributes and commands for scene configuration and manipulation. +* Command: StoreScene*/ +// @param groupId uint16_t + +// @param sceneId uint8_t + +#define emberAfFillCommandScenesClusterStoreScene( \ + groupId, sceneId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SCENES_CLUSTER_ID, \ + ZCL_STORE_SCENE_COMMAND_ID, \ + "vu", \ + groupId, sceneId); + + + +/** @brief Command description for StoreSceneResponse +* Cluster: Scenes, Attributes and commands for scene configuration and manipulation. +* Command: StoreSceneResponse*/ +// @param status uint8_t + +// @param groupId uint16_t + +// @param sceneId uint8_t + +#define emberAfFillCommandScenesClusterStoreSceneResponse( \ + status, groupId, sceneId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SCENES_CLUSTER_ID, \ + ZCL_STORE_SCENE_RESPONSE_COMMAND_ID, \ + "uvu", \ + status, groupId, sceneId); + + + +/** @brief Command description for RecallScene +* Cluster: Scenes, Attributes and commands for scene configuration and manipulation. +* Command: RecallScene*/ +// @param groupId uint16_t + +// @param sceneId uint8_t + +// @param transitionTime uint16_t + +#define emberAfFillCommandScenesClusterRecallScene( \ + groupId, sceneId, transitionTime) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SCENES_CLUSTER_ID, \ + ZCL_RECALL_SCENE_COMMAND_ID, \ + "vuv", \ + groupId, sceneId, transitionTime); + + + +/** @brief Command description for GetSceneMembership +* Cluster: Scenes, Attributes and commands for scene configuration and manipulation. +* Command: GetSceneMembership*/ +// @param groupId uint16_t + +#define emberAfFillCommandScenesClusterGetSceneMembership( \ + groupId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SCENES_CLUSTER_ID, \ + ZCL_GET_SCENE_MEMBERSHIP_COMMAND_ID, \ + "v", \ + groupId); + + + +/** @brief Command description for GetSceneMembershipResponse +* Cluster: Scenes, Attributes and commands for scene configuration and manipulation. +* Command: GetSceneMembershipResponse*/ +// @param status uint8_t + +// @param capacity uint8_t + +// @param groupId uint16_t + +// @param sceneCount uint8_t + +// @param sceneList /* TYPE WARNING: array array defaults to */ uint8_t * +// @param sceneListLen uint16_t +#define emberAfFillCommandScenesClusterGetSceneMembershipResponse( \ + status, capacity, groupId, sceneCount, sceneList, sceneListLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SCENES_CLUSTER_ID, \ + ZCL_GET_SCENE_MEMBERSHIP_RESPONSE_COMMAND_ID, \ + "uuvub", \ + status, capacity, groupId, sceneCount, sceneList, sceneListLen); + + + +/** @brief Command description for EnhancedAddScene +* Cluster: Scenes, Attributes and commands for scene configuration and manipulation. +* Command: EnhancedAddScene*/ +// @param groupId uint16_t + +// @param sceneId uint8_t + +// @param transitionTime uint16_t + +// @param sceneName uint8_t * + +// @param extensionFieldSets /* TYPE WARNING: array array defaults to */ uint8_t * +// @param extensionFieldSetsLen uint16_t +#define emberAfFillCommandScenesClusterEnhancedAddScene( \ + groupId, sceneId, transitionTime, sceneName, extensionFieldSets, extensionFieldSetsLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SCENES_CLUSTER_ID, \ + ZCL_ENHANCED_ADD_SCENE_COMMAND_ID, \ + "vuvsb", \ + groupId, sceneId, transitionTime, sceneName, extensionFieldSets, extensionFieldSetsLen); + + + +/** @brief Command description for EnhancedAddSceneResponse +* Cluster: Scenes, Attributes and commands for scene configuration and manipulation. +* Command: EnhancedAddSceneResponse*/ +// @param status uint8_t + +// @param groupId uint16_t + +// @param sceneId uint8_t + +#define emberAfFillCommandScenesClusterEnhancedAddSceneResponse( \ + status, groupId, sceneId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SCENES_CLUSTER_ID, \ + ZCL_ENHANCED_ADD_SCENE_RESPONSE_COMMAND_ID, \ + "uvu", \ + status, groupId, sceneId); + + + +/** @brief Command description for EnhancedViewScene +* Cluster: Scenes, Attributes and commands for scene configuration and manipulation. +* Command: EnhancedViewScene*/ +// @param groupId uint16_t + +// @param sceneId uint8_t + +#define emberAfFillCommandScenesClusterEnhancedViewScene( \ + groupId, sceneId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SCENES_CLUSTER_ID, \ + ZCL_ENHANCED_VIEW_SCENE_COMMAND_ID, \ + "vu", \ + groupId, sceneId); + + + +/** @brief Command description for EnhancedViewSceneResponse +* Cluster: Scenes, Attributes and commands for scene configuration and manipulation. +* Command: EnhancedViewSceneResponse*/ +// @param status uint8_t + +// @param groupId uint16_t + +// @param sceneId uint8_t + +// @param transitionTime uint16_t + +// @param sceneName uint8_t * + +// @param extensionFieldSets /* TYPE WARNING: array array defaults to */ uint8_t * +// @param extensionFieldSetsLen uint16_t +#define emberAfFillCommandScenesClusterEnhancedViewSceneResponse( \ + status, groupId, sceneId, transitionTime, sceneName, extensionFieldSets, extensionFieldSetsLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SCENES_CLUSTER_ID, \ + ZCL_ENHANCED_VIEW_SCENE_RESPONSE_COMMAND_ID, \ + "uvuvsb", \ + status, groupId, sceneId, transitionTime, sceneName, extensionFieldSets, extensionFieldSetsLen); + + + +/** @brief Command description for CopyScene +* Cluster: Scenes, Attributes and commands for scene configuration and manipulation. +* Command: CopyScene*/ +// @param mode uint8_t + +// @param groupIdFrom uint16_t + +// @param sceneIdFrom uint8_t + +// @param groupIdTo uint16_t + +// @param sceneIdTo uint8_t + +#define emberAfFillCommandScenesClusterCopyScene( \ + mode, groupIdFrom, sceneIdFrom, groupIdTo, sceneIdTo) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SCENES_CLUSTER_ID, \ + ZCL_COPY_SCENE_COMMAND_ID, \ + "uvuvu", \ + mode, groupIdFrom, sceneIdFrom, groupIdTo, sceneIdTo); + + + +/** @brief Command description for CopySceneResponse +* Cluster: Scenes, Attributes and commands for scene configuration and manipulation. +* Command: CopySceneResponse*/ +// @param status uint8_t + +// @param groupIdFrom uint16_t + +// @param sceneIdFrom uint8_t + +#define emberAfFillCommandScenesClusterCopySceneResponse( \ + status, groupIdFrom, sceneIdFrom) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SCENES_CLUSTER_ID, \ + ZCL_COPY_SCENE_RESPONSE_COMMAND_ID, \ + "uvu", \ + status, groupIdFrom, sceneIdFrom); + + + +/** @brief Command description for Off +* Cluster: On/off, Attributes and commands for switching devices between 'On' and 'Off' states. +* Command: Off*/ +#define emberAfFillCommandOnOffClusterOff( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ON_OFF_CLUSTER_ID, \ + ZCL_OFF_COMMAND_ID, \ + "" \ +); + + + +/** @brief Client command that turns the device off with a transition given + by the transition time in the Ember Sample transition time attribute. +* Cluster: On/off, Attributes and commands for switching devices between 'On' and 'Off' states. +* Command: SampleMfgSpecificOffWithTransition*/ +#define emberAfFillCommandOnOffClusterSampleMfgSpecificOffWithTransition( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ON_OFF_CLUSTER_ID, \ + ZCL_SAMPLE_MFG_SPECIFIC_OFF_WITH_TRANSITION_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for On +* Cluster: On/off, Attributes and commands for switching devices between 'On' and 'Off' states. +* Command: On*/ +#define emberAfFillCommandOnOffClusterOn( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ON_OFF_CLUSTER_ID, \ + ZCL_ON_COMMAND_ID, \ + "" \ +); + + + +/** @brief Client command that turns the device on with a transition given + by the transition time in the Ember Sample transition time attribute. +* Cluster: On/off, Attributes and commands for switching devices between 'On' and 'Off' states. +* Command: SampleMfgSpecificOnWithTransition*/ +#define emberAfFillCommandOnOffClusterSampleMfgSpecificOnWithTransition( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ON_OFF_CLUSTER_ID, \ + ZCL_SAMPLE_MFG_SPECIFIC_ON_WITH_TRANSITION_COMMAND_ID, \ + "" \ +); + + + +/** @brief Client command that turns the device on with a transition given + by the transition time in the Ember Sample transition time attribute. +* Cluster: On/off, Attributes and commands for switching devices between 'On' and 'Off' states. +* Command: SampleMfgSpecificOnWithTransition2*/ +#define emberAfFillCommandOnOffClusterSampleMfgSpecificOnWithTransition2( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ON_OFF_CLUSTER_ID, \ + ZCL_SAMPLE_MFG_SPECIFIC_ON_WITH_TRANSITION2_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for Toggle +* Cluster: On/off, Attributes and commands for switching devices between 'On' and 'Off' states. +* Command: Toggle*/ +#define emberAfFillCommandOnOffClusterToggle( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ON_OFF_CLUSTER_ID, \ + ZCL_TOGGLE_COMMAND_ID, \ + "" \ +); + + + +/** @brief Client command that toggles the device with a transition given + by the transition time in the Ember Sample transition time attribute. +* Cluster: On/off, Attributes and commands for switching devices between 'On' and 'Off' states. +* Command: SampleMfgSpecificToggleWithTransition*/ +#define emberAfFillCommandOnOffClusterSampleMfgSpecificToggleWithTransition( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ON_OFF_CLUSTER_ID, \ + ZCL_SAMPLE_MFG_SPECIFIC_TOGGLE_WITH_TRANSITION_COMMAND_ID, \ + "" \ +); + + + +/** @brief Client command that toggles the device with a transition given + by the transition time in the Ember Sample transition time attribute. +* Cluster: On/off, Attributes and commands for switching devices between 'On' and 'Off' states. +* Command: SampleMfgSpecificToggleWithTransition2*/ +#define emberAfFillCommandOnOffClusterSampleMfgSpecificToggleWithTransition2( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ON_OFF_CLUSTER_ID, \ + ZCL_SAMPLE_MFG_SPECIFIC_TOGGLE_WITH_TRANSITION2_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for OffWithEffect +* Cluster: On/off, Attributes and commands for switching devices between 'On' and 'Off' states. +* Command: OffWithEffect*/ +// @param effectId uint8_t + +// @param effectVariant uint8_t + +#define emberAfFillCommandOnOffClusterOffWithEffect( \ + effectId, effectVariant) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ON_OFF_CLUSTER_ID, \ + ZCL_OFF_WITH_EFFECT_COMMAND_ID, \ + "uu", \ + effectId, effectVariant); + + + +/** @brief Command description for OnWithRecallGlobalScene +* Cluster: On/off, Attributes and commands for switching devices between 'On' and 'Off' states. +* Command: OnWithRecallGlobalScene*/ +#define emberAfFillCommandOnOffClusterOnWithRecallGlobalScene( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ON_OFF_CLUSTER_ID, \ + ZCL_ON_WITH_RECALL_GLOBAL_SCENE_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for OnWithTimedOff +* Cluster: On/off, Attributes and commands for switching devices between 'On' and 'Off' states. +* Command: OnWithTimedOff*/ +// @param onOffControl uint8_t + +// @param onTime uint16_t + +// @param offWaitTime uint16_t + +#define emberAfFillCommandOnOffClusterOnWithTimedOff( \ + onOffControl, onTime, offWaitTime) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ON_OFF_CLUSTER_ID, \ + ZCL_ON_WITH_TIMED_OFF_COMMAND_ID, \ + "uvv", \ + onOffControl, onTime, offWaitTime); + + + +/** @brief Command description for MoveToLevel +* Cluster: Level Control, Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' +* Command: MoveToLevel*/ +// @param level uint8_t + +// @param transitionTime uint16_t + +// @param optionMask uint8_t + +// @param optionOverride uint8_t + +#define emberAfFillCommandLevelControlClusterMoveToLevel( \ + level, transitionTime, optionMask, optionOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_LEVEL_CONTROL_CLUSTER_ID, \ + ZCL_MOVE_TO_LEVEL_COMMAND_ID, \ + "uvuu", \ + level, transitionTime, optionMask, optionOverride); + + + +/** @brief Command description for Move +* Cluster: Level Control, Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' +* Command: Move*/ +// @param moveMode uint8_t + +// @param rate uint8_t + +// @param optionMask uint8_t + +// @param optionOverride uint8_t + +#define emberAfFillCommandLevelControlClusterMove( \ + moveMode, rate, optionMask, optionOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_LEVEL_CONTROL_CLUSTER_ID, \ + ZCL_MOVE_COMMAND_ID, \ + "uuuu", \ + moveMode, rate, optionMask, optionOverride); + + + +/** @brief Command description for Step +* Cluster: Level Control, Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' +* Command: Step*/ +// @param stepMode uint8_t + +// @param stepSize uint8_t + +// @param transitionTime uint16_t + +// @param optionMask uint8_t + +// @param optionOverride uint8_t + +#define emberAfFillCommandLevelControlClusterStep( \ + stepMode, stepSize, transitionTime, optionMask, optionOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_LEVEL_CONTROL_CLUSTER_ID, \ + ZCL_STEP_COMMAND_ID, \ + "uuvuu", \ + stepMode, stepSize, transitionTime, optionMask, optionOverride); + + + +/** @brief Command description for Stop +* Cluster: Level Control, Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' +* Command: Stop*/ +// @param optionMask uint8_t + +// @param optionOverride uint8_t + +#define emberAfFillCommandLevelControlClusterStop( \ + optionMask, optionOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_LEVEL_CONTROL_CLUSTER_ID, \ + ZCL_STOP_COMMAND_ID, \ + "uu", \ + optionMask, optionOverride); + + + +/** @brief Command description for MoveToLevelWithOnOff +* Cluster: Level Control, Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' +* Command: MoveToLevelWithOnOff*/ +// @param level uint8_t + +// @param transitionTime uint16_t + +#define emberAfFillCommandLevelControlClusterMoveToLevelWithOnOff( \ + level, transitionTime) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_LEVEL_CONTROL_CLUSTER_ID, \ + ZCL_MOVE_TO_LEVEL_WITH_ON_OFF_COMMAND_ID, \ + "uv", \ + level, transitionTime); + + + +/** @brief Command description for MoveWithOnOff +* Cluster: Level Control, Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' +* Command: MoveWithOnOff*/ +// @param moveMode uint8_t + +// @param rate uint8_t + +#define emberAfFillCommandLevelControlClusterMoveWithOnOff( \ + moveMode, rate) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_LEVEL_CONTROL_CLUSTER_ID, \ + ZCL_MOVE_WITH_ON_OFF_COMMAND_ID, \ + "uu", \ + moveMode, rate); + + + +/** @brief Command description for StepWithOnOff +* Cluster: Level Control, Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' +* Command: StepWithOnOff*/ +// @param stepMode uint8_t + +// @param stepSize uint8_t + +// @param transitionTime uint16_t + +#define emberAfFillCommandLevelControlClusterStepWithOnOff( \ + stepMode, stepSize, transitionTime) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_LEVEL_CONTROL_CLUSTER_ID, \ + ZCL_STEP_WITH_ON_OFF_COMMAND_ID, \ + "uuv", \ + stepMode, stepSize, transitionTime); + + + +/** @brief Command description for StopWithOnOff +* Cluster: Level Control, Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' +* Command: StopWithOnOff*/ +#define emberAfFillCommandLevelControlClusterStopWithOnOff( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_LEVEL_CONTROL_CLUSTER_ID, \ + ZCL_STOP_WITH_ON_OFF_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for MoveToClosestFrequency +* Cluster: Level Control, Attributes and commands for controlling devices that can be set to a level between fully 'On' and fully 'Off.' +* Command: MoveToClosestFrequency*/ +// @param frequency uint16_t + +#define emberAfFillCommandLevelControlClusterMoveToClosestFrequency( \ + frequency) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_LEVEL_CONTROL_CLUSTER_ID, \ + ZCL_MOVE_TO_CLOSEST_FREQUENCY_COMMAND_ID, \ + "v", \ + frequency); + + + +/** @brief Command description for ResetAlarm +* Cluster: Alarms, Attributes and commands for sending notifications and configuring alarm functionality. +* Command: ResetAlarm*/ +// @param alarmCode uint8_t + +// @param clusterId uint16_t + +#define emberAfFillCommandAlarmClusterResetAlarm( \ + alarmCode, clusterId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ALARM_CLUSTER_ID, \ + ZCL_RESET_ALARM_COMMAND_ID, \ + "uv", \ + alarmCode, clusterId); + + + +/** @brief Command description for Alarm +* Cluster: Alarms, Attributes and commands for sending notifications and configuring alarm functionality. +* Command: Alarm*/ +// @param alarmCode uint8_t + +// @param clusterId uint16_t + +#define emberAfFillCommandAlarmClusterAlarm( \ + alarmCode, clusterId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_ALARM_CLUSTER_ID, \ + ZCL_ALARM_COMMAND_ID, \ + "uv", \ + alarmCode, clusterId); + + + +/** @brief Command description for ResetAllAlarms +* Cluster: Alarms, Attributes and commands for sending notifications and configuring alarm functionality. +* Command: ResetAllAlarms*/ +#define emberAfFillCommandAlarmClusterResetAllAlarms( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ALARM_CLUSTER_ID, \ + ZCL_RESET_ALL_ALARMS_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for GetAlarmResponse +* Cluster: Alarms, Attributes and commands for sending notifications and configuring alarm functionality. +* Command: GetAlarmResponse*/ +// @param status uint8_t + +// @param alarmCode uint8_t + +// @param clusterId uint16_t + +// @param timeStamp uint32_t + +#define emberAfFillCommandAlarmClusterGetAlarmResponse( \ + status, alarmCode, clusterId, timeStamp) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_ALARM_CLUSTER_ID, \ + ZCL_GET_ALARM_RESPONSE_COMMAND_ID, \ + "uuvw", \ + status, alarmCode, clusterId, timeStamp); + + + +/** @brief Command description for GetAlarm +* Cluster: Alarms, Attributes and commands for sending notifications and configuring alarm functionality. +* Command: GetAlarm*/ +#define emberAfFillCommandAlarmClusterGetAlarm( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ALARM_CLUSTER_ID, \ + ZCL_GET_ALARM_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for ResetAlarmLog +* Cluster: Alarms, Attributes and commands for sending notifications and configuring alarm functionality. +* Command: ResetAlarmLog*/ +#define emberAfFillCommandAlarmClusterResetAlarmLog( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ALARM_CLUSTER_ID, \ + ZCL_RESET_ALARM_LOG_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for SetAbsoluteLocation +* Cluster: RSSI Location, Attributes and commands that provide a means for exchanging location information and channel parameters among devices. +* Command: SetAbsoluteLocation*/ +// @param coordinate1 int16_t + +// @param coordinate2 int16_t + +// @param coordinate3 int16_t + +// @param power int16_t + +// @param pathLossExponent uint16_t + +#define emberAfFillCommandRssiLocationClusterSetAbsoluteLocation( \ + coordinate1, coordinate2, coordinate3, power, pathLossExponent) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_RSSI_LOCATION_CLUSTER_ID, \ + ZCL_SET_ABSOLUTE_LOCATION_COMMAND_ID, \ + "vvvvv", \ + coordinate1, coordinate2, coordinate3, power, pathLossExponent); + + + +/** @brief Command description for DeviceConfigurationResponse +* Cluster: RSSI Location, Attributes and commands that provide a means for exchanging location information and channel parameters among devices. +* Command: DeviceConfigurationResponse*/ +// @param status uint8_t + +// @param power int16_t + +// @param pathLossExponent uint16_t + +// @param calculationPeriod uint16_t + +// @param numberRssiMeasurements uint8_t + +// @param reportingPeriod uint16_t + +#define emberAfFillCommandRssiLocationClusterDeviceConfigurationResponse( \ + status, power, pathLossExponent, calculationPeriod, numberRssiMeasurements, reportingPeriod) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_RSSI_LOCATION_CLUSTER_ID, \ + ZCL_DEVICE_CONFIGURATION_RESPONSE_COMMAND_ID, \ + "uvvvuv", \ + status, power, pathLossExponent, calculationPeriod, numberRssiMeasurements, reportingPeriod); + + + +/** @brief Command description for SetDeviceConfiguration +* Cluster: RSSI Location, Attributes and commands that provide a means for exchanging location information and channel parameters among devices. +* Command: SetDeviceConfiguration*/ +// @param power int16_t + +// @param pathLossExponent uint16_t + +// @param calculationPeriod uint16_t + +// @param numberRssiMeasurements uint8_t + +// @param reportingPeriod uint16_t + +#define emberAfFillCommandRssiLocationClusterSetDeviceConfiguration( \ + power, pathLossExponent, calculationPeriod, numberRssiMeasurements, reportingPeriod) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_RSSI_LOCATION_CLUSTER_ID, \ + ZCL_SET_DEVICE_CONFIGURATION_COMMAND_ID, \ + "vvvuv", \ + power, pathLossExponent, calculationPeriod, numberRssiMeasurements, reportingPeriod); + + + +/** @brief Command description for LocationDataResponse +* Cluster: RSSI Location, Attributes and commands that provide a means for exchanging location information and channel parameters among devices. +* Command: LocationDataResponse*/ +// @param status uint8_t + +// @param locationType uint8_t + +// @param coordinate1 int16_t + +// @param coordinate2 int16_t + +// @param coordinate3 int16_t + +// @param power int16_t + +// @param pathLossExponent uint16_t + +// @param locationMethod uint8_t + +// @param qualityMeasure uint8_t + +// @param locationAge uint16_t + +#define emberAfFillCommandRssiLocationClusterLocationDataResponse( \ + status, locationType, coordinate1, coordinate2, coordinate3, power, pathLossExponent, locationMethod, qualityMeasure, locationAge) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_RSSI_LOCATION_CLUSTER_ID, \ + ZCL_LOCATION_DATA_RESPONSE_COMMAND_ID, \ + "uuvvvvvuuv", \ + status, locationType, coordinate1, coordinate2, coordinate3, power, pathLossExponent, locationMethod, qualityMeasure, locationAge); + + + +/** @brief Command description for GetDeviceConfiguration +* Cluster: RSSI Location, Attributes and commands that provide a means for exchanging location information and channel parameters among devices. +* Command: GetDeviceConfiguration*/ +// @param targetAddress uint8_t * + +#define emberAfFillCommandRssiLocationClusterGetDeviceConfiguration( \ + targetAddress) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_RSSI_LOCATION_CLUSTER_ID, \ + ZCL_GET_DEVICE_CONFIGURATION_COMMAND_ID, \ + "8", \ + targetAddress); + + + +/** @brief Command description for LocationDataNotification +* Cluster: RSSI Location, Attributes and commands that provide a means for exchanging location information and channel parameters among devices. +* Command: LocationDataNotification*/ +// @param locationType uint8_t + +// @param coordinate1 int16_t + +// @param coordinate2 int16_t + +// @param coordinate3 int16_t + +// @param power int16_t + +// @param pathLossExponent uint16_t + +// @param locationMethod uint8_t + +// @param qualityMeasure uint8_t + +// @param locationAge uint16_t + +#define emberAfFillCommandRssiLocationClusterLocationDataNotification( \ + locationType, coordinate1, coordinate2, coordinate3, power, pathLossExponent, locationMethod, qualityMeasure, locationAge) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_RSSI_LOCATION_CLUSTER_ID, \ + ZCL_LOCATION_DATA_NOTIFICATION_COMMAND_ID, \ + "uvvvvvuuv", \ + locationType, coordinate1, coordinate2, coordinate3, power, pathLossExponent, locationMethod, qualityMeasure, locationAge); + + + +/** @brief Command description for GetLocationData +* Cluster: RSSI Location, Attributes and commands that provide a means for exchanging location information and channel parameters among devices. +* Command: GetLocationData*/ +// @param flags uint8_t + +// @param numberResponses uint8_t + +// @param targetAddress uint8_t * + +#define emberAfFillCommandRssiLocationClusterGetLocationData( \ + flags, numberResponses, targetAddress) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_RSSI_LOCATION_CLUSTER_ID, \ + ZCL_GET_LOCATION_DATA_COMMAND_ID, \ + "uu8", \ + flags, numberResponses, targetAddress); + + + +/** @brief Command description for CompactLocationDataNotification +* Cluster: RSSI Location, Attributes and commands that provide a means for exchanging location information and channel parameters among devices. +* Command: CompactLocationDataNotification*/ +// @param locationType uint8_t + +// @param coordinate1 int16_t + +// @param coordinate2 int16_t + +// @param coordinate3 int16_t + +// @param qualityMeasure uint8_t + +// @param locationAge uint16_t + +#define emberAfFillCommandRssiLocationClusterCompactLocationDataNotification( \ + locationType, coordinate1, coordinate2, coordinate3, qualityMeasure, locationAge) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_RSSI_LOCATION_CLUSTER_ID, \ + ZCL_COMPACT_LOCATION_DATA_NOTIFICATION_COMMAND_ID, \ + "uvvvuv", \ + locationType, coordinate1, coordinate2, coordinate3, qualityMeasure, locationAge); + + + +/** @brief Command description for RssiResponse +* Cluster: RSSI Location, Attributes and commands that provide a means for exchanging location information and channel parameters among devices. +* Command: RssiResponse*/ +// @param replyingDevice uint8_t * + +// @param coordinate1 int16_t + +// @param coordinate2 int16_t + +// @param coordinate3 int16_t + +// @param rssi int8_t + +// @param numberRssiMeasurements uint8_t + +#define emberAfFillCommandRssiLocationClusterRssiResponse( \ + replyingDevice, coordinate1, coordinate2, coordinate3, rssi, numberRssiMeasurements) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_RSSI_LOCATION_CLUSTER_ID, \ + ZCL_RSSI_RESPONSE_COMMAND_ID, \ + "8vvvuu", \ + replyingDevice, coordinate1, coordinate2, coordinate3, rssi, numberRssiMeasurements); + + + +/** @brief Command description for RssiPing +* Cluster: RSSI Location, Attributes and commands that provide a means for exchanging location information and channel parameters among devices. +* Command: RssiPing*/ +// @param locationType uint8_t + +#define emberAfFillCommandRssiLocationClusterRssiPing( \ + locationType) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_RSSI_LOCATION_CLUSTER_ID, \ + ZCL_RSSI_PING_COMMAND_ID, \ + "u", \ + locationType); + + + +/** @brief Command description for SendPings +* Cluster: RSSI Location, Attributes and commands that provide a means for exchanging location information and channel parameters among devices. +* Command: SendPings*/ +// @param targetAddress uint8_t * + +// @param numberRssiMeasurements uint8_t + +// @param calculationPeriod uint16_t + +#define emberAfFillCommandRssiLocationClusterSendPings( \ + targetAddress, numberRssiMeasurements, calculationPeriod) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_RSSI_LOCATION_CLUSTER_ID, \ + ZCL_SEND_PINGS_COMMAND_ID, \ + "8uv", \ + targetAddress, numberRssiMeasurements, calculationPeriod); + + + +/** @brief Command description for RssiRequest +* Cluster: RSSI Location, Attributes and commands that provide a means for exchanging location information and channel parameters among devices. +* Command: RssiRequest*/ +#define emberAfFillCommandRssiLocationClusterRssiRequest( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_RSSI_LOCATION_CLUSTER_ID, \ + ZCL_RSSI_REQUEST_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for AnchorNodeAnnounce +* Cluster: RSSI Location, Attributes and commands that provide a means for exchanging location information and channel parameters among devices. +* Command: AnchorNodeAnnounce*/ +// @param anchorNodeIeeeAddress uint8_t * + +// @param coordinate1 int16_t + +// @param coordinate2 int16_t + +// @param coordinate3 int16_t + +#define emberAfFillCommandRssiLocationClusterAnchorNodeAnnounce( \ + anchorNodeIeeeAddress, coordinate1, coordinate2, coordinate3) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_RSSI_LOCATION_CLUSTER_ID, \ + ZCL_ANCHOR_NODE_ANNOUNCE_COMMAND_ID, \ + "8vvv", \ + anchorNodeIeeeAddress, coordinate1, coordinate2, coordinate3); + + + +/** @brief Command description for ReportRssiMeasurements +* Cluster: RSSI Location, Attributes and commands that provide a means for exchanging location information and channel parameters among devices. +* Command: ReportRssiMeasurements*/ +// @param measuringDevice uint8_t * + +// @param neighbors uint8_t + +// @param neighborsInfo /* TYPE WARNING: array array defaults to */ uint8_t * +// @param neighborsInfoLen uint16_t +#define emberAfFillCommandRssiLocationClusterReportRssiMeasurements( \ + measuringDevice, neighbors, neighborsInfo, neighborsInfoLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_RSSI_LOCATION_CLUSTER_ID, \ + ZCL_REPORT_RSSI_MEASUREMENTS_COMMAND_ID, \ + "8ub", \ + measuringDevice, neighbors, neighborsInfo, neighborsInfoLen); + + + +/** @brief Command description for RequestOwnLocation +* Cluster: RSSI Location, Attributes and commands that provide a means for exchanging location information and channel parameters among devices. +* Command: RequestOwnLocation*/ +// @param blindNode uint8_t * + +#define emberAfFillCommandRssiLocationClusterRequestOwnLocation( \ + blindNode) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_RSSI_LOCATION_CLUSTER_ID, \ + ZCL_REQUEST_OWN_LOCATION_COMMAND_ID, \ + "8", \ + blindNode); + + + +/** @brief Command description for RestartDevice +* Cluster: Commissioning, Attributes and commands for commissioning and managing a ZigBee device. +* Command: RestartDevice*/ +// @param options uint8_t + +// @param delay uint8_t + +// @param jitter uint8_t + +#define emberAfFillCommandCommissioningClusterRestartDevice( \ + options, delay, jitter) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COMMISSIONING_CLUSTER_ID, \ + ZCL_RESTART_DEVICE_COMMAND_ID, \ + "uuu", \ + options, delay, jitter); + + + +/** @brief Command description for RestartDeviceResponse +* Cluster: Commissioning, Attributes and commands for commissioning and managing a ZigBee device. +* Command: RestartDeviceResponse*/ +// @param status uint8_t + +#define emberAfFillCommandCommissioningClusterRestartDeviceResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_COMMISSIONING_CLUSTER_ID, \ + ZCL_RESTART_DEVICE_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Command description for SaveStartupParameters +* Cluster: Commissioning, Attributes and commands for commissioning and managing a ZigBee device. +* Command: SaveStartupParameters*/ +// @param options uint8_t + +// @param index uint8_t + +#define emberAfFillCommandCommissioningClusterSaveStartupParameters( \ + options, index) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COMMISSIONING_CLUSTER_ID, \ + ZCL_SAVE_STARTUP_PARAMETERS_COMMAND_ID, \ + "uu", \ + options, index); + + + +/** @brief Command description for SaveStartupParametersResponse +* Cluster: Commissioning, Attributes and commands for commissioning and managing a ZigBee device. +* Command: SaveStartupParametersResponse*/ +// @param status uint8_t + +#define emberAfFillCommandCommissioningClusterSaveStartupParametersResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_COMMISSIONING_CLUSTER_ID, \ + ZCL_SAVE_STARTUP_PARAMETERS_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Command description for RestoreStartupParameters +* Cluster: Commissioning, Attributes and commands for commissioning and managing a ZigBee device. +* Command: RestoreStartupParameters*/ +// @param options uint8_t + +// @param index uint8_t + +#define emberAfFillCommandCommissioningClusterRestoreStartupParameters( \ + options, index) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COMMISSIONING_CLUSTER_ID, \ + ZCL_RESTORE_STARTUP_PARAMETERS_COMMAND_ID, \ + "uu", \ + options, index); + + + +/** @brief Command description for RestoreStartupParametersResponse +* Cluster: Commissioning, Attributes and commands for commissioning and managing a ZigBee device. +* Command: RestoreStartupParametersResponse*/ +// @param status uint8_t + +#define emberAfFillCommandCommissioningClusterRestoreStartupParametersResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_COMMISSIONING_CLUSTER_ID, \ + ZCL_RESTORE_STARTUP_PARAMETERS_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Command description for ResetStartupParameters +* Cluster: Commissioning, Attributes and commands for commissioning and managing a ZigBee device. +* Command: ResetStartupParameters*/ +// @param options uint8_t + +// @param index uint8_t + +#define emberAfFillCommandCommissioningClusterResetStartupParameters( \ + options, index) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COMMISSIONING_CLUSTER_ID, \ + ZCL_RESET_STARTUP_PARAMETERS_COMMAND_ID, \ + "uu", \ + options, index); + + + +/** @brief Command description for ResetStartupParametersResponse +* Cluster: Commissioning, Attributes and commands for commissioning and managing a ZigBee device. +* Command: ResetStartupParametersResponse*/ +// @param status uint8_t + +#define emberAfFillCommandCommissioningClusterResetStartupParametersResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_COMMISSIONING_CLUSTER_ID, \ + ZCL_RESET_STARTUP_PARAMETERS_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief The TransferPartitionedFrame command is used to send a partitioned frame to another Partition cluster. +* Cluster: Partition, Commands and attributes for enabling partitioning of large frame to be carried from other clusters of ZigBee devices. +* Command: TransferPartitionedFrame*/ +// @param fragmentationOptions uint8_t + +// @param partitionedIndicatorAndFrame /* TYPE WARNING: array array defaults to */ uint8_t * +// @param partitionedIndicatorAndFrameLen uint16_t +#define emberAfFillCommandPartitionClusterTransferPartitionedFrame( \ + fragmentationOptions, partitionedIndicatorAndFrame, partitionedIndicatorAndFrameLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PARTITION_CLUSTER_ID, \ + ZCL_TRANSFER_PARTITIONED_FRAME_COMMAND_ID, \ + "ub", \ + fragmentationOptions, partitionedIndicatorAndFrame, partitionedIndicatorAndFrameLen); + + + +/** @brief MultipleACK command. +* Cluster: Partition, Commands and attributes for enabling partitioning of large frame to be carried from other clusters of ZigBee devices. +* Command: MultipleAck*/ +// @param ackOptions uint8_t + +// @param firstFrameIdAndNackList /* TYPE WARNING: array array defaults to */ uint8_t * +// @param firstFrameIdAndNackListLen uint16_t +#define emberAfFillCommandPartitionClusterMultipleAck( \ + ackOptions, firstFrameIdAndNackList, firstFrameIdAndNackListLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PARTITION_CLUSTER_ID, \ + ZCL_MULTIPLE_ACK_COMMAND_ID, \ + "ub", \ + ackOptions, firstFrameIdAndNackList, firstFrameIdAndNackListLen); + + + +/** @brief The ReadHandshakeParam command is used in order to read the appropriate set of parameters for each transaction to be performed by the Partition Cluster. +* Cluster: Partition, Commands and attributes for enabling partitioning of large frame to be carried from other clusters of ZigBee devices. +* Command: ReadHandshakeParam*/ +// @param partitionedClusterId uint16_t + +// @param attributeList /* TYPE WARNING: array array defaults to */ uint8_t * +// @param attributeListLen uint16_t +#define emberAfFillCommandPartitionClusterReadHandshakeParam( \ + partitionedClusterId, attributeList, attributeListLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PARTITION_CLUSTER_ID, \ + ZCL_READ_HANDSHAKE_PARAM_COMMAND_ID, \ + "vb", \ + partitionedClusterId, attributeList, attributeListLen); + + + +/** @brief The ReadHandshakeParamResponse command is used in order to response to the corresponding ReadHandshakeParam command in order to communicate the appropriate set of parameters configured for each transaction to be performed by the Partition Cluster. +* Cluster: Partition, Commands and attributes for enabling partitioning of large frame to be carried from other clusters of ZigBee devices. +* Command: ReadHandshakeParamResponse*/ +// @param partitionedClusterId uint16_t + +// @param readAttributeStatusRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param readAttributeStatusRecordsLen uint16_t +#define emberAfFillCommandPartitionClusterReadHandshakeParamResponse( \ + partitionedClusterId, readAttributeStatusRecords, readAttributeStatusRecordsLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PARTITION_CLUSTER_ID, \ + ZCL_READ_HANDSHAKE_PARAM_RESPONSE_COMMAND_ID, \ + "vb", \ + partitionedClusterId, readAttributeStatusRecords, readAttributeStatusRecordsLen); + + + +/** @brief The WriteHandshakeParam command is used during the handshake phase in order to write the appropriate parameters for each transaction to be performed by the Partition Cluster. +* Cluster: Partition, Commands and attributes for enabling partitioning of large frame to be carried from other clusters of ZigBee devices. +* Command: WriteHandshakeParam*/ +// @param partitionedClusterId uint16_t + +// @param writeAttributeRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param writeAttributeRecordsLen uint16_t +#define emberAfFillCommandPartitionClusterWriteHandshakeParam( \ + partitionedClusterId, writeAttributeRecords, writeAttributeRecordsLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PARTITION_CLUSTER_ID, \ + ZCL_WRITE_HANDSHAKE_PARAM_COMMAND_ID, \ + "vb", \ + partitionedClusterId, writeAttributeRecords, writeAttributeRecordsLen); + + + +/** @brief This command is generated when the upgrade server wishes to notify the clients of the available OTA upgrade image. The command can be sent as unicast which provides a way for the server to force the upgrade on the client. The command can also be sent as broadcast or multicast to certain class of clients (for example, the ones that have matching manufacturing and device ids). +* Cluster: Over the Air Bootloading, This cluster contains commands and attributes that act as an interface for ZigBee Over-the-air bootloading. +* Command: ImageNotify*/ +// @param payloadType uint8_t + +// @param queryJitter uint8_t + +// @param manufacturerId uint16_t + +// @param imageType uint16_t + +// @param newFileVersion uint32_t + +#define emberAfFillCommandOtaBootloadClusterImageNotify( \ + payloadType, queryJitter, manufacturerId, imageType, newFileVersion) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_OTA_BOOTLOAD_CLUSTER_ID, \ + ZCL_IMAGE_NOTIFY_COMMAND_ID, \ + "uuvvw", \ + payloadType, queryJitter, manufacturerId, imageType, newFileVersion); + + + +/** @brief This command is generated upon receipt of an Image Notify command to indicate that the client is looking for the next firmware image to upgrade to. The client may also choose to send the command periodically to the server. +* Cluster: Over the Air Bootloading, This cluster contains commands and attributes that act as an interface for ZigBee Over-the-air bootloading. +* Command: QueryNextImageRequest*/ +// @param fieldControl uint8_t + +// @param manufacturerId uint16_t + +// @param imageType uint16_t + +// @param currentFileVersion uint32_t + +// @param hardwareVersion uint16_t + +#define emberAfFillCommandOtaBootloadClusterQueryNextImageRequest( \ + fieldControl, manufacturerId, imageType, currentFileVersion, hardwareVersion) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_OTA_BOOTLOAD_CLUSTER_ID, \ + ZCL_QUERY_NEXT_IMAGE_REQUEST_COMMAND_ID, \ + "uvvwv", \ + fieldControl, manufacturerId, imageType, currentFileVersion, hardwareVersion); + + + +/** @brief This command is generated upon receipt of an QueryNextImageRequest command to response whether the server has a valid OTA upgrade image for the client or not. If the server has the file, information regarding the file and OTA upgrade process will be included in the command. +* Cluster: Over the Air Bootloading, This cluster contains commands and attributes that act as an interface for ZigBee Over-the-air bootloading. +* Command: QueryNextImageResponse*/ +// @param status uint8_t + +// @param manufacturerId uint16_t + +// @param imageType uint16_t + +// @param fileVersion uint32_t + +// @param imageSize uint32_t + +#define emberAfFillCommandOtaBootloadClusterQueryNextImageResponse( \ + status, manufacturerId, imageType, fileVersion, imageSize) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_OTA_BOOTLOAD_CLUSTER_ID, \ + ZCL_QUERY_NEXT_IMAGE_RESPONSE_COMMAND_ID, \ + "uvvww", \ + status, manufacturerId, imageType, fileVersion, imageSize); + + + +/** @brief This command is generated by the client to request blocks of OTA upgrade file data. +* Cluster: Over the Air Bootloading, This cluster contains commands and attributes that act as an interface for ZigBee Over-the-air bootloading. +* Command: ImageBlockRequest*/ +// @param fieldControl uint8_t + +// @param manufacturerId uint16_t + +// @param imageType uint16_t + +// @param fileVersion uint32_t + +// @param fileOffset uint32_t + +// @param maxDataSize uint8_t + +// @param requestNodeAddress uint8_t * + +#define emberAfFillCommandOtaBootloadClusterImageBlockRequest( \ + fieldControl, manufacturerId, imageType, fileVersion, fileOffset, maxDataSize, requestNodeAddress) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_OTA_BOOTLOAD_CLUSTER_ID, \ + ZCL_IMAGE_BLOCK_REQUEST_COMMAND_ID, \ + "uvvwwu8", \ + fieldControl, manufacturerId, imageType, fileVersion, fileOffset, maxDataSize, requestNodeAddress); + + + +/** @brief This command is generated by the client to request pages of OTA upgrade file data. A page would contain multiple blocks of data. +* Cluster: Over the Air Bootloading, This cluster contains commands and attributes that act as an interface for ZigBee Over-the-air bootloading. +* Command: ImagePageRequest*/ +// @param fieldControl uint8_t + +// @param manufacturerId uint16_t + +// @param imageType uint16_t + +// @param fileVersion uint32_t + +// @param fileOffset uint32_t + +// @param maxDataSize uint8_t + +// @param pageSize uint16_t + +// @param responseSpacing uint16_t + +// @param requestNodeAddress uint8_t * + +#define emberAfFillCommandOtaBootloadClusterImagePageRequest( \ + fieldControl, manufacturerId, imageType, fileVersion, fileOffset, maxDataSize, pageSize, responseSpacing, requestNodeAddress) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_OTA_BOOTLOAD_CLUSTER_ID, \ + ZCL_IMAGE_PAGE_REQUEST_COMMAND_ID, \ + "uvvwwuvv8", \ + fieldControl, manufacturerId, imageType, fileVersion, fileOffset, maxDataSize, pageSize, responseSpacing, requestNodeAddress); + + + +/** @brief This command is generated by the server in response to the block or page request command. If the server has the data available, it will reply back with a SUCCESS status. For other error cases, it may reply with status WAIT_FOR_DATA (server does not have the data available yet) or ABORT (invalid requested parameters or other failure cases). +* Cluster: Over the Air Bootloading, This cluster contains commands and attributes that act as an interface for ZigBee Over-the-air bootloading. +* Command: ImageBlockResponse*/ +// @param status uint8_t + +// @param manufacturerId uint16_t + +// @param imageType uint16_t + +// @param fileVersion uint32_t + +// @param fileOffset uint32_t + +// @param dataSize uint8_t + +// @param imageData /* TYPE WARNING: array array defaults to */ uint8_t * +// @param imageDataLen uint16_t +#define emberAfFillCommandOtaBootloadClusterImageBlockResponse( \ + status, manufacturerId, imageType, fileVersion, fileOffset, dataSize, imageData, imageDataLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_OTA_BOOTLOAD_CLUSTER_ID, \ + ZCL_IMAGE_BLOCK_RESPONSE_COMMAND_ID, \ + "uvvwwub", \ + status, manufacturerId, imageType, fileVersion, fileOffset, dataSize, imageData, imageDataLen); + + + +/** @brief This command is generated by the client to notify the server of the end of the upgrade process. The process may end with success or error status. +* Cluster: Over the Air Bootloading, This cluster contains commands and attributes that act as an interface for ZigBee Over-the-air bootloading. +* Command: UpgradeEndRequest*/ +// @param status uint8_t + +// @param manufacturerId uint16_t + +// @param imageType uint16_t + +// @param fileVersion uint32_t + +#define emberAfFillCommandOtaBootloadClusterUpgradeEndRequest( \ + status, manufacturerId, imageType, fileVersion) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_OTA_BOOTLOAD_CLUSTER_ID, \ + ZCL_UPGRADE_END_REQUEST_COMMAND_ID, \ + "uvvw", \ + status, manufacturerId, imageType, fileVersion); + + + +/** @brief This command is generated by the server in response to the upgrade request in order to let the client know when to upgrade to running new firmware image. +* Cluster: Over the Air Bootloading, This cluster contains commands and attributes that act as an interface for ZigBee Over-the-air bootloading. +* Command: UpgradeEndResponse*/ +// @param manufacturerId uint16_t + +// @param imageType uint16_t + +// @param fileVersion uint32_t + +// @param currentTime uint32_t + +// @param upgradeTime uint32_t + +#define emberAfFillCommandOtaBootloadClusterUpgradeEndResponse( \ + manufacturerId, imageType, fileVersion, currentTime, upgradeTime) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_OTA_BOOTLOAD_CLUSTER_ID, \ + ZCL_UPGRADE_END_RESPONSE_COMMAND_ID, \ + "vvwww", \ + manufacturerId, imageType, fileVersion, currentTime, upgradeTime); + + + +/** @brief This command is generated by the client to request a file that is specific to itself. The intention is to provide a way for the client to request non-OTA upgrade file. +* Cluster: Over the Air Bootloading, This cluster contains commands and attributes that act as an interface for ZigBee Over-the-air bootloading. +* Command: QuerySpecificFileRequest*/ +// @param requestNodeAddress uint8_t * + +// @param manufacturerId uint16_t + +// @param imageType uint16_t + +// @param fileVersion uint32_t + +// @param currentZigbeeStackVersion uint16_t + +#define emberAfFillCommandOtaBootloadClusterQuerySpecificFileRequest( \ + requestNodeAddress, manufacturerId, imageType, fileVersion, currentZigbeeStackVersion) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_OTA_BOOTLOAD_CLUSTER_ID, \ + ZCL_QUERY_SPECIFIC_FILE_REQUEST_COMMAND_ID, \ + "8vvwv", \ + requestNodeAddress, manufacturerId, imageType, fileVersion, currentZigbeeStackVersion); + + + +/** @brief This command is generated upon receipt of an QuerySpecificFileRequest command to response whether the server has a valid file for the client or not. If the server has the file, information regarding the file and OTA process will be included in the command. +* Cluster: Over the Air Bootloading, This cluster contains commands and attributes that act as an interface for ZigBee Over-the-air bootloading. +* Command: QuerySpecificFileResponse*/ +// @param status uint8_t + +// @param manufacturerId uint16_t + +// @param imageType uint16_t + +// @param fileVersion uint32_t + +// @param imageSize uint32_t + +#define emberAfFillCommandOtaBootloadClusterQuerySpecificFileResponse( \ + status, manufacturerId, imageType, fileVersion, imageSize) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_OTA_BOOTLOAD_CLUSTER_ID, \ + ZCL_QUERY_SPECIFIC_FILE_RESPONSE_COMMAND_ID, \ + "uvvww", \ + status, manufacturerId, imageType, fileVersion, imageSize); + + + +/** @brief The PowerProfileRequest Command is generated by a device supporting the client side of the Power Profile cluster in order to request the Power Profile of a server device. +* Cluster: Power Profile, This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side). +* Command: PowerProfileRequest*/ +// @param powerProfileId uint8_t + +#define emberAfFillCommandPowerProfileClusterPowerProfileRequest( \ + powerProfileId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_POWER_PROFILE_CLUSTER_ID, \ + ZCL_POWER_PROFILE_REQUEST_COMMAND_ID, \ + "u", \ + powerProfileId); + + + +/** @brief The PowerProfileNotification Command is generated by a device supporting the server side of the Power Profile cluster in order to send the information of the specific parameters (such as Peak power and others) belonging to each phase. +* Cluster: Power Profile, This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side). +* Command: PowerProfileNotification*/ +// @param totalProfileNum uint8_t + +// @param powerProfileId uint8_t + +// @param numOfTransferredPhases uint8_t + +// @param transferredPhases /* TYPE WARNING: array array defaults to */ uint8_t * +// @param transferredPhasesLen uint16_t +#define emberAfFillCommandPowerProfileClusterPowerProfileNotification( \ + totalProfileNum, powerProfileId, numOfTransferredPhases, transferredPhases, transferredPhasesLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_POWER_PROFILE_CLUSTER_ID, \ + ZCL_POWER_PROFILE_NOTIFICATION_COMMAND_ID, \ + "uuub", \ + totalProfileNum, powerProfileId, numOfTransferredPhases, transferredPhases, transferredPhasesLen); + + + +/** @brief The PowerProfileStateRequest Command is generated in order to retrieve the identifiers of current Power Profiles. +* Cluster: Power Profile, This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side). +* Command: PowerProfileStateRequest*/ +#define emberAfFillCommandPowerProfileClusterPowerProfileStateRequest( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_POWER_PROFILE_CLUSTER_ID, \ + ZCL_POWER_PROFILE_STATE_REQUEST_COMMAND_ID, \ + "" \ +); + + + +/** @brief This command is generated by the server side of Power Profile cluster as a reply to the PowerProfileRequest command. +* Cluster: Power Profile, This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side). +* Command: PowerProfileResponse*/ +// @param totalProfileNum uint8_t + +// @param powerProfileId uint8_t + +// @param numOfTransferredPhases uint8_t + +// @param transferredPhases /* TYPE WARNING: array array defaults to */ uint8_t * +// @param transferredPhasesLen uint16_t +#define emberAfFillCommandPowerProfileClusterPowerProfileResponse( \ + totalProfileNum, powerProfileId, numOfTransferredPhases, transferredPhases, transferredPhasesLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_POWER_PROFILE_CLUSTER_ID, \ + ZCL_POWER_PROFILE_RESPONSE_COMMAND_ID, \ + "uuub", \ + totalProfileNum, powerProfileId, numOfTransferredPhases, transferredPhases, transferredPhasesLen); + + + +/** @brief The GetPowerProfilePriceResponse command allows a device (client) to communicate the cost associated to the selected Power Profile to another device (server) requesting it. +* Cluster: Power Profile, This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side). +* Command: GetPowerProfilePriceResponse*/ +// @param powerProfileId uint8_t + +// @param currency uint16_t + +// @param price uint32_t + +// @param priceTrailingDigit uint8_t + +#define emberAfFillCommandPowerProfileClusterGetPowerProfilePriceResponse( \ + powerProfileId, currency, price, priceTrailingDigit) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_POWER_PROFILE_CLUSTER_ID, \ + ZCL_GET_POWER_PROFILE_PRICE_RESPONSE_COMMAND_ID, \ + "uvwu", \ + powerProfileId, currency, price, priceTrailingDigit); + + + +/** @brief The PowerProfileStateResponse command allows a device (server) to communicate its current Power Profile(s) to another device (client) that previously requested them. +* Cluster: Power Profile, This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side). +* Command: PowerProfileStateResponse*/ +// @param powerProfileCount uint8_t + +// @param powerProfileRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param powerProfileRecordsLen uint16_t +#define emberAfFillCommandPowerProfileClusterPowerProfileStateResponse( \ + powerProfileCount, powerProfileRecords, powerProfileRecordsLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_POWER_PROFILE_CLUSTER_ID, \ + ZCL_POWER_PROFILE_STATE_RESPONSE_COMMAND_ID, \ + "ub", \ + powerProfileCount, powerProfileRecords, powerProfileRecordsLen); + + + +/** @brief The GetOverallSchedulePriceResponse command allows a device (client) to communicate the overall cost associated to all Power Profiles scheduled to another device (server) requesting it. +* Cluster: Power Profile, This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side). +* Command: GetOverallSchedulePriceResponse*/ +// @param currency uint16_t + +// @param price uint32_t + +// @param priceTrailingDigit uint8_t + +#define emberAfFillCommandPowerProfileClusterGetOverallSchedulePriceResponse( \ + currency, price, priceTrailingDigit) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_POWER_PROFILE_CLUSTER_ID, \ + ZCL_GET_OVERALL_SCHEDULE_PRICE_RESPONSE_COMMAND_ID, \ + "vwu", \ + currency, price, priceTrailingDigit); + + + +/** @brief The GetPowerProfilePrice Command is generated by the server (e.g. White goods) in order to retrieve the cost associated to a specific Power profile. +* Cluster: Power Profile, This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side). +* Command: GetPowerProfilePrice*/ +// @param powerProfileId uint8_t + +#define emberAfFillCommandPowerProfileClusterGetPowerProfilePrice( \ + powerProfileId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_POWER_PROFILE_CLUSTER_ID, \ + ZCL_GET_POWER_PROFILE_PRICE_COMMAND_ID, \ + "u", \ + powerProfileId); + + + +/** @brief The EnergyPhasesScheduleNotification Command is generated by a device supporting the client side of the Power Profile cluster in order to schedule the start of the selected Power Profile and its phases. +* Cluster: Power Profile, This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side). +* Command: EnergyPhasesScheduleNotification*/ +// @param powerProfileId uint8_t + +// @param numOfScheduledPhases uint8_t + +// @param scheduledPhases /* TYPE WARNING: array array defaults to */ uint8_t * +// @param scheduledPhasesLen uint16_t +#define emberAfFillCommandPowerProfileClusterEnergyPhasesScheduleNotification( \ + powerProfileId, numOfScheduledPhases, scheduledPhases, scheduledPhasesLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_POWER_PROFILE_CLUSTER_ID, \ + ZCL_ENERGY_PHASES_SCHEDULE_NOTIFICATION_COMMAND_ID, \ + "uub", \ + powerProfileId, numOfScheduledPhases, scheduledPhases, scheduledPhasesLen); + + + +/** @brief The PowerProfileStateNotification Command is generated by the server (e.g. White goods) in order to update the state of the power profile and the current energy phase. +* Cluster: Power Profile, This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side). +* Command: PowerProfilesStateNotification*/ +// @param powerProfileCount uint8_t + +// @param powerProfileRecords /* TYPE WARNING: array array defaults to */ uint8_t * +// @param powerProfileRecordsLen uint16_t +#define emberAfFillCommandPowerProfileClusterPowerProfilesStateNotification( \ + powerProfileCount, powerProfileRecords, powerProfileRecordsLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_POWER_PROFILE_CLUSTER_ID, \ + ZCL_POWER_PROFILES_STATE_NOTIFICATION_COMMAND_ID, \ + "ub", \ + powerProfileCount, powerProfileRecords, powerProfileRecordsLen); + + + +/** @brief This command is generated by the client side of Power Profile cluster as a reply to the EnergyPhasesScheduleRequest command. +* Cluster: Power Profile, This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side). +* Command: EnergyPhasesScheduleResponse*/ +// @param powerProfileId uint8_t + +// @param numOfScheduledPhases uint8_t + +// @param scheduledPhases /* TYPE WARNING: array array defaults to */ uint8_t * +// @param scheduledPhasesLen uint16_t +#define emberAfFillCommandPowerProfileClusterEnergyPhasesScheduleResponse( \ + powerProfileId, numOfScheduledPhases, scheduledPhases, scheduledPhasesLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_POWER_PROFILE_CLUSTER_ID, \ + ZCL_ENERGY_PHASES_SCHEDULE_RESPONSE_COMMAND_ID, \ + "uub", \ + powerProfileId, numOfScheduledPhases, scheduledPhases, scheduledPhasesLen); + + + +/** @brief The GetOverallSchedulePrice Command is generated by the server (e.g. White goods) in order to retrieve the overall cost associated to all the Power Profiles scheduled by the scheduler (the device supporting the Power Profile cluster client side) for the next 24 hours. +* Cluster: Power Profile, This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side). +* Command: GetOverallSchedulePrice*/ +#define emberAfFillCommandPowerProfileClusterGetOverallSchedulePrice( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_POWER_PROFILE_CLUSTER_ID, \ + ZCL_GET_OVERALL_SCHEDULE_PRICE_COMMAND_ID, \ + "" \ +); + + + +/** @brief The PowerProfileScheduleConstraintsRequest Command is generated by a device supporting the client side of the Power Profile cluster in order to request the constraints -if set- of Power Profile of a client device, in order to set the proper boundaries for the scheduling when calculating the schedules. +* Cluster: Power Profile, This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side). +* Command: PowerProfileScheduleConstraintsRequest*/ +// @param powerProfileId uint8_t + +#define emberAfFillCommandPowerProfileClusterPowerProfileScheduleConstraintsRequest( \ + powerProfileId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_POWER_PROFILE_CLUSTER_ID, \ + ZCL_POWER_PROFILE_SCHEDULE_CONSTRAINTS_REQUEST_COMMAND_ID, \ + "u", \ + powerProfileId); + + + +/** @brief The EnergyPhasesScheduleRequest Command is generated by the server (e.g. White goods) in order to retrieve from the scheduler (e.g. Home Gateway) the schedule (if available) associated to the specific Power Profile carried in the payload. +* Cluster: Power Profile, This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side). +* Command: EnergyPhasesScheduleRequest*/ +// @param powerProfileId uint8_t + +#define emberAfFillCommandPowerProfileClusterEnergyPhasesScheduleRequest( \ + powerProfileId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_POWER_PROFILE_CLUSTER_ID, \ + ZCL_ENERGY_PHASES_SCHEDULE_REQUEST_COMMAND_ID, \ + "u", \ + powerProfileId); + + + +/** @brief The EnergyPhasesScheduleStateRequest Command is generated by a device supporting the client side of the Power Profile cluster to check the states of the scheduling of a power profile, which is supported in the device implementing the server side of Power Profile cluster. +* Cluster: Power Profile, This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side). +* Command: EnergyPhasesScheduleStateRequest*/ +// @param powerProfileId uint8_t + +#define emberAfFillCommandPowerProfileClusterEnergyPhasesScheduleStateRequest( \ + powerProfileId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_POWER_PROFILE_CLUSTER_ID, \ + ZCL_ENERGY_PHASES_SCHEDULE_STATE_REQUEST_COMMAND_ID, \ + "u", \ + powerProfileId); + + + +/** @brief The EnergyPhasesScheduleStateResponse Command is generated by the server (e.g. White goods) in order to reply to a EnergyPhasesScheduleStateRequest command about the scheduling states that are set in the server side. +* Cluster: Power Profile, This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side). +* Command: EnergyPhasesScheduleStateResponse*/ +// @param powerProfileId uint8_t + +// @param numOfScheduledPhases uint8_t + +// @param scheduledPhases /* TYPE WARNING: array array defaults to */ uint8_t * +// @param scheduledPhasesLen uint16_t +#define emberAfFillCommandPowerProfileClusterEnergyPhasesScheduleStateResponse( \ + powerProfileId, numOfScheduledPhases, scheduledPhases, scheduledPhasesLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_POWER_PROFILE_CLUSTER_ID, \ + ZCL_ENERGY_PHASES_SCHEDULE_STATE_RESPONSE_COMMAND_ID, \ + "uub", \ + powerProfileId, numOfScheduledPhases, scheduledPhases, scheduledPhasesLen); + + + +/** @brief The Get Power Profile Price Extended Response command allows a device (client) to communicate the cost associated to all Power Profiles scheduled to another device (server) requesting it according to the specific options contained in the Get Power Profile Price Extended Response. +* Cluster: Power Profile, This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side). +* Command: GetPowerProfilePriceExtendedResponse*/ +// @param powerProfileId uint8_t + +// @param currency uint16_t + +// @param price uint32_t + +// @param priceTrailingDigit uint8_t + +#define emberAfFillCommandPowerProfileClusterGetPowerProfilePriceExtendedResponse( \ + powerProfileId, currency, price, priceTrailingDigit) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_POWER_PROFILE_CLUSTER_ID, \ + ZCL_GET_POWER_PROFILE_PRICE_EXTENDED_RESPONSE_COMMAND_ID, \ + "uvwu", \ + powerProfileId, currency, price, priceTrailingDigit); + + + +/** @brief The EnergyPhasesScheduleStateNotification Command is generated by the server (e.g. White goods) in order to notify (un-solicited command) a client side about the scheduling states that are set in the server side. +* Cluster: Power Profile, This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side). +* Command: EnergyPhasesScheduleStateNotification*/ +// @param powerProfileId uint8_t + +// @param numOfScheduledPhases uint8_t + +// @param scheduledPhases /* TYPE WARNING: array array defaults to */ uint8_t * +// @param scheduledPhasesLen uint16_t +#define emberAfFillCommandPowerProfileClusterEnergyPhasesScheduleStateNotification( \ + powerProfileId, numOfScheduledPhases, scheduledPhases, scheduledPhasesLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_POWER_PROFILE_CLUSTER_ID, \ + ZCL_ENERGY_PHASES_SCHEDULE_STATE_NOTIFICATION_COMMAND_ID, \ + "uub", \ + powerProfileId, numOfScheduledPhases, scheduledPhases, scheduledPhasesLen); + + + +/** @brief The PowerProfileScheduleConstraintsNotification Command is generated by a device supporting the server side of the Power Profile cluster to notify the client side of this cluster about the imposed constraints and let the scheduler (i.e. the entity supporting the Power Profile cluster client side) to set the proper boundaries for the scheduling. +* Cluster: Power Profile, This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side). +* Command: PowerProfileScheduleConstraintsNotification*/ +// @param powerProfileId uint8_t + +// @param startAfter uint16_t + +// @param stopBefore uint16_t + +#define emberAfFillCommandPowerProfileClusterPowerProfileScheduleConstraintsNotification( \ + powerProfileId, startAfter, stopBefore) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_POWER_PROFILE_CLUSTER_ID, \ + ZCL_POWER_PROFILE_SCHEDULE_CONSTRAINTS_NOTIFICATION_COMMAND_ID, \ + "uvv", \ + powerProfileId, startAfter, stopBefore); + + + +/** @brief The PowerProfileScheduleConstraintsResponse Command is generated by a device supporting the server side of the Power Profile cluster to reply to a client side of this cluster which sent a PowerProfileScheduleConstraintsRequest. +* Cluster: Power Profile, This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side). +* Command: PowerProfileScheduleConstraintsResponse*/ +// @param powerProfileId uint8_t + +// @param startAfter uint16_t + +// @param stopBefore uint16_t + +#define emberAfFillCommandPowerProfileClusterPowerProfileScheduleConstraintsResponse( \ + powerProfileId, startAfter, stopBefore) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_POWER_PROFILE_CLUSTER_ID, \ + ZCL_POWER_PROFILE_SCHEDULE_CONSTRAINTS_RESPONSE_COMMAND_ID, \ + "uvv", \ + powerProfileId, startAfter, stopBefore); + + + +/** @brief The Get Power Profile Price Extended command is generated by the server (e.g., White Goods) in order to retrieve the cost associated to a specific Power profile considering specific conditions described in the option field (e.g., a specific time). +* Cluster: Power Profile, This cluster provides an interface for transferring power profile information from a device (e.g. Whitegood) to a controller (e.g. the Home Gateway). The Power Profile transferred can be solicited by client side (request command) or can be notified directly from the device (server side). +* Command: GetPowerProfilePriceExtended*/ +// @param options uint8_t + +// @param powerProfileId uint8_t + +// @param powerProfileStartTime uint16_t + +#define emberAfFillCommandPowerProfileClusterGetPowerProfilePriceExtended( \ + options, powerProfileId, powerProfileStartTime) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_POWER_PROFILE_CLUSTER_ID, \ + ZCL_GET_POWER_PROFILE_PRICE_EXTENDED_COMMAND_ID, \ + "uuv", \ + options, powerProfileId, powerProfileStartTime); + + + +/** @brief This basic message is used to remotely control and to program household appliances. +* Cluster: Appliance Control, This cluster provides an interface to remotely control and to program household appliances. +* Command: ExecutionOfACommand*/ +// @param commandId uint8_t + +#define emberAfFillCommandApplianceControlClusterExecutionOfACommand( \ + commandId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_APPLIANCE_CONTROL_CLUSTER_ID, \ + ZCL_EXECUTION_OF_A_COMMAND_COMMAND_ID, \ + "u", \ + commandId); + + + +/** @brief This command shall be used to return household appliance status, according to Appliance Status Values and Remote Enable Flags Values. +* Cluster: Appliance Control, This cluster provides an interface to remotely control and to program household appliances. +* Command: SignalStateResponse*/ +// @param applianceStatus uint8_t + +// @param remoteEnableFlagsAndDeviceStatus2 uint8_t + +// @param applianceStatus2 uint32_t + +#define emberAfFillCommandApplianceControlClusterSignalStateResponse( \ + applianceStatus, remoteEnableFlagsAndDeviceStatus2, applianceStatus2) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_APPLIANCE_CONTROL_CLUSTER_ID, \ + ZCL_SIGNAL_STATE_RESPONSE_COMMAND_ID, \ + "uux", \ + applianceStatus, remoteEnableFlagsAndDeviceStatus2, applianceStatus2); + + + +/** @brief This basic message is used to retrieve Household Appliances status. +* Cluster: Appliance Control, This cluster provides an interface to remotely control and to program household appliances. +* Command: SignalState*/ +#define emberAfFillCommandApplianceControlClusterSignalState( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_APPLIANCE_CONTROL_CLUSTER_ID, \ + ZCL_SIGNAL_STATE_COMMAND_ID, \ + "" \ +); + + + +/** @brief This command shall be used to return household appliance status, automatically when appliance status changes. +* Cluster: Appliance Control, This cluster provides an interface to remotely control and to program household appliances. +* Command: SignalStateNotification*/ +// @param applianceStatus uint8_t + +// @param remoteEnableFlagsAndDeviceStatus2 uint8_t + +// @param applianceStatus2 uint32_t + +#define emberAfFillCommandApplianceControlClusterSignalStateNotification( \ + applianceStatus, remoteEnableFlagsAndDeviceStatus2, applianceStatus2) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_APPLIANCE_CONTROL_CLUSTER_ID, \ + ZCL_SIGNAL_STATE_NOTIFICATION_COMMAND_ID, \ + "uux", \ + applianceStatus, remoteEnableFlagsAndDeviceStatus2, applianceStatus2); + + + +/** @brief This basic message is used to set appliance functions, i.e. information regarding the execution of an appliance cycle. Condition parameters such as start time or finish time information could be provided through this command. +* Cluster: Appliance Control, This cluster provides an interface to remotely control and to program household appliances. +* Command: WriteFunctions*/ +// @param functionId uint16_t + +// @param functionDataType uint8_t + +// @param functionData /* TYPE WARNING: array array defaults to */ uint8_t * +// @param functionDataLen uint16_t +#define emberAfFillCommandApplianceControlClusterWriteFunctions( \ + functionId, functionDataType, functionData, functionDataLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_APPLIANCE_CONTROL_CLUSTER_ID, \ + ZCL_WRITE_FUNCTIONS_COMMAND_ID, \ + "vub", \ + functionId, functionDataType, functionData, functionDataLen); + + + +/** @brief This command shall be used to resume the normal behavior of a household appliance being in pause mode after receiving a Overload Pause command. +* Cluster: Appliance Control, This cluster provides an interface to remotely control and to program household appliances. +* Command: OverloadPauseResume*/ +#define emberAfFillCommandApplianceControlClusterOverloadPauseResume( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_APPLIANCE_CONTROL_CLUSTER_ID, \ + ZCL_OVERLOAD_PAUSE_RESUME_COMMAND_ID, \ + "" \ +); + + + +/** @brief This command shall be used to pause the household appliance as a consequence of an imminent overload event. +* Cluster: Appliance Control, This cluster provides an interface to remotely control and to program household appliances. +* Command: OverloadPause*/ +#define emberAfFillCommandApplianceControlClusterOverloadPause( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_APPLIANCE_CONTROL_CLUSTER_ID, \ + ZCL_OVERLOAD_PAUSE_COMMAND_ID, \ + "" \ +); + + + +/** @brief This basic message is used to send warnings the household appliance as a consequence of a possible overload event, or the notification of the end of the warning state. +* Cluster: Appliance Control, This cluster provides an interface to remotely control and to program household appliances. +* Command: OverloadWarning*/ +// @param warningEvent uint8_t + +#define emberAfFillCommandApplianceControlClusterOverloadWarning( \ + warningEvent) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_APPLIANCE_CONTROL_CLUSTER_ID, \ + ZCL_OVERLOAD_WARNING_COMMAND_ID, \ + "u", \ + warningEvent); + + + +/** @brief The Poll Control Cluster server sends out a Check-in command to the devices to which it is paired based on the server's Check-in Interval attribute. +* Cluster: Poll Control, This cluster provides a mechanism for the management of an end device's MAC Data Poll rate. For the purposes of this cluster, the term "poll" always refers to the sending of a MAC Data Poll from the end device to the end device's parent. +* Command: CheckIn*/ +#define emberAfFillCommandPollControlClusterCheckIn( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_POLL_CONTROL_CLUSTER_ID, \ + ZCL_CHECK_IN_COMMAND_ID, \ + "" \ +); + + + +/** @brief The Check-in Response is sent in response to the receipt of a Check-in command. +* Cluster: Poll Control, This cluster provides a mechanism for the management of an end device's MAC Data Poll rate. For the purposes of this cluster, the term "poll" always refers to the sending of a MAC Data Poll from the end device to the end device's parent. +* Command: CheckInResponse*/ +// @param startFastPolling uint8_t + +// @param fastPollTimeout uint16_t + +#define emberAfFillCommandPollControlClusterCheckInResponse( \ + startFastPolling, fastPollTimeout) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_POLL_CONTROL_CLUSTER_ID, \ + ZCL_CHECK_IN_RESPONSE_COMMAND_ID, \ + "uv", \ + startFastPolling, fastPollTimeout); + + + +/** @brief The Fast Poll Stop command is used to stop the fast poll mode initiated by the Check-in response. +* Cluster: Poll Control, This cluster provides a mechanism for the management of an end device's MAC Data Poll rate. For the purposes of this cluster, the term "poll" always refers to the sending of a MAC Data Poll from the end device to the end device's parent. +* Command: FastPollStop*/ +#define emberAfFillCommandPollControlClusterFastPollStop( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_POLL_CONTROL_CLUSTER_ID, \ + ZCL_FAST_POLL_STOP_COMMAND_ID, \ + "" \ +); + + + +/** @brief The Set Long Poll Interval command is used to set the read only Long Poll Interval Attribute. +* Cluster: Poll Control, This cluster provides a mechanism for the management of an end device's MAC Data Poll rate. For the purposes of this cluster, the term "poll" always refers to the sending of a MAC Data Poll from the end device to the end device's parent. +* Command: SetLongPollInterval*/ +// @param newLongPollInterval uint32_t + +#define emberAfFillCommandPollControlClusterSetLongPollInterval( \ + newLongPollInterval) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_POLL_CONTROL_CLUSTER_ID, \ + ZCL_SET_LONG_POLL_INTERVAL_COMMAND_ID, \ + "w", \ + newLongPollInterval); + + + +/** @brief The Set Short Poll Interval command is used to set the read only Short Poll Interval Attribute. +* Cluster: Poll Control, This cluster provides a mechanism for the management of an end device's MAC Data Poll rate. For the purposes of this cluster, the term "poll" always refers to the sending of a MAC Data Poll from the end device to the end device's parent. +* Command: SetShortPollInterval*/ +// @param newShortPollInterval uint16_t + +#define emberAfFillCommandPollControlClusterSetShortPollInterval( \ + newShortPollInterval) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_POLL_CONTROL_CLUSTER_ID, \ + ZCL_SET_SHORT_POLL_INTERVAL_COMMAND_ID, \ + "v", \ + newShortPollInterval); + + + +/** @brief From GPP to GPS to tunnel GP frame. +* Cluster: Green Power, The Green Power cluster defines the format of the commands exchanged when handling GPDs. +* Command: GpNotification*/ +// @param options uint16_t + +// @param gpdSrcId uint32_t + +// @param gpdIeee uint8_t * + +// @param gpdEndpoint uint8_t + +// @param gpdSecurityFrameCounter uint32_t + +// @param gpdCommandId uint8_t + +// @param gpdCommandPayload uint8_t * + +// @param gppShortAddress uint16_t + +// @param gppDistance uint8_t + +#define emberAfFillCommandGreenPowerClusterGpNotification( \ + options, gpdSrcId, gpdIeee, gpdEndpoint, gpdSecurityFrameCounter, gpdCommandId, gpdCommandPayload, gppShortAddress, gppDistance) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GREEN_POWER_CLUSTER_ID, \ + ZCL_GP_NOTIFICATION_COMMAND_ID, \ + "vw8uwusvu", \ + options, gpdSrcId, gpdIeee, gpdEndpoint, gpdSecurityFrameCounter, gpdCommandId, gpdCommandPayload, gppShortAddress, gppDistance); + + + +/** @brief From GPS to GPP to acknowledge GP Notification received in unicast mode. +* Cluster: Green Power, The Green Power cluster defines the format of the commands exchanged when handling GPDs. +* Command: GpNotificationResponse*/ +// @param options uint8_t + +// @param gpdSrcId uint32_t + +// @param gpdIeee uint8_t * + +// @param endpoint uint8_t + +// @param gpdSecurityFrameCounter uint32_t + +#define emberAfFillCommandGreenPowerClusterGpNotificationResponse( \ + options, gpdSrcId, gpdIeee, endpoint, gpdSecurityFrameCounter) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_GREEN_POWER_CLUSTER_ID, \ + ZCL_GP_NOTIFICATION_RESPONSE_COMMAND_ID, \ + "uw8uw", \ + options, gpdSrcId, gpdIeee, endpoint, gpdSecurityFrameCounter); + + + +/** @brief From GPP to GPSs in entire network to get pairing indication related to GPD for Proxy Table update. +* Cluster: Green Power, The Green Power cluster defines the format of the commands exchanged when handling GPDs. +* Command: GpPairingSearch*/ +// @param options uint16_t + +// @param gpdSrcId uint32_t + +// @param gpdIeee uint8_t * + +// @param endpoint uint8_t + +#define emberAfFillCommandGreenPowerClusterGpPairingSearch( \ + options, gpdSrcId, gpdIeee, endpoint) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GREEN_POWER_CLUSTER_ID, \ + ZCL_GP_PAIRING_SEARCH_COMMAND_ID, \ + "vw8u", \ + options, gpdSrcId, gpdIeee, endpoint); + + + +/** @brief From GPS to the entire network to (de)register for tunneling service, or for removing GPD from the network. +* Cluster: Green Power, The Green Power cluster defines the format of the commands exchanged when handling GPDs. +* Command: GpPairing*/ +// @param options uint32_t + +// @param gpdSrcId uint32_t + +// @param gpdIeee uint8_t * + +// @param endpoint uint8_t + +// @param sinkIeeeAddress uint8_t * + +// @param sinkNwkAddress uint16_t + +// @param sinkGroupId uint16_t + +// @param deviceId uint8_t + +// @param gpdSecurityFrameCounter uint32_t + +// @param gpdKey /* TYPE WARNING: security_key defaults to */ uint8_t * + +// @param assignedAlias uint16_t + +// @param groupcastRadius uint8_t + +#define emberAfFillCommandGreenPowerClusterGpPairing( \ + options, gpdSrcId, gpdIeee, endpoint, sinkIeeeAddress, sinkNwkAddress, sinkGroupId, deviceId, gpdSecurityFrameCounter, gpdKey, assignedAlias, groupcastRadius) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_GREEN_POWER_CLUSTER_ID, \ + ZCL_GP_PAIRING_COMMAND_ID, \ + "xw8u8vvuwGvu", \ + options, gpdSrcId, gpdIeee, endpoint, sinkIeeeAddress, sinkNwkAddress, sinkGroupId, deviceId, gpdSecurityFrameCounter, gpdKey, assignedAlias, groupcastRadius); + + + +/** @brief From GPS to GPPs in the whole network to indicate commissioning mode. +* Cluster: Green Power, The Green Power cluster defines the format of the commands exchanged when handling GPDs. +* Command: GpProxyCommissioningMode*/ +// @param options uint8_t + +// @param commissioningWindow uint16_t + +// @param channel uint8_t + +#define emberAfFillCommandGreenPowerClusterGpProxyCommissioningMode( \ + options, commissioningWindow, channel) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_GREEN_POWER_CLUSTER_ID, \ + ZCL_GP_PROXY_COMMISSIONING_MODE_COMMAND_ID, \ + "uvu", \ + options, commissioningWindow, channel); + + + +/** @brief From GPP to neighbor GPPs to indicate GP Notification sent in unicast mode. +* Cluster: Green Power, The Green Power cluster defines the format of the commands exchanged when handling GPDs. +* Command: GpTunnelingStop*/ +// @param options uint8_t + +// @param gpdSrcId uint32_t + +// @param gpdIeee uint8_t * + +// @param endpoint uint8_t + +// @param gpdSecurityFrameCounter uint32_t + +// @param gppShortAddress uint16_t + +// @param gppDistance int8_t + +#define emberAfFillCommandGreenPowerClusterGpTunnelingStop( \ + options, gpdSrcId, gpdIeee, endpoint, gpdSecurityFrameCounter, gppShortAddress, gppDistance) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GREEN_POWER_CLUSTER_ID, \ + ZCL_GP_TUNNELING_STOP_COMMAND_ID, \ + "uw8uwvu", \ + options, gpdSrcId, gpdIeee, endpoint, gpdSecurityFrameCounter, gppShortAddress, gppDistance); + + + +/** @brief From GPP to GPS to tunnel GPD commissioning data. +* Cluster: Green Power, The Green Power cluster defines the format of the commands exchanged when handling GPDs. +* Command: GpCommissioningNotification*/ +// @param options uint16_t + +// @param gpdSrcId uint32_t + +// @param gpdIeee uint8_t * + +// @param endpoint uint8_t + +// @param gpdSecurityFrameCounter uint32_t + +// @param gpdCommandId uint8_t + +// @param gpdCommandPayload uint8_t * + +// @param gppShortAddress uint16_t + +// @param gppLink uint8_t + +// @param mic uint32_t + +#define emberAfFillCommandGreenPowerClusterGpCommissioningNotification( \ + options, gpdSrcId, gpdIeee, endpoint, gpdSecurityFrameCounter, gpdCommandId, gpdCommandPayload, gppShortAddress, gppLink, mic) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GREEN_POWER_CLUSTER_ID, \ + ZCL_GP_COMMISSIONING_NOTIFICATION_COMMAND_ID, \ + "vw8uwusvuw", \ + options, gpdSrcId, gpdIeee, endpoint, gpdSecurityFrameCounter, gpdCommandId, gpdCommandPayload, gppShortAddress, gppLink, mic); + + + +/** @brief To enable commissioning mode of the sink, over the air +* Cluster: Green Power, The Green Power cluster defines the format of the commands exchanged when handling GPDs. +* Command: GpSinkCommissioningMode*/ +// @param options uint8_t + +// @param gpmAddrForSecurity uint16_t + +// @param gpmAddrForPairing uint16_t + +// @param sinkEndpoint uint8_t + +#define emberAfFillCommandGreenPowerClusterGpSinkCommissioningMode( \ + options, gpmAddrForSecurity, gpmAddrForPairing, sinkEndpoint) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GREEN_POWER_CLUSTER_ID, \ + ZCL_GP_SINK_COMMISSIONING_MODE_COMMAND_ID, \ + "uvvu", \ + options, gpmAddrForSecurity, gpmAddrForPairing, sinkEndpoint); + + + +/** @brief From GPS to selected GPP, to provide data to be transmitted to Rx-capable GPD. +* Cluster: Green Power, The Green Power cluster defines the format of the commands exchanged when handling GPDs. +* Command: GpResponse*/ +// @param options uint8_t + +// @param tempMasterShortAddress uint16_t + +// @param tempMasterTxChannel uint8_t + +// @param gpdSrcId uint32_t + +// @param gpdIeee uint8_t * + +// @param endpoint uint8_t + +// @param gpdCommandId uint8_t + +// @param gpdCommandPayload uint8_t * + +#define emberAfFillCommandGreenPowerClusterGpResponse( \ + options, tempMasterShortAddress, tempMasterTxChannel, gpdSrcId, gpdIeee, endpoint, gpdCommandId, gpdCommandPayload) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_GREEN_POWER_CLUSTER_ID, \ + ZCL_GP_RESPONSE_COMMAND_ID, \ + "uvuw8uus", \ + options, tempMasterShortAddress, tempMasterTxChannel, gpdSrcId, gpdIeee, endpoint, gpdCommandId, gpdCommandPayload); + + + +/** @brief To configure GPD Command Translation Table. +* Cluster: Green Power, The Green Power cluster defines the format of the commands exchanged when handling GPDs. +* Command: GpTranslationTableUpdate*/ +// @param options uint16_t + +// @param gpdSrcId uint32_t + +// @param gpdIeee uint8_t * + +// @param endpoint uint8_t + +// @param translations /* TYPE WARNING: array array defaults to */ uint8_t * +// @param translationsLen uint16_t +#define emberAfFillCommandGreenPowerClusterGpTranslationTableUpdate( \ + options, gpdSrcId, gpdIeee, endpoint, translations, translationsLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GREEN_POWER_CLUSTER_ID, \ + ZCL_GP_TRANSLATION_TABLE_UPDATE_COMMAND_ID, \ + "vw8ub", \ + options, gpdSrcId, gpdIeee, endpoint, translations, translationsLen); + + + +/** @brief To provide GPD Command Translation Table content. +* Cluster: Green Power, The Green Power cluster defines the format of the commands exchanged when handling GPDs. +* Command: GpTranslationTableRequest*/ +// @param startIndex uint8_t + +#define emberAfFillCommandGreenPowerClusterGpTranslationTableRequest( \ + startIndex) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GREEN_POWER_CLUSTER_ID, \ + ZCL_GP_TRANSLATION_TABLE_REQUEST_COMMAND_ID, \ + "u", \ + startIndex); + + + +/** @brief To provide GPD Command Translation Table content. +* Cluster: Green Power, The Green Power cluster defines the format of the commands exchanged when handling GPDs. +* Command: GpTranslationTableResponse*/ +// @param status uint8_t + +// @param options uint8_t + +// @param totalNumberOfEntries uint8_t + +// @param startIndex uint8_t + +// @param entriesCount uint8_t + +// @param translationTableList /* TYPE WARNING: array array defaults to */ uint8_t * +// @param translationTableListLen uint16_t +#define emberAfFillCommandGreenPowerClusterGpTranslationTableResponse( \ + status, options, totalNumberOfEntries, startIndex, entriesCount, translationTableList, translationTableListLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_GREEN_POWER_CLUSTER_ID, \ + ZCL_GP_TRANSLATION_TABLE_RESPONSE_COMMAND_ID, \ + "uuuuub", \ + status, options, totalNumberOfEntries, startIndex, entriesCount, translationTableList, translationTableListLen); + + + +/** @brief To configure Sink Table. +* Cluster: Green Power, The Green Power cluster defines the format of the commands exchanged when handling GPDs. +* Command: GpPairingConfiguration*/ +// @param actions uint8_t + +// @param options uint16_t + +// @param gpdSrcId uint32_t + +// @param gpdIeee uint8_t * + +// @param endpoint uint8_t + +// @param deviceId uint8_t + +// @param groupListCount uint8_t + +// @param groupList /* TYPE WARNING: array array defaults to */ uint8_t * +// @param groupListLen uint16_t +// @param gpdAssignedAlias uint16_t + +// @param groupcastRadius uint8_t + +// @param securityOptions uint8_t + +// @param gpdSecurityFrameCounter uint32_t + +// @param gpdSecurityKey /* TYPE WARNING: security_key defaults to */ uint8_t * + +// @param numberOfPairedEndpoints uint8_t + +// @param pairedEndpoints /* TYPE WARNING: array array defaults to */ uint8_t * +// @param pairedEndpointsLen uint16_t +// @param applicationInformation uint8_t + +// @param manufacturerId uint16_t + +// @param modeId uint16_t + +// @param numberOfGpdCommands uint8_t + +// @param gpdCommandIdList /* TYPE WARNING: array array defaults to */ uint8_t * +// @param gpdCommandIdListLen uint16_t +// @param clusterIdListCount uint8_t + +// @param clusterListServer /* TYPE WARNING: array array defaults to */ uint8_t * +// @param clusterListServerLen uint16_t +// @param clusterListClient /* TYPE WARNING: array array defaults to */ uint8_t * +// @param clusterListClientLen uint16_t +// @param switchInformationLength uint8_t + +// @param switchConfiguration uint8_t + +// @param currentContactStatus uint8_t + +// @param totalNumberOfReports uint8_t + +// @param numberOfReports uint8_t + +// @param reportDescriptor /* TYPE WARNING: array array defaults to */ uint8_t * +// @param reportDescriptorLen uint16_t +#define emberAfFillCommandGreenPowerClusterGpPairingConfiguration( \ + actions, options, gpdSrcId, gpdIeee, endpoint, deviceId, groupListCount, groupList, groupListLen, gpdAssignedAlias, groupcastRadius, securityOptions, gpdSecurityFrameCounter, gpdSecurityKey, numberOfPairedEndpoints, pairedEndpoints, pairedEndpointsLen, applicationInformation, manufacturerId, modeId, numberOfGpdCommands, gpdCommandIdList, gpdCommandIdListLen, clusterIdListCount, clusterListServer, clusterListServerLen, clusterListClient, clusterListClientLen, switchInformationLength, switchConfiguration, currentContactStatus, totalNumberOfReports, numberOfReports, reportDescriptor, reportDescriptorLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GREEN_POWER_CLUSTER_ID, \ + ZCL_GP_PAIRING_CONFIGURATION_COMMAND_ID, \ + "uvw8uuubvuuwGubuvvububbuuuuub", \ + actions, options, gpdSrcId, gpdIeee, endpoint, deviceId, groupListCount, groupList, groupListLen, gpdAssignedAlias, groupcastRadius, securityOptions, gpdSecurityFrameCounter, gpdSecurityKey, numberOfPairedEndpoints, pairedEndpoints, pairedEndpointsLen, applicationInformation, manufacturerId, modeId, numberOfGpdCommands, gpdCommandIdList, gpdCommandIdListLen, clusterIdListCount, clusterListServer, clusterListServerLen, clusterListClient, clusterListClientLen, switchInformationLength, switchConfiguration, currentContactStatus, totalNumberOfReports, numberOfReports, reportDescriptor, reportDescriptorLen); + + + +/** @brief To read out selected Sink Table Entries, by index or by GPD ID. +* Cluster: Green Power, The Green Power cluster defines the format of the commands exchanged when handling GPDs. +* Command: GpSinkTableRequest*/ +// @param options uint8_t + +// @param gpdSrcId uint32_t + +// @param gpdIeee uint8_t * + +// @param endpoint uint8_t + +// @param index uint8_t + +#define emberAfFillCommandGreenPowerClusterGpSinkTableRequest( \ + options, gpdSrcId, gpdIeee, endpoint, index) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GREEN_POWER_CLUSTER_ID, \ + ZCL_GP_SINK_TABLE_REQUEST_COMMAND_ID, \ + "uw8uu", \ + options, gpdSrcId, gpdIeee, endpoint, index); + + + +/** @brief To selected Proxy Table entries, by index or by GPD ID. +* Cluster: Green Power, The Green Power cluster defines the format of the commands exchanged when handling GPDs. +* Command: GpSinkTableResponse*/ +// @param status uint8_t + +// @param totalNumberofNonEmptySinkTableEntries uint8_t + +// @param startIndex uint8_t + +// @param sinkTableEntriesCount uint8_t + +// @param sinkTableEntries /* TYPE WARNING: array array defaults to */ uint8_t * +// @param sinkTableEntriesLen uint16_t +#define emberAfFillCommandGreenPowerClusterGpSinkTableResponse( \ + status, totalNumberofNonEmptySinkTableEntries, startIndex, sinkTableEntriesCount, sinkTableEntries, sinkTableEntriesLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_GREEN_POWER_CLUSTER_ID, \ + ZCL_GP_SINK_TABLE_RESPONSE_COMMAND_ID, \ + "uuuub", \ + status, totalNumberofNonEmptySinkTableEntries, startIndex, sinkTableEntriesCount, sinkTableEntries, sinkTableEntriesLen); + + + +/** @brief To reply with read-out Proxy Table entries, by index or by GPD ID. +* Cluster: Green Power, The Green Power cluster defines the format of the commands exchanged when handling GPDs. +* Command: GpProxyTableResponse*/ +// @param status uint8_t + +// @param totalNumberOfNonEmptyProxyTableEntries uint8_t + +// @param startIndex uint8_t + +// @param entriesCount uint8_t + +// @param proxyTableEntries /* TYPE WARNING: array array defaults to */ uint8_t * +// @param proxyTableEntriesLen uint16_t +#define emberAfFillCommandGreenPowerClusterGpProxyTableResponse( \ + status, totalNumberOfNonEmptyProxyTableEntries, startIndex, entriesCount, proxyTableEntries, proxyTableEntriesLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GREEN_POWER_CLUSTER_ID, \ + ZCL_GP_PROXY_TABLE_RESPONSE_COMMAND_ID, \ + "uuuub", \ + status, totalNumberOfNonEmptyProxyTableEntries, startIndex, entriesCount, proxyTableEntries, proxyTableEntriesLen); + + + +/** @brief To request selected Proxy Table entries, by index or by GPD ID. +* Cluster: Green Power, The Green Power cluster defines the format of the commands exchanged when handling GPDs. +* Command: GpProxyTableRequest*/ +// @param options uint8_t + +// @param gpdSrcId uint32_t + +// @param gpdIeee uint8_t * + +// @param endpoint uint8_t + +// @param index uint8_t + +#define emberAfFillCommandGreenPowerClusterGpProxyTableRequest( \ + options, gpdSrcId, gpdIeee, endpoint, index) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_GREEN_POWER_CLUSTER_ID, \ + ZCL_GP_PROXY_TABLE_REQUEST_COMMAND_ID, \ + "uw8uu", \ + options, gpdSrcId, gpdIeee, endpoint, index); + + + +/** @brief Locks the door +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: LockDoor*/ +// @param PIN uint8_t * + +#define emberAfFillCommandDoorLockClusterLockDoor( \ + PIN) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_LOCK_DOOR_COMMAND_ID, \ + "s", \ + PIN); + + + +/** @brief Indicates lock success or failure +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: LockDoorResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterLockDoorResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_LOCK_DOOR_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Unlocks the door +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: UnlockDoor*/ +// @param PIN uint8_t * + +#define emberAfFillCommandDoorLockClusterUnlockDoor( \ + PIN) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_UNLOCK_DOOR_COMMAND_ID, \ + "s", \ + PIN); + + + +/** @brief Indicates unlock success or failure +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: UnlockDoorResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterUnlockDoorResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_UNLOCK_DOOR_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Toggles the door lock from its current state to the opposite state locked or unlocked. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: Toggle*/ +// @param pin uint8_t * + +#define emberAfFillCommandDoorLockClusterToggle( \ + pin) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_TOGGLE_COMMAND_ID, \ + "s", \ + pin); + + + +/** @brief Response provided to the toggle command, indicates whether the toggle was successful or not. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ToggleResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterToggleResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_TOGGLE_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Unlock the door with a timeout. When the timeout expires, the door will automatically re-lock. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: UnlockWithTimeout*/ +// @param timeoutInSeconds uint16_t + +// @param pin uint8_t * + +#define emberAfFillCommandDoorLockClusterUnlockWithTimeout( \ + timeoutInSeconds, pin) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_UNLOCK_WITH_TIMEOUT_COMMAND_ID, \ + "vs", \ + timeoutInSeconds, pin); + + + +/** @brief Response provided to unlock with specific timeout. This command indicates whether the unlock command was successful or not. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: UnlockWithTimeoutResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterUnlockWithTimeoutResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_UNLOCK_WITH_TIMEOUT_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Retrieve a log record at a specified index. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: GetLogRecord*/ +// @param logIndex uint16_t + +#define emberAfFillCommandDoorLockClusterGetLogRecord( \ + logIndex) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_GET_LOG_RECORD_COMMAND_ID, \ + "v", \ + logIndex); + + + +/** @brief Returns the specific log record requested. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: GetLogRecordResponse*/ +// @param logEntryId uint16_t + +// @param timestamp uint32_t + +// @param eventType uint8_t + +// @param source uint8_t + +// @param eventIdOrAlarmCode uint8_t + +// @param userId uint16_t + +// @param pin uint8_t * + +#define emberAfFillCommandDoorLockClusterGetLogRecordResponse( \ + logEntryId, timestamp, eventType, source, eventIdOrAlarmCode, userId, pin) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_GET_LOG_RECORD_RESPONSE_COMMAND_ID, \ + "vwuuuvs", \ + logEntryId, timestamp, eventType, source, eventIdOrAlarmCode, userId, pin); + + + +/** @brief Set the PIN for a specified user id. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: SetPin*/ +// @param userId uint16_t + +// @param userStatus uint8_t + +// @param userType uint8_t + +// @param pin uint8_t * + +#define emberAfFillCommandDoorLockClusterSetPin( \ + userId, userStatus, userType, pin) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_SET_PIN_COMMAND_ID, \ + "vuus", \ + userId, userStatus, userType, pin); + + + +/** @brief Indicates whether the setting of the PIN was successful or not. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: SetPinResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterSetPinResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_SET_PIN_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Retrieve PIN information for a user with a specific user ID. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: GetPin*/ +// @param userId uint16_t + +#define emberAfFillCommandDoorLockClusterGetPin( \ + userId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_GET_PIN_COMMAND_ID, \ + "v", \ + userId); + + + +/** @brief Returns the PIN requested according to the user ID passed. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: GetPinResponse*/ +// @param userId uint16_t + +// @param userStatus uint8_t + +// @param userType uint8_t + +// @param pin uint8_t * + +#define emberAfFillCommandDoorLockClusterGetPinResponse( \ + userId, userStatus, userType, pin) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_GET_PIN_RESPONSE_COMMAND_ID, \ + "vuus", \ + userId, userStatus, userType, pin); + + + +/** @brief Clear the PIN for a user with a specific user ID +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ClearPin*/ +// @param userId uint16_t + +#define emberAfFillCommandDoorLockClusterClearPin( \ + userId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_CLEAR_PIN_COMMAND_ID, \ + "v", \ + userId); + + + +/** @brief Returns success or failure depending on whether the PIN was cleared or not. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ClearPinResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterClearPinResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_CLEAR_PIN_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Clear all PIN codes on the lock for all users. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ClearAllPins*/ +#define emberAfFillCommandDoorLockClusterClearAllPins( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_CLEAR_ALL_PINS_COMMAND_ID, \ + "" \ +); + + + +/** @brief Returns success or failure depending on whether the PINs were cleared or not. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ClearAllPinsResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterClearAllPinsResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_CLEAR_ALL_PINS_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Set the status value for a specified user ID. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: SetUserStatus*/ +// @param userId uint16_t + +// @param userStatus uint8_t + +#define emberAfFillCommandDoorLockClusterSetUserStatus( \ + userId, userStatus) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_SET_USER_STATUS_COMMAND_ID, \ + "vu", \ + userId, userStatus); + + + +/** @brief Returns success or failure depending on whether the user status was set or not. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: SetUserStatusResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterSetUserStatusResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_SET_USER_STATUS_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Retrieve the status byte for a specific user. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: GetUserStatus*/ +// @param userId uint16_t + +#define emberAfFillCommandDoorLockClusterGetUserStatus( \ + userId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_GET_USER_STATUS_COMMAND_ID, \ + "v", \ + userId); + + + +/** @brief Returns the user status. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: GetUserStatusResponse*/ +// @param userId uint16_t + +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterGetUserStatusResponse( \ + userId, status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_GET_USER_STATUS_RESPONSE_COMMAND_ID, \ + "vu", \ + userId, status); + + + +/** @brief Set the schedule of days during the week that the associated user based on the user ID will have access to the lock and will be able to operate it. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: SetWeekdaySchedule*/ +// @param scheduleId uint8_t + +// @param userId uint16_t + +// @param daysMask uint8_t + +// @param startHour uint8_t + +// @param startMinute uint8_t + +// @param endHour uint8_t + +// @param endMinute uint8_t + +#define emberAfFillCommandDoorLockClusterSetWeekdaySchedule( \ + scheduleId, userId, daysMask, startHour, startMinute, endHour, endMinute) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_SET_WEEKDAY_SCHEDULE_COMMAND_ID, \ + "uvuuuuu", \ + scheduleId, userId, daysMask, startHour, startMinute, endHour, endMinute); + + + +/** @brief Returns the status of setting the weekday schedule +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: SetWeekdayScheduleResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterSetWeekdayScheduleResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_SET_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Retrieve a weekday schedule for doorlock user activation for a specific schedule id and user id. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: GetWeekdaySchedule*/ +// @param scheduleId uint8_t + +// @param userId uint16_t + +#define emberAfFillCommandDoorLockClusterGetWeekdaySchedule( \ + scheduleId, userId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_GET_WEEKDAY_SCHEDULE_COMMAND_ID, \ + "uv", \ + scheduleId, userId); + + + +/** @brief Returns the weekday schedule requested. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: GetWeekdayScheduleResponse*/ +// @param scheduleId uint8_t + +// @param userId uint16_t + +// @param status uint8_t + +// @param daysMask uint8_t + +// @param startHour uint8_t + +// @param startMinute uint8_t + +// @param endHour uint8_t + +// @param endMinute uint8_t + +#define emberAfFillCommandDoorLockClusterGetWeekdayScheduleResponse( \ + scheduleId, userId, status, daysMask, startHour, startMinute, endHour, endMinute) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_GET_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID, \ + "uvuuuuuu", \ + scheduleId, userId, status, daysMask, startHour, startMinute, endHour, endMinute); + + + +/** @brief Clear a weekday schedule for doorlock user activation for a specific schedule id and user id. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ClearWeekdaySchedule*/ +// @param scheduleId uint8_t + +// @param userId uint16_t + +#define emberAfFillCommandDoorLockClusterClearWeekdaySchedule( \ + scheduleId, userId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_CLEAR_WEEKDAY_SCHEDULE_COMMAND_ID, \ + "uv", \ + scheduleId, userId); + + + +/** @brief Returns the status of clearing the weekday schedule +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ClearWeekdayScheduleResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterClearWeekdayScheduleResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_CLEAR_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Set a door lock user id activation schedule according to a specific absolute local start and end time +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: SetYeardaySchedule*/ +// @param scheduleId uint8_t + +// @param userId uint16_t + +// @param localStartTime uint32_t + +// @param localEndTime uint32_t + +#define emberAfFillCommandDoorLockClusterSetYeardaySchedule( \ + scheduleId, userId, localStartTime, localEndTime) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_SET_YEARDAY_SCHEDULE_COMMAND_ID, \ + "uvww", \ + scheduleId, userId, localStartTime, localEndTime); + + + +/** @brief Returns success or failure depending on whether the yearday schedule was set or not. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: SetYeardayScheduleResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterSetYeardayScheduleResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_SET_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Retrieve a yearday schedule for a specific scheduleId and userId +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: GetYeardaySchedule*/ +// @param scheduleId uint8_t + +// @param userId uint16_t + +#define emberAfFillCommandDoorLockClusterGetYeardaySchedule( \ + scheduleId, userId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_GET_YEARDAY_SCHEDULE_COMMAND_ID, \ + "uv", \ + scheduleId, userId); + + + +/** @brief Returns the yearday schedule requested +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: GetYeardayScheduleResponse*/ +// @param scheduleId uint8_t + +// @param userId uint16_t + +// @param status uint8_t + +// @param localStartTime uint32_t + +// @param localEndTime uint32_t + +#define emberAfFillCommandDoorLockClusterGetYeardayScheduleResponse( \ + scheduleId, userId, status, localStartTime, localEndTime) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_GET_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID, \ + "uvuww", \ + scheduleId, userId, status, localStartTime, localEndTime); + + + +/** @brief Clear a yearday schedule for a specific scheduleId and userId +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ClearYeardaySchedule*/ +// @param scheduleId uint8_t + +// @param userId uint16_t + +#define emberAfFillCommandDoorLockClusterClearYeardaySchedule( \ + scheduleId, userId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_CLEAR_YEARDAY_SCHEDULE_COMMAND_ID, \ + "uv", \ + scheduleId, userId); + + + +/** @brief Returns success or failure depending on whether the yearday schedule was removed or not. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ClearYeardayScheduleResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterClearYeardayScheduleResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_CLEAR_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Set the holiday schedule for a specific user +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: SetHolidaySchedule*/ +// @param scheduleId uint8_t + +// @param localStartTime uint32_t + +// @param localEndTime uint32_t + +// @param operatingModeDuringHoliday uint8_t + +#define emberAfFillCommandDoorLockClusterSetHolidaySchedule( \ + scheduleId, localStartTime, localEndTime, operatingModeDuringHoliday) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_SET_HOLIDAY_SCHEDULE_COMMAND_ID, \ + "uwwu", \ + scheduleId, localStartTime, localEndTime, operatingModeDuringHoliday); + + + +/** @brief Returns success or failure depending on whether the holiday schedule was set or not. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: SetHolidayScheduleResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterSetHolidayScheduleResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_SET_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Retrieve a holiday schedule for a specific scheduleId +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: GetHolidaySchedule*/ +// @param scheduleId uint8_t + +#define emberAfFillCommandDoorLockClusterGetHolidaySchedule( \ + scheduleId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_GET_HOLIDAY_SCHEDULE_COMMAND_ID, \ + "u", \ + scheduleId); + + + +/** @brief Returns the holiday schedule requested +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: GetHolidayScheduleResponse*/ +// @param scheduleId uint8_t + +// @param status uint8_t + +// @param localStartTime uint32_t + +// @param localEndTime uint32_t + +// @param operatingModeDuringHoliday uint8_t + +#define emberAfFillCommandDoorLockClusterGetHolidayScheduleResponse( \ + scheduleId, status, localStartTime, localEndTime, operatingModeDuringHoliday) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_GET_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID, \ + "uuwwu", \ + scheduleId, status, localStartTime, localEndTime, operatingModeDuringHoliday); + + + +/** @brief Clear a holiday schedule for a specific scheduleId +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ClearHolidaySchedule*/ +// @param scheduleId uint8_t + +#define emberAfFillCommandDoorLockClusterClearHolidaySchedule( \ + scheduleId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_CLEAR_HOLIDAY_SCHEDULE_COMMAND_ID, \ + "u", \ + scheduleId); + + + +/** @brief Returns success or failure depending on whether the holiday schedule was removed or not. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ClearHolidayScheduleResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterClearHolidayScheduleResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_CLEAR_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Set the type value for a user based on user ID. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: SetUserType*/ +// @param userId uint16_t + +// @param userType uint8_t + +#define emberAfFillCommandDoorLockClusterSetUserType( \ + userId, userType) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_SET_USER_TYPE_COMMAND_ID, \ + "vu", \ + userId, userType); + + + +/** @brief returns success or failure depending on whether the user type was set or not. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: SetUserTypeResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterSetUserTypeResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_SET_USER_TYPE_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Retrieve the type for a specific user based on the user ID. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: GetUserType*/ +// @param userId uint16_t + +#define emberAfFillCommandDoorLockClusterGetUserType( \ + userId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_GET_USER_TYPE_COMMAND_ID, \ + "v", \ + userId); + + + +/** @brief Returns the user type for the user ID requested. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: GetUserTypeResponse*/ +// @param userId uint16_t + +// @param userType uint8_t + +#define emberAfFillCommandDoorLockClusterGetUserTypeResponse( \ + userId, userType) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_GET_USER_TYPE_RESPONSE_COMMAND_ID, \ + "vu", \ + userId, userType); + + + +/** @brief Set the PIN for a specified user id. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: SetRfid*/ +// @param userId uint16_t + +// @param userStatus uint8_t + +// @param userType uint8_t + +// @param id uint8_t * + +#define emberAfFillCommandDoorLockClusterSetRfid( \ + userId, userStatus, userType, id) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_SET_RFID_COMMAND_ID, \ + "vuus", \ + userId, userStatus, userType, id); + + + +/** @brief Indicates whether the setting of the RFID ID was successful or not. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: SetRfidResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterSetRfidResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_SET_RFID_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Retrieve RFID ID information for a user with a specific user ID. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: GetRfid*/ +// @param userId uint16_t + +#define emberAfFillCommandDoorLockClusterGetRfid( \ + userId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_GET_RFID_COMMAND_ID, \ + "v", \ + userId); + + + +/** @brief Returns the RFID ID requested according to the user ID passed. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: GetRfidResponse*/ +// @param userId uint16_t + +// @param userStatus uint8_t + +// @param userType uint8_t + +// @param rfid uint8_t * + +#define emberAfFillCommandDoorLockClusterGetRfidResponse( \ + userId, userStatus, userType, rfid) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_GET_RFID_RESPONSE_COMMAND_ID, \ + "vuus", \ + userId, userStatus, userType, rfid); + + + +/** @brief Clear the RFID ID for a user with a specific user ID +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ClearRfid*/ +// @param userId uint16_t + +#define emberAfFillCommandDoorLockClusterClearRfid( \ + userId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_CLEAR_RFID_COMMAND_ID, \ + "v", \ + userId); + + + +/** @brief Returns success or failure depending on whether the RFID ID was cleared or not. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ClearRfidResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterClearRfidResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_CLEAR_RFID_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Clear all RFID ID codes on the lock for all users. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ClearAllRfids*/ +#define emberAfFillCommandDoorLockClusterClearAllRfids( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_CLEAR_ALL_RFIDS_COMMAND_ID, \ + "" \ +); + + + +/** @brief Returns success or failure depending on whether the RFID IDs were cleared or not. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ClearAllRfidsResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterClearAllRfidsResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_CLEAR_ALL_RFIDS_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Set the Disposable Schedule by specifying local start time and local end time for the specific user. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: SetDisposableSchedule*/ +// @param userId uint16_t + +// @param localStartTime uint32_t + +// @param localEndTime uint32_t + +#define emberAfFillCommandDoorLockClusterSetDisposableSchedule( \ + userId, localStartTime, localEndTime) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_SET_DISPOSABLE_SCHEDULE_COMMAND_ID, \ + "vww", \ + userId, localStartTime, localEndTime); + + + +/** @brief Returns pass/fail of the SetDisposableSchedule command +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: SetDisposableScheduleResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterSetDisposableScheduleResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_SET_DISPOSABLE_SCHEDULE_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Retrieve the disposable schedule for the specific user. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: GetDisposableSchedule*/ +// @param userId uint16_t + +#define emberAfFillCommandDoorLockClusterGetDisposableSchedule( \ + userId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_GET_DISPOSABLE_SCHEDULE_COMMAND_ID, \ + "v", \ + userId); + + + +/** @brief Returns the Disposable schedule data for the User ID. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: GetDisposableScheduleResponse*/ +// @param userId uint16_t + +// @param status uint8_t + +// @param localStartTime uint32_t + +// @param localEndTime uint32_t + +#define emberAfFillCommandDoorLockClusterGetDisposableScheduleResponse( \ + userId, status, localStartTime, localEndTime) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_GET_DISPOSABLE_SCHEDULE_RESPONSE_COMMAND_ID, \ + "vuww", \ + userId, status, localStartTime, localEndTime); + + + +/** @brief Clear the Disposable schedule for the specific user +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ClearDisposableSchedule*/ +// @param userId uint16_t + +#define emberAfFillCommandDoorLockClusterClearDisposableSchedule( \ + userId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_CLEAR_DISPOSABLE_SCHEDULE_COMMAND_ID, \ + "v", \ + userId); + + + +/** @brief Returns pass/fail of the command +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ClearDisposableScheduleResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterClearDisposableScheduleResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_CLEAR_DISPOSABLE_SCHEDULE_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Clear the Biometric Credential for the specific user +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ClearBiometricCredential*/ +// @param userId uint16_t + +#define emberAfFillCommandDoorLockClusterClearBiometricCredential( \ + userId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_CLEAR_BIOMETRIC_CREDENTIAL_COMMAND_ID, \ + "v", \ + userId); + + + +/** @brief Returns pass/fail of the command +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ClearBiometricCredentialResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterClearBiometricCredentialResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_CLEAR_BIOMETRIC_CREDENTIAL_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Clear out all Biometric Credentials on the lock +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ClearAllBiometricCredentials*/ +#define emberAfFillCommandDoorLockClusterClearAllBiometricCredentials( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_CLEAR_ALL_BIOMETRIC_CREDENTIALS_COMMAND_ID, \ + "" \ +); + + + +/** @brief Returns pass/fail of the command +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ClearAllBiometricCredentialsResponse*/ +// @param status uint8_t + +#define emberAfFillCommandDoorLockClusterClearAllBiometricCredentialsResponse( \ + status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_CLEAR_ALL_BIOMETRIC_CREDENTIALS_RESPONSE_COMMAND_ID, \ + "u", \ + status); + + + +/** @brief Indicates that an operation event has taken place. Includes the associated event information. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: OperationEventNotification*/ +// @param source uint8_t + +// @param eventCode uint8_t + +// @param userId uint16_t + +// @param pin uint8_t * + +// @param timeStamp uint32_t + +// @param data uint8_t * + +#define emberAfFillCommandDoorLockClusterOperationEventNotification( \ + source, eventCode, userId, pin, timeStamp, data) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_OPERATION_EVENT_NOTIFICATION_COMMAND_ID, \ + "uuvsws", \ + source, eventCode, userId, pin, timeStamp, data); + + + +/** @brief Indicates that a programming event has taken place. Includes the associated programming event information. +* Cluster: Door Lock, Provides an interface into a generic way to secure a door. +* Command: ProgrammingEventNotification*/ +// @param source uint8_t + +// @param eventCode uint8_t + +// @param userId uint16_t + +// @param pin uint8_t * + +// @param userType uint8_t + +// @param userStatus uint8_t + +// @param timeStamp uint32_t + +// @param data uint8_t * + +#define emberAfFillCommandDoorLockClusterProgrammingEventNotification( \ + source, eventCode, userId, pin, userType, userStatus, timeStamp, data) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DOOR_LOCK_CLUSTER_ID, \ + ZCL_PROGRAMMING_EVENT_NOTIFICATION_COMMAND_ID, \ + "uuvsuuws", \ + source, eventCode, userId, pin, userType, userStatus, timeStamp, data); + + + +/** @brief Moves window covering to InstalledOpenLimit - Lift and InstalledOpenLimit - Tilt +* Cluster: Window Covering, Provides an interface for controlling and adjusting automatic window coverings. +* Command: WindowCoveringUpOpen*/ +#define emberAfFillCommandWindowCoveringClusterWindowCoveringUpOpen( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_WINDOW_COVERING_CLUSTER_ID, \ + ZCL_WINDOW_COVERING_UP_OPEN_COMMAND_ID, \ + "" \ +); + + + +/** @brief Moves window covering to InstalledClosedLimit - Lift and InstalledCloseLimit - Tilt +* Cluster: Window Covering, Provides an interface for controlling and adjusting automatic window coverings. +* Command: WindowCoveringDownClose*/ +#define emberAfFillCommandWindowCoveringClusterWindowCoveringDownClose( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_WINDOW_COVERING_CLUSTER_ID, \ + ZCL_WINDOW_COVERING_DOWN_CLOSE_COMMAND_ID, \ + "" \ +); + + + +/** @brief Stop any adjusting of window covering +* Cluster: Window Covering, Provides an interface for controlling and adjusting automatic window coverings. +* Command: WindowCoveringStop*/ +#define emberAfFillCommandWindowCoveringClusterWindowCoveringStop( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_WINDOW_COVERING_CLUSTER_ID, \ + ZCL_WINDOW_COVERING_STOP_COMMAND_ID, \ + "" \ +); + + + +/** @brief Goto lift value specified +* Cluster: Window Covering, Provides an interface for controlling and adjusting automatic window coverings. +* Command: WindowCoveringGoToLiftValue*/ +// @param liftValue uint16_t + +#define emberAfFillCommandWindowCoveringClusterWindowCoveringGoToLiftValue( \ + liftValue) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_WINDOW_COVERING_CLUSTER_ID, \ + ZCL_WINDOW_COVERING_GO_TO_LIFT_VALUE_COMMAND_ID, \ + "v", \ + liftValue); + + + +/** @brief Goto lift percentage specified +* Cluster: Window Covering, Provides an interface for controlling and adjusting automatic window coverings. +* Command: WindowCoveringGoToLiftPercentage*/ +// @param percentageLiftValue uint8_t + +#define emberAfFillCommandWindowCoveringClusterWindowCoveringGoToLiftPercentage( \ + percentageLiftValue) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_WINDOW_COVERING_CLUSTER_ID, \ + ZCL_WINDOW_COVERING_GO_TO_LIFT_PERCENTAGE_COMMAND_ID, \ + "u", \ + percentageLiftValue); + + + +/** @brief Goto tilt value specified +* Cluster: Window Covering, Provides an interface for controlling and adjusting automatic window coverings. +* Command: WindowCoveringGoToTiltValue*/ +// @param tiltValue uint16_t + +#define emberAfFillCommandWindowCoveringClusterWindowCoveringGoToTiltValue( \ + tiltValue) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_WINDOW_COVERING_CLUSTER_ID, \ + ZCL_WINDOW_COVERING_GO_TO_TILT_VALUE_COMMAND_ID, \ + "v", \ + tiltValue); + + + +/** @brief Goto tilt percentage specified +* Cluster: Window Covering, Provides an interface for controlling and adjusting automatic window coverings. +* Command: WindowCoveringGoToTiltPercentage*/ +// @param percentageTiltValue uint8_t + +#define emberAfFillCommandWindowCoveringClusterWindowCoveringGoToTiltPercentage( \ + percentageTiltValue) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_WINDOW_COVERING_CLUSTER_ID, \ + ZCL_WINDOW_COVERING_GO_TO_TILT_PERCENTAGE_COMMAND_ID, \ + "u", \ + percentageTiltValue); + + + +/** @brief Command to instruct a barrier to go to a percent open state. +* Cluster: Barrier Control, This cluster provides control of a barrier (garage door). +* Command: BarrierControlGoToPercent*/ +// @param percentOpen uint8_t + +#define emberAfFillCommandBarrierControlClusterBarrierControlGoToPercent( \ + percentOpen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_BARRIER_CONTROL_CLUSTER_ID, \ + ZCL_BARRIER_CONTROL_GO_TO_PERCENT_COMMAND_ID, \ + "u", \ + percentOpen); + + + +/** @brief Command that instructs the barrier to stop moving. +* Cluster: Barrier Control, This cluster provides control of a barrier (garage door). +* Command: BarrierControlStop*/ +#define emberAfFillCommandBarrierControlClusterBarrierControlStop( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_BARRIER_CONTROL_CLUSTER_ID, \ + ZCL_BARRIER_CONTROL_STOP_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for SetpointRaiseLower +* Cluster: Thermostat, An interface for configuring and controlling the functionality of a thermostat. +* Command: SetpointRaiseLower*/ +// @param mode uint8_t + +// @param amount int8_t + +#define emberAfFillCommandThermostatClusterSetpointRaiseLower( \ + mode, amount) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_THERMOSTAT_CLUSTER_ID, \ + ZCL_SETPOINT_RAISE_LOWER_COMMAND_ID, \ + "uu", \ + mode, amount); + + + +/** @brief The Current Weekly Schedule Command is sent from the server in response to the Get Weekly Schedule Command. +* Cluster: Thermostat, An interface for configuring and controlling the functionality of a thermostat. +* Command: CurrentWeeklySchedule*/ +// @param numberOfTransitionsForSequence uint8_t + +// @param dayOfWeekForSequence uint8_t + +// @param modeForSequence uint8_t + +// @param payload /* TYPE WARNING: array array defaults to */ uint8_t * +// @param payloadLen uint16_t +#define emberAfFillCommandThermostatClusterCurrentWeeklySchedule( \ + numberOfTransitionsForSequence, dayOfWeekForSequence, modeForSequence, payload, payloadLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_THERMOSTAT_CLUSTER_ID, \ + ZCL_CURRENT_WEEKLY_SCHEDULE_COMMAND_ID, \ + "uuub", \ + numberOfTransitionsForSequence, dayOfWeekForSequence, modeForSequence, payload, payloadLen); + + + +/** @brief Command description for SetWeeklySchedule +* Cluster: Thermostat, An interface for configuring and controlling the functionality of a thermostat. +* Command: SetWeeklySchedule*/ +// @param numberOfTransitionsForSequence uint8_t + +// @param dayOfWeekForSequence uint8_t + +// @param modeForSequence uint8_t + +// @param payload /* TYPE WARNING: array array defaults to */ uint8_t * +// @param payloadLen uint16_t +#define emberAfFillCommandThermostatClusterSetWeeklySchedule( \ + numberOfTransitionsForSequence, dayOfWeekForSequence, modeForSequence, payload, payloadLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_THERMOSTAT_CLUSTER_ID, \ + ZCL_SET_WEEKLY_SCHEDULE_COMMAND_ID, \ + "uuub", \ + numberOfTransitionsForSequence, dayOfWeekForSequence, modeForSequence, payload, payloadLen); + + + +/** @brief This command is sent from the thermostat cluster server in response to the Get Relay Status Log. +* Cluster: Thermostat, An interface for configuring and controlling the functionality of a thermostat. +* Command: RelayStatusLog*/ +// @param timeOfDay uint16_t + +// @param relayStatus uint16_t + +// @param localTemperature int16_t + +// @param humidityInPercentage uint8_t + +// @param setpoint int16_t + +// @param unreadEntries uint16_t + +#define emberAfFillCommandThermostatClusterRelayStatusLog( \ + timeOfDay, relayStatus, localTemperature, humidityInPercentage, setpoint, unreadEntries) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_THERMOSTAT_CLUSTER_ID, \ + ZCL_RELAY_STATUS_LOG_COMMAND_ID, \ + "vvvuvv", \ + timeOfDay, relayStatus, localTemperature, humidityInPercentage, setpoint, unreadEntries); + + + +/** @brief Command description for GetWeeklySchedule +* Cluster: Thermostat, An interface for configuring and controlling the functionality of a thermostat. +* Command: GetWeeklySchedule*/ +// @param daysToReturn uint8_t + +// @param modeToReturn uint8_t + +#define emberAfFillCommandThermostatClusterGetWeeklySchedule( \ + daysToReturn, modeToReturn) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_THERMOSTAT_CLUSTER_ID, \ + ZCL_GET_WEEKLY_SCHEDULE_COMMAND_ID, \ + "uu", \ + daysToReturn, modeToReturn); + + + +/** @brief The Clear Weekly Schedule command is used to clear the weekly schedule. +* Cluster: Thermostat, An interface for configuring and controlling the functionality of a thermostat. +* Command: ClearWeeklySchedule*/ +#define emberAfFillCommandThermostatClusterClearWeeklySchedule( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_THERMOSTAT_CLUSTER_ID, \ + ZCL_CLEAR_WEEKLY_SCHEDULE_COMMAND_ID, \ + "" \ +); + + + +/** @brief The Get Relay Status Log command is used to query the thermostat internal relay status log. +* Cluster: Thermostat, An interface for configuring and controlling the functionality of a thermostat. +* Command: GetRelayStatusLog*/ +#define emberAfFillCommandThermostatClusterGetRelayStatusLog( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_THERMOSTAT_CLUSTER_ID, \ + ZCL_GET_RELAY_STATUS_LOG_COMMAND_ID, \ + "" \ +); + + + +/** @brief Move to specified hue. +* Cluster: Color Control, Attributes and commands for controlling the color properties of a color-capable light. +* Command: MoveToHue*/ +// @param hue uint8_t + +// @param direction uint8_t + +// @param transitionTime uint16_t + +// @param optionsMask uint8_t + +// @param optionsOverride uint8_t + +#define emberAfFillCommandColorControlClusterMoveToHue( \ + hue, direction, transitionTime, optionsMask, optionsOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + ZCL_MOVE_TO_HUE_COMMAND_ID, \ + "uuvuu", \ + hue, direction, transitionTime, optionsMask, optionsOverride); + + + +/** @brief Move hue up or down at specified rate. +* Cluster: Color Control, Attributes and commands for controlling the color properties of a color-capable light. +* Command: MoveHue*/ +// @param moveMode uint8_t + +// @param rate uint8_t + +// @param optionsMask uint8_t + +// @param optionsOverride uint8_t + +#define emberAfFillCommandColorControlClusterMoveHue( \ + moveMode, rate, optionsMask, optionsOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + ZCL_MOVE_HUE_COMMAND_ID, \ + "uuuu", \ + moveMode, rate, optionsMask, optionsOverride); + + + +/** @brief Step hue up or down by specified size at specified rate. +* Cluster: Color Control, Attributes and commands for controlling the color properties of a color-capable light. +* Command: StepHue*/ +// @param stepMode uint8_t + +// @param stepSize uint8_t + +// @param transitionTime uint8_t + +// @param optionsMask uint8_t + +// @param optionsOverride uint8_t + +#define emberAfFillCommandColorControlClusterStepHue( \ + stepMode, stepSize, transitionTime, optionsMask, optionsOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + ZCL_STEP_HUE_COMMAND_ID, \ + "uuuuu", \ + stepMode, stepSize, transitionTime, optionsMask, optionsOverride); + + + +/** @brief Move to specified saturation. +* Cluster: Color Control, Attributes and commands for controlling the color properties of a color-capable light. +* Command: MoveToSaturation*/ +// @param saturation uint8_t + +// @param transitionTime uint16_t + +// @param optionsMask uint8_t + +// @param optionsOverride uint8_t + +#define emberAfFillCommandColorControlClusterMoveToSaturation( \ + saturation, transitionTime, optionsMask, optionsOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + ZCL_MOVE_TO_SATURATION_COMMAND_ID, \ + "uvuu", \ + saturation, transitionTime, optionsMask, optionsOverride); + + + +/** @brief Move saturation up or down at specified rate. +* Cluster: Color Control, Attributes and commands for controlling the color properties of a color-capable light. +* Command: MoveSaturation*/ +// @param moveMode uint8_t + +// @param rate uint8_t + +// @param optionsMask uint8_t + +// @param optionsOverride uint8_t + +#define emberAfFillCommandColorControlClusterMoveSaturation( \ + moveMode, rate, optionsMask, optionsOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + ZCL_MOVE_SATURATION_COMMAND_ID, \ + "uuuu", \ + moveMode, rate, optionsMask, optionsOverride); + + + +/** @brief Step saturation up or down by specified size at specified rate. +* Cluster: Color Control, Attributes and commands for controlling the color properties of a color-capable light. +* Command: StepSaturation*/ +// @param stepMode uint8_t + +// @param stepSize uint8_t + +// @param transitionTime uint8_t + +// @param optionsMask uint8_t + +// @param optionsOverride uint8_t + +#define emberAfFillCommandColorControlClusterStepSaturation( \ + stepMode, stepSize, transitionTime, optionsMask, optionsOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + ZCL_STEP_SATURATION_COMMAND_ID, \ + "uuuuu", \ + stepMode, stepSize, transitionTime, optionsMask, optionsOverride); + + + +/** @brief Move to hue and saturation. +* Cluster: Color Control, Attributes and commands for controlling the color properties of a color-capable light. +* Command: MoveToHueAndSaturation*/ +// @param hue uint8_t + +// @param saturation uint8_t + +// @param transitionTime uint16_t + +// @param optionsMask uint8_t + +// @param optionsOverride uint8_t + +#define emberAfFillCommandColorControlClusterMoveToHueAndSaturation( \ + hue, saturation, transitionTime, optionsMask, optionsOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + ZCL_MOVE_TO_HUE_AND_SATURATION_COMMAND_ID, \ + "uuvuu", \ + hue, saturation, transitionTime, optionsMask, optionsOverride); + + + +/** @brief Move to specified color. +* Cluster: Color Control, Attributes and commands for controlling the color properties of a color-capable light. +* Command: MoveToColor*/ +// @param colorX uint16_t + +// @param colorY uint16_t + +// @param transitionTime uint16_t + +// @param optionsMask uint8_t + +// @param optionsOverride uint8_t + +#define emberAfFillCommandColorControlClusterMoveToColor( \ + colorX, colorY, transitionTime, optionsMask, optionsOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + ZCL_MOVE_TO_COLOR_COMMAND_ID, \ + "vvvuu", \ + colorX, colorY, transitionTime, optionsMask, optionsOverride); + + + +/** @brief Moves the color. +* Cluster: Color Control, Attributes and commands for controlling the color properties of a color-capable light. +* Command: MoveColor*/ +// @param rateX int16_t + +// @param rateY int16_t + +// @param optionsMask uint8_t + +// @param optionsOverride uint8_t + +#define emberAfFillCommandColorControlClusterMoveColor( \ + rateX, rateY, optionsMask, optionsOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + ZCL_MOVE_COLOR_COMMAND_ID, \ + "vvuu", \ + rateX, rateY, optionsMask, optionsOverride); + + + +/** @brief Steps the lighting to a specific color. +* Cluster: Color Control, Attributes and commands for controlling the color properties of a color-capable light. +* Command: StepColor*/ +// @param stepX int16_t + +// @param stepY int16_t + +// @param transitionTime uint16_t + +// @param optionsMask uint8_t + +// @param optionsOverride uint8_t + +#define emberAfFillCommandColorControlClusterStepColor( \ + stepX, stepY, transitionTime, optionsMask, optionsOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + ZCL_STEP_COLOR_COMMAND_ID, \ + "vvvuu", \ + stepX, stepY, transitionTime, optionsMask, optionsOverride); + + + +/** @brief Move to a specific color temperature. +* Cluster: Color Control, Attributes and commands for controlling the color properties of a color-capable light. +* Command: MoveToColorTemperature*/ +// @param colorTemperature uint16_t + +// @param transitionTime uint16_t + +// @param optionsMask uint8_t + +// @param optionsOverride uint8_t + +#define emberAfFillCommandColorControlClusterMoveToColorTemperature( \ + colorTemperature, transitionTime, optionsMask, optionsOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + ZCL_MOVE_TO_COLOR_TEMPERATURE_COMMAND_ID, \ + "vvuu", \ + colorTemperature, transitionTime, optionsMask, optionsOverride); + + + +/** @brief Command description for EnhancedMoveToHue +* Cluster: Color Control, Attributes and commands for controlling the color properties of a color-capable light. +* Command: EnhancedMoveToHue*/ +// @param enhancedHue uint16_t + +// @param direction uint8_t + +// @param transitionTime uint16_t + +// @param optionsMask uint8_t + +// @param optionsOverride uint8_t + +#define emberAfFillCommandColorControlClusterEnhancedMoveToHue( \ + enhancedHue, direction, transitionTime, optionsMask, optionsOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + ZCL_ENHANCED_MOVE_TO_HUE_COMMAND_ID, \ + "vuvuu", \ + enhancedHue, direction, transitionTime, optionsMask, optionsOverride); + + + +/** @brief Command description for EnhancedMoveHue +* Cluster: Color Control, Attributes and commands for controlling the color properties of a color-capable light. +* Command: EnhancedMoveHue*/ +// @param moveMode uint8_t + +// @param rate uint16_t + +// @param optionsMask uint8_t + +// @param optionsOverride uint8_t + +#define emberAfFillCommandColorControlClusterEnhancedMoveHue( \ + moveMode, rate, optionsMask, optionsOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + ZCL_ENHANCED_MOVE_HUE_COMMAND_ID, \ + "uvuu", \ + moveMode, rate, optionsMask, optionsOverride); + + + +/** @brief Command description for EnhancedStepHue +* Cluster: Color Control, Attributes and commands for controlling the color properties of a color-capable light. +* Command: EnhancedStepHue*/ +// @param stepMode uint8_t + +// @param stepSize uint16_t + +// @param transitionTime uint16_t + +// @param optionsMask uint8_t + +// @param optionsOverride uint8_t + +#define emberAfFillCommandColorControlClusterEnhancedStepHue( \ + stepMode, stepSize, transitionTime, optionsMask, optionsOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + ZCL_ENHANCED_STEP_HUE_COMMAND_ID, \ + "uvvuu", \ + stepMode, stepSize, transitionTime, optionsMask, optionsOverride); + + + +/** @brief Command description for EnhancedMoveToHueAndSaturation +* Cluster: Color Control, Attributes and commands for controlling the color properties of a color-capable light. +* Command: EnhancedMoveToHueAndSaturation*/ +// @param enhancedHue uint16_t + +// @param saturation uint8_t + +// @param transitionTime uint16_t + +// @param optionsMask uint8_t + +// @param optionsOverride uint8_t + +#define emberAfFillCommandColorControlClusterEnhancedMoveToHueAndSaturation( \ + enhancedHue, saturation, transitionTime, optionsMask, optionsOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + ZCL_ENHANCED_MOVE_TO_HUE_AND_SATURATION_COMMAND_ID, \ + "vuvuu", \ + enhancedHue, saturation, transitionTime, optionsMask, optionsOverride); + + + +/** @brief Command description for ColorLoopSet +* Cluster: Color Control, Attributes and commands for controlling the color properties of a color-capable light. +* Command: ColorLoopSet*/ +// @param updateFlags uint8_t + +// @param action uint8_t + +// @param direction uint8_t + +// @param time uint16_t + +// @param startHue uint16_t + +// @param optionsMask uint8_t + +// @param optionsOverride uint8_t + +#define emberAfFillCommandColorControlClusterColorLoopSet( \ + updateFlags, action, direction, time, startHue, optionsMask, optionsOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + ZCL_COLOR_LOOP_SET_COMMAND_ID, \ + "uuuvvuu", \ + updateFlags, action, direction, time, startHue, optionsMask, optionsOverride); + + + +/** @brief Command description for StopMoveStep +* Cluster: Color Control, Attributes and commands for controlling the color properties of a color-capable light. +* Command: StopMoveStep*/ +// @param optionsMask uint8_t + +// @param optionsOverride uint8_t + +#define emberAfFillCommandColorControlClusterStopMoveStep( \ + optionsMask, optionsOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + ZCL_STOP_MOVE_STEP_COMMAND_ID, \ + "uu", \ + optionsMask, optionsOverride); + + + +/** @brief Command description for MoveColorTemperature +* Cluster: Color Control, Attributes and commands for controlling the color properties of a color-capable light. +* Command: MoveColorTemperature*/ +// @param moveMode uint8_t + +// @param rate uint16_t + +// @param colorTemperatureMinimum uint16_t + +// @param colorTemperatureMaximum uint16_t + +// @param optionsMask uint8_t + +// @param optionsOverride uint8_t + +#define emberAfFillCommandColorControlClusterMoveColorTemperature( \ + moveMode, rate, colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + ZCL_MOVE_COLOR_TEMPERATURE_COMMAND_ID, \ + "uvvvuu", \ + moveMode, rate, colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride); + + + +/** @brief Command description for StepColorTemperature +* Cluster: Color Control, Attributes and commands for controlling the color properties of a color-capable light. +* Command: StepColorTemperature*/ +// @param stepMode uint8_t + +// @param stepSize uint16_t + +// @param transitionTime uint16_t + +// @param colorTemperatureMinimum uint16_t + +// @param colorTemperatureMaximum uint16_t + +// @param optionsMask uint8_t + +// @param optionsOverride uint8_t + +#define emberAfFillCommandColorControlClusterStepColorTemperature( \ + stepMode, stepSize, transitionTime, colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_COLOR_CONTROL_CLUSTER_ID, \ + ZCL_STEP_COLOR_TEMPERATURE_COMMAND_ID, \ + "uvvvvuu", \ + stepMode, stepSize, transitionTime, colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride); + + + +/** @brief Command description for zoneEnrollResponse +* Cluster: IAS Zone, Attributes and commands for IAS security zone devices. +* Command: ZoneEnrollResponse*/ +// @param enrollResponseCode uint8_t + +// @param zoneId uint8_t + +#define emberAfFillCommandIasZoneClusterZoneEnrollResponse( \ + enrollResponseCode, zoneId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_IAS_ZONE_CLUSTER_ID, \ + ZCL_ZONE_ENROLL_RESPONSE_COMMAND_ID, \ + "uu", \ + enrollResponseCode, zoneId); + + + +/** @brief Command description for zoneStatusChangeNotification +* Cluster: IAS Zone, Attributes and commands for IAS security zone devices. +* Command: ZoneStatusChangeNotification*/ +// @param zoneStatus uint16_t + +// @param extendedStatus uint8_t + +// @param zoneId uint8_t + +// @param delay uint16_t + +#define emberAfFillCommandIasZoneClusterZoneStatusChangeNotification( \ + zoneStatus, extendedStatus, zoneId, delay) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_IAS_ZONE_CLUSTER_ID, \ + ZCL_ZONE_STATUS_CHANGE_NOTIFICATION_COMMAND_ID, \ + "vuuv", \ + zoneStatus, extendedStatus, zoneId, delay); + + + +/** @brief Used to tell the IAS Zone server to commence normal operation mode +* Cluster: IAS Zone, Attributes and commands for IAS security zone devices. +* Command: InitiateNormalOperationMode*/ +#define emberAfFillCommandIasZoneClusterInitiateNormalOperationMode( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_IAS_ZONE_CLUSTER_ID, \ + ZCL_INITIATE_NORMAL_OPERATION_MODE_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for zoneEnrollRequest +* Cluster: IAS Zone, Attributes and commands for IAS security zone devices. +* Command: ZoneEnrollRequest*/ +// @param zoneType uint16_t + +// @param manufacturerCode uint16_t + +#define emberAfFillCommandIasZoneClusterZoneEnrollRequest( \ + zoneType, manufacturerCode) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_IAS_ZONE_CLUSTER_ID, \ + ZCL_ZONE_ENROLL_REQUEST_COMMAND_ID, \ + "vv", \ + zoneType, manufacturerCode); + + + +/** @brief Certain IAS Zone servers may have operational configurations that could be configured OTA or locally on the device. This command enables them to be remotely placed into a test mode so that the user or installer may configure their field of view, sensitivity, and other operational parameters. +* Cluster: IAS Zone, Attributes and commands for IAS security zone devices. +* Command: InitiateTestMode*/ +// @param testModeDuration uint8_t + +// @param currentZoneSensitivityLevel uint8_t + +#define emberAfFillCommandIasZoneClusterInitiateTestMode( \ + testModeDuration, currentZoneSensitivityLevel) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_IAS_ZONE_CLUSTER_ID, \ + ZCL_INITIATE_TEST_MODE_COMMAND_ID, \ + "uu", \ + testModeDuration, currentZoneSensitivityLevel); + + + +/** @brief Confirms that the IAS Zone server has commenced normal operation mode. +* Cluster: IAS Zone, Attributes and commands for IAS security zone devices. +* Command: InitiateNormalOperationModeResponse*/ +#define emberAfFillCommandIasZoneClusterInitiateNormalOperationModeResponse( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_IAS_ZONE_CLUSTER_ID, \ + ZCL_INITIATE_NORMAL_OPERATION_MODE_RESPONSE_COMMAND_ID, \ + "" \ +); + + + +/** @brief Confirms that the IAS Zone server has commenced test mode and that the IAS Zone client should treat any Zone Status Change Notification commands received from the sending IAS Zone server as being in response to test events. +* Cluster: IAS Zone, Attributes and commands for IAS security zone devices. +* Command: InitiateTestModeResponse*/ +#define emberAfFillCommandIasZoneClusterInitiateTestModeResponse( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_IAS_ZONE_CLUSTER_ID, \ + ZCL_INITIATE_TEST_MODE_RESPONSE_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for Arm +* Cluster: IAS ACE, Attributes and commands for IAS Ancillary Control Equipment. +* Command: Arm*/ +// @param armMode uint8_t + +// @param armDisarmCode uint8_t * + +// @param zoneId uint8_t + +#define emberAfFillCommandIasAceClusterArm( \ + armMode, armDisarmCode, zoneId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_IAS_ACE_CLUSTER_ID, \ + ZCL_ARM_COMMAND_ID, \ + "usu", \ + armMode, armDisarmCode, zoneId); + + + +/** @brief Command description for ArmResponse +* Cluster: IAS ACE, Attributes and commands for IAS Ancillary Control Equipment. +* Command: ArmResponse*/ +// @param armNotification uint8_t + +#define emberAfFillCommandIasAceClusterArmResponse( \ + armNotification) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_IAS_ACE_CLUSTER_ID, \ + ZCL_ARM_RESPONSE_COMMAND_ID, \ + "u", \ + armNotification); + + + +/** @brief Command description for Bypass +* Cluster: IAS ACE, Attributes and commands for IAS Ancillary Control Equipment. +* Command: Bypass*/ +// @param numberOfZones uint8_t + +// @param zoneIds /* TYPE WARNING: array array defaults to */ uint8_t * +// @param zoneIdsLen uint16_t +// @param armDisarmCode uint8_t * + +#define emberAfFillCommandIasAceClusterBypass( \ + numberOfZones, zoneIds, zoneIdsLen, armDisarmCode) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_IAS_ACE_CLUSTER_ID, \ + ZCL_BYPASS_COMMAND_ID, \ + "ubs", \ + numberOfZones, zoneIds, zoneIdsLen, armDisarmCode); + + + +/** @brief Command description for GetZoneIdMapResponse +* Cluster: IAS ACE, Attributes and commands for IAS Ancillary Control Equipment. +* Command: GetZoneIdMapResponse*/ +// @param section0 uint16_t + +// @param section1 uint16_t + +// @param section2 uint16_t + +// @param section3 uint16_t + +// @param section4 uint16_t + +// @param section5 uint16_t + +// @param section6 uint16_t + +// @param section7 uint16_t + +// @param section8 uint16_t + +// @param section9 uint16_t + +// @param section10 uint16_t + +// @param section11 uint16_t + +// @param section12 uint16_t + +// @param section13 uint16_t + +// @param section14 uint16_t + +// @param section15 uint16_t + +#define emberAfFillCommandIasAceClusterGetZoneIdMapResponse( \ + section0, section1, section2, section3, section4, section5, section6, section7, section8, section9, section10, section11, section12, section13, section14, section15) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_IAS_ACE_CLUSTER_ID, \ + ZCL_GET_ZONE_ID_MAP_RESPONSE_COMMAND_ID, \ + "vvvvvvvvvvvvvvvv", \ + section0, section1, section2, section3, section4, section5, section6, section7, section8, section9, section10, section11, section12, section13, section14, section15); + + + +/** @brief Command description for Emergency +* Cluster: IAS ACE, Attributes and commands for IAS Ancillary Control Equipment. +* Command: Emergency*/ +#define emberAfFillCommandIasAceClusterEmergency( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_IAS_ACE_CLUSTER_ID, \ + ZCL_EMERGENCY_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for GetZoneInformationResponse +* Cluster: IAS ACE, Attributes and commands for IAS Ancillary Control Equipment. +* Command: GetZoneInformationResponse*/ +// @param zoneId uint8_t + +// @param zoneType uint16_t + +// @param ieeeAddress uint8_t * + +// @param zoneLabel uint8_t * + +#define emberAfFillCommandIasAceClusterGetZoneInformationResponse( \ + zoneId, zoneType, ieeeAddress, zoneLabel) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_IAS_ACE_CLUSTER_ID, \ + ZCL_GET_ZONE_INFORMATION_RESPONSE_COMMAND_ID, \ + "uv8s", \ + zoneId, zoneType, ieeeAddress, zoneLabel); + + + +/** @brief Command description for Fire +* Cluster: IAS ACE, Attributes and commands for IAS Ancillary Control Equipment. +* Command: Fire*/ +#define emberAfFillCommandIasAceClusterFire( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_IAS_ACE_CLUSTER_ID, \ + ZCL_FIRE_COMMAND_ID, \ + "" \ +); + + + +/** @brief This command updates ACE clients in the system of changes to zone status recorded by the ACE server (e.g., IAS CIE device). +* Cluster: IAS ACE, Attributes and commands for IAS Ancillary Control Equipment. +* Command: ZoneStatusChanged*/ +// @param zoneId uint8_t + +// @param zoneStatus uint16_t + +// @param audibleNotification uint8_t + +// @param zoneLabel uint8_t * + +#define emberAfFillCommandIasAceClusterZoneStatusChanged( \ + zoneId, zoneStatus, audibleNotification, zoneLabel) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_IAS_ACE_CLUSTER_ID, \ + ZCL_ZONE_STATUS_CHANGED_COMMAND_ID, \ + "uvus", \ + zoneId, zoneStatus, audibleNotification, zoneLabel); + + + +/** @brief Command description for Panic +* Cluster: IAS ACE, Attributes and commands for IAS Ancillary Control Equipment. +* Command: Panic*/ +#define emberAfFillCommandIasAceClusterPanic( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_IAS_ACE_CLUSTER_ID, \ + ZCL_PANIC_COMMAND_ID, \ + "" \ +); + + + +/** @brief This command updates ACE clients in the system of changes to panel status recorded by the ACE server (e.g., IAS CIE device). +* Cluster: IAS ACE, Attributes and commands for IAS Ancillary Control Equipment. +* Command: PanelStatusChanged*/ +// @param panelStatus uint8_t + +// @param secondsRemaining uint8_t + +// @param audibleNotification uint8_t + +// @param alarmStatus uint8_t + +#define emberAfFillCommandIasAceClusterPanelStatusChanged( \ + panelStatus, secondsRemaining, audibleNotification, alarmStatus) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_IAS_ACE_CLUSTER_ID, \ + ZCL_PANEL_STATUS_CHANGED_COMMAND_ID, \ + "uuuu", \ + panelStatus, secondsRemaining, audibleNotification, alarmStatus); + + + +/** @brief Command description for GetZoneIdMap +* Cluster: IAS ACE, Attributes and commands for IAS Ancillary Control Equipment. +* Command: GetZoneIdMap*/ +#define emberAfFillCommandIasAceClusterGetZoneIdMap( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_IAS_ACE_CLUSTER_ID, \ + ZCL_GET_ZONE_ID_MAP_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command updates requesting IAS ACE clients in the system of changes to the security panel status recorded by the ACE server. +* Cluster: IAS ACE, Attributes and commands for IAS Ancillary Control Equipment. +* Command: GetPanelStatusResponse*/ +// @param panelStatus uint8_t + +// @param secondsRemaining uint8_t + +// @param audibleNotification uint8_t + +// @param alarmStatus uint8_t + +#define emberAfFillCommandIasAceClusterGetPanelStatusResponse( \ + panelStatus, secondsRemaining, audibleNotification, alarmStatus) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_IAS_ACE_CLUSTER_ID, \ + ZCL_GET_PANEL_STATUS_RESPONSE_COMMAND_ID, \ + "uuuu", \ + panelStatus, secondsRemaining, audibleNotification, alarmStatus); + + + +/** @brief Command description for GetZoneInformation +* Cluster: IAS ACE, Attributes and commands for IAS Ancillary Control Equipment. +* Command: GetZoneInformation*/ +// @param zoneId uint8_t + +#define emberAfFillCommandIasAceClusterGetZoneInformation( \ + zoneId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_IAS_ACE_CLUSTER_ID, \ + ZCL_GET_ZONE_INFORMATION_COMMAND_ID, \ + "u", \ + zoneId); + + + +/** @brief Sets the list of bypassed zones on the IAS ACE client +* Cluster: IAS ACE, Attributes and commands for IAS Ancillary Control Equipment. +* Command: SetBypassedZoneList*/ +// @param numberOfZones uint8_t + +// @param zoneIds /* TYPE WARNING: array array defaults to */ uint8_t * +// @param zoneIdsLen uint16_t +#define emberAfFillCommandIasAceClusterSetBypassedZoneList( \ + numberOfZones, zoneIds, zoneIdsLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_IAS_ACE_CLUSTER_ID, \ + ZCL_SET_BYPASSED_ZONE_LIST_COMMAND_ID, \ + "ub", \ + numberOfZones, zoneIds, zoneIdsLen); + + + +/** @brief Used by the ACE client to request an update to the status of the ACE server +* Cluster: IAS ACE, Attributes and commands for IAS Ancillary Control Equipment. +* Command: GetPanelStatus*/ +#define emberAfFillCommandIasAceClusterGetPanelStatus( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_IAS_ACE_CLUSTER_ID, \ + ZCL_GET_PANEL_STATUS_COMMAND_ID, \ + "" \ +); + + + +/** @brief Provides the response of the security panel to the request from the IAS ACE client to bypass zones via a Bypass command. +* Cluster: IAS ACE, Attributes and commands for IAS Ancillary Control Equipment. +* Command: BypassResponse*/ +// @param numberOfZones uint8_t + +// @param bypassResult /* TYPE WARNING: array array defaults to */ uint8_t * +// @param bypassResultLen uint16_t +#define emberAfFillCommandIasAceClusterBypassResponse( \ + numberOfZones, bypassResult, bypassResultLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_IAS_ACE_CLUSTER_ID, \ + ZCL_BYPASS_RESPONSE_COMMAND_ID, \ + "ub", \ + numberOfZones, bypassResult, bypassResultLen); + + + +/** @brief Used by the ACE client to retrieve the bypassed zones +* Cluster: IAS ACE, Attributes and commands for IAS Ancillary Control Equipment. +* Command: GetBypassedZoneList*/ +#define emberAfFillCommandIasAceClusterGetBypassedZoneList( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_IAS_ACE_CLUSTER_ID, \ + ZCL_GET_BYPASSED_ZONE_LIST_COMMAND_ID, \ + "" \ +); + + + +/** @brief This command updates requesting IAS ACE clients in the system of changes to the IAS Zone server statuses recorded by the ACE server (e.g., IAS CIE device). +* Cluster: IAS ACE, Attributes and commands for IAS Ancillary Control Equipment. +* Command: GetZoneStatusResponse*/ +// @param zoneStatusComplete uint8_t + +// @param numberOfZones uint8_t + +// @param zoneStatusResult /* TYPE WARNING: array array defaults to */ uint8_t * +// @param zoneStatusResultLen uint16_t +#define emberAfFillCommandIasAceClusterGetZoneStatusResponse( \ + zoneStatusComplete, numberOfZones, zoneStatusResult, zoneStatusResultLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_IAS_ACE_CLUSTER_ID, \ + ZCL_GET_ZONE_STATUS_RESPONSE_COMMAND_ID, \ + "uub", \ + zoneStatusComplete, numberOfZones, zoneStatusResult, zoneStatusResultLen); + + + +/** @brief Used by the ACE client to request an update to the zone status of the ACE server +* Cluster: IAS ACE, Attributes and commands for IAS Ancillary Control Equipment. +* Command: GetZoneStatus*/ +// @param startingZoneId uint8_t + +// @param maxNumberOfZoneIds uint8_t + +// @param zoneStatusMaskFlag uint8_t + +// @param zoneStatusMask uint16_t + +#define emberAfFillCommandIasAceClusterGetZoneStatus( \ + startingZoneId, maxNumberOfZoneIds, zoneStatusMaskFlag, zoneStatusMask) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_IAS_ACE_CLUSTER_ID, \ + ZCL_GET_ZONE_STATUS_COMMAND_ID, \ + "uuuv", \ + startingZoneId, maxNumberOfZoneIds, zoneStatusMaskFlag, zoneStatusMask); + + + +/** @brief Command description for StartWarning +* Cluster: IAS WD, Attributes and commands for IAS Warning Devices. +* Command: StartWarning*/ +// @param warningInfo uint8_t + +// @param warningDuration uint16_t + +// @param strobeDutyCycle uint8_t + +// @param strobeLevel uint8_t + +#define emberAfFillCommandIasWdClusterStartWarning( \ + warningInfo, warningDuration, strobeDutyCycle, strobeLevel) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_IAS_WD_CLUSTER_ID, \ + ZCL_START_WARNING_COMMAND_ID, \ + "uvuu", \ + warningInfo, warningDuration, strobeDutyCycle, strobeLevel); + + + +/** @brief Command description for Squawk +* Cluster: IAS WD, Attributes and commands for IAS Warning Devices. +* Command: Squawk*/ +// @param squawkInfo uint8_t + +#define emberAfFillCommandIasWdClusterSquawk( \ + squawkInfo) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_IAS_WD_CLUSTER_ID, \ + ZCL_SQUAWK_COMMAND_ID, \ + "u", \ + squawkInfo); + + + +/** @brief This command is generated when an application wishes to find the ZigBee address (node, endpoint) of the Generic Tunnel server cluster with a given ProtocolAddress attribute. The command is typically multicast to a group of inter-communicating Generic Tunnel clusters +* Cluster: Generic Tunnel, The minimum common commands and attributes required to tunnel any protocol. +* Command: MatchProtocolAddress*/ +// @param protocolAddress uint8_t * + +#define emberAfFillCommandGenericTunnelClusterMatchProtocolAddress( \ + protocolAddress) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GENERIC_TUNNEL_CLUSTER_ID, \ + ZCL_MATCH_PROTOCOL_ADDRESS_COMMAND_ID, \ + "s", \ + protocolAddress); + + + +/** @brief This command is generated upon receipt of a Match Protocol Address command to indicate that the Protocol Address was successfully matched. +* Cluster: Generic Tunnel, The minimum common commands and attributes required to tunnel any protocol. +* Command: MatchProtocolAddressResponse*/ +// @param deviceIeeeAddress uint8_t * + +// @param protocolAddress uint8_t * + +#define emberAfFillCommandGenericTunnelClusterMatchProtocolAddressResponse( \ + deviceIeeeAddress, protocolAddress) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_GENERIC_TUNNEL_CLUSTER_ID, \ + ZCL_MATCH_PROTOCOL_ADDRESS_RESPONSE_COMMAND_ID, \ + "8s", \ + deviceIeeeAddress, protocolAddress); + + + +/** @brief This command is typically sent upon startup, and whenever the ProtocolAddress attribute changes. It is typically multicast to a group of inter-communicating Generic Tunnel clusters. +* Cluster: Generic Tunnel, The minimum common commands and attributes required to tunnel any protocol. +* Command: AdvertiseProtocolAddress*/ +// @param protocolAddress uint8_t * + +#define emberAfFillCommandGenericTunnelClusterAdvertiseProtocolAddress( \ + protocolAddress) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_GENERIC_TUNNEL_CLUSTER_ID, \ + ZCL_ADVERTISE_PROTOCOL_ADDRESS_COMMAND_ID, \ + "s", \ + protocolAddress); + + + +/** @brief This command is generated when a BACnet network layer wishes to transfer a BACnet NPDU across a ZigBee tunnel to another BACnet network layer. +* Cluster: BACnet Protocol Tunnel, Commands and attributes required to tunnel the BACnet protocol. +* Command: TransferNpdu*/ +// @param npdu /* TYPE WARNING: array array defaults to */ uint8_t * +// @param npduLen uint16_t +#define emberAfFillCommandBacnetProtocolTunnelClusterTransferNpdu( \ + npdu, npduLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_BACNET_PROTOCOL_TUNNEL_CLUSTER_ID, \ + ZCL_TRANSFER_NPDU_COMMAND_ID, \ + "b", \ + npdu, npduLen); + + + +/** @brief This command is generated when an 11073 network layer wishes to transfer an 11073 APDU across a ZigBee tunnel to another 11073 network layer. +* Cluster: 11073 Protocol Tunnel, Attributes and commands for the 11073 protocol tunnel used for ZigBee Health Care. +* Command: TransferAPDU*/ +// @param apdu uint8_t * + +#define emberAfFillCommand11073ProtocolTunnelClusterTransferAPDU( \ + apdu) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_11073_PROTOCOL_TUNNEL_CLUSTER_ID, \ + ZCL_TRANSFER_APDU_COMMAND_ID, \ + "s", \ + apdu); + + + +/** @brief This command is generated when an Health Care client wishes to connect to a Health Care server for the purposes of transmitting 11073 APDUs across the 11073 tunnel. +* Cluster: 11073 Protocol Tunnel, Attributes and commands for the 11073 protocol tunnel used for ZigBee Health Care. +* Command: ConnectRequest*/ +// @param connectControl uint8_t + +// @param idleTimeout uint16_t + +// @param managerTarget uint8_t * + +// @param managerEndpoint uint8_t + +#define emberAfFillCommand11073ProtocolTunnelClusterConnectRequest( \ + connectControl, idleTimeout, managerTarget, managerEndpoint) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_11073_PROTOCOL_TUNNEL_CLUSTER_ID, \ + ZCL_CONNECT_REQUEST_COMMAND_ID, \ + "uv8u", \ + connectControl, idleTimeout, managerTarget, managerEndpoint); + + + +/** @brief This command is generated when an Health Care client wishes to disconnect from a Health Care server. +* Cluster: 11073 Protocol Tunnel, Attributes and commands for the 11073 protocol tunnel used for ZigBee Health Care. +* Command: DisconnectRequest*/ +// @param managerIEEEAddress uint8_t * + +#define emberAfFillCommand11073ProtocolTunnelClusterDisconnectRequest( \ + managerIEEEAddress) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_11073_PROTOCOL_TUNNEL_CLUSTER_ID, \ + ZCL_DISCONNECT_REQUEST_COMMAND_ID, \ + "8", \ + managerIEEEAddress); + + + +/** @brief Generated in response to requests related to connection or any event that causes the tunnel to become disconnected. +* Cluster: 11073 Protocol Tunnel, Attributes and commands for the 11073 protocol tunnel used for ZigBee Health Care. +* Command: ConnectStatusNotification*/ +// @param connectStatus uint8_t + +#define emberAfFillCommand11073ProtocolTunnelClusterConnectStatusNotification( \ + connectStatus) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_11073_PROTOCOL_TUNNEL_CLUSTER_ID, \ + ZCL_CONNECT_STATUS_NOTIFICATION_COMMAND_ID, \ + "u", \ + connectStatus); + + + +/** @brief Command description for TransferApdu +* Cluster: ISO 7816 Protocol Tunnel, Commands and attributes for mobile office solutions including ZigBee devices. +* Command: TransferApduFromClient*/ +// @param apdu uint8_t * + +#define emberAfFillCommandIso7816ProtocolTunnelClusterTransferApduFromClient( \ + apdu) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ISO7816_PROTOCOL_TUNNEL_CLUSTER_ID, \ + ZCL_TRANSFER_APDU_FROM_CLIENT_COMMAND_ID, \ + "s", \ + apdu); + + + +/** @brief Command description for TransferApdu +* Cluster: ISO 7816 Protocol Tunnel, Commands and attributes for mobile office solutions including ZigBee devices. +* Command: TransferApduFromServer*/ +// @param apdu uint8_t * + +#define emberAfFillCommandIso7816ProtocolTunnelClusterTransferApduFromServer( \ + apdu) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_ISO7816_PROTOCOL_TUNNEL_CLUSTER_ID, \ + ZCL_TRANSFER_APDU_FROM_SERVER_COMMAND_ID, \ + "s", \ + apdu); + + + +/** @brief Command description for InsertSmartCard +* Cluster: ISO 7816 Protocol Tunnel, Commands and attributes for mobile office solutions including ZigBee devices. +* Command: InsertSmartCard*/ +#define emberAfFillCommandIso7816ProtocolTunnelClusterInsertSmartCard( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ISO7816_PROTOCOL_TUNNEL_CLUSTER_ID, \ + ZCL_INSERT_SMART_CARD_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for ExtractSmartCard +* Cluster: ISO 7816 Protocol Tunnel, Commands and attributes for mobile office solutions including ZigBee devices. +* Command: ExtractSmartCard*/ +#define emberAfFillCommandIso7816ProtocolTunnelClusterExtractSmartCard( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ISO7816_PROTOCOL_TUNNEL_CLUSTER_ID, \ + ZCL_EXTRACT_SMART_CARD_COMMAND_ID, \ + "" \ +); + + + +/** @brief The PublishPrice command is generated in response to receiving a Get Current Price command, in response to a Get Scheduled Prices command, and when an update to the pricing information is available from the commodity provider, either before or when a TOU price becomes active. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: PublishPrice*/ +// @param providerId uint32_t + +// @param rateLabel uint8_t * + +// @param issuerEventId uint32_t + +// @param currentTime uint32_t + +// @param unitOfMeasure uint8_t + +// @param currency uint16_t + +// @param priceTrailingDigitAndPriceTier uint8_t + +// @param numberOfPriceTiersAndRegisterTier uint8_t + +// @param startTime uint32_t + +// @param durationInMinutes uint16_t + +// @param price uint32_t + +// @param priceRatio uint8_t + +// @param generationPrice uint32_t + +// @param generationPriceRatio uint8_t + +// @param alternateCostDelivered uint32_t + +// @param alternateCostUnit uint8_t + +// @param alternateCostTrailingDigit uint8_t + +// @param numberOfBlockThresholds uint8_t + +// @param priceControl uint8_t + +// @param numberOfGenerationTiers uint8_t + +// @param generationTier uint8_t + +// @param extendedNumberOfPriceTiers uint8_t + +// @param extendedPriceTier uint8_t + +// @param extendedRegisterTier uint8_t + +#define emberAfFillCommandPriceClusterPublishPrice( \ + providerId, rateLabel, issuerEventId, currentTime, unitOfMeasure, currency, priceTrailingDigitAndPriceTier, numberOfPriceTiersAndRegisterTier, startTime, durationInMinutes, price, priceRatio, generationPrice, generationPriceRatio, alternateCostDelivered, alternateCostUnit, alternateCostTrailingDigit, numberOfBlockThresholds, priceControl, numberOfGenerationTiers, generationTier, extendedNumberOfPriceTiers, extendedPriceTier, extendedRegisterTier) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_PUBLISH_PRICE_COMMAND_ID, \ + "wswwuvuuwvwuwuwuuuuuuuuu", \ + providerId, rateLabel, issuerEventId, currentTime, unitOfMeasure, currency, priceTrailingDigitAndPriceTier, numberOfPriceTiersAndRegisterTier, startTime, durationInMinutes, price, priceRatio, generationPrice, generationPriceRatio, alternateCostDelivered, alternateCostUnit, alternateCostTrailingDigit, numberOfBlockThresholds, priceControl, numberOfGenerationTiers, generationTier, extendedNumberOfPriceTiers, extendedPriceTier, extendedRegisterTier); + + + +/** @brief The GetCurrentPrice command initiates a PublishPrice command for the current time. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: GetCurrentPrice*/ +// @param commandOptions uint8_t + +#define emberAfFillCommandPriceClusterGetCurrentPrice( \ + commandOptions) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_GET_CURRENT_PRICE_COMMAND_ID, \ + "u", \ + commandOptions); + + + +/** @brief The PublishBlockPeriod command is generated in response to receiving a GetBlockPeriod(s) command or when an update to the block tariff schedule is available from the commodity provider. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: PublishBlockPeriod*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param blockPeriodStartTime uint32_t + +// @param blockPeriodDuration uint32_t + +// @param blockPeriodControl uint8_t + +// @param blockPeriodDurationType uint8_t + +// @param tariffType uint8_t + +// @param tariffResolutionPeriod uint8_t + +#define emberAfFillCommandPriceClusterPublishBlockPeriod( \ + providerId, issuerEventId, blockPeriodStartTime, blockPeriodDuration, blockPeriodControl, blockPeriodDurationType, tariffType, tariffResolutionPeriod) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_PUBLISH_BLOCK_PERIOD_COMMAND_ID, \ + "wwwxuuuu", \ + providerId, issuerEventId, blockPeriodStartTime, blockPeriodDuration, blockPeriodControl, blockPeriodDurationType, tariffType, tariffResolutionPeriod); + + + +/** @brief The GetScheduledPrices command initiates a PublishPrice command for available price events. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: GetScheduledPrices*/ +// @param startTime uint32_t + +// @param numberOfEvents uint8_t + +#define emberAfFillCommandPriceClusterGetScheduledPrices( \ + startTime, numberOfEvents) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_GET_SCHEDULED_PRICES_COMMAND_ID, \ + "wu", \ + startTime, numberOfEvents); + + + +/** @brief The PublishConversionFactor command is sent in response to a GetConversionFactor command or if a new Conversion factor is available. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: PublishConversionFactor*/ +// @param issuerEventId uint32_t + +// @param startTime uint32_t + +// @param conversionFactor uint32_t + +// @param conversionFactorTrailingDigit uint8_t + +#define emberAfFillCommandPriceClusterPublishConversionFactor( \ + issuerEventId, startTime, conversionFactor, conversionFactorTrailingDigit) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_PUBLISH_CONVERSION_FACTOR_COMMAND_ID, \ + "wwwu", \ + issuerEventId, startTime, conversionFactor, conversionFactorTrailingDigit); + + + +/** @brief The PriceAcknowledgement command described provides the ability to acknowledge a previously sent PublishPrice command. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: PriceAcknowledgement*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param priceAckTime uint32_t + +// @param control uint8_t + +#define emberAfFillCommandPriceClusterPriceAcknowledgement( \ + providerId, issuerEventId, priceAckTime, control) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_PRICE_ACKNOWLEDGEMENT_COMMAND_ID, \ + "wwwu", \ + providerId, issuerEventId, priceAckTime, control); + + + +/** @brief The PublishCalorificValue command is sent in response to a GetCalorificValue command or if a new calorific value is available. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: PublishCalorificValue*/ +// @param issuerEventId uint32_t + +// @param startTime uint32_t + +// @param calorificValue uint32_t + +// @param calorificValueUnit uint8_t + +// @param calorificValueTrailingDigit uint8_t + +#define emberAfFillCommandPriceClusterPublishCalorificValue( \ + issuerEventId, startTime, calorificValue, calorificValueUnit, calorificValueTrailingDigit) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_PUBLISH_CALORIFIC_VALUE_COMMAND_ID, \ + "wwwuu", \ + issuerEventId, startTime, calorificValue, calorificValueUnit, calorificValueTrailingDigit); + + + +/** @brief The GetBlockPeriods command initiates a PublishBlockPeriod command for the currently scheduled block periods. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: GetBlockPeriods*/ +// @param startTime uint32_t + +// @param numberOfEvents uint8_t + +// @param tariffType uint8_t + +#define emberAfFillCommandPriceClusterGetBlockPeriods( \ + startTime, numberOfEvents, tariffType) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_GET_BLOCK_PERIODS_COMMAND_ID, \ + "wuu", \ + startTime, numberOfEvents, tariffType); + + + +/** @brief The PublishTariffInformation command is sent in response to a GetTariffInformation command or if new tariff information is available (including price matrix and block thresholds). +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: PublishTariffInformation*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param issuerTariffId uint32_t + +// @param startTime uint32_t + +// @param tariffTypeChargingScheme uint8_t + +// @param tariffLabel uint8_t * + +// @param numberOfPriceTiersInUse uint8_t + +// @param numberOfBlockThresholdsInUse uint8_t + +// @param unitOfMeasure uint8_t + +// @param currency uint16_t + +// @param priceTrailingDigit uint8_t + +// @param standingCharge uint32_t + +// @param tierBlockMode uint8_t + +// @param blockThresholdMultiplier uint32_t + +// @param blockThresholdDivisor uint32_t + +#define emberAfFillCommandPriceClusterPublishTariffInformation( \ + providerId, issuerEventId, issuerTariffId, startTime, tariffTypeChargingScheme, tariffLabel, numberOfPriceTiersInUse, numberOfBlockThresholdsInUse, unitOfMeasure, currency, priceTrailingDigit, standingCharge, tierBlockMode, blockThresholdMultiplier, blockThresholdDivisor) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_PUBLISH_TARIFF_INFORMATION_COMMAND_ID, \ + "wwwwusuuuvuwuxx", \ + providerId, issuerEventId, issuerTariffId, startTime, tariffTypeChargingScheme, tariffLabel, numberOfPriceTiersInUse, numberOfBlockThresholdsInUse, unitOfMeasure, currency, priceTrailingDigit, standingCharge, tierBlockMode, blockThresholdMultiplier, blockThresholdDivisor); + + + +/** @brief The GetConversionFactor command initiates a PublishConversionFactor command for the scheduled conversion factor updates. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: GetConversionFactor*/ +// @param earliestStartTime uint32_t + +// @param minIssuerEventId uint32_t + +// @param numberOfCommands uint8_t + +#define emberAfFillCommandPriceClusterGetConversionFactor( \ + earliestStartTime, minIssuerEventId, numberOfCommands) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_GET_CONVERSION_FACTOR_COMMAND_ID, \ + "wwu", \ + earliestStartTime, minIssuerEventId, numberOfCommands); + + + +/** @brief PublishPriceMatrix command is used to publish the Block Price Information Set (up to 15 tiers x 15 blocks) and the Extended Price Information Set (up to 48 tiers). The PublishPriceMatrix command is sent in response to a GetPriceMatrix command. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: PublishPriceMatrix*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param startTime uint32_t + +// @param issuerTariffId uint32_t + +// @param commandIndex uint8_t + +// @param numberOfCommands uint8_t + +// @param subPayloadControl uint8_t + +// @param payload /* TYPE WARNING: array array defaults to */ uint8_t * +// @param payloadLen uint16_t +#define emberAfFillCommandPriceClusterPublishPriceMatrix( \ + providerId, issuerEventId, startTime, issuerTariffId, commandIndex, numberOfCommands, subPayloadControl, payload, payloadLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_PUBLISH_PRICE_MATRIX_COMMAND_ID, \ + "wwwwuuub", \ + providerId, issuerEventId, startTime, issuerTariffId, commandIndex, numberOfCommands, subPayloadControl, payload, payloadLen); + + + +/** @brief The GetCalorificValue command initiates a PublishCalorificValue command for the scheduled conversion factor updates. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: GetCalorificValue*/ +// @param earliestStartTime uint32_t + +// @param minIssuerEventId uint32_t + +// @param numberOfCommands uint8_t + +#define emberAfFillCommandPriceClusterGetCalorificValue( \ + earliestStartTime, minIssuerEventId, numberOfCommands) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_GET_CALORIFIC_VALUE_COMMAND_ID, \ + "wwu", \ + earliestStartTime, minIssuerEventId, numberOfCommands); + + + +/** @brief The PublishBlockThreshold command is sent in response to a GetBlockThreshold command. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: PublishBlockThresholds*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param startTime uint32_t + +// @param issuerTariffId uint32_t + +// @param commandIndex uint8_t + +// @param numberOfCommands uint8_t + +// @param subPayloadControl uint8_t + +// @param payload /* TYPE WARNING: array array defaults to */ uint8_t * +// @param payloadLen uint16_t +#define emberAfFillCommandPriceClusterPublishBlockThresholds( \ + providerId, issuerEventId, startTime, issuerTariffId, commandIndex, numberOfCommands, subPayloadControl, payload, payloadLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_PUBLISH_BLOCK_THRESHOLDS_COMMAND_ID, \ + "wwwwuuub", \ + providerId, issuerEventId, startTime, issuerTariffId, commandIndex, numberOfCommands, subPayloadControl, payload, payloadLen); + + + +/** @brief The GetTariffInformation command initiates a PublishTariffInformation command for the scheduled tariff updates. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: GetTariffInformation*/ +// @param earliestStartTime uint32_t + +// @param minIssuerEventId uint32_t + +// @param numberOfCommands uint8_t + +// @param tariffType uint8_t + +#define emberAfFillCommandPriceClusterGetTariffInformation( \ + earliestStartTime, minIssuerEventId, numberOfCommands, tariffType) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_GET_TARIFF_INFORMATION_COMMAND_ID, \ + "wwuu", \ + earliestStartTime, minIssuerEventId, numberOfCommands, tariffType); + + + +/** @brief The PublishCO2Value command is sent in response to a GetCO2Value command or if a new CO2 conversion factor is available. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: PublishCO2Value*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param startTime uint32_t + +// @param tariffType uint8_t + +// @param cO2Value uint32_t + +// @param cO2ValueUnit uint8_t + +// @param cO2ValueTrailingDigit uint8_t + +#define emberAfFillCommandPriceClusterPublishCO2Value( \ + providerId, issuerEventId, startTime, tariffType, cO2Value, cO2ValueUnit, cO2ValueTrailingDigit) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_PUBLISH_CO2_VALUE_COMMAND_ID, \ + "wwwuwuu", \ + providerId, issuerEventId, startTime, tariffType, cO2Value, cO2ValueUnit, cO2ValueTrailingDigit); + + + +/** @brief The GetPriceMatrix command initiates a PublishPriceMatrix command for the scheduled Price Matrix updates. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: GetPriceMatrix*/ +// @param issuerTariffId uint32_t + +#define emberAfFillCommandPriceClusterGetPriceMatrix( \ + issuerTariffId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_GET_PRICE_MATRIX_COMMAND_ID, \ + "w", \ + issuerTariffId); + + + +/** @brief The PublishTierLabels command is generated in response to receiving a GetTierLabels command or when there is a tier label change. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: PublishTierLabels*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param issuerTariffId uint32_t + +// @param commandIndex uint8_t + +// @param numberOfCommands uint8_t + +// @param numberOfLabels uint8_t + +// @param tierLabelsPayload /* TYPE WARNING: array array defaults to */ uint8_t * +// @param tierLabelsPayloadLen uint16_t +#define emberAfFillCommandPriceClusterPublishTierLabels( \ + providerId, issuerEventId, issuerTariffId, commandIndex, numberOfCommands, numberOfLabels, tierLabelsPayload, tierLabelsPayloadLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_PUBLISH_TIER_LABELS_COMMAND_ID, \ + "wwwuuub", \ + providerId, issuerEventId, issuerTariffId, commandIndex, numberOfCommands, numberOfLabels, tierLabelsPayload, tierLabelsPayloadLen); + + + +/** @brief The GetBlockThresholds command initiates a PublishBlockThreshold command for the scheduled Block Threshold updates. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: GetBlockThresholds*/ +// @param issuerTariffId uint32_t + +#define emberAfFillCommandPriceClusterGetBlockThresholds( \ + issuerTariffId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_GET_BLOCK_THRESHOLDS_COMMAND_ID, \ + "w", \ + issuerTariffId); + + + +/** @brief The PublishBillingPeriod command is generated in response to receiving a GetBillingPeriod(s) command or when an update to the Billing schedule is available from the commodity Supplier. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: PublishBillingPeriod*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param billingPeriodStartTime uint32_t + +// @param billingPeriodDuration uint32_t + +// @param billingPeriodDurationType uint8_t + +// @param tariffType uint8_t + +#define emberAfFillCommandPriceClusterPublishBillingPeriod( \ + providerId, issuerEventId, billingPeriodStartTime, billingPeriodDuration, billingPeriodDurationType, tariffType) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_PUBLISH_BILLING_PERIOD_COMMAND_ID, \ + "wwwxuu", \ + providerId, issuerEventId, billingPeriodStartTime, billingPeriodDuration, billingPeriodDurationType, tariffType); + + + +/** @brief The GetCO2Value command initiates a PublishCO2Value command for the scheduled CO2 conversion factor updates. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: GetCO2Value*/ +// @param earliestStartTime uint32_t + +// @param minIssuerEventId uint32_t + +// @param numberOfCommands uint8_t + +// @param tariffType uint8_t + +#define emberAfFillCommandPriceClusterGetCO2Value( \ + earliestStartTime, minIssuerEventId, numberOfCommands, tariffType) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_GET_CO2_VALUE_COMMAND_ID, \ + "wwuu", \ + earliestStartTime, minIssuerEventId, numberOfCommands, tariffType); + + + +/** @brief The PublishConsolidatedBill command is used to make consolidated billing information of previous billing periods available to other end devices. This command is issued in response to a GetConsolidatedBill command or if new billing information is available. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: PublishConsolidatedBill*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param billingPeriodStartTime uint32_t + +// @param billingPeriodDuration uint32_t + +// @param billingPeriodDurationType uint8_t + +// @param tariffType uint8_t + +// @param consolidatedBill uint32_t + +// @param currency uint16_t + +// @param billTrailingDigit uint8_t + +#define emberAfFillCommandPriceClusterPublishConsolidatedBill( \ + providerId, issuerEventId, billingPeriodStartTime, billingPeriodDuration, billingPeriodDurationType, tariffType, consolidatedBill, currency, billTrailingDigit) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_PUBLISH_CONSOLIDATED_BILL_COMMAND_ID, \ + "wwwxuuwvu", \ + providerId, issuerEventId, billingPeriodStartTime, billingPeriodDuration, billingPeriodDurationType, tariffType, consolidatedBill, currency, billTrailingDigit); + + + +/** @brief The GetTierLabels command allows a client to retrieve the tier labels associated with a given tariff; this command initiates a PublishTierLabels command from the server. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: GetTierLabels*/ +// @param issuerTariffId uint32_t + +#define emberAfFillCommandPriceClusterGetTierLabels( \ + issuerTariffId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_GET_TIER_LABELS_COMMAND_ID, \ + "w", \ + issuerTariffId); + + + +/** @brief The PublishCPPEvent command is sent from an ESI to its price clients to notify them of a Critical Peak Pricing event. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: PublishCppEvent*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param startTime uint32_t + +// @param durationInMinutes uint16_t + +// @param tariffType uint8_t + +// @param cppPriceTier uint8_t + +// @param cppAuth uint8_t + +#define emberAfFillCommandPriceClusterPublishCppEvent( \ + providerId, issuerEventId, startTime, durationInMinutes, tariffType, cppPriceTier, cppAuth) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_PUBLISH_CPP_EVENT_COMMAND_ID, \ + "wwwvuuu", \ + providerId, issuerEventId, startTime, durationInMinutes, tariffType, cppPriceTier, cppAuth); + + + +/** @brief The GetBillingPeriod command initiates one or more PublishBillingPeriod commands for the currently scheduled billing periods. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: GetBillingPeriod*/ +// @param earliestStartTime uint32_t + +// @param minIssuerEventId uint32_t + +// @param numberOfCommands uint8_t + +// @param tariffType uint8_t + +#define emberAfFillCommandPriceClusterGetBillingPeriod( \ + earliestStartTime, minIssuerEventId, numberOfCommands, tariffType) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_GET_BILLING_PERIOD_COMMAND_ID, \ + "wwuu", \ + earliestStartTime, minIssuerEventId, numberOfCommands, tariffType); + + + +/** @brief The PublishCreditPayment command is used to update the credit payment information is available. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: PublishCreditPayment*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param creditPaymentDueDate uint32_t + +// @param creditPaymentOverDueAmount uint32_t + +// @param creditPaymentStatus uint8_t + +// @param creditPayment uint32_t + +// @param creditPaymentDate uint32_t + +// @param creditPaymentRef uint8_t * + +#define emberAfFillCommandPriceClusterPublishCreditPayment( \ + providerId, issuerEventId, creditPaymentDueDate, creditPaymentOverDueAmount, creditPaymentStatus, creditPayment, creditPaymentDate, creditPaymentRef) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_PUBLISH_CREDIT_PAYMENT_COMMAND_ID, \ + "wwwwuwws", \ + providerId, issuerEventId, creditPaymentDueDate, creditPaymentOverDueAmount, creditPaymentStatus, creditPayment, creditPaymentDate, creditPaymentRef); + + + +/** @brief The GetConsolidatedBill command initiates one or more PublishConsolidatedBill commands with the requested billing information. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: GetConsolidatedBill*/ +// @param earliestStartTime uint32_t + +// @param minIssuerEventId uint32_t + +// @param numberOfCommands uint8_t + +// @param tariffType uint8_t + +#define emberAfFillCommandPriceClusterGetConsolidatedBill( \ + earliestStartTime, minIssuerEventId, numberOfCommands, tariffType) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_GET_CONSOLIDATED_BILL_COMMAND_ID, \ + "wwuu", \ + earliestStartTime, minIssuerEventId, numberOfCommands, tariffType); + + + +/** @brief The PublishCurrencyConversion command is sent in response to a GetCurrencyConversion command or when a new currency becomes available. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: PublishCurrencyConversion*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param startTime uint32_t + +// @param oldCurrency uint16_t + +// @param newCurrency uint16_t + +// @param conversionFactor uint32_t + +// @param conversionFactorTrailingDigit uint8_t + +// @param currencyChangeControlFlags uint32_t + +#define emberAfFillCommandPriceClusterPublishCurrencyConversion( \ + providerId, issuerEventId, startTime, oldCurrency, newCurrency, conversionFactor, conversionFactorTrailingDigit, currencyChangeControlFlags) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_PUBLISH_CURRENCY_CONVERSION_COMMAND_ID, \ + "wwwvvwuw", \ + providerId, issuerEventId, startTime, oldCurrency, newCurrency, conversionFactor, conversionFactorTrailingDigit, currencyChangeControlFlags); + + + +/** @brief The CPPEventResponse command is sent from a Client (IHD) to the ESI to notify it of a Critical Peak Pricing event authorization. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: CppEventResponse*/ +// @param issuerEventId uint32_t + +// @param cppAuth uint8_t + +#define emberAfFillCommandPriceClusterCppEventResponse( \ + issuerEventId, cppAuth) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_CPP_EVENT_RESPONSE_COMMAND_ID, \ + "wu", \ + issuerEventId, cppAuth); + + + +/** @brief The CancelTariff command indicates that all data associated with a particular tariff instance should be discarded. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: CancelTariff*/ +// @param providerId uint32_t + +// @param issuerTariffId uint32_t + +// @param tariffType uint8_t + +#define emberAfFillCommandPriceClusterCancelTariff( \ + providerId, issuerTariffId, tariffType) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_CANCEL_TARIFF_COMMAND_ID, \ + "wwu", \ + providerId, issuerTariffId, tariffType); + + + +/** @brief The GetCreditPayment command initiates PublishCreditPayment commands for the requested credit payment information. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: GetCreditPayment*/ +// @param latestEndTime uint32_t + +// @param numberOfRecords uint8_t + +#define emberAfFillCommandPriceClusterGetCreditPayment( \ + latestEndTime, numberOfRecords) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_GET_CREDIT_PAYMENT_COMMAND_ID, \ + "wu", \ + latestEndTime, numberOfRecords); + + + +/** @brief The GetCurrencyConversionCommand command initiates a PublishCurrencyConversion command for the currency conversion factor updates. A server shall be capable of storing both the old and the new currencies. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: GetCurrencyConversionCommand*/ +#define emberAfFillCommandPriceClusterGetCurrencyConversionCommand( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_GET_CURRENCY_CONVERSION_COMMAND_COMMAND_ID, \ + "" \ +); + + + +/** @brief The GetTariffCancellation command initiates the return of the last CancelTariff command held on the associated server. +* Cluster: Price, The Price Cluster provides the mechanism for communicating Gas, Energy, or Water pricing information within the premises. +* Command: GetTariffCancellation*/ +#define emberAfFillCommandPriceClusterGetTariffCancellation( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PRICE_CLUSTER_ID, \ + ZCL_GET_TARIFF_CANCELLATION_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for LoadControlEvent +* Cluster: Demand Response and Load Control, This cluster provides an interface to the functionality of Smart Energy Demand Response and Load Control. Devices targeted by this cluster include thermostats and devices that support load control. +* Command: LoadControlEvent*/ +// @param issuerEventId uint32_t + +// @param deviceClass uint16_t + +// @param utilityEnrollmentGroup uint8_t + +// @param startTime uint32_t + +// @param durationInMinutes uint16_t + +// @param criticalityLevel uint8_t + +// @param coolingTemperatureOffset uint8_t + +// @param heatingTemperatureOffset uint8_t + +// @param coolingTemperatureSetPoint int16_t + +// @param heatingTemperatureSetPoint int16_t + +// @param averageLoadAdjustmentPercentage int8_t + +// @param dutyCycle uint8_t + +// @param eventControl uint8_t + +#define emberAfFillCommandDemandResponseLoadControlClusterLoadControlEvent( \ + issuerEventId, deviceClass, utilityEnrollmentGroup, startTime, durationInMinutes, criticalityLevel, coolingTemperatureOffset, heatingTemperatureOffset, coolingTemperatureSetPoint, heatingTemperatureSetPoint, averageLoadAdjustmentPercentage, dutyCycle, eventControl) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER_ID, \ + ZCL_LOAD_CONTROL_EVENT_COMMAND_ID, \ + "wvuwvuuuvvuuu", \ + issuerEventId, deviceClass, utilityEnrollmentGroup, startTime, durationInMinutes, criticalityLevel, coolingTemperatureOffset, heatingTemperatureOffset, coolingTemperatureSetPoint, heatingTemperatureSetPoint, averageLoadAdjustmentPercentage, dutyCycle, eventControl); + + + +/** @brief Command description for ReportEventStatus +* Cluster: Demand Response and Load Control, This cluster provides an interface to the functionality of Smart Energy Demand Response and Load Control. Devices targeted by this cluster include thermostats and devices that support load control. +* Command: ReportEventStatus*/ +// @param issuerEventId uint32_t + +// @param eventStatus uint8_t + +// @param eventStatusTime uint32_t + +// @param criticalityLevelApplied uint8_t + +// @param coolingTemperatureSetPointApplied uint16_t + +// @param heatingTemperatureSetPointApplied uint16_t + +// @param averageLoadAdjustmentPercentageApplied int8_t + +// @param dutyCycleApplied uint8_t + +// @param eventControl uint8_t + +// @param signatureType uint8_t + +// @param signature Signature + +#define emberAfFillCommandDemandResponseLoadControlClusterReportEventStatus( \ + issuerEventId, eventStatus, eventStatusTime, criticalityLevelApplied, coolingTemperatureSetPointApplied, heatingTemperatureSetPointApplied, averageLoadAdjustmentPercentageApplied, dutyCycleApplied, eventControl, signatureType, signature) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER_ID, \ + ZCL_REPORT_EVENT_STATUS_COMMAND_ID, \ + "wuwuvvuuuub", \ + issuerEventId, eventStatus, eventStatusTime, criticalityLevelApplied, coolingTemperatureSetPointApplied, heatingTemperatureSetPointApplied, averageLoadAdjustmentPercentageApplied, dutyCycleApplied, eventControl, signatureType, signature); + + + +/** @brief Command description for CancelLoadControlEvent +* Cluster: Demand Response and Load Control, This cluster provides an interface to the functionality of Smart Energy Demand Response and Load Control. Devices targeted by this cluster include thermostats and devices that support load control. +* Command: CancelLoadControlEvent*/ +// @param issuerEventId uint32_t + +// @param deviceClass uint16_t + +// @param utilityEnrollmentGroup uint8_t + +// @param cancelControl uint8_t + +// @param effectiveTime uint32_t + +#define emberAfFillCommandDemandResponseLoadControlClusterCancelLoadControlEvent( \ + issuerEventId, deviceClass, utilityEnrollmentGroup, cancelControl, effectiveTime) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER_ID, \ + ZCL_CANCEL_LOAD_CONTROL_EVENT_COMMAND_ID, \ + "wvuuw", \ + issuerEventId, deviceClass, utilityEnrollmentGroup, cancelControl, effectiveTime); + + + +/** @brief Command description for GetScheduledEvents +* Cluster: Demand Response and Load Control, This cluster provides an interface to the functionality of Smart Energy Demand Response and Load Control. Devices targeted by this cluster include thermostats and devices that support load control. +* Command: GetScheduledEvents*/ +// @param startTime uint32_t + +// @param numberOfEvents uint8_t + +// @param issuerEventId uint32_t + +#define emberAfFillCommandDemandResponseLoadControlClusterGetScheduledEvents( \ + startTime, numberOfEvents, issuerEventId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER_ID, \ + ZCL_GET_SCHEDULED_EVENTS_COMMAND_ID, \ + "wuw", \ + startTime, numberOfEvents, issuerEventId); + + + +/** @brief Command description for CancelAllLoadControlEvents +* Cluster: Demand Response and Load Control, This cluster provides an interface to the functionality of Smart Energy Demand Response and Load Control. Devices targeted by this cluster include thermostats and devices that support load control. +* Command: CancelAllLoadControlEvents*/ +// @param cancelControl uint8_t + +#define emberAfFillCommandDemandResponseLoadControlClusterCancelAllLoadControlEvents( \ + cancelControl) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER_ID, \ + ZCL_CANCEL_ALL_LOAD_CONTROL_EVENTS_COMMAND_ID, \ + "u", \ + cancelControl); + + + +/** @brief This command is generated when the Client command GetProfile is received. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: GetProfileResponse*/ +// @param endTime uint32_t + +// @param status uint8_t + +// @param profileIntervalPeriod uint8_t + +// @param numberOfPeriodsDelivered uint8_t + +// @param intervals /* TYPE WARNING: array array defaults to */ uint8_t * +// @param intervalsLen uint16_t +#define emberAfFillCommandSimpleMeteringClusterGetProfileResponse( \ + endTime, status, profileIntervalPeriod, numberOfPeriodsDelivered, intervals, intervalsLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_GET_PROFILE_RESPONSE_COMMAND_ID, \ + "wuuub", \ + endTime, status, profileIntervalPeriod, numberOfPeriodsDelivered, intervals, intervalsLen); + + + +/** @brief The GetProfile command is generated when a client device wishes to retrieve a list of captured Energy, Gas or water consumption for profiling purposes. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: GetProfile*/ +// @param intervalChannel uint8_t + +// @param endTime uint32_t + +// @param numberOfPeriods uint8_t + +#define emberAfFillCommandSimpleMeteringClusterGetProfile( \ + intervalChannel, endTime, numberOfPeriods) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_GET_PROFILE_COMMAND_ID, \ + "uwu", \ + intervalChannel, endTime, numberOfPeriods); + + + +/** @brief This command is used to request the ESI to mirror Metering Device data. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: RequestMirror*/ +#define emberAfFillCommandSimpleMeteringClusterRequestMirror( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_REQUEST_MIRROR_COMMAND_ID, \ + "" \ +); + + + +/** @brief The Request Mirror Response Command allows the ESI to inform a sleepy Metering Device it has the ability to store and mirror its data. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: RequestMirrorResponse*/ +// @param endpointId uint16_t + +#define emberAfFillCommandSimpleMeteringClusterRequestMirrorResponse( \ + endpointId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_REQUEST_MIRROR_RESPONSE_COMMAND_ID, \ + "v", \ + endpointId); + + + +/** @brief This command is used to request the ESI to remove its mirror of Metering Device data. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: RemoveMirror*/ +#define emberAfFillCommandSimpleMeteringClusterRemoveMirror( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_REMOVE_MIRROR_COMMAND_ID, \ + "" \ +); + + + +/** @brief The Mirror Removed Command allows the ESI to inform a sleepy Metering Device mirroring support has been removed or halted. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: MirrorRemoved*/ +// @param endpointId uint16_t + +#define emberAfFillCommandSimpleMeteringClusterMirrorRemoved( \ + endpointId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_MIRROR_REMOVED_COMMAND_ID, \ + "v", \ + endpointId); + + + +/** @brief This command is generated when the client command Request Fast Poll Mode is received. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: RequestFastPollModeResponse*/ +// @param appliedUpdatePeriod uint8_t + +// @param fastPollModeEndtime uint32_t + +#define emberAfFillCommandSimpleMeteringClusterRequestFastPollModeResponse( \ + appliedUpdatePeriod, fastPollModeEndtime) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_REQUEST_FAST_POLL_MODE_RESPONSE_COMMAND_ID, \ + "uw", \ + appliedUpdatePeriod, fastPollModeEndtime); + + + +/** @brief The Request Fast Poll Mode command is generated when the metering client wishes to receive near real-time updates of InstantaneousDemand. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: RequestFastPollMode*/ +// @param fastPollUpdatePeriod uint8_t + +// @param duration uint8_t + +#define emberAfFillCommandSimpleMeteringClusterRequestFastPollMode( \ + fastPollUpdatePeriod, duration) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_REQUEST_FAST_POLL_MODE_COMMAND_ID, \ + "uu", \ + fastPollUpdatePeriod, duration); + + + +/** @brief This command is generated in response to a ScheduleSnapshot command, and is sent to confirm whether the requested snapshot schedule has been set up. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: ScheduleSnapshotResponse*/ +// @param issuerEventId uint32_t + +// @param snapshotResponsePayload /* TYPE WARNING: array array defaults to */ uint8_t * +// @param snapshotResponsePayloadLen uint16_t +#define emberAfFillCommandSimpleMeteringClusterScheduleSnapshotResponse( \ + issuerEventId, snapshotResponsePayload, snapshotResponsePayloadLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_SCHEDULE_SNAPSHOT_RESPONSE_COMMAND_ID, \ + "wb", \ + issuerEventId, snapshotResponsePayload, snapshotResponsePayloadLen); + + + +/** @brief This command is used to set up a schedule of when the device shall create snapshot data. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: ScheduleSnapshot*/ +// @param issuerEventId uint32_t + +// @param commandIndex uint8_t + +// @param commandCount uint8_t + +// @param snapshotSchedulePayload /* TYPE WARNING: array array defaults to */ uint8_t * +// @param snapshotSchedulePayloadLen uint16_t +#define emberAfFillCommandSimpleMeteringClusterScheduleSnapshot( \ + issuerEventId, commandIndex, commandCount, snapshotSchedulePayload, snapshotSchedulePayloadLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_SCHEDULE_SNAPSHOT_COMMAND_ID, \ + "wuub", \ + issuerEventId, commandIndex, commandCount, snapshotSchedulePayload, snapshotSchedulePayloadLen); + + + +/** @brief This command is generated in response to a TakeSnapshot command, and is sent to confirm whether the requested snapshot has been accepted and successfully taken. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: TakeSnapshotResponse*/ +// @param snapshotId uint32_t + +// @param snapshotConfirmation uint8_t + +#define emberAfFillCommandSimpleMeteringClusterTakeSnapshotResponse( \ + snapshotId, snapshotConfirmation) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_TAKE_SNAPSHOT_RESPONSE_COMMAND_ID, \ + "wu", \ + snapshotId, snapshotConfirmation); + + + +/** @brief This command is used to instruct the cluster server to take a single snapshot. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: TakeSnapshot*/ +// @param snapshotCause uint32_t + +#define emberAfFillCommandSimpleMeteringClusterTakeSnapshot( \ + snapshotCause) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_TAKE_SNAPSHOT_COMMAND_ID, \ + "w", \ + snapshotCause); + + + +/** @brief This command is generated in response to a GetSnapshot command. It is used to return a single snapshot to the client. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: PublishSnapshot*/ +// @param snapshotId uint32_t + +// @param snapshotTime uint32_t + +// @param totalSnapshotsFound uint8_t + +// @param commandIndex uint8_t + +// @param totalCommands uint8_t + +// @param snapshotCause uint32_t + +// @param snapshotPayloadType uint8_t + +// @param snapshotPayload /* TYPE WARNING: array array defaults to */ uint8_t * +// @param snapshotPayloadLen uint16_t +#define emberAfFillCommandSimpleMeteringClusterPublishSnapshot( \ + snapshotId, snapshotTime, totalSnapshotsFound, commandIndex, totalCommands, snapshotCause, snapshotPayloadType, snapshotPayload, snapshotPayloadLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_PUBLISH_SNAPSHOT_COMMAND_ID, \ + "wwuuuwub", \ + snapshotId, snapshotTime, totalSnapshotsFound, commandIndex, totalCommands, snapshotCause, snapshotPayloadType, snapshotPayload, snapshotPayloadLen); + + + +/** @brief This command is used to request snapshot data from the cluster server. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: GetSnapshot*/ +// @param earliestStartTime uint32_t + +// @param latestEndTime uint32_t + +// @param snapshotOffset uint8_t + +// @param snapshotCause uint32_t + +#define emberAfFillCommandSimpleMeteringClusterGetSnapshot( \ + earliestStartTime, latestEndTime, snapshotOffset, snapshotCause) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_GET_SNAPSHOT_COMMAND_ID, \ + "wwuw", \ + earliestStartTime, latestEndTime, snapshotOffset, snapshotCause); + + + +/** @brief This command is used to send the requested sample data to the client. It is generated in response to a GetSampledData command. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: GetSampledDataResponse*/ +// @param sampleId uint16_t + +// @param sampleStartTime uint32_t + +// @param sampleType uint8_t + +// @param sampleRequestInterval uint16_t + +// @param numberOfSamples uint16_t + +// @param samples /* TYPE WARNING: array array defaults to */ uint8_t * +// @param samplesLen uint16_t +#define emberAfFillCommandSimpleMeteringClusterGetSampledDataResponse( \ + sampleId, sampleStartTime, sampleType, sampleRequestInterval, numberOfSamples, samples, samplesLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_GET_SAMPLED_DATA_RESPONSE_COMMAND_ID, \ + "vwuvvb", \ + sampleId, sampleStartTime, sampleType, sampleRequestInterval, numberOfSamples, samples, samplesLen); + + + +/** @brief The sampling mechanism allows a set of samples of the specified type of data to be taken, commencing at the stipulated start time. This mechanism may run concurrently with the capturing of profile data, and may refer the same parameters, albeit possibly at a different sampling rate. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: StartSampling*/ +// @param issuerEventId uint32_t + +// @param startSamplingTime uint32_t + +// @param sampleType uint8_t + +// @param sampleRequestInterval uint16_t + +// @param maxNumberOfSamples uint16_t + +#define emberAfFillCommandSimpleMeteringClusterStartSampling( \ + issuerEventId, startSamplingTime, sampleType, sampleRequestInterval, maxNumberOfSamples) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_START_SAMPLING_COMMAND_ID, \ + "wwuvv", \ + issuerEventId, startSamplingTime, sampleType, sampleRequestInterval, maxNumberOfSamples); + + + +/** @brief ConfigureMirror is sent to the mirror once the mirror has been created. The command deals with the operational configuration of the Mirror. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: ConfigureMirror*/ +// @param issuerEventId uint32_t + +// @param reportingInterval uint32_t + +// @param mirrorNotificationReporting uint8_t + +// @param notificationScheme uint8_t + +#define emberAfFillCommandSimpleMeteringClusterConfigureMirror( \ + issuerEventId, reportingInterval, mirrorNotificationReporting, notificationScheme) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_CONFIGURE_MIRROR_COMMAND_ID, \ + "wxuu", \ + issuerEventId, reportingInterval, mirrorNotificationReporting, notificationScheme); + + + +/** @brief This command is used to request sampled data from the server. Note that it is the responsibility of the client to ensure that it does not request more samples than can be held in a single command payload. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: GetSampledData*/ +// @param sampleId uint16_t + +// @param earliestSampleTime uint32_t + +// @param sampleType uint8_t + +// @param numberOfSamples uint16_t + +#define emberAfFillCommandSimpleMeteringClusterGetSampledData( \ + sampleId, earliestSampleTime, sampleType, numberOfSamples) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_GET_SAMPLED_DATA_COMMAND_ID, \ + "vwuv", \ + sampleId, earliestSampleTime, sampleType, numberOfSamples); + + + +/** @brief The ConfigureNotificationScheme is sent to the mirror once the mirror has been created. The command deals with the operational configuration of the Mirror and the device that reports to the mirror. No default schemes are allowed to be overwritten. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: ConfigureNotificationScheme*/ +// @param issuerEventId uint32_t + +// @param notificationScheme uint8_t + +// @param notificationFlagOrder uint32_t + +#define emberAfFillCommandSimpleMeteringClusterConfigureNotificationScheme( \ + issuerEventId, notificationScheme, notificationFlagOrder) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_CONFIGURE_NOTIFICATION_SCHEME_COMMAND_ID, \ + "wuw", \ + issuerEventId, notificationScheme, notificationFlagOrder); + + + +/** @brief This command is sent in response to the ReportAttribute command when the MirrorReporting attribute is set. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: MirrorReportAttributeResponse*/ +// @param notificationScheme uint8_t + +// @param notificationFlags /* TYPE WARNING: array array defaults to */ uint8_t * +// @param notificationFlagsLen uint16_t +#define emberAfFillCommandSimpleMeteringClusterMirrorReportAttributeResponse( \ + notificationScheme, notificationFlags, notificationFlagsLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_MIRROR_REPORT_ATTRIBUTE_RESPONSE_COMMAND_ID, \ + "ub", \ + notificationScheme, notificationFlags, notificationFlagsLen); + + + +/** @brief The ConfigureNotificationFlags command is used to set the commands relating to the bit value for each NotificationFlags attribute that the scheme is proposing to use. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: ConfigureNotificationFlags*/ +// @param issuerEventId uint32_t + +// @param notificationScheme uint8_t + +// @param notificationFlagAttributeId uint16_t + +// @param clusterId uint16_t + +// @param manufacturerCode uint16_t + +// @param numberOfCommands uint8_t + +// @param commandIds /* TYPE WARNING: array array defaults to */ uint8_t * +// @param commandIdsLen uint16_t +#define emberAfFillCommandSimpleMeteringClusterConfigureNotificationFlags( \ + issuerEventId, notificationScheme, notificationFlagAttributeId, clusterId, manufacturerCode, numberOfCommands, commandIds, commandIdsLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_CONFIGURE_NOTIFICATION_FLAGS_COMMAND_ID, \ + "wuvvvub", \ + issuerEventId, notificationScheme, notificationFlagAttributeId, clusterId, manufacturerCode, numberOfCommands, commandIds, commandIdsLen); + + + +/** @brief The ResetLoadLimitCounter command shall cause the LoadLimitCounter attribute to be reset. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: ResetLoadLimitCounter*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +#define emberAfFillCommandSimpleMeteringClusterResetLoadLimitCounter( \ + providerId, issuerEventId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_RESET_LOAD_LIMIT_COUNTER_COMMAND_ID, \ + "ww", \ + providerId, issuerEventId); + + + +/** @brief The GetNotifiedMessage command is used only when a BOMD is being mirrored. This command provides a method for the BOMD to notify the Mirror message queue that it wants to receive commands that the Mirror has queued. The Notification flags set within the command shall inform the mirror of the commands that the BOMD is requesting. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: GetNotifiedMessage*/ +// @param notificationScheme uint8_t + +// @param notificationFlagAttributeId uint16_t + +// @param notificationFlagsN uint32_t + +#define emberAfFillCommandSimpleMeteringClusterGetNotifiedMessage( \ + notificationScheme, notificationFlagAttributeId, notificationFlagsN) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_GET_NOTIFIED_MESSAGE_COMMAND_ID, \ + "uvw", \ + notificationScheme, notificationFlagAttributeId, notificationFlagsN); + + + +/** @brief This command is sent from the Head-end or ESI to the Metering Device to instruct it to change the status of the valve or load switch, i.e. the supply. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: ChangeSupply*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param requestDateTime uint32_t + +// @param implementationDateTime uint32_t + +// @param proposedSupplyStatus uint8_t + +// @param supplyControlBits uint8_t + +#define emberAfFillCommandSimpleMeteringClusterChangeSupply( \ + providerId, issuerEventId, requestDateTime, implementationDateTime, proposedSupplyStatus, supplyControlBits) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_CHANGE_SUPPLY_COMMAND_ID, \ + "wwwwuu", \ + providerId, issuerEventId, requestDateTime, implementationDateTime, proposedSupplyStatus, supplyControlBits); + + + +/** @brief This command is transmitted by a Metering Device in response to a ChangeSupply command. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: SupplyStatusResponse*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param implementationDateTime uint32_t + +// @param supplyStatus uint8_t + +#define emberAfFillCommandSimpleMeteringClusterSupplyStatusResponse( \ + providerId, issuerEventId, implementationDateTime, supplyStatus) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_SUPPLY_STATUS_RESPONSE_COMMAND_ID, \ + "wwwu", \ + providerId, issuerEventId, implementationDateTime, supplyStatus); + + + +/** @brief This command is a simplified version of the ChangeSupply command, intended to be sent from an IHD to a meter as the consequence of a user action on the IHD. Its purpose is to provide a local disconnection/reconnection button on the IHD in addition to the one on the meter. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: LocalChangeSupply*/ +// @param proposedSupplyStatus uint8_t + +#define emberAfFillCommandSimpleMeteringClusterLocalChangeSupply( \ + proposedSupplyStatus) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_LOCAL_CHANGE_SUPPLY_COMMAND_ID, \ + "u", \ + proposedSupplyStatus); + + + +/** @brief This command is transmitted by a Metering Device in response to a StartSampling command. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: StartSamplingResponse*/ +// @param sampleId uint16_t + +#define emberAfFillCommandSimpleMeteringClusterStartSamplingResponse( \ + sampleId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_START_SAMPLING_RESPONSE_COMMAND_ID, \ + "v", \ + sampleId); + + + +/** @brief This command is used to specify the required status of the supply following the occurance of certain events on the meter. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: SetSupplyStatus*/ +// @param issuerEventId uint32_t + +// @param supplyTamperState uint8_t + +// @param supplyDepletionState uint8_t + +// @param supplyUncontrolledFlowState uint8_t + +// @param loadLimitSupplyState uint8_t + +#define emberAfFillCommandSimpleMeteringClusterSetSupplyStatus( \ + issuerEventId, supplyTamperState, supplyDepletionState, supplyUncontrolledFlowState, loadLimitSupplyState) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_SET_SUPPLY_STATUS_COMMAND_ID, \ + "wuuuu", \ + issuerEventId, supplyTamperState, supplyDepletionState, supplyUncontrolledFlowState, loadLimitSupplyState); + + + +/** @brief This command is used to update the 'Uncontrolled Flow Rate' configuration data used by flow meters. +* Cluster: Simple Metering, The Metering Cluster provides a mechanism to retrieve usage information from Electric, Gas, Water, and potentially Thermal metering devices. +* Command: SetUncontrolledFlowThreshold*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param uncontrolledFlowThreshold uint16_t + +// @param unitOfMeasure uint8_t + +// @param multiplier uint16_t + +// @param divisor uint16_t + +// @param stabilisationPeriod uint8_t + +// @param measurementPeriod uint16_t + +#define emberAfFillCommandSimpleMeteringClusterSetUncontrolledFlowThreshold( \ + providerId, issuerEventId, uncontrolledFlowThreshold, unitOfMeasure, multiplier, divisor, stabilisationPeriod, measurementPeriod) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SIMPLE_METERING_CLUSTER_ID, \ + ZCL_SET_UNCONTROLLED_FLOW_THRESHOLD_COMMAND_ID, \ + "wwvuvvuv", \ + providerId, issuerEventId, uncontrolledFlowThreshold, unitOfMeasure, multiplier, divisor, stabilisationPeriod, measurementPeriod); + + + +/** @brief Command description for DisplayMessage +* Cluster: Messaging, This cluster provides an interface for passing text messages between SE devices. +* Command: DisplayMessage*/ +// @param messageId uint32_t + +// @param messageControl uint8_t + +// @param startTime uint32_t + +// @param durationInMinutes uint16_t + +// @param message uint8_t * + +// @param optionalExtendedMessageControl uint8_t + +#define emberAfFillCommandMessagingClusterDisplayMessage( \ + messageId, messageControl, startTime, durationInMinutes, message, optionalExtendedMessageControl) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_MESSAGING_CLUSTER_ID, \ + ZCL_DISPLAY_MESSAGE_COMMAND_ID, \ + "wuwvsu", \ + messageId, messageControl, startTime, durationInMinutes, message, optionalExtendedMessageControl); + + + +/** @brief Command description for GetLastMessage +* Cluster: Messaging, This cluster provides an interface for passing text messages between SE devices. +* Command: GetLastMessage*/ +#define emberAfFillCommandMessagingClusterGetLastMessage( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_MESSAGING_CLUSTER_ID, \ + ZCL_GET_LAST_MESSAGE_COMMAND_ID, \ + "" \ +); + + + +/** @brief The CancelMessage command provides the ability to cancel the sending or acceptance of previously sent messages. +* Cluster: Messaging, This cluster provides an interface for passing text messages between SE devices. +* Command: CancelMessage*/ +// @param messageId uint32_t + +// @param messageControl uint8_t + +#define emberAfFillCommandMessagingClusterCancelMessage( \ + messageId, messageControl) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_MESSAGING_CLUSTER_ID, \ + ZCL_CANCEL_MESSAGE_COMMAND_ID, \ + "wu", \ + messageId, messageControl); + + + +/** @brief The Message Confirmation command provides an indication that a Utility Customer has acknowledged and/or accepted the contents of a previously sent message. Enhanced Message Confirmation commands shall contain an answer of 'NO', 'YES' and/or a message confirmation string. +* Cluster: Messaging, This cluster provides an interface for passing text messages between SE devices. +* Command: MessageConfirmation*/ +// @param messageId uint32_t + +// @param confirmationTime uint32_t + +// @param messageConfirmationControl uint8_t + +// @param messageResponse uint8_t * + +#define emberAfFillCommandMessagingClusterMessageConfirmation( \ + messageId, confirmationTime, messageConfirmationControl, messageResponse) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_MESSAGING_CLUSTER_ID, \ + ZCL_MESSAGE_CONFIRMATION_COMMAND_ID, \ + "wwus", \ + messageId, confirmationTime, messageConfirmationControl, messageResponse); + + + +/** @brief The DisplayProtected Message command is for use with messages that are protected by a password or PIN. +* Cluster: Messaging, This cluster provides an interface for passing text messages between SE devices. +* Command: DisplayProtectedMessage*/ +// @param messageId uint32_t + +// @param messageControl uint8_t + +// @param startTime uint32_t + +// @param durationInMinutes uint16_t + +// @param message uint8_t * + +// @param optionalExtendedMessageControl uint8_t + +#define emberAfFillCommandMessagingClusterDisplayProtectedMessage( \ + messageId, messageControl, startTime, durationInMinutes, message, optionalExtendedMessageControl) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_MESSAGING_CLUSTER_ID, \ + ZCL_DISPLAY_PROTECTED_MESSAGE_COMMAND_ID, \ + "wuwvsu", \ + messageId, messageControl, startTime, durationInMinutes, message, optionalExtendedMessageControl); + + + +/** @brief This command initiates the return of the first (and maybe only) Cancel All Messages command held on the associated server, and which has an implementation time equal to or later than the value indicated in the payload. +* Cluster: Messaging, This cluster provides an interface for passing text messages between SE devices. +* Command: GetMessageCancellation*/ +// @param earliestImplementationTime uint32_t + +#define emberAfFillCommandMessagingClusterGetMessageCancellation( \ + earliestImplementationTime) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_MESSAGING_CLUSTER_ID, \ + ZCL_GET_MESSAGE_CANCELLATION_COMMAND_ID, \ + "w", \ + earliestImplementationTime); + + + +/** @brief The CancelAllMessages command indicates to a client device that it should cancel all display messages currently held by it. +* Cluster: Messaging, This cluster provides an interface for passing text messages between SE devices. +* Command: CancelAllMessages*/ +// @param implementationDateTime uint32_t + +#define emberAfFillCommandMessagingClusterCancelAllMessages( \ + implementationDateTime) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_MESSAGING_CLUSTER_ID, \ + ZCL_CANCEL_ALL_MESSAGES_COMMAND_ID, \ + "w", \ + implementationDateTime); + + + +/** @brief RequestTunnel is the client command used to setup a tunnel association with the server. The request payload specifies the protocol identifier for the requested tunnel, a manufacturer code in case of proprietary protocols and the use of flow control for streaming protocols. +* Cluster: Tunneling, The tunneling cluster provides an interface for tunneling protocols. +* Command: RequestTunnel*/ +// @param protocolId uint8_t + +// @param manufacturerCode uint16_t + +// @param flowControlSupport uint8_t + +// @param maximumIncomingTransferSize uint16_t + +#define emberAfFillCommandTunnelingClusterRequestTunnel( \ + protocolId, manufacturerCode, flowControlSupport, maximumIncomingTransferSize) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_TUNNELING_CLUSTER_ID, \ + ZCL_REQUEST_TUNNEL_COMMAND_ID, \ + "uvuv", \ + protocolId, manufacturerCode, flowControlSupport, maximumIncomingTransferSize); + + + +/** @brief RequestTunnelResponse is sent by the server in response to a RequestTunnel command previously received from the client. The response contains the status of the RequestTunnel command and a tunnel identifier corresponding to the tunnel that has been set-up in the server in case of success. +* Cluster: Tunneling, The tunneling cluster provides an interface for tunneling protocols. +* Command: RequestTunnelResponse*/ +// @param tunnelId uint16_t + +// @param tunnelStatus uint8_t + +// @param maximumIncomingTransferSize uint16_t + +#define emberAfFillCommandTunnelingClusterRequestTunnelResponse( \ + tunnelId, tunnelStatus, maximumIncomingTransferSize) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_TUNNELING_CLUSTER_ID, \ + ZCL_REQUEST_TUNNEL_RESPONSE_COMMAND_ID, \ + "vuv", \ + tunnelId, tunnelStatus, maximumIncomingTransferSize); + + + +/** @brief Client command used to close the tunnel with the server. The parameter in the payload specifies the tunnel identifier of the tunnel that has to be closed. The server leaves the tunnel open and the assigned resources allocated until the client sends the CloseTunnel command or the CloseTunnelTimeout fires. +* Cluster: Tunneling, The tunneling cluster provides an interface for tunneling protocols. +* Command: CloseTunnel*/ +// @param tunnelId uint16_t + +#define emberAfFillCommandTunnelingClusterCloseTunnel( \ + tunnelId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_TUNNELING_CLUSTER_ID, \ + ZCL_CLOSE_TUNNEL_COMMAND_ID, \ + "v", \ + tunnelId); + + + +/** @brief Command that transfers data from server to the client. The data itself has to be placed within the payload. +* Cluster: Tunneling, The tunneling cluster provides an interface for tunneling protocols. +* Command: TransferDataServerToClient*/ +// @param tunnelId uint16_t + +// @param data /* TYPE WARNING: array array defaults to */ uint8_t * +// @param dataLen uint16_t +#define emberAfFillCommandTunnelingClusterTransferDataServerToClient( \ + tunnelId, data, dataLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_TUNNELING_CLUSTER_ID, \ + ZCL_TRANSFER_DATA_SERVER_TO_CLIENT_COMMAND_ID, \ + "vb", \ + tunnelId, data, dataLen); + + + +/** @brief Command that indicates (if received) that the client has sent data to the server. The data itself is contained within the payload. +* Cluster: Tunneling, The tunneling cluster provides an interface for tunneling protocols. +* Command: TransferDataClientToServer*/ +// @param tunnelId uint16_t + +// @param data /* TYPE WARNING: array array defaults to */ uint8_t * +// @param dataLen uint16_t +#define emberAfFillCommandTunnelingClusterTransferDataClientToServer( \ + tunnelId, data, dataLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_TUNNELING_CLUSTER_ID, \ + ZCL_TRANSFER_DATA_CLIENT_TO_SERVER_COMMAND_ID, \ + "vb", \ + tunnelId, data, dataLen); + + + +/** @brief This command is generated by the receiver of a TransferData command if the tunnel status indicates that something is wrong. There are two three cases in which TransferDataError is sent: (1) The TransferData received contains a TunnelID that does not match to any of the active tunnels of the receiving device. This could happen if a (sleeping) device sends a TransferData command to a tunnel that has been closed by the server after the CloseTunnelTimeout. (2) The TransferData received contains a proper TunnelID of an active tunnel, but the device sending the data does not match to it. (3) The TransferData received contains more data than indicated by the MaximumIncomingTransferSize of the receiving device. +* Cluster: Tunneling, The tunneling cluster provides an interface for tunneling protocols. +* Command: TransferDataErrorServerToClient*/ +// @param tunnelId uint16_t + +// @param transferDataStatus uint8_t + +#define emberAfFillCommandTunnelingClusterTransferDataErrorServerToClient( \ + tunnelId, transferDataStatus) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_TUNNELING_CLUSTER_ID, \ + ZCL_TRANSFER_DATA_ERROR_SERVER_TO_CLIENT_COMMAND_ID, \ + "vu", \ + tunnelId, transferDataStatus); + + + +/** @brief This command is generated by the receiver of a TransferData command if the tunnel status indicates that something is wrong. There are two three cases in which TransferDataError is sent: (1) The TransferData received contains a TunnelID that does not match to any of the active tunnels of the receiving device. This could happen if a (sleeping) device sends a TransferData command to a tunnel that has been closed by the server after the CloseTunnelTimeout. (2) The TransferData received contains a proper TunnelID of an active tunnel, but the device sending the data does not match to it. (3) The TransferData received contains more data than indicated by the MaximumIncomingTransferSize of the receiving device. +* Cluster: Tunneling, The tunneling cluster provides an interface for tunneling protocols. +* Command: TransferDataErrorClientToServer*/ +// @param tunnelId uint16_t + +// @param transferDataStatus uint8_t + +#define emberAfFillCommandTunnelingClusterTransferDataErrorClientToServer( \ + tunnelId, transferDataStatus) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_TUNNELING_CLUSTER_ID, \ + ZCL_TRANSFER_DATA_ERROR_CLIENT_TO_SERVER_COMMAND_ID, \ + "vu", \ + tunnelId, transferDataStatus); + + + +/** @brief Command sent in response to each TransferData command in case - and only in case - flow control has been requested by the client in the TunnelRequest command and is supported by both tunnel endpoints. The response payload indicates the number of octets that may still be received by the receiver. +* Cluster: Tunneling, The tunneling cluster provides an interface for tunneling protocols. +* Command: AckTransferDataServerToClient*/ +// @param tunnelId uint16_t + +// @param numberOfBytesLeft uint16_t + +#define emberAfFillCommandTunnelingClusterAckTransferDataServerToClient( \ + tunnelId, numberOfBytesLeft) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_TUNNELING_CLUSTER_ID, \ + ZCL_ACK_TRANSFER_DATA_SERVER_TO_CLIENT_COMMAND_ID, \ + "vv", \ + tunnelId, numberOfBytesLeft); + + + +/** @brief Command sent in response to each TransferData command in case - and only in case - flow control has been requested by the client in the TunnelRequest command and is supported by both tunnel endpoints. The response payload indicates the number of octets that may still be received by the receiver. +* Cluster: Tunneling, The tunneling cluster provides an interface for tunneling protocols. +* Command: AckTransferDataClientToServer*/ +// @param tunnelId uint16_t + +// @param numberOfBytesLeft uint16_t + +#define emberAfFillCommandTunnelingClusterAckTransferDataClientToServer( \ + tunnelId, numberOfBytesLeft) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_TUNNELING_CLUSTER_ID, \ + ZCL_ACK_TRANSFER_DATA_CLIENT_TO_SERVER_COMMAND_ID, \ + "vv", \ + tunnelId, numberOfBytesLeft); + + + +/** @brief The ReadyData command is generated - after a receiver had to stop the dataflow using the AckTransferData(0) command - to indicate that the device is now ready to continue receiving data. The parameter NumberOfOctetsLeft gives a hint on how much space is left for the next data transfer. The ReadyData command is only issued if flow control is enabled. +* Cluster: Tunneling, The tunneling cluster provides an interface for tunneling protocols. +* Command: ReadyDataServerToClient*/ +// @param tunnelId uint16_t + +// @param numberOfOctetsLeft uint16_t + +#define emberAfFillCommandTunnelingClusterReadyDataServerToClient( \ + tunnelId, numberOfOctetsLeft) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_TUNNELING_CLUSTER_ID, \ + ZCL_READY_DATA_SERVER_TO_CLIENT_COMMAND_ID, \ + "vv", \ + tunnelId, numberOfOctetsLeft); + + + +/** @brief The ReadyData command is generated - after a receiver had to stop the dataflow using the AckTransferData(0) command - to indicate that the device is now ready to continue receiving data. The parameter NumberOfOctetsLeft gives a hint on how much space is left for the next data transfer. The ReadyData command is only issued if flow control is enabled. +* Cluster: Tunneling, The tunneling cluster provides an interface for tunneling protocols. +* Command: ReadyDataClientToServer*/ +// @param tunnelId uint16_t + +// @param numberOfOctetsLeft uint16_t + +#define emberAfFillCommandTunnelingClusterReadyDataClientToServer( \ + tunnelId, numberOfOctetsLeft) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_TUNNELING_CLUSTER_ID, \ + ZCL_READY_DATA_CLIENT_TO_SERVER_COMMAND_ID, \ + "vv", \ + tunnelId, numberOfOctetsLeft); + + + +/** @brief Supported Tunnel Protocol Response is sent in response to a Get Supported Tunnel Protocols command previously received. The response contains a list of Tunnel protocols supported by the device; the payload of the response should be capable of holding up to 16 protocols. +* Cluster: Tunneling, The tunneling cluster provides an interface for tunneling protocols. +* Command: SupportedTunnelProtocolsResponse*/ +// @param protocolListComplete uint8_t + +// @param protocolCount uint8_t + +// @param protocolList /* TYPE WARNING: array array defaults to */ uint8_t * +// @param protocolListLen uint16_t +#define emberAfFillCommandTunnelingClusterSupportedTunnelProtocolsResponse( \ + protocolListComplete, protocolCount, protocolList, protocolListLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_TUNNELING_CLUSTER_ID, \ + ZCL_SUPPORTED_TUNNEL_PROTOCOLS_RESPONSE_COMMAND_ID, \ + "uub", \ + protocolListComplete, protocolCount, protocolList, protocolListLen); + + + +/** @brief Get Supported Tunnel Protocols is the client command used to determine the Tunnel protocols supported on another device. +* Cluster: Tunneling, The tunneling cluster provides an interface for tunneling protocols. +* Command: GetSupportedTunnelProtocols*/ +// @param protocolOffset uint8_t + +#define emberAfFillCommandTunnelingClusterGetSupportedTunnelProtocols( \ + protocolOffset) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_TUNNELING_CLUSTER_ID, \ + ZCL_GET_SUPPORTED_TUNNEL_PROTOCOLS_COMMAND_ID, \ + "u", \ + protocolOffset); + + + +/** @brief TunnelClosureNotification is sent by the server to indicate that a tunnel has been closed due to expiration of a CloseTunnelTimeout. +* Cluster: Tunneling, The tunneling cluster provides an interface for tunneling protocols. +* Command: TunnelClosureNotification*/ +// @param tunnelId uint16_t + +#define emberAfFillCommandTunnelingClusterTunnelClosureNotification( \ + tunnelId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_TUNNELING_CLUSTER_ID, \ + ZCL_TUNNEL_CLOSURE_NOTIFICATION_COMMAND_ID, \ + "v", \ + tunnelId); + + + +/** @brief This command is sent to the Metering Device to activate the use of any Emergency Credit available on the Metering Device. +* Cluster: Prepayment, The Prepayment Cluster provides the facility to pass messages relating to prepayment between devices on the HAN. +* Command: SelectAvailableEmergencyCredit*/ +// @param commandIssueDateTime uint32_t + +// @param originatingDevice uint8_t + +#define emberAfFillCommandPrepaymentClusterSelectAvailableEmergencyCredit( \ + commandIssueDateTime, originatingDevice) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PREPAYMENT_CLUSTER_ID, \ + ZCL_SELECT_AVAILABLE_EMERGENCY_CREDIT_COMMAND_ID, \ + "wu", \ + commandIssueDateTime, originatingDevice); + + + +/** @brief This command is generated in response to a GetPrepaySnapshot command. It is used to return a single snapshot to the client. +* Cluster: Prepayment, The Prepayment Cluster provides the facility to pass messages relating to prepayment between devices on the HAN. +* Command: PublishPrepaySnapshot*/ +// @param snapshotId uint32_t + +// @param snapshotTime uint32_t + +// @param totalSnapshotsFound uint8_t + +// @param commandIndex uint8_t + +// @param totalNumberOfCommands uint8_t + +// @param snapshotCause uint32_t + +// @param snapshotPayloadType uint8_t + +// @param snapshotPayload /* TYPE WARNING: array array defaults to */ uint8_t * +// @param snapshotPayloadLen uint16_t +#define emberAfFillCommandPrepaymentClusterPublishPrepaySnapshot( \ + snapshotId, snapshotTime, totalSnapshotsFound, commandIndex, totalNumberOfCommands, snapshotCause, snapshotPayloadType, snapshotPayload, snapshotPayloadLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PREPAYMENT_CLUSTER_ID, \ + ZCL_PUBLISH_PREPAY_SNAPSHOT_COMMAND_ID, \ + "wwuuuwub", \ + snapshotId, snapshotTime, totalSnapshotsFound, commandIndex, totalNumberOfCommands, snapshotCause, snapshotPayloadType, snapshotPayload, snapshotPayloadLen); + + + +/** @brief The ChangeDebt command is send to the Metering Device to change the fuel or Non fuel debt values. +* Cluster: Prepayment, The Prepayment Cluster provides the facility to pass messages relating to prepayment between devices on the HAN. +* Command: ChangeDebt*/ +// @param issuerEventId uint32_t + +// @param debtLabel uint8_t * + +// @param debtAmount uint32_t + +// @param debtRecoveryMethod uint8_t + +// @param debtAmountType uint8_t + +// @param debtRecoveryStartTime uint32_t + +// @param debtRecoveryCollectionTime uint16_t + +// @param debtRecoveryFrequency uint8_t + +// @param debtRecoveryAmount uint32_t + +// @param debtRecoveryBalancePercentage uint16_t + +#define emberAfFillCommandPrepaymentClusterChangeDebt( \ + issuerEventId, debtLabel, debtAmount, debtRecoveryMethod, debtAmountType, debtRecoveryStartTime, debtRecoveryCollectionTime, debtRecoveryFrequency, debtRecoveryAmount, debtRecoveryBalancePercentage) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PREPAYMENT_CLUSTER_ID, \ + ZCL_CHANGE_DEBT_COMMAND_ID, \ + "wswuuwvuwv", \ + issuerEventId, debtLabel, debtAmount, debtRecoveryMethod, debtAmountType, debtRecoveryStartTime, debtRecoveryCollectionTime, debtRecoveryFrequency, debtRecoveryAmount, debtRecoveryBalancePercentage); + + + +/** @brief This command is send in response to the ChangePaymentMode Command. +* Cluster: Prepayment, The Prepayment Cluster provides the facility to pass messages relating to prepayment between devices on the HAN. +* Command: ChangePaymentModeResponse*/ +// @param friendlyCredit uint8_t + +// @param friendlyCreditCalendarId uint32_t + +// @param emergencyCreditLimit uint32_t + +// @param emergencyCreditThreshold uint32_t + +#define emberAfFillCommandPrepaymentClusterChangePaymentModeResponse( \ + friendlyCredit, friendlyCreditCalendarId, emergencyCreditLimit, emergencyCreditThreshold) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PREPAYMENT_CLUSTER_ID, \ + ZCL_CHANGE_PAYMENT_MODE_RESPONSE_COMMAND_ID, \ + "uwww", \ + friendlyCredit, friendlyCreditCalendarId, emergencyCreditLimit, emergencyCreditThreshold); + + + +/** @brief This command is a method to set up the parameters for the emergency credit. +* Cluster: Prepayment, The Prepayment Cluster provides the facility to pass messages relating to prepayment between devices on the HAN. +* Command: EmergencyCreditSetup*/ +// @param issuerEventId uint32_t + +// @param startTime uint32_t + +// @param emergencyCreditLimit uint32_t + +// @param emergencyCreditThreshold uint32_t + +#define emberAfFillCommandPrepaymentClusterEmergencyCreditSetup( \ + issuerEventId, startTime, emergencyCreditLimit, emergencyCreditThreshold) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PREPAYMENT_CLUSTER_ID, \ + ZCL_EMERGENCY_CREDIT_SETUP_COMMAND_ID, \ + "wwww", \ + issuerEventId, startTime, emergencyCreditLimit, emergencyCreditThreshold); + + + +/** @brief This command is send in response to the ConsumerTopUp Command. +* Cluster: Prepayment, The Prepayment Cluster provides the facility to pass messages relating to prepayment between devices on the HAN. +* Command: ConsumerTopUpResponse*/ +// @param resultType uint8_t + +// @param topUpValue uint32_t + +// @param sourceOfTopUp uint8_t + +// @param creditRemaining uint32_t + +#define emberAfFillCommandPrepaymentClusterConsumerTopUpResponse( \ + resultType, topUpValue, sourceOfTopUp, creditRemaining) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PREPAYMENT_CLUSTER_ID, \ + ZCL_CONSUMER_TOP_UP_RESPONSE_COMMAND_ID, \ + "uwuw", \ + resultType, topUpValue, sourceOfTopUp, creditRemaining); + + + +/** @brief The ConsumerTopUp command is used by the IPD and the ESI as a method of applying credit top up values to the prepayment meter. +* Cluster: Prepayment, The Prepayment Cluster provides the facility to pass messages relating to prepayment between devices on the HAN. +* Command: ConsumerTopUp*/ +// @param originatingDevice uint8_t + +// @param topUpCode uint8_t * + +#define emberAfFillCommandPrepaymentClusterConsumerTopUp( \ + originatingDevice, topUpCode) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PREPAYMENT_CLUSTER_ID, \ + ZCL_CONSUMER_TOP_UP_COMMAND_ID, \ + "us", \ + originatingDevice, topUpCode); + + + +/** @brief The CreditAdjustment command is sent to update the accounting base for the Prepayment meter. +* Cluster: Prepayment, The Prepayment Cluster provides the facility to pass messages relating to prepayment between devices on the HAN. +* Command: CreditAdjustment*/ +// @param issuerEventId uint32_t + +// @param startTime uint32_t + +// @param creditAdjustmentType uint8_t + +// @param creditAdjustmentValue uint32_t + +#define emberAfFillCommandPrepaymentClusterCreditAdjustment( \ + issuerEventId, startTime, creditAdjustmentType, creditAdjustmentValue) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PREPAYMENT_CLUSTER_ID, \ + ZCL_CREDIT_ADJUSTMENT_COMMAND_ID, \ + "wwuw", \ + issuerEventId, startTime, creditAdjustmentType, creditAdjustmentValue); + + + +/** @brief This command is used to send the Top Up Code Log entries to the client. +* Cluster: Prepayment, The Prepayment Cluster provides the facility to pass messages relating to prepayment between devices on the HAN. +* Command: PublishTopUpLog*/ +// @param commandIndex uint8_t + +// @param totalNumberOfCommands uint8_t + +// @param topUpPayload /* TYPE WARNING: array array defaults to */ uint8_t * +// @param topUpPayloadLen uint16_t +#define emberAfFillCommandPrepaymentClusterPublishTopUpLog( \ + commandIndex, totalNumberOfCommands, topUpPayload, topUpPayloadLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PREPAYMENT_CLUSTER_ID, \ + ZCL_PUBLISH_TOP_UP_LOG_COMMAND_ID, \ + "uub", \ + commandIndex, totalNumberOfCommands, topUpPayload, topUpPayloadLen); + + + +/** @brief This command is sent to a Metering Device to instruct it to change its mode of operation. i.e. from Credit to Prepayment. +* Cluster: Prepayment, The Prepayment Cluster provides the facility to pass messages relating to prepayment between devices on the HAN. +* Command: ChangePaymentMode*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param implementationDateTime uint32_t + +// @param proposedPaymentControlConfiguration uint16_t + +// @param cutOffValue uint32_t + +#define emberAfFillCommandPrepaymentClusterChangePaymentMode( \ + providerId, issuerEventId, implementationDateTime, proposedPaymentControlConfiguration, cutOffValue) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PREPAYMENT_CLUSTER_ID, \ + ZCL_CHANGE_PAYMENT_MODE_COMMAND_ID, \ + "wwwvw", \ + providerId, issuerEventId, implementationDateTime, proposedPaymentControlConfiguration, cutOffValue); + + + +/** @brief This command is used to send the contents of the Repayment Log. +* Cluster: Prepayment, The Prepayment Cluster provides the facility to pass messages relating to prepayment between devices on the HAN. +* Command: PublishDebtLog*/ +// @param commandIndex uint8_t + +// @param totalNumberOfCommands uint8_t + +// @param debtPayload /* TYPE WARNING: array array defaults to */ uint8_t * +// @param debtPayloadLen uint16_t +#define emberAfFillCommandPrepaymentClusterPublishDebtLog( \ + commandIndex, totalNumberOfCommands, debtPayload, debtPayloadLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PREPAYMENT_CLUSTER_ID, \ + ZCL_PUBLISH_DEBT_LOG_COMMAND_ID, \ + "uub", \ + commandIndex, totalNumberOfCommands, debtPayload, debtPayloadLen); + + + +/** @brief This command is used to request the cluster server for snapshot data. +* Cluster: Prepayment, The Prepayment Cluster provides the facility to pass messages relating to prepayment between devices on the HAN. +* Command: GetPrepaySnapshot*/ +// @param earliestStartTime uint32_t + +// @param latestEndTime uint32_t + +// @param snapshotOffset uint8_t + +// @param snapshotCause uint32_t + +#define emberAfFillCommandPrepaymentClusterGetPrepaySnapshot( \ + earliestStartTime, latestEndTime, snapshotOffset, snapshotCause) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PREPAYMENT_CLUSTER_ID, \ + ZCL_GET_PREPAY_SNAPSHOT_COMMAND_ID, \ + "wwuw", \ + earliestStartTime, latestEndTime, snapshotOffset, snapshotCause); + + + +/** @brief This command is sent to the Metering Device to retrieve the log of Top Up codes received by the meter. +* Cluster: Prepayment, The Prepayment Cluster provides the facility to pass messages relating to prepayment between devices on the HAN. +* Command: GetTopUpLog*/ +// @param latestEndTime uint32_t + +// @param numberOfRecords uint8_t + +#define emberAfFillCommandPrepaymentClusterGetTopUpLog( \ + latestEndTime, numberOfRecords) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PREPAYMENT_CLUSTER_ID, \ + ZCL_GET_TOP_UP_LOG_COMMAND_ID, \ + "wu", \ + latestEndTime, numberOfRecords); + + + +/** @brief This command is sent from client to a Prepayment server to set the warning level for low credit. +* Cluster: Prepayment, The Prepayment Cluster provides the facility to pass messages relating to prepayment between devices on the HAN. +* Command: SetLowCreditWarningLevel*/ +// @param lowCreditWarningLevel uint32_t + +#define emberAfFillCommandPrepaymentClusterSetLowCreditWarningLevel( \ + lowCreditWarningLevel) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PREPAYMENT_CLUSTER_ID, \ + ZCL_SET_LOW_CREDIT_WARNING_LEVEL_COMMAND_ID, \ + "w", \ + lowCreditWarningLevel); + + + +/** @brief This command is used to request the contents of the repayment log. +* Cluster: Prepayment, The Prepayment Cluster provides the facility to pass messages relating to prepayment between devices on the HAN. +* Command: GetDebtRepaymentLog*/ +// @param latestEndTime uint32_t + +// @param numberOfDebts uint8_t + +// @param debtType uint8_t + +#define emberAfFillCommandPrepaymentClusterGetDebtRepaymentLog( \ + latestEndTime, numberOfDebts, debtType) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PREPAYMENT_CLUSTER_ID, \ + ZCL_GET_DEBT_REPAYMENT_LOG_COMMAND_ID, \ + "wuu", \ + latestEndTime, numberOfDebts, debtType); + + + +/** @brief This command is sent from a client to the Prepayment server to set the maximum credit level allowed in the meter. +* Cluster: Prepayment, The Prepayment Cluster provides the facility to pass messages relating to prepayment between devices on the HAN. +* Command: SetMaximumCreditLimit*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param implementationDateTime uint32_t + +// @param maximumCreditLevel uint32_t + +// @param maximumCreditPerTopUp uint32_t + +#define emberAfFillCommandPrepaymentClusterSetMaximumCreditLimit( \ + providerId, issuerEventId, implementationDateTime, maximumCreditLevel, maximumCreditPerTopUp) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PREPAYMENT_CLUSTER_ID, \ + ZCL_SET_MAXIMUM_CREDIT_LIMIT_COMMAND_ID, \ + "wwwww", \ + providerId, issuerEventId, implementationDateTime, maximumCreditLevel, maximumCreditPerTopUp); + + + +/** @brief This command is sent from a client to the Prepayment server to set the overall debt cap allowed in the meter. +* Cluster: Prepayment, The Prepayment Cluster provides the facility to pass messages relating to prepayment between devices on the HAN. +* Command: SetOverallDebtCap*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param implementationDateTime uint32_t + +// @param overallDebtCap uint32_t + +#define emberAfFillCommandPrepaymentClusterSetOverallDebtCap( \ + providerId, issuerEventId, implementationDateTime, overallDebtCap) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PREPAYMENT_CLUSTER_ID, \ + ZCL_SET_OVERALL_DEBT_CAP_COMMAND_ID, \ + "wwww", \ + providerId, issuerEventId, implementationDateTime, overallDebtCap); + + + +/** @brief This command is reused from the DRLC cluster. This command is generated in response to the Manage Event command. +* Cluster: Energy Management, This cluster provides attributes and commands to assist applications in creating resource monitoring protocols. +* Command: ReportEventStatus*/ +// @param issuerEventId uint32_t + +// @param eventStatus uint8_t + +// @param eventStatusTime uint32_t + +// @param criticalityLevelApplied uint8_t + +// @param coolingTemperatureSetPointApplied uint16_t + +// @param heatingTemperatureSetPointApplied uint16_t + +// @param averageLoadAdjustmentPercentageApplied int8_t + +// @param dutyCycleApplied uint8_t + +// @param eventControl uint8_t + +#define emberAfFillCommandEnergyManagementClusterReportEventStatus( \ + issuerEventId, eventStatus, eventStatusTime, criticalityLevelApplied, coolingTemperatureSetPointApplied, heatingTemperatureSetPointApplied, averageLoadAdjustmentPercentageApplied, dutyCycleApplied, eventControl) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_ENERGY_MANAGEMENT_CLUSTER_ID, \ + ZCL_REPORT_EVENT_STATUS_COMMAND_ID, \ + "wuwuvvuuu", \ + issuerEventId, eventStatus, eventStatusTime, criticalityLevelApplied, coolingTemperatureSetPointApplied, heatingTemperatureSetPointApplied, averageLoadAdjustmentPercentageApplied, dutyCycleApplied, eventControl); + + + +/** @brief The Manage Event command allows a remote device (such as an IHD or web portal) to change the behavior of a DRLC cluster client when responding to a DRLC Load Control Event. +* Cluster: Energy Management, This cluster provides attributes and commands to assist applications in creating resource monitoring protocols. +* Command: ManageEvent*/ +// @param issuerEventId uint32_t + +// @param deviceClass uint16_t + +// @param utilityEnrollmentGroup uint8_t + +// @param actionRequired uint8_t + +#define emberAfFillCommandEnergyManagementClusterManageEvent( \ + issuerEventId, deviceClass, utilityEnrollmentGroup, actionRequired) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ENERGY_MANAGEMENT_CLUSTER_ID, \ + ZCL_MANAGE_EVENT_COMMAND_ID, \ + "wvuu", \ + issuerEventId, deviceClass, utilityEnrollmentGroup, actionRequired); + + + +/** @brief The PublishCalendar command is published in response to a GetCalendar command or if new calendar information is available. +* Cluster: Calendar, This cluster provides attributes and commands to assist applications in developing time and date based protocol. +* Command: PublishCalendar*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param issuerCalendarId uint32_t + +// @param startTime uint32_t + +// @param calendarType uint8_t + +// @param calendarTimeReference uint8_t + +// @param calendarName uint8_t * + +// @param numberOfSeasons uint8_t + +// @param numberOfWeekProfiles uint8_t + +// @param numberOfDayProfiles uint8_t + +#define emberAfFillCommandCalendarClusterPublishCalendar( \ + providerId, issuerEventId, issuerCalendarId, startTime, calendarType, calendarTimeReference, calendarName, numberOfSeasons, numberOfWeekProfiles, numberOfDayProfiles) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_CALENDAR_CLUSTER_ID, \ + ZCL_PUBLISH_CALENDAR_COMMAND_ID, \ + "wwwwuusuuu", \ + providerId, issuerEventId, issuerCalendarId, startTime, calendarType, calendarTimeReference, calendarName, numberOfSeasons, numberOfWeekProfiles, numberOfDayProfiles); + + + +/** @brief This command initiates PublishCalendar command(s) for scheduled Calendar updates. +* Cluster: Calendar, This cluster provides attributes and commands to assist applications in developing time and date based protocol. +* Command: GetCalendar*/ +// @param earliestStartTime uint32_t + +// @param minIssuerEventId uint32_t + +// @param numberOfCalendars uint8_t + +// @param calendarType uint8_t + +// @param providerId uint32_t + +#define emberAfFillCommandCalendarClusterGetCalendar( \ + earliestStartTime, minIssuerEventId, numberOfCalendars, calendarType, providerId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_CALENDAR_CLUSTER_ID, \ + ZCL_GET_CALENDAR_COMMAND_ID, \ + "wwuuw", \ + earliestStartTime, minIssuerEventId, numberOfCalendars, calendarType, providerId); + + + +/** @brief The PublishDayProfile command is published in response to a GetDayProfile command. +* Cluster: Calendar, This cluster provides attributes and commands to assist applications in developing time and date based protocol. +* Command: PublishDayProfile*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param issuerCalendarId uint32_t + +// @param dayId uint8_t + +// @param totalNumberOfScheduleEntries uint8_t + +// @param commandIndex uint8_t + +// @param totalNumberOfCommands uint8_t + +// @param calendarType uint8_t + +// @param dayScheduleEntries /* TYPE WARNING: array array defaults to */ uint8_t * +// @param dayScheduleEntriesLen uint16_t +#define emberAfFillCommandCalendarClusterPublishDayProfile( \ + providerId, issuerEventId, issuerCalendarId, dayId, totalNumberOfScheduleEntries, commandIndex, totalNumberOfCommands, calendarType, dayScheduleEntries, dayScheduleEntriesLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_CALENDAR_CLUSTER_ID, \ + ZCL_PUBLISH_DAY_PROFILE_COMMAND_ID, \ + "wwwuuuuub", \ + providerId, issuerEventId, issuerCalendarId, dayId, totalNumberOfScheduleEntries, commandIndex, totalNumberOfCommands, calendarType, dayScheduleEntries, dayScheduleEntriesLen); + + + +/** @brief This command initiates one or more PublishDayProfile commands for the referenced Calendar. +* Cluster: Calendar, This cluster provides attributes and commands to assist applications in developing time and date based protocol. +* Command: GetDayProfiles*/ +// @param providerId uint32_t + +// @param issuerCalendarId uint32_t + +// @param startDayId uint8_t + +// @param numberOfDays uint8_t + +#define emberAfFillCommandCalendarClusterGetDayProfiles( \ + providerId, issuerCalendarId, startDayId, numberOfDays) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_CALENDAR_CLUSTER_ID, \ + ZCL_GET_DAY_PROFILES_COMMAND_ID, \ + "wwuu", \ + providerId, issuerCalendarId, startDayId, numberOfDays); + + + +/** @brief The PublishWeekProfile command is published in response to a GetWeekProfile command. +* Cluster: Calendar, This cluster provides attributes and commands to assist applications in developing time and date based protocol. +* Command: PublishWeekProfile*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param issuerCalendarId uint32_t + +// @param weekId uint8_t + +// @param dayIdRefMonday uint8_t + +// @param dayIdRefTuesday uint8_t + +// @param dayIdRefWednesday uint8_t + +// @param dayIdRefThursday uint8_t + +// @param dayIdRefFriday uint8_t + +// @param dayIdRefSaturday uint8_t + +// @param dayIdRefSunday uint8_t + +#define emberAfFillCommandCalendarClusterPublishWeekProfile( \ + providerId, issuerEventId, issuerCalendarId, weekId, dayIdRefMonday, dayIdRefTuesday, dayIdRefWednesday, dayIdRefThursday, dayIdRefFriday, dayIdRefSaturday, dayIdRefSunday) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_CALENDAR_CLUSTER_ID, \ + ZCL_PUBLISH_WEEK_PROFILE_COMMAND_ID, \ + "wwwuuuuuuuu", \ + providerId, issuerEventId, issuerCalendarId, weekId, dayIdRefMonday, dayIdRefTuesday, dayIdRefWednesday, dayIdRefThursday, dayIdRefFriday, dayIdRefSaturday, dayIdRefSunday); + + + +/** @brief This command initiates one or more PublishWeekProfile commands for the referenced Calendar. +* Cluster: Calendar, This cluster provides attributes and commands to assist applications in developing time and date based protocol. +* Command: GetWeekProfiles*/ +// @param providerId uint32_t + +// @param issuerCalendarId uint32_t + +// @param startWeekId uint8_t + +// @param numberOfWeeks uint8_t + +#define emberAfFillCommandCalendarClusterGetWeekProfiles( \ + providerId, issuerCalendarId, startWeekId, numberOfWeeks) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_CALENDAR_CLUSTER_ID, \ + ZCL_GET_WEEK_PROFILES_COMMAND_ID, \ + "wwuu", \ + providerId, issuerCalendarId, startWeekId, numberOfWeeks); + + + +/** @brief The PublishSeasons command is published in response to a GetSeason command. +* Cluster: Calendar, This cluster provides attributes and commands to assist applications in developing time and date based protocol. +* Command: PublishSeasons*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param issuerCalendarId uint32_t + +// @param commandIndex uint8_t + +// @param totalNumberOfCommands uint8_t + +// @param seasonEntries /* TYPE WARNING: array array defaults to */ uint8_t * +// @param seasonEntriesLen uint16_t +#define emberAfFillCommandCalendarClusterPublishSeasons( \ + providerId, issuerEventId, issuerCalendarId, commandIndex, totalNumberOfCommands, seasonEntries, seasonEntriesLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_CALENDAR_CLUSTER_ID, \ + ZCL_PUBLISH_SEASONS_COMMAND_ID, \ + "wwwuub", \ + providerId, issuerEventId, issuerCalendarId, commandIndex, totalNumberOfCommands, seasonEntries, seasonEntriesLen); + + + +/** @brief This command initiates one or more PublishSeasons commands for the referenced Calendar. +* Cluster: Calendar, This cluster provides attributes and commands to assist applications in developing time and date based protocol. +* Command: GetSeasons*/ +// @param providerId uint32_t + +// @param issuerCalendarId uint32_t + +#define emberAfFillCommandCalendarClusterGetSeasons( \ + providerId, issuerCalendarId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_CALENDAR_CLUSTER_ID, \ + ZCL_GET_SEASONS_COMMAND_ID, \ + "ww", \ + providerId, issuerCalendarId); + + + +/** @brief The PublishSpecialDays command is published in response to a GetSpecialDays command or if a calendar update is available. +* Cluster: Calendar, This cluster provides attributes and commands to assist applications in developing time and date based protocol. +* Command: PublishSpecialDays*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param issuerCalendarId uint32_t + +// @param startTime uint32_t + +// @param calendarType uint8_t + +// @param totalNumberOfSpecialDays uint8_t + +// @param commandIndex uint8_t + +// @param totalNumberOfCommands uint8_t + +// @param specialDayEntries /* TYPE WARNING: array array defaults to */ uint8_t * +// @param specialDayEntriesLen uint16_t +#define emberAfFillCommandCalendarClusterPublishSpecialDays( \ + providerId, issuerEventId, issuerCalendarId, startTime, calendarType, totalNumberOfSpecialDays, commandIndex, totalNumberOfCommands, specialDayEntries, specialDayEntriesLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_CALENDAR_CLUSTER_ID, \ + ZCL_PUBLISH_SPECIAL_DAYS_COMMAND_ID, \ + "wwwwuuuub", \ + providerId, issuerEventId, issuerCalendarId, startTime, calendarType, totalNumberOfSpecialDays, commandIndex, totalNumberOfCommands, specialDayEntries, specialDayEntriesLen); + + + +/** @brief This command initiates one or more PublishSpecialDays commands for the scheduled Special Day Table updates. +* Cluster: Calendar, This cluster provides attributes and commands to assist applications in developing time and date based protocol. +* Command: GetSpecialDays*/ +// @param startTime uint32_t + +// @param numberOfEvents uint8_t + +// @param calendarType uint8_t + +// @param providerId uint32_t + +// @param issuerCalendarId uint32_t + +#define emberAfFillCommandCalendarClusterGetSpecialDays( \ + startTime, numberOfEvents, calendarType, providerId, issuerCalendarId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_CALENDAR_CLUSTER_ID, \ + ZCL_GET_SPECIAL_DAYS_COMMAND_ID, \ + "wuuww", \ + startTime, numberOfEvents, calendarType, providerId, issuerCalendarId); + + + +/** @brief The CancelCalendar command indicates that all data associated with a particular calendar instance should be discarded. +* Cluster: Calendar, This cluster provides attributes and commands to assist applications in developing time and date based protocol. +* Command: CancelCalendar*/ +// @param providerId uint32_t + +// @param issuerCalendarId uint32_t + +// @param calendarType uint8_t + +#define emberAfFillCommandCalendarClusterCancelCalendar( \ + providerId, issuerCalendarId, calendarType) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_CALENDAR_CLUSTER_ID, \ + ZCL_CANCEL_CALENDAR_COMMAND_ID, \ + "wwu", \ + providerId, issuerCalendarId, calendarType); + + + +/** @brief This command initiates the return of the last CancelCalendar command held on the associated server. +* Cluster: Calendar, This cluster provides attributes and commands to assist applications in developing time and date based protocol. +* Command: GetCalendarCancellation*/ +#define emberAfFillCommandCalendarClusterGetCalendarCancellation( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_CALENDAR_CLUSTER_ID, \ + ZCL_GET_CALENDAR_CANCELLATION_COMMAND_ID, \ + "" \ +); + + + +/** @brief This command is used to request the ESI to respond with information regarding any available change of tenancy. +* Cluster: Device Management, This cluster provides attributes and commands to support device-cognisant application layer protocols. +* Command: GetChangeOfTenancy*/ +#define emberAfFillCommandDeviceManagementClusterGetChangeOfTenancy( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DEVICE_MANAGEMENT_CLUSTER_ID, \ + ZCL_GET_CHANGE_OF_TENANCY_COMMAND_ID, \ + "" \ +); + + + +/** @brief This command is used to change the tenancy of a meter. +* Cluster: Device Management, This cluster provides attributes and commands to support device-cognisant application layer protocols. +* Command: PublishChangeOfTenancy*/ +// @param providerId uint32_t + +// @param issuerEventId uint32_t + +// @param tariffType uint8_t + +// @param implementationDateTime uint32_t + +// @param proposedTenancyChangeControl uint32_t + +#define emberAfFillCommandDeviceManagementClusterPublishChangeOfTenancy( \ + providerId, issuerEventId, tariffType, implementationDateTime, proposedTenancyChangeControl) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DEVICE_MANAGEMENT_CLUSTER_ID, \ + ZCL_PUBLISH_CHANGE_OF_TENANCY_COMMAND_ID, \ + "wwuww", \ + providerId, issuerEventId, tariffType, implementationDateTime, proposedTenancyChangeControl); + + + +/** @brief This command is used to request the ESI to respond with information regarding any available change of supplier. +* Cluster: Device Management, This cluster provides attributes and commands to support device-cognisant application layer protocols. +* Command: GetChangeOfSupplier*/ +#define emberAfFillCommandDeviceManagementClusterGetChangeOfSupplier( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DEVICE_MANAGEMENT_CLUSTER_ID, \ + ZCL_GET_CHANGE_OF_SUPPLIER_COMMAND_ID, \ + "" \ +); + + + +/** @brief This command is used to change the Supplier (energy supplier) that is supplying the meter (s). +* Cluster: Device Management, This cluster provides attributes and commands to support device-cognisant application layer protocols. +* Command: PublishChangeOfSupplier*/ +// @param currentProviderId uint32_t + +// @param issuerEventId uint32_t + +// @param tariffType uint8_t + +// @param proposedProviderId uint32_t + +// @param providerChangeImplementationTime uint32_t + +// @param providerChangeControl uint32_t + +// @param proposedProviderName uint8_t * + +// @param proposedProviderContactDetails uint8_t * + +#define emberAfFillCommandDeviceManagementClusterPublishChangeOfSupplier( \ + currentProviderId, issuerEventId, tariffType, proposedProviderId, providerChangeImplementationTime, providerChangeControl, proposedProviderName, proposedProviderContactDetails) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DEVICE_MANAGEMENT_CLUSTER_ID, \ + ZCL_PUBLISH_CHANGE_OF_SUPPLIER_COMMAND_ID, \ + "wwuwwwss", \ + currentProviderId, issuerEventId, tariffType, proposedProviderId, providerChangeImplementationTime, providerChangeControl, proposedProviderName, proposedProviderContactDetails); + + + +/** @brief This command is used to request the current password from the server. +* Cluster: Device Management, This cluster provides attributes and commands to support device-cognisant application layer protocols. +* Command: RequestNewPassword*/ +// @param passwordType uint8_t + +#define emberAfFillCommandDeviceManagementClusterRequestNewPassword( \ + passwordType) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DEVICE_MANAGEMENT_CLUSTER_ID, \ + ZCL_REQUEST_NEW_PASSWORD_COMMAND_ID, \ + "u", \ + passwordType); + + + +/** @brief This command is used to send the current password to the client. +* Cluster: Device Management, This cluster provides attributes and commands to support device-cognisant application layer protocols. +* Command: RequestNewPasswordResponse*/ +// @param issuerEventId uint32_t + +// @param implementationDateTime uint32_t + +// @param durationInMinutes uint16_t + +// @param passwordType uint8_t + +// @param password uint8_t * + +#define emberAfFillCommandDeviceManagementClusterRequestNewPasswordResponse( \ + issuerEventId, implementationDateTime, durationInMinutes, passwordType, password) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DEVICE_MANAGEMENT_CLUSTER_ID, \ + ZCL_REQUEST_NEW_PASSWORD_RESPONSE_COMMAND_ID, \ + "wwvus", \ + issuerEventId, implementationDateTime, durationInMinutes, passwordType, password); + + + +/** @brief This command is used to request the ESI to respond with information regarding any pending change of Site ID. +* Cluster: Device Management, This cluster provides attributes and commands to support device-cognisant application layer protocols. +* Command: GetSiteId*/ +#define emberAfFillCommandDeviceManagementClusterGetSiteId( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DEVICE_MANAGEMENT_CLUSTER_ID, \ + ZCL_GET_SITE_ID_COMMAND_ID, \ + "" \ +); + + + +/** @brief This command is used to set the siteID. +* Cluster: Device Management, This cluster provides attributes and commands to support device-cognisant application layer protocols. +* Command: UpdateSiteId*/ +// @param issuerEventId uint32_t + +// @param siteIdTime uint32_t + +// @param providerId uint32_t + +// @param siteId uint8_t * + +#define emberAfFillCommandDeviceManagementClusterUpdateSiteId( \ + issuerEventId, siteIdTime, providerId, siteId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DEVICE_MANAGEMENT_CLUSTER_ID, \ + ZCL_UPDATE_SITE_ID_COMMAND_ID, \ + "wwws", \ + issuerEventId, siteIdTime, providerId, siteId); + + + +/** @brief This command is sent in response to a GetEventConfiguration command. +* Cluster: Device Management, This cluster provides attributes and commands to support device-cognisant application layer protocols. +* Command: ReportEventConfiguration*/ +// @param commandIndex uint8_t + +// @param totalCommands uint8_t + +// @param eventConfigurationPayload /* TYPE WARNING: array array defaults to */ uint8_t * +// @param eventConfigurationPayloadLen uint16_t +#define emberAfFillCommandDeviceManagementClusterReportEventConfiguration( \ + commandIndex, totalCommands, eventConfigurationPayload, eventConfigurationPayloadLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DEVICE_MANAGEMENT_CLUSTER_ID, \ + ZCL_REPORT_EVENT_CONFIGURATION_COMMAND_ID, \ + "uub", \ + commandIndex, totalCommands, eventConfigurationPayload, eventConfigurationPayloadLen); + + + +/** @brief This command provides a method to set the event configuration attributes, held in a client device. +* Cluster: Device Management, This cluster provides attributes and commands to support device-cognisant application layer protocols. +* Command: SetEventConfiguration*/ +// @param issuerEventId uint32_t + +// @param startDateTime uint32_t + +// @param eventConfiguration uint8_t + +// @param configurationControl uint8_t + +// @param eventConfigurationPayload /* TYPE WARNING: array array defaults to */ uint8_t * +// @param eventConfigurationPayloadLen uint16_t +#define emberAfFillCommandDeviceManagementClusterSetEventConfiguration( \ + issuerEventId, startDateTime, eventConfiguration, configurationControl, eventConfigurationPayload, eventConfigurationPayloadLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DEVICE_MANAGEMENT_CLUSTER_ID, \ + ZCL_SET_EVENT_CONFIGURATION_COMMAND_ID, \ + "wwuub", \ + issuerEventId, startDateTime, eventConfiguration, configurationControl, eventConfigurationPayload, eventConfigurationPayloadLen); + + + +/** @brief This command is used to request the ESI to respond with information regarding any pending change of Customer ID Number. +* Cluster: Device Management, This cluster provides attributes and commands to support device-cognisant application layer protocols. +* Command: GetCIN*/ +#define emberAfFillCommandDeviceManagementClusterGetCIN( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DEVICE_MANAGEMENT_CLUSTER_ID, \ + ZCL_GET_CIN_COMMAND_ID, \ + "" \ +); + + + +/** @brief This command allows the server to request details of event configurations. +* Cluster: Device Management, This cluster provides attributes and commands to support device-cognisant application layer protocols. +* Command: GetEventConfiguration*/ +// @param eventId uint16_t + +#define emberAfFillCommandDeviceManagementClusterGetEventConfiguration( \ + eventId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DEVICE_MANAGEMENT_CLUSTER_ID, \ + ZCL_GET_EVENT_CONFIGURATION_COMMAND_ID, \ + "v", \ + eventId); + + + +/** @brief This command is used to set the CustomerIDNumber attribute held in the Metering cluster. +* Cluster: Device Management, This cluster provides attributes and commands to support device-cognisant application layer protocols. +* Command: UpdateCIN*/ +// @param issuerEventId uint32_t + +// @param implementationTime uint32_t + +// @param providerId uint32_t + +// @param customerIdNumber uint8_t * + +#define emberAfFillCommandDeviceManagementClusterUpdateCIN( \ + issuerEventId, implementationTime, providerId, customerIdNumber) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DEVICE_MANAGEMENT_CLUSTER_ID, \ + ZCL_UPDATE_CIN_COMMAND_ID, \ + "wwws", \ + issuerEventId, implementationTime, providerId, customerIdNumber); + + + +/** @brief The GetEventLog command allows a client to request events from a server's event logs. One or more PublishEventLog commands are returned on receipt of this command. +* Cluster: Events, This cluster provides an interface on which applications can use event-based protocols. +* Command: GetEventLog*/ +// @param eventControlLogId uint8_t + +// @param eventId uint16_t + +// @param startTime uint32_t + +// @param endTime uint32_t + +// @param numberOfEvents uint8_t + +// @param eventOffset uint16_t + +#define emberAfFillCommandEventsClusterGetEventLog( \ + eventControlLogId, eventId, startTime, endTime, numberOfEvents, eventOffset) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_EVENTS_CLUSTER_ID, \ + ZCL_GET_EVENT_LOG_COMMAND_ID, \ + "uvwwuv", \ + eventControlLogId, eventId, startTime, endTime, numberOfEvents, eventOffset); + + + +/** @brief The PublishEvent command is generated upon an event trigger from within the reporting device and, if supported, the associated Event Configuration attribute in the Device Management cluster. +* Cluster: Events, This cluster provides an interface on which applications can use event-based protocols. +* Command: PublishEvent*/ +// @param logId uint8_t + +// @param eventId uint16_t + +// @param eventTime uint32_t + +// @param eventControl uint8_t + +// @param eventData uint8_t * + +#define emberAfFillCommandEventsClusterPublishEvent( \ + logId, eventId, eventTime, eventControl, eventData) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_EVENTS_CLUSTER_ID, \ + ZCL_PUBLISH_EVENT_COMMAND_ID, \ + "uvwus", \ + logId, eventId, eventTime, eventControl, eventData); + + + +/** @brief The ClearEventLogRequest command requests that an Events server device clear the specified event log(s). +* Cluster: Events, This cluster provides an interface on which applications can use event-based protocols. +* Command: ClearEventLogRequest*/ +// @param logId uint8_t + +#define emberAfFillCommandEventsClusterClearEventLogRequest( \ + logId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_EVENTS_CLUSTER_ID, \ + ZCL_CLEAR_EVENT_LOG_REQUEST_COMMAND_ID, \ + "u", \ + logId); + + + +/** @brief This command is generated on receipt of a GetEventLog command. The command returns the most recent event first and up to the number of events requested. +* Cluster: Events, This cluster provides an interface on which applications can use event-based protocols. +* Command: PublishEventLog*/ +// @param totalNumberOfEvents uint16_t + +// @param commandIndex uint8_t + +// @param totalCommands uint8_t + +// @param logPayloadControl uint8_t + +// @param logPayload /* TYPE WARNING: array array defaults to */ uint8_t * +// @param logPayloadLen uint16_t +#define emberAfFillCommandEventsClusterPublishEventLog( \ + totalNumberOfEvents, commandIndex, totalCommands, logPayloadControl, logPayload, logPayloadLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_EVENTS_CLUSTER_ID, \ + ZCL_PUBLISH_EVENT_LOG_COMMAND_ID, \ + "vuuub", \ + totalNumberOfEvents, commandIndex, totalCommands, logPayloadControl, logPayload, logPayloadLen); + + + +/** @brief This command is generated on receipt of a Clear Event Log Request command. +* Cluster: Events, This cluster provides an interface on which applications can use event-based protocols. +* Command: ClearEventLogResponse*/ +// @param clearedEventsLogs uint8_t + +#define emberAfFillCommandEventsClusterClearEventLogResponse( \ + clearedEventsLogs) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_EVENTS_CLUSTER_ID, \ + ZCL_CLEAR_EVENT_LOG_RESPONSE_COMMAND_ID, \ + "u", \ + clearedEventsLogs); + + + +/** @brief The Pairing Response command provides a device joining a MDU network with a list of the devices that will constitute the 'virtual HAN' for the household in which the joining device is to operate. +* Cluster: MDU Pairing, This cluster seeks to assist in the commissioning of networks that include multi-dwelling units (MDUs). +* Command: PairingResponse*/ +// @param pairingInformationVersion uint32_t + +// @param totalNumberOfDevices uint8_t + +// @param commandIndex uint8_t + +// @param totalNumberOfCommands uint8_t + +// @param eui64s /* TYPE WARNING: array array defaults to */ uint8_t * +// @param eui64sLen uint16_t +#define emberAfFillCommandMduPairingClusterPairingResponse( \ + pairingInformationVersion, totalNumberOfDevices, commandIndex, totalNumberOfCommands, eui64s, eui64sLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_MDU_PAIRING_CLUSTER_ID, \ + ZCL_PAIRING_RESPONSE_COMMAND_ID, \ + "wuuub", \ + pairingInformationVersion, totalNumberOfDevices, commandIndex, totalNumberOfCommands, eui64s, eui64sLen); + + + +/** @brief The Pairing Request command allows a device joining a MDU network to determine the devices that will constitute the 'virtual HAN' for the household in which it is to operate. +* Cluster: MDU Pairing, This cluster seeks to assist in the commissioning of networks that include multi-dwelling units (MDUs). +* Command: PairingRequest*/ +// @param localPairingInformationVersion uint32_t + +// @param eui64OfRequestingDevice uint8_t * + +#define emberAfFillCommandMduPairingClusterPairingRequest( \ + localPairingInformationVersion, eui64OfRequestingDevice) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_MDU_PAIRING_CLUSTER_ID, \ + ZCL_PAIRING_REQUEST_COMMAND_ID, \ + "w8", \ + localPairingInformationVersion, eui64OfRequestingDevice); + + + +/** @brief The server sends it to temporarily suspend ZCL messages from clients it identifies as causing too much traffic. +* Cluster: Sub-GHz, Used by the Smart Energy profile for duty cycle monitoring and frequency agility. +* Command: SuspendZclMessages*/ +// @param period uint8_t + +#define emberAfFillCommandSubGhzClusterSuspendZclMessages( \ + period) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SUB_GHZ_CLUSTER_ID, \ + ZCL_SUSPEND_ZCL_MESSAGES_COMMAND_ID, \ + "u", \ + period); + + + +/** @brief The client sends it to determine the current status of its ZCL communications from the server. +* Cluster: Sub-GHz, Used by the Smart Energy profile for duty cycle monitoring and frequency agility. +* Command: GetSuspendZclMessagesStatus*/ +#define emberAfFillCommandSubGhzClusterGetSuspendZclMessagesStatus( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SUB_GHZ_CLUSTER_ID, \ + ZCL_GET_SUSPEND_ZCL_MESSAGES_STATUS_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for InitiateKeyEstablishmentRequest +* Cluster: Key Establishment, Key Establishment cluster +* Command: InitiateKeyEstablishmentRequest*/ +// @param keyEstablishmentSuite uint16_t + +// @param ephemeralDataGenerateTime uint8_t + +// @param confirmKeyGenerateTime uint8_t + +// @param identity Identity + +#define emberAfFillCommandKeyEstablishmentClusterInitiateKeyEstablishmentRequest( \ + keyEstablishmentSuite, ephemeralDataGenerateTime, confirmKeyGenerateTime, identity) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_KEY_ESTABLISHMENT_CLUSTER_ID, \ + ZCL_INITIATE_KEY_ESTABLISHMENT_REQUEST_COMMAND_ID, \ + "vuub", \ + keyEstablishmentSuite, ephemeralDataGenerateTime, confirmKeyGenerateTime, identity); + + + +/** @brief Command description for InitiateKeyEstablishmentResponse +* Cluster: Key Establishment, Key Establishment cluster +* Command: InitiateKeyEstablishmentResponse*/ +// @param requestedKeyEstablishmentSuite uint16_t + +// @param ephemeralDataGenerateTime uint8_t + +// @param confirmKeyGenerateTime uint8_t + +// @param identity Identity + +#define emberAfFillCommandKeyEstablishmentClusterInitiateKeyEstablishmentResponse( \ + requestedKeyEstablishmentSuite, ephemeralDataGenerateTime, confirmKeyGenerateTime, identity) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_KEY_ESTABLISHMENT_CLUSTER_ID, \ + ZCL_INITIATE_KEY_ESTABLISHMENT_RESPONSE_COMMAND_ID, \ + "vuub", \ + requestedKeyEstablishmentSuite, ephemeralDataGenerateTime, confirmKeyGenerateTime, identity); + + + +/** @brief Command description for EphemeralDataRequest +* Cluster: Key Establishment, Key Establishment cluster +* Command: EphemeralDataRequest*/ +// @param ephemeralData EphemeralData + +#define emberAfFillCommandKeyEstablishmentClusterEphemeralDataRequest( \ + ephemeralData) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_KEY_ESTABLISHMENT_CLUSTER_ID, \ + ZCL_EPHEMERAL_DATA_REQUEST_COMMAND_ID, \ + "b", \ + ephemeralData); + + + +/** @brief Command description for EphemeralDataResponse +* Cluster: Key Establishment, Key Establishment cluster +* Command: EphemeralDataResponse*/ +// @param ephemeralData EphemeralData + +#define emberAfFillCommandKeyEstablishmentClusterEphemeralDataResponse( \ + ephemeralData) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_KEY_ESTABLISHMENT_CLUSTER_ID, \ + ZCL_EPHEMERAL_DATA_RESPONSE_COMMAND_ID, \ + "b", \ + ephemeralData); + + + +/** @brief Command description for ConfirmKeyDataRequest +* Cluster: Key Establishment, Key Establishment cluster +* Command: ConfirmKeyDataRequest*/ +// @param secureMessageAuthenticationCode Smac + +#define emberAfFillCommandKeyEstablishmentClusterConfirmKeyDataRequest( \ + secureMessageAuthenticationCode) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_KEY_ESTABLISHMENT_CLUSTER_ID, \ + ZCL_CONFIRM_KEY_DATA_REQUEST_COMMAND_ID, \ + "b", \ + secureMessageAuthenticationCode); + + + +/** @brief Command description for ConfirmKeyDataResponse +* Cluster: Key Establishment, Key Establishment cluster +* Command: ConfirmKeyDataResponse*/ +// @param secureMessageAuthenticationCode Smac + +#define emberAfFillCommandKeyEstablishmentClusterConfirmKeyDataResponse( \ + secureMessageAuthenticationCode) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_KEY_ESTABLISHMENT_CLUSTER_ID, \ + ZCL_CONFIRM_KEY_DATA_RESPONSE_COMMAND_ID, \ + "b", \ + secureMessageAuthenticationCode); + + + +/** @brief Command description for TerminateKeyEstablishment +* Cluster: Key Establishment, Key Establishment cluster +* Command: TerminateKeyEstablishmentFromClient*/ +// @param statusCode uint8_t + +// @param waitTime uint8_t + +// @param keyEstablishmentSuite uint16_t + +#define emberAfFillCommandKeyEstablishmentClusterTerminateKeyEstablishmentFromClient( \ + statusCode, waitTime, keyEstablishmentSuite) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_KEY_ESTABLISHMENT_CLUSTER_ID, \ + ZCL_TERMINATE_KEY_ESTABLISHMENT_FROM_CLIENT_COMMAND_ID, \ + "uuv", \ + statusCode, waitTime, keyEstablishmentSuite); + + + +/** @brief Command description for TerminateKeyEstablishment +* Cluster: Key Establishment, Key Establishment cluster +* Command: TerminateKeyEstablishmentFromServer*/ +// @param statusCode uint8_t + +// @param waitTime uint8_t + +// @param keyEstablishmentSuite uint16_t + +#define emberAfFillCommandKeyEstablishmentClusterTerminateKeyEstablishmentFromServer( \ + statusCode, waitTime, keyEstablishmentSuite) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_KEY_ESTABLISHMENT_CLUSTER_ID, \ + ZCL_TERMINATE_KEY_ESTABLISHMENT_FROM_SERVER_COMMAND_ID, \ + "uuv", \ + statusCode, waitTime, keyEstablishmentSuite); + + + +/** @brief Command description for RequestInformation +* Cluster: Information, Provides commands and attributes for information delivery service on ZigBee networks. +* Command: RequestInformation*/ +// @param inquiryId uint8_t + +// @param dataTypeId uint8_t + +// @param requestInformationPayload /* TYPE WARNING: array array defaults to */ uint8_t * +// @param requestInformationPayloadLen uint16_t +#define emberAfFillCommandInformationClusterRequestInformation( \ + inquiryId, dataTypeId, requestInformationPayload, requestInformationPayloadLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_INFORMATION_CLUSTER_ID, \ + ZCL_REQUEST_INFORMATION_COMMAND_ID, \ + "uub", \ + inquiryId, dataTypeId, requestInformationPayload, requestInformationPayloadLen); + + + +/** @brief Command description for RequestInformationResponse +* Cluster: Information, Provides commands and attributes for information delivery service on ZigBee networks. +* Command: RequestInformationResponse*/ +// @param number uint8_t + +// @param buffer /* TYPE WARNING: array array defaults to */ uint8_t * +// @param bufferLen uint16_t +#define emberAfFillCommandInformationClusterRequestInformationResponse( \ + number, buffer, bufferLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_INFORMATION_CLUSTER_ID, \ + ZCL_REQUEST_INFORMATION_RESPONSE_COMMAND_ID, \ + "ub", \ + number, buffer, bufferLen); + + + +/** @brief Command description for PushInformationResponse +* Cluster: Information, Provides commands and attributes for information delivery service on ZigBee networks. +* Command: PushInformationResponse*/ +// @param notificationList /* TYPE WARNING: array array defaults to */ uint8_t * +// @param notificationListLen uint16_t +#define emberAfFillCommandInformationClusterPushInformationResponse( \ + notificationList, notificationListLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_INFORMATION_CLUSTER_ID, \ + ZCL_PUSH_INFORMATION_RESPONSE_COMMAND_ID, \ + "b", \ + notificationList, notificationListLen); + + + +/** @brief Command description for PushInformation +* Cluster: Information, Provides commands and attributes for information delivery service on ZigBee networks. +* Command: PushInformation*/ +// @param contents /* TYPE WARNING: array array defaults to */ uint8_t * +// @param contentsLen uint16_t +#define emberAfFillCommandInformationClusterPushInformation( \ + contents, contentsLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_INFORMATION_CLUSTER_ID, \ + ZCL_PUSH_INFORMATION_COMMAND_ID, \ + "b", \ + contents, contentsLen); + + + +/** @brief Command description for SendPreference +* Cluster: Information, Provides commands and attributes for information delivery service on ZigBee networks. +* Command: SendPreference*/ +// @param preferenceType uint16_t + +// @param preferencePayload /* TYPE WARNING: array array defaults to */ uint8_t * +// @param preferencePayloadLen uint16_t +#define emberAfFillCommandInformationClusterSendPreference( \ + preferenceType, preferencePayload, preferencePayloadLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_INFORMATION_CLUSTER_ID, \ + ZCL_SEND_PREFERENCE_COMMAND_ID, \ + "vb", \ + preferenceType, preferencePayload, preferencePayloadLen); + + + +/** @brief Command description for SendPreferenceResponse +* Cluster: Information, Provides commands and attributes for information delivery service on ZigBee networks. +* Command: SendPreferenceResponse*/ +// @param statusFeedbackList /* TYPE WARNING: array array defaults to */ uint8_t * +// @param statusFeedbackListLen uint16_t +#define emberAfFillCommandInformationClusterSendPreferenceResponse( \ + statusFeedbackList, statusFeedbackListLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_INFORMATION_CLUSTER_ID, \ + ZCL_SEND_PREFERENCE_RESPONSE_COMMAND_ID, \ + "b", \ + statusFeedbackList, statusFeedbackListLen); + + + +/** @brief Command description for RequestPreferenceResponse +* Cluster: Information, Provides commands and attributes for information delivery service on ZigBee networks. +* Command: RequestPreferenceResponse*/ +// @param statusFeedback uint8_t + +// @param preferenceType uint16_t + +// @param preferencePayload /* TYPE WARNING: array array defaults to */ uint8_t * +// @param preferencePayloadLen uint16_t +#define emberAfFillCommandInformationClusterRequestPreferenceResponse( \ + statusFeedback, preferenceType, preferencePayload, preferencePayloadLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_INFORMATION_CLUSTER_ID, \ + ZCL_REQUEST_PREFERENCE_RESPONSE_COMMAND_ID, \ + "uvb", \ + statusFeedback, preferenceType, preferencePayload, preferencePayloadLen); + + + +/** @brief Command description for ServerRequestPreference +* Cluster: Information, Provides commands and attributes for information delivery service on ZigBee networks. +* Command: ServerRequestPreference*/ +#define emberAfFillCommandInformationClusterServerRequestPreference( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_INFORMATION_CLUSTER_ID, \ + ZCL_SERVER_REQUEST_PREFERENCE_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for Update +* Cluster: Information, Provides commands and attributes for information delivery service on ZigBee networks. +* Command: Update*/ +// @param accessControl uint8_t + +// @param option uint8_t + +// @param contents /* TYPE WARNING: array array defaults to */ uint8_t * +// @param contentsLen uint16_t +#define emberAfFillCommandInformationClusterUpdate( \ + accessControl, option, contents, contentsLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_INFORMATION_CLUSTER_ID, \ + ZCL_UPDATE_COMMAND_ID, \ + "uub", \ + accessControl, option, contents, contentsLen); + + + +/** @brief Command description for RequestPreferenceConfirmation +* Cluster: Information, Provides commands and attributes for information delivery service on ZigBee networks. +* Command: RequestPreferenceConfirmation*/ +// @param statusFeedbackList /* TYPE WARNING: array array defaults to */ uint8_t * +// @param statusFeedbackListLen uint16_t +#define emberAfFillCommandInformationClusterRequestPreferenceConfirmation( \ + statusFeedbackList, statusFeedbackListLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_INFORMATION_CLUSTER_ID, \ + ZCL_REQUEST_PREFERENCE_CONFIRMATION_COMMAND_ID, \ + "b", \ + statusFeedbackList, statusFeedbackListLen); + + + +/** @brief Command description for Delete +* Cluster: Information, Provides commands and attributes for information delivery service on ZigBee networks. +* Command: Delete*/ +// @param deletionOptions uint8_t + +// @param contentIds /* TYPE WARNING: array array defaults to */ uint8_t * +// @param contentIdsLen uint16_t +#define emberAfFillCommandInformationClusterDelete( \ + deletionOptions, contentIds, contentIdsLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_INFORMATION_CLUSTER_ID, \ + ZCL_DELETE_COMMAND_ID, \ + "ub", \ + deletionOptions, contentIds, contentIdsLen); + + + +/** @brief Command description for UpdateResponse +* Cluster: Information, Provides commands and attributes for information delivery service on ZigBee networks. +* Command: UpdateResponse*/ +// @param notificationList /* TYPE WARNING: array array defaults to */ uint8_t * +// @param notificationListLen uint16_t +#define emberAfFillCommandInformationClusterUpdateResponse( \ + notificationList, notificationListLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_INFORMATION_CLUSTER_ID, \ + ZCL_UPDATE_RESPONSE_COMMAND_ID, \ + "b", \ + notificationList, notificationListLen); + + + +/** @brief Command description for ConfigureNodeDescription +* Cluster: Information, Provides commands and attributes for information delivery service on ZigBee networks. +* Command: ConfigureNodeDescription*/ +// @param description uint8_t * + +#define emberAfFillCommandInformationClusterConfigureNodeDescription( \ + description) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_INFORMATION_CLUSTER_ID, \ + ZCL_CONFIGURE_NODE_DESCRIPTION_COMMAND_ID, \ + "s", \ + description); + + + +/** @brief Command description for DeleteResponse +* Cluster: Information, Provides commands and attributes for information delivery service on ZigBee networks. +* Command: DeleteResponse*/ +// @param notificationList /* TYPE WARNING: array array defaults to */ uint8_t * +// @param notificationListLen uint16_t +#define emberAfFillCommandInformationClusterDeleteResponse( \ + notificationList, notificationListLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_INFORMATION_CLUSTER_ID, \ + ZCL_DELETE_RESPONSE_COMMAND_ID, \ + "b", \ + notificationList, notificationListLen); + + + +/** @brief Command description for ConfigureDeliveryEnable +* Cluster: Information, Provides commands and attributes for information delivery service on ZigBee networks. +* Command: ConfigureDeliveryEnable*/ +// @param enable uint8_t + +#define emberAfFillCommandInformationClusterConfigureDeliveryEnable( \ + enable) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_INFORMATION_CLUSTER_ID, \ + ZCL_CONFIGURE_DELIVERY_ENABLE_COMMAND_ID, \ + "u", \ + enable); + + + +/** @brief Command description for ConfigurePushInformationTimer +* Cluster: Information, Provides commands and attributes for information delivery service on ZigBee networks. +* Command: ConfigurePushInformationTimer*/ +// @param timer uint32_t + +#define emberAfFillCommandInformationClusterConfigurePushInformationTimer( \ + timer) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_INFORMATION_CLUSTER_ID, \ + ZCL_CONFIGURE_PUSH_INFORMATION_TIMER_COMMAND_ID, \ + "w", \ + timer); + + + +/** @brief Command description for ConfigureSetRootId +* Cluster: Information, Provides commands and attributes for information delivery service on ZigBee networks. +* Command: ConfigureSetRootId*/ +// @param rootId uint16_t + +#define emberAfFillCommandInformationClusterConfigureSetRootId( \ + rootId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_INFORMATION_CLUSTER_ID, \ + ZCL_CONFIGURE_SET_ROOT_ID_COMMAND_ID, \ + "v", \ + rootId); + + + +/** @brief Command description for ReadFileRequest +* Cluster: Data Sharing, Commands and attributes for small data sharing among ZigBee devices. +* Command: ReadFileRequest*/ +// @param fileIndex uint16_t + +// @param fileStartPositionAndRequestedOctetCount /* TYPE WARNING: array array defaults to */ uint8_t * +// @param fileStartPositionAndRequestedOctetCountLen uint16_t +#define emberAfFillCommandDataSharingClusterReadFileRequest( \ + fileIndex, fileStartPositionAndRequestedOctetCount, fileStartPositionAndRequestedOctetCountLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DATA_SHARING_CLUSTER_ID, \ + ZCL_READ_FILE_REQUEST_COMMAND_ID, \ + "vb", \ + fileIndex, fileStartPositionAndRequestedOctetCount, fileStartPositionAndRequestedOctetCountLen); + + + +/** @brief Command description for WriteFileRequest +* Cluster: Data Sharing, Commands and attributes for small data sharing among ZigBee devices. +* Command: WriteFileRequest*/ +// @param writeOptions uint8_t + +// @param fileSize /* TYPE WARNING: array array defaults to */ uint8_t * +// @param fileSizeLen uint16_t +#define emberAfFillCommandDataSharingClusterWriteFileRequest( \ + writeOptions, fileSize, fileSizeLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DATA_SHARING_CLUSTER_ID, \ + ZCL_WRITE_FILE_REQUEST_COMMAND_ID, \ + "ub", \ + writeOptions, fileSize, fileSizeLen); + + + +/** @brief Command description for ReadRecordRequest +* Cluster: Data Sharing, Commands and attributes for small data sharing among ZigBee devices. +* Command: ReadRecordRequest*/ +// @param fileIndex uint16_t + +// @param fileStartRecordAndRequestedRecordCount /* TYPE WARNING: array array defaults to */ uint8_t * +// @param fileStartRecordAndRequestedRecordCountLen uint16_t +#define emberAfFillCommandDataSharingClusterReadRecordRequest( \ + fileIndex, fileStartRecordAndRequestedRecordCount, fileStartRecordAndRequestedRecordCountLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DATA_SHARING_CLUSTER_ID, \ + ZCL_READ_RECORD_REQUEST_COMMAND_ID, \ + "vb", \ + fileIndex, fileStartRecordAndRequestedRecordCount, fileStartRecordAndRequestedRecordCountLen); + + + +/** @brief Command description for ModifyFileRequest +* Cluster: Data Sharing, Commands and attributes for small data sharing among ZigBee devices. +* Command: ModifyFileRequest*/ +// @param fileIndex uint16_t + +// @param fileStartPosition uint32_t + +// @param octetCount uint32_t + +#define emberAfFillCommandDataSharingClusterModifyFileRequest( \ + fileIndex, fileStartPosition, octetCount) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DATA_SHARING_CLUSTER_ID, \ + ZCL_MODIFY_FILE_REQUEST_COMMAND_ID, \ + "vww", \ + fileIndex, fileStartPosition, octetCount); + + + +/** @brief Command description for WriteFileResponse +* Cluster: Data Sharing, Commands and attributes for small data sharing among ZigBee devices. +* Command: WriteFileResponse*/ +// @param status uint8_t + +// @param fileIndex /* TYPE WARNING: array array defaults to */ uint8_t * +// @param fileIndexLen uint16_t +#define emberAfFillCommandDataSharingClusterWriteFileResponse( \ + status, fileIndex, fileIndexLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DATA_SHARING_CLUSTER_ID, \ + ZCL_WRITE_FILE_RESPONSE_COMMAND_ID, \ + "ub", \ + status, fileIndex, fileIndexLen); + + + +/** @brief Command description for ModifyRecordRequest +* Cluster: Data Sharing, Commands and attributes for small data sharing among ZigBee devices. +* Command: ModifyRecordRequest*/ +// @param fileIndex uint16_t + +// @param fileStartRecord uint16_t + +// @param recordCount uint16_t + +#define emberAfFillCommandDataSharingClusterModifyRecordRequest( \ + fileIndex, fileStartRecord, recordCount) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DATA_SHARING_CLUSTER_ID, \ + ZCL_MODIFY_RECORD_REQUEST_COMMAND_ID, \ + "vvv", \ + fileIndex, fileStartRecord, recordCount); + + + +/** @brief Command description for FileTransmission +* Cluster: Data Sharing, Commands and attributes for small data sharing among ZigBee devices. +* Command: FileTransmission*/ +// @param transmitOptions uint8_t + +// @param buffer /* TYPE WARNING: array array defaults to */ uint8_t * +// @param bufferLen uint16_t +#define emberAfFillCommandDataSharingClusterFileTransmission( \ + transmitOptions, buffer, bufferLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DATA_SHARING_CLUSTER_ID, \ + ZCL_FILE_TRANSMISSION_COMMAND_ID, \ + "ub", \ + transmitOptions, buffer, bufferLen); + + + +/** @brief Command description for RecordTransmission +* Cluster: Data Sharing, Commands and attributes for small data sharing among ZigBee devices. +* Command: RecordTransmission*/ +// @param transmitOptions uint8_t + +// @param buffer /* TYPE WARNING: array array defaults to */ uint8_t * +// @param bufferLen uint16_t +#define emberAfFillCommandDataSharingClusterRecordTransmission( \ + transmitOptions, buffer, bufferLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DATA_SHARING_CLUSTER_ID, \ + ZCL_RECORD_TRANSMISSION_COMMAND_ID, \ + "ub", \ + transmitOptions, buffer, bufferLen); + + + +/** @brief Command description for SearchGame +* Cluster: Gaming, Attributes and commands to support gaming functions of ZigBee-enabled mobile terminals. +* Command: SearchGame*/ +// @param specificGame uint8_t + +// @param gameId uint16_t + +#define emberAfFillCommandGamingClusterSearchGame( \ + specificGame, gameId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GAMING_CLUSTER_ID, \ + ZCL_SEARCH_GAME_COMMAND_ID, \ + "uv", \ + specificGame, gameId); + + + +/** @brief Command description for GameAnnouncement +* Cluster: Gaming, Attributes and commands to support gaming functions of ZigBee-enabled mobile terminals. +* Command: GameAnnouncement*/ +// @param gameId uint16_t + +// @param gameMaster uint8_t + +// @param listOfGame uint8_t * + +#define emberAfFillCommandGamingClusterGameAnnouncement( \ + gameId, gameMaster, listOfGame) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_GAMING_CLUSTER_ID, \ + ZCL_GAME_ANNOUNCEMENT_COMMAND_ID, \ + "vus", \ + gameId, gameMaster, listOfGame); + + + +/** @brief Command description for JoinGame +* Cluster: Gaming, Attributes and commands to support gaming functions of ZigBee-enabled mobile terminals. +* Command: JoinGame*/ +// @param gameId uint16_t + +// @param joinAsMaster uint8_t + +// @param nameOfGame uint8_t * + +#define emberAfFillCommandGamingClusterJoinGame( \ + gameId, joinAsMaster, nameOfGame) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GAMING_CLUSTER_ID, \ + ZCL_JOIN_GAME_COMMAND_ID, \ + "vus", \ + gameId, joinAsMaster, nameOfGame); + + + +/** @brief Command description for GeneralResponse +* Cluster: Gaming, Attributes and commands to support gaming functions of ZigBee-enabled mobile terminals. +* Command: GeneralResponse*/ +// @param commandId uint8_t + +// @param status uint8_t + +// @param message uint8_t * + +#define emberAfFillCommandGamingClusterGeneralResponse( \ + commandId, status, message) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_GAMING_CLUSTER_ID, \ + ZCL_GENERAL_RESPONSE_COMMAND_ID, \ + "uus", \ + commandId, status, message); + + + +/** @brief Command description for StartGame +* Cluster: Gaming, Attributes and commands to support gaming functions of ZigBee-enabled mobile terminals. +* Command: StartGame*/ +#define emberAfFillCommandGamingClusterStartGame( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GAMING_CLUSTER_ID, \ + ZCL_START_GAME_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for PauseGame +* Cluster: Gaming, Attributes and commands to support gaming functions of ZigBee-enabled mobile terminals. +* Command: PauseGame*/ +#define emberAfFillCommandGamingClusterPauseGame( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GAMING_CLUSTER_ID, \ + ZCL_PAUSE_GAME_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for ResumeGame +* Cluster: Gaming, Attributes and commands to support gaming functions of ZigBee-enabled mobile terminals. +* Command: ResumeGame*/ +#define emberAfFillCommandGamingClusterResumeGame( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GAMING_CLUSTER_ID, \ + ZCL_RESUME_GAME_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for QuitGame +* Cluster: Gaming, Attributes and commands to support gaming functions of ZigBee-enabled mobile terminals. +* Command: QuitGame*/ +#define emberAfFillCommandGamingClusterQuitGame( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GAMING_CLUSTER_ID, \ + ZCL_QUIT_GAME_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for EndGame +* Cluster: Gaming, Attributes and commands to support gaming functions of ZigBee-enabled mobile terminals. +* Command: EndGame*/ +#define emberAfFillCommandGamingClusterEndGame( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GAMING_CLUSTER_ID, \ + ZCL_END_GAME_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for StartOver +* Cluster: Gaming, Attributes and commands to support gaming functions of ZigBee-enabled mobile terminals. +* Command: StartOver*/ +#define emberAfFillCommandGamingClusterStartOver( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GAMING_CLUSTER_ID, \ + ZCL_START_OVER_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for ActionControl +* Cluster: Gaming, Attributes and commands to support gaming functions of ZigBee-enabled mobile terminals. +* Command: ActionControl*/ +// @param actions uint32_t + +#define emberAfFillCommandGamingClusterActionControl( \ + actions) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GAMING_CLUSTER_ID, \ + ZCL_ACTION_CONTROL_COMMAND_ID, \ + "w", \ + actions); + + + +/** @brief Command description for DownloadGame +* Cluster: Gaming, Attributes and commands to support gaming functions of ZigBee-enabled mobile terminals. +* Command: DownloadGame*/ +#define emberAfFillCommandGamingClusterDownloadGame( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_GAMING_CLUSTER_ID, \ + ZCL_DOWNLOAD_GAME_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for PathCreation +* Cluster: Data Rate Control, This cluster seeks to give applications a means to managing data rate. It provides commands and attributes which form this interface. +* Command: PathCreation*/ +// @param originatorAddress uint16_t + +// @param destinationAddress uint16_t + +// @param dataRate uint8_t + +#define emberAfFillCommandDataRateControlClusterPathCreation( \ + originatorAddress, destinationAddress, dataRate) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DATA_RATE_CONTROL_CLUSTER_ID, \ + ZCL_PATH_CREATION_COMMAND_ID, \ + "vvu", \ + originatorAddress, destinationAddress, dataRate); + + + +/** @brief Command description for DataRateControl +* Cluster: Data Rate Control, This cluster seeks to give applications a means to managing data rate. It provides commands and attributes which form this interface. +* Command: DataRateControl*/ +// @param originatorAddress uint16_t + +// @param destinationAddress uint16_t + +// @param dataRate uint8_t + +#define emberAfFillCommandDataRateControlClusterDataRateControl( \ + originatorAddress, destinationAddress, dataRate) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_DATA_RATE_CONTROL_CLUSTER_ID, \ + ZCL_DATA_RATE_CONTROL_COMMAND_ID, \ + "vvu", \ + originatorAddress, destinationAddress, dataRate); + + + +/** @brief Command description for DataRateNotification +* Cluster: Data Rate Control, This cluster seeks to give applications a means to managing data rate. It provides commands and attributes which form this interface. +* Command: DataRateNotification*/ +// @param originatorAddress uint16_t + +// @param destinationAddress uint16_t + +// @param dataRate uint8_t + +#define emberAfFillCommandDataRateControlClusterDataRateNotification( \ + originatorAddress, destinationAddress, dataRate) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DATA_RATE_CONTROL_CLUSTER_ID, \ + ZCL_DATA_RATE_NOTIFICATION_COMMAND_ID, \ + "vvu", \ + originatorAddress, destinationAddress, dataRate); + + + +/** @brief Command description for PathDeletion +* Cluster: Data Rate Control, This cluster seeks to give applications a means to managing data rate. It provides commands and attributes which form this interface. +* Command: PathDeletion*/ +// @param originatorAddress uint16_t + +// @param destinationAddress uint16_t + +#define emberAfFillCommandDataRateControlClusterPathDeletion( \ + originatorAddress, destinationAddress) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_DATA_RATE_CONTROL_CLUSTER_ID, \ + ZCL_PATH_DELETION_COMMAND_ID, \ + "vv", \ + originatorAddress, destinationAddress); + + + +/** @brief Command description for EstablishmentRequest +* Cluster: Voice over ZigBee, This cluster seeks to provide an interface to a voice over ZigBee protocol. +* Command: EstablishmentRequest*/ +// @param flag uint8_t + +// @param codecType uint8_t + +// @param sampFreq uint8_t + +// @param codecRate uint8_t + +// @param serviceType uint8_t + +// @param buffer /* TYPE WARNING: array array defaults to */ uint8_t * +// @param bufferLen uint16_t +#define emberAfFillCommandVoiceOverZigbeeClusterEstablishmentRequest( \ + flag, codecType, sampFreq, codecRate, serviceType, buffer, bufferLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_VOICE_OVER_ZIGBEE_CLUSTER_ID, \ + ZCL_ESTABLISHMENT_REQUEST_COMMAND_ID, \ + "uuuuub", \ + flag, codecType, sampFreq, codecRate, serviceType, buffer, bufferLen); + + + +/** @brief Command description for EstablishmentResponse +* Cluster: Voice over ZigBee, This cluster seeks to provide an interface to a voice over ZigBee protocol. +* Command: EstablishmentResponse*/ +// @param ackNack uint8_t + +// @param codecType uint8_t + +#define emberAfFillCommandVoiceOverZigbeeClusterEstablishmentResponse( \ + ackNack, codecType) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_VOICE_OVER_ZIGBEE_CLUSTER_ID, \ + ZCL_ESTABLISHMENT_RESPONSE_COMMAND_ID, \ + "uu", \ + ackNack, codecType); + + + +/** @brief Command description for VoiceTransmission +* Cluster: Voice over ZigBee, This cluster seeks to provide an interface to a voice over ZigBee protocol. +* Command: VoiceTransmission*/ +// @param voiceData /* TYPE WARNING: array array defaults to */ uint8_t * +// @param voiceDataLen uint16_t +#define emberAfFillCommandVoiceOverZigbeeClusterVoiceTransmission( \ + voiceData, voiceDataLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_VOICE_OVER_ZIGBEE_CLUSTER_ID, \ + ZCL_VOICE_TRANSMISSION_COMMAND_ID, \ + "b", \ + voiceData, voiceDataLen); + + + +/** @brief Command description for VoiceTransmissionResponse +* Cluster: Voice over ZigBee, This cluster seeks to provide an interface to a voice over ZigBee protocol. +* Command: VoiceTransmissionResponse*/ +// @param sequenceNumber uint8_t + +// @param errorFlag uint8_t + +#define emberAfFillCommandVoiceOverZigbeeClusterVoiceTransmissionResponse( \ + sequenceNumber, errorFlag) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_VOICE_OVER_ZIGBEE_CLUSTER_ID, \ + ZCL_VOICE_TRANSMISSION_RESPONSE_COMMAND_ID, \ + "uu", \ + sequenceNumber, errorFlag); + + + +/** @brief Command description for VoiceTransmissionCompletion +* Cluster: Voice over ZigBee, This cluster seeks to provide an interface to a voice over ZigBee protocol. +* Command: VoiceTransmissionCompletion*/ +#define emberAfFillCommandVoiceOverZigbeeClusterVoiceTransmissionCompletion( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_VOICE_OVER_ZIGBEE_CLUSTER_ID, \ + ZCL_VOICE_TRANSMISSION_COMPLETION_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for Control +* Cluster: Voice over ZigBee, This cluster seeks to provide an interface to a voice over ZigBee protocol. +* Command: Control*/ +// @param controlType uint8_t + +#define emberAfFillCommandVoiceOverZigbeeClusterControl( \ + controlType) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_VOICE_OVER_ZIGBEE_CLUSTER_ID, \ + ZCL_CONTROL_COMMAND_ID, \ + "u", \ + controlType); + + + +/** @brief Command description for ControlResponse +* Cluster: Voice over ZigBee, This cluster seeks to provide an interface to a voice over ZigBee protocol. +* Command: ControlResponse*/ +// @param ackNack uint8_t + +#define emberAfFillCommandVoiceOverZigbeeClusterControlResponse( \ + ackNack) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_VOICE_OVER_ZIGBEE_CLUSTER_ID, \ + ZCL_CONTROL_RESPONSE_COMMAND_ID, \ + "u", \ + ackNack); + + + +/** @brief Command description for JoinChatRequest +* Cluster: Chatting, Commands and attributes for sending chat messages among ZigBee devices. +* Command: JoinChatRequest*/ +// @param uid uint16_t + +// @param nickname uint8_t * + +// @param cid uint16_t + +#define emberAfFillCommandChattingClusterJoinChatRequest( \ + uid, nickname, cid) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_CHATTING_CLUSTER_ID, \ + ZCL_JOIN_CHAT_REQUEST_COMMAND_ID, \ + "vsv", \ + uid, nickname, cid); + + + +/** @brief Command description for StartChatResponse +* Cluster: Chatting, Commands and attributes for sending chat messages among ZigBee devices. +* Command: StartChatResponse*/ +// @param status uint8_t + +// @param cid uint16_t + +#define emberAfFillCommandChattingClusterStartChatResponse( \ + status, cid) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_CHATTING_CLUSTER_ID, \ + ZCL_START_CHAT_RESPONSE_COMMAND_ID, \ + "uv", \ + status, cid); + + + +/** @brief Command description for LeaveChatRequest +* Cluster: Chatting, Commands and attributes for sending chat messages among ZigBee devices. +* Command: LeaveChatRequest*/ +// @param cid uint16_t + +// @param uid uint16_t + +#define emberAfFillCommandChattingClusterLeaveChatRequest( \ + cid, uid) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_CHATTING_CLUSTER_ID, \ + ZCL_LEAVE_CHAT_REQUEST_COMMAND_ID, \ + "vv", \ + cid, uid); + + + +/** @brief Command description for JoinChatResponse +* Cluster: Chatting, Commands and attributes for sending chat messages among ZigBee devices. +* Command: JoinChatResponse*/ +// @param status uint8_t + +// @param cid uint16_t + +// @param chatParticipantList /* TYPE WARNING: array array defaults to */ uint8_t * +// @param chatParticipantListLen uint16_t +#define emberAfFillCommandChattingClusterJoinChatResponse( \ + status, cid, chatParticipantList, chatParticipantListLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_CHATTING_CLUSTER_ID, \ + ZCL_JOIN_CHAT_RESPONSE_COMMAND_ID, \ + "uvb", \ + status, cid, chatParticipantList, chatParticipantListLen); + + + +/** @brief Command description for SearchChatRequest +* Cluster: Chatting, Commands and attributes for sending chat messages among ZigBee devices. +* Command: SearchChatRequest*/ +#define emberAfFillCommandChattingClusterSearchChatRequest( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_CHATTING_CLUSTER_ID, \ + ZCL_SEARCH_CHAT_REQUEST_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for UserLeft +* Cluster: Chatting, Commands and attributes for sending chat messages among ZigBee devices. +* Command: UserLeft*/ +// @param cid uint16_t + +// @param uid uint16_t + +// @param nickname uint8_t * + +#define emberAfFillCommandChattingClusterUserLeft( \ + cid, uid, nickname) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_CHATTING_CLUSTER_ID, \ + ZCL_USER_LEFT_COMMAND_ID, \ + "vvs", \ + cid, uid, nickname); + + + +/** @brief Command description for SwitchChairmanResponse +* Cluster: Chatting, Commands and attributes for sending chat messages among ZigBee devices. +* Command: SwitchChairmanResponse*/ +// @param cid uint16_t + +// @param uid uint16_t + +#define emberAfFillCommandChattingClusterSwitchChairmanResponse( \ + cid, uid) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_CHATTING_CLUSTER_ID, \ + ZCL_SWITCH_CHAIRMAN_RESPONSE_COMMAND_ID, \ + "vv", \ + cid, uid); + + + +/** @brief Command description for UserJoined +* Cluster: Chatting, Commands and attributes for sending chat messages among ZigBee devices. +* Command: UserJoined*/ +// @param cid uint16_t + +// @param uid uint16_t + +// @param nickname uint8_t * + +#define emberAfFillCommandChattingClusterUserJoined( \ + cid, uid, nickname) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_CHATTING_CLUSTER_ID, \ + ZCL_USER_JOINED_COMMAND_ID, \ + "vvs", \ + cid, uid, nickname); + + + +/** @brief Command description for StartChatRequest +* Cluster: Chatting, Commands and attributes for sending chat messages among ZigBee devices. +* Command: StartChatRequest*/ +// @param name uint8_t * + +// @param uid uint16_t + +// @param nickname uint8_t * + +#define emberAfFillCommandChattingClusterStartChatRequest( \ + name, uid, nickname) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_CHATTING_CLUSTER_ID, \ + ZCL_START_CHAT_REQUEST_COMMAND_ID, \ + "svs", \ + name, uid, nickname); + + + +/** @brief Command description for SearchChatResponse +* Cluster: Chatting, Commands and attributes for sending chat messages among ZigBee devices. +* Command: SearchChatResponse*/ +// @param options uint8_t + +// @param chatRoomList /* TYPE WARNING: array array defaults to */ uint8_t * +// @param chatRoomListLen uint16_t +#define emberAfFillCommandChattingClusterSearchChatResponse( \ + options, chatRoomList, chatRoomListLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_CHATTING_CLUSTER_ID, \ + ZCL_SEARCH_CHAT_RESPONSE_COMMAND_ID, \ + "ub", \ + options, chatRoomList, chatRoomListLen); + + + +/** @brief Command description for ChatMessage +* Cluster: Chatting, Commands and attributes for sending chat messages among ZigBee devices. +* Command: ChatMessage*/ +// @param destinationUid uint16_t + +// @param sourceUid uint16_t + +// @param cid uint16_t + +// @param nickname uint8_t * + +// @param message uint8_t * + +#define emberAfFillCommandChattingClusterChatMessage( \ + destinationUid, sourceUid, cid, nickname, message) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_CHATTING_CLUSTER_ID, \ + ZCL_CHAT_MESSAGE_COMMAND_ID, \ + "vvvss", \ + destinationUid, sourceUid, cid, nickname, message); + + + +/** @brief Command description for SwitchChairmanRequest +* Cluster: Chatting, Commands and attributes for sending chat messages among ZigBee devices. +* Command: SwitchChairmanRequest*/ +// @param cid uint16_t + +#define emberAfFillCommandChattingClusterSwitchChairmanRequest( \ + cid) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_CHATTING_CLUSTER_ID, \ + ZCL_SWITCH_CHAIRMAN_REQUEST_COMMAND_ID, \ + "v", \ + cid); + + + +/** @brief Command description for GetNodeInformationRequest +* Cluster: Chatting, Commands and attributes for sending chat messages among ZigBee devices. +* Command: GetNodeInformationRequest*/ +// @param cid uint16_t + +// @param uid uint16_t + +#define emberAfFillCommandChattingClusterGetNodeInformationRequest( \ + cid, uid) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_CHATTING_CLUSTER_ID, \ + ZCL_GET_NODE_INFORMATION_REQUEST_COMMAND_ID, \ + "vv", \ + cid, uid); + + + +/** @brief Command description for SwitchChairmanConfirm +* Cluster: Chatting, Commands and attributes for sending chat messages among ZigBee devices. +* Command: SwitchChairmanConfirm*/ +// @param cid uint16_t + +// @param nodeInformationList /* TYPE WARNING: array array defaults to */ uint8_t * +// @param nodeInformationListLen uint16_t +#define emberAfFillCommandChattingClusterSwitchChairmanConfirm( \ + cid, nodeInformationList, nodeInformationListLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_CHATTING_CLUSTER_ID, \ + ZCL_SWITCH_CHAIRMAN_CONFIRM_COMMAND_ID, \ + "vb", \ + cid, nodeInformationList, nodeInformationListLen); + + + +/** @brief Command description for SwitchChairmanNotification +* Cluster: Chatting, Commands and attributes for sending chat messages among ZigBee devices. +* Command: SwitchChairmanNotification*/ +// @param cid uint16_t + +// @param uid uint16_t + +// @param address uint16_t + +// @param endpoint uint8_t + +#define emberAfFillCommandChattingClusterSwitchChairmanNotification( \ + cid, uid, address, endpoint) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_CHATTING_CLUSTER_ID, \ + ZCL_SWITCH_CHAIRMAN_NOTIFICATION_COMMAND_ID, \ + "vvvu", \ + cid, uid, address, endpoint); + + + +/** @brief Command description for GetNodeInformationResponse +* Cluster: Chatting, Commands and attributes for sending chat messages among ZigBee devices. +* Command: GetNodeInformationResponse*/ +// @param status uint8_t + +// @param cid uint16_t + +// @param uid uint16_t + +// @param addressEndpointAndNickname /* TYPE WARNING: array array defaults to */ uint8_t * +// @param addressEndpointAndNicknameLen uint16_t +#define emberAfFillCommandChattingClusterGetNodeInformationResponse( \ + status, cid, uid, addressEndpointAndNickname, addressEndpointAndNicknameLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_CHATTING_CLUSTER_ID, \ + ZCL_GET_NODE_INFORMATION_RESPONSE_COMMAND_ID, \ + "uvvb", \ + status, cid, uid, addressEndpointAndNickname, addressEndpointAndNicknameLen); + + + +/** @brief Command description for BuyRequest +* Cluster: Payment, Commands and attributes for payment scenarios including ZigBee devices. +* Command: BuyRequest*/ +// @param userId uint8_t * + +// @param userType uint16_t + +// @param serviceId uint16_t + +// @param goodId uint8_t * + +#define emberAfFillCommandPaymentClusterBuyRequest( \ + userId, userType, serviceId, goodId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PAYMENT_CLUSTER_ID, \ + ZCL_BUY_REQUEST_COMMAND_ID, \ + "svvs", \ + userId, userType, serviceId, goodId); + + + +/** @brief Command description for BuyConfirm +* Cluster: Payment, Commands and attributes for payment scenarios including ZigBee devices. +* Command: BuyConfirm*/ +// @param serialNumber uint8_t * + +// @param currency uint32_t + +// @param priceTrailingDigit uint8_t + +// @param price uint32_t + +// @param timestamp uint8_t * + +// @param transId uint16_t + +// @param transStatus uint8_t + +#define emberAfFillCommandPaymentClusterBuyConfirm( \ + serialNumber, currency, priceTrailingDigit, price, timestamp, transId, transStatus) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PAYMENT_CLUSTER_ID, \ + ZCL_BUY_CONFIRM_COMMAND_ID, \ + "swuwsvu", \ + serialNumber, currency, priceTrailingDigit, price, timestamp, transId, transStatus); + + + +/** @brief Command description for AcceptPayment +* Cluster: Payment, Commands and attributes for payment scenarios including ZigBee devices. +* Command: AcceptPayment*/ +// @param userId uint8_t * + +// @param userType uint16_t + +// @param serviceId uint16_t + +// @param goodId uint8_t * + +#define emberAfFillCommandPaymentClusterAcceptPayment( \ + userId, userType, serviceId, goodId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PAYMENT_CLUSTER_ID, \ + ZCL_ACCEPT_PAYMENT_COMMAND_ID, \ + "svvs", \ + userId, userType, serviceId, goodId); + + + +/** @brief Command description for ReceiptDelivery +* Cluster: Payment, Commands and attributes for payment scenarios including ZigBee devices. +* Command: ReceiptDelivery*/ +// @param serialNumber uint8_t * + +// @param currency uint32_t + +// @param priceTrailingDigit uint8_t + +// @param price uint32_t + +// @param timestamp uint8_t * + +#define emberAfFillCommandPaymentClusterReceiptDelivery( \ + serialNumber, currency, priceTrailingDigit, price, timestamp) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PAYMENT_CLUSTER_ID, \ + ZCL_RECEIPT_DELIVERY_COMMAND_ID, \ + "swuws", \ + serialNumber, currency, priceTrailingDigit, price, timestamp); + + + +/** @brief Command description for PaymentConfirm +* Cluster: Payment, Commands and attributes for payment scenarios including ZigBee devices. +* Command: PaymentConfirm*/ +// @param serialNumber uint8_t * + +// @param transId uint16_t + +// @param transStatus uint8_t + +#define emberAfFillCommandPaymentClusterPaymentConfirm( \ + serialNumber, transId, transStatus) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_PAYMENT_CLUSTER_ID, \ + ZCL_PAYMENT_CONFIRM_COMMAND_ID, \ + "svu", \ + serialNumber, transId, transStatus); + + + +/** @brief Command description for TransactionEnd +* Cluster: Payment, Commands and attributes for payment scenarios including ZigBee devices. +* Command: TransactionEnd*/ +// @param serialNumber uint8_t * + +// @param status uint8_t + +#define emberAfFillCommandPaymentClusterTransactionEnd( \ + serialNumber, status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_PAYMENT_CLUSTER_ID, \ + ZCL_TRANSACTION_END_COMMAND_ID, \ + "su", \ + serialNumber, status); + + + +/** @brief Command description for Subscribe +* Cluster: Billing, Attributes and commands to enable billing of users for provided services through the use of a billing platform. +* Command: Subscribe*/ +// @param userId uint8_t * + +// @param serviceId uint16_t + +// @param serviceProviderId uint16_t + +#define emberAfFillCommandBillingClusterSubscribe( \ + userId, serviceId, serviceProviderId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_BILLING_CLUSTER_ID, \ + ZCL_SUBSCRIBE_COMMAND_ID, \ + "svv", \ + userId, serviceId, serviceProviderId); + + + +/** @brief Command description for CheckBillStatus +* Cluster: Billing, Attributes and commands to enable billing of users for provided services through the use of a billing platform. +* Command: CheckBillStatus*/ +// @param userId uint8_t * + +// @param serviceId uint16_t + +// @param serviceProviderId uint16_t + +#define emberAfFillCommandBillingClusterCheckBillStatus( \ + userId, serviceId, serviceProviderId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_BILLING_CLUSTER_ID, \ + ZCL_CHECK_BILL_STATUS_COMMAND_ID, \ + "svv", \ + userId, serviceId, serviceProviderId); + + + +/** @brief Command description for Unsubscribe +* Cluster: Billing, Attributes and commands to enable billing of users for provided services through the use of a billing platform. +* Command: Unsubscribe*/ +// @param userId uint8_t * + +// @param serviceId uint16_t + +// @param serviceProviderId uint16_t + +#define emberAfFillCommandBillingClusterUnsubscribe( \ + userId, serviceId, serviceProviderId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_BILLING_CLUSTER_ID, \ + ZCL_UNSUBSCRIBE_COMMAND_ID, \ + "svv", \ + userId, serviceId, serviceProviderId); + + + +/** @brief Command description for SendBillRecord +* Cluster: Billing, Attributes and commands to enable billing of users for provided services through the use of a billing platform. +* Command: SendBillRecord*/ +// @param userId uint8_t * + +// @param serviceId uint16_t + +// @param serviceProviderId uint16_t + +// @param timestamp uint8_t * + +// @param duration uint16_t + +#define emberAfFillCommandBillingClusterSendBillRecord( \ + userId, serviceId, serviceProviderId, timestamp, duration) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_BILLING_CLUSTER_ID, \ + ZCL_SEND_BILL_RECORD_COMMAND_ID, \ + "svvsv", \ + userId, serviceId, serviceProviderId, timestamp, duration); + + + +/** @brief Command description for StartBillingSession +* Cluster: Billing, Attributes and commands to enable billing of users for provided services through the use of a billing platform. +* Command: StartBillingSession*/ +// @param userId uint8_t * + +// @param serviceId uint16_t + +// @param serviceProviderId uint16_t + +#define emberAfFillCommandBillingClusterStartBillingSession( \ + userId, serviceId, serviceProviderId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_BILLING_CLUSTER_ID, \ + ZCL_START_BILLING_SESSION_COMMAND_ID, \ + "svv", \ + userId, serviceId, serviceProviderId); + + + +/** @brief Command description for StopBillingSession +* Cluster: Billing, Attributes and commands to enable billing of users for provided services through the use of a billing platform. +* Command: StopBillingSession*/ +// @param userId uint8_t * + +// @param serviceId uint16_t + +// @param serviceProviderId uint16_t + +#define emberAfFillCommandBillingClusterStopBillingSession( \ + userId, serviceId, serviceProviderId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_BILLING_CLUSTER_ID, \ + ZCL_STOP_BILLING_SESSION_COMMAND_ID, \ + "svv", \ + userId, serviceId, serviceProviderId); + + + +/** @brief Command description for BillStatusNotification +* Cluster: Billing, Attributes and commands to enable billing of users for provided services through the use of a billing platform. +* Command: BillStatusNotification*/ +// @param userId uint8_t * + +// @param status uint8_t + +#define emberAfFillCommandBillingClusterBillStatusNotification( \ + userId, status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_BILLING_CLUSTER_ID, \ + ZCL_BILL_STATUS_NOTIFICATION_COMMAND_ID, \ + "su", \ + userId, status); + + + +/** @brief Command description for SessionKeepAlive +* Cluster: Billing, Attributes and commands to enable billing of users for provided services through the use of a billing platform. +* Command: SessionKeepAlive*/ +// @param userId uint8_t * + +// @param serviceId uint16_t + +// @param serviceProviderId uint16_t + +#define emberAfFillCommandBillingClusterSessionKeepAlive( \ + userId, serviceId, serviceProviderId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_BILLING_CLUSTER_ID, \ + ZCL_SESSION_KEEP_ALIVE_COMMAND_ID, \ + "svv", \ + userId, serviceId, serviceProviderId); + + + +/** @brief This basic message is used to retrieve Household Appliance current alerts. +* Cluster: Appliance Events and Alert, Attributes and commands for transmitting or notifying the occurrence of an event, such as "temperature reached" and of an alert such as alarm, fault or warning. +* Command: GetAlerts*/ +#define emberAfFillCommandApplianceEventsAndAlertClusterGetAlerts( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_APPLIANCE_EVENTS_AND_ALERT_CLUSTER_ID, \ + ZCL_GET_ALERTS_COMMAND_ID, \ + "" \ +); + + + +/** @brief This message is used to return household appliance current alerts. +* Cluster: Appliance Events and Alert, Attributes and commands for transmitting or notifying the occurrence of an event, such as "temperature reached" and of an alert such as alarm, fault or warning. +* Command: GetAlertsResponse*/ +// @param alertsCount uint8_t + +// @param alertStructures /* TYPE WARNING: array array defaults to */ uint8_t * +// @param alertStructuresLen uint16_t +#define emberAfFillCommandApplianceEventsAndAlertClusterGetAlertsResponse( \ + alertsCount, alertStructures, alertStructuresLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_APPLIANCE_EVENTS_AND_ALERT_CLUSTER_ID, \ + ZCL_GET_ALERTS_RESPONSE_COMMAND_ID, \ + "ub", \ + alertsCount, alertStructures, alertStructuresLen); + + + +/** @brief This message is used to notify the current modification of warning and/or fault conditions. +* Cluster: Appliance Events and Alert, Attributes and commands for transmitting or notifying the occurrence of an event, such as "temperature reached" and of an alert such as alarm, fault or warning. +* Command: AlertsNotification*/ +// @param alertsCount uint8_t + +// @param alertStructures /* TYPE WARNING: array array defaults to */ uint8_t * +// @param alertStructuresLen uint16_t +#define emberAfFillCommandApplianceEventsAndAlertClusterAlertsNotification( \ + alertsCount, alertStructures, alertStructuresLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_APPLIANCE_EVENTS_AND_ALERT_CLUSTER_ID, \ + ZCL_ALERTS_NOTIFICATION_COMMAND_ID, \ + "ub", \ + alertsCount, alertStructures, alertStructuresLen); + + + +/** @brief This message is used to notify an event occurred during the normal working of the appliance. +* Cluster: Appliance Events and Alert, Attributes and commands for transmitting or notifying the occurrence of an event, such as "temperature reached" and of an alert such as alarm, fault or warning. +* Command: EventsNotification*/ +// @param eventHeader uint8_t + +// @param eventId uint8_t + +#define emberAfFillCommandApplianceEventsAndAlertClusterEventsNotification( \ + eventHeader, eventId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_APPLIANCE_EVENTS_AND_ALERT_CLUSTER_ID, \ + ZCL_EVENTS_NOTIFICATION_COMMAND_ID, \ + "uu", \ + eventHeader, eventId); + + + +/** @brief The Appliance Statistics Cluster server occasionally sends out a Log Notification command to the devices to which it needs to log information related to statistics (e.g., home gateways) which implement the client side of Appliance Statistics Cluster. +* Cluster: Appliance Statistics, This cluster provides a mechanism for the transmitting appliance statistics to a collection unit (gateway). The statistics can be in format of data logs. In case of statistic information that will not fit the single ZigBee payload, the Partition cluster should be used. +* Command: LogNotification*/ +// @param timeStamp uint32_t + +// @param logId uint32_t + +// @param logLength uint32_t + +// @param logPayload /* TYPE WARNING: array array defaults to */ uint8_t * +// @param logPayloadLen uint16_t +#define emberAfFillCommandApplianceStatisticsClusterLogNotification( \ + timeStamp, logId, logLength, logPayload, logPayloadLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_APPLIANCE_STATISTICS_CLUSTER_ID, \ + ZCL_LOG_NOTIFICATION_COMMAND_ID, \ + "wwwb", \ + timeStamp, logId, logLength, logPayload, logPayloadLen); + + + +/** @brief The Log request command is sent from a device supporting the client side of the Appliance Statistics cluster (e.g., Home Gateway) to retrieve the log from the device supporting the server side (e.g., appliance). +* Cluster: Appliance Statistics, This cluster provides a mechanism for the transmitting appliance statistics to a collection unit (gateway). The statistics can be in format of data logs. In case of statistic information that will not fit the single ZigBee payload, the Partition cluster should be used. +* Command: LogRequest*/ +// @param logId uint32_t + +#define emberAfFillCommandApplianceStatisticsClusterLogRequest( \ + logId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_APPLIANCE_STATISTICS_CLUSTER_ID, \ + ZCL_LOG_REQUEST_COMMAND_ID, \ + "w", \ + logId); + + + +/** @brief The Appliance Statistics Cluster server sends out a Log Response command to respond to a Log Request command generated by the client side of the Appliance Statistics cluster. +* Cluster: Appliance Statistics, This cluster provides a mechanism for the transmitting appliance statistics to a collection unit (gateway). The statistics can be in format of data logs. In case of statistic information that will not fit the single ZigBee payload, the Partition cluster should be used. +* Command: LogResponse*/ +// @param timeStamp uint32_t + +// @param logId uint32_t + +// @param logLength uint32_t + +// @param logPayload /* TYPE WARNING: array array defaults to */ uint8_t * +// @param logPayloadLen uint16_t +#define emberAfFillCommandApplianceStatisticsClusterLogResponse( \ + timeStamp, logId, logLength, logPayload, logPayloadLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_APPLIANCE_STATISTICS_CLUSTER_ID, \ + ZCL_LOG_RESPONSE_COMMAND_ID, \ + "wwwb", \ + timeStamp, logId, logLength, logPayload, logPayloadLen); + + + +/** @brief The Log Queue Request command is send from a device supporting the client side of the Appliance Statistics cluster (e.g. Home Gateway) to retrieve the information about the logs inserted in the queue, from the device supporting the server side (e.g. appliance). +* Cluster: Appliance Statistics, This cluster provides a mechanism for the transmitting appliance statistics to a collection unit (gateway). The statistics can be in format of data logs. In case of statistic information that will not fit the single ZigBee payload, the Partition cluster should be used. +* Command: LogQueueRequest*/ +#define emberAfFillCommandApplianceStatisticsClusterLogQueueRequest( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_APPLIANCE_STATISTICS_CLUSTER_ID, \ + ZCL_LOG_QUEUE_REQUEST_COMMAND_ID, \ + "" \ +); + + + +/** @brief The Log Queue Response command is generated as a response to a LogQueueRequest command in order to notify the client side of the Appliance statistics cluster about the logs stored in the server side (queue) that can be retrieved by the client side of this cluster through a LogRequest command. +* Cluster: Appliance Statistics, This cluster provides a mechanism for the transmitting appliance statistics to a collection unit (gateway). The statistics can be in format of data logs. In case of statistic information that will not fit the single ZigBee payload, the Partition cluster should be used. +* Command: LogQueueResponse*/ +// @param logQueueSize uint8_t + +// @param logIds /* TYPE WARNING: array array defaults to */ uint8_t * +// @param logIdsLen uint16_t +#define emberAfFillCommandApplianceStatisticsClusterLogQueueResponse( \ + logQueueSize, logIds, logIdsLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_APPLIANCE_STATISTICS_CLUSTER_ID, \ + ZCL_LOG_QUEUE_RESPONSE_COMMAND_ID, \ + "ub", \ + logQueueSize, logIds, logIdsLen); + + + +/** @brief The Appliance Statistics Cluster server sends out a Statistic Available command to notify the client side of the Appliance Statistics cluster that there are statistics that can be retrieved by using the Log Request command. +* Cluster: Appliance Statistics, This cluster provides a mechanism for the transmitting appliance statistics to a collection unit (gateway). The statistics can be in format of data logs. In case of statistic information that will not fit the single ZigBee payload, the Partition cluster should be used. +* Command: StatisticsAvailable*/ +// @param logQueueSize uint8_t + +// @param logIds /* TYPE WARNING: array array defaults to */ uint8_t * +// @param logIdsLen uint16_t +#define emberAfFillCommandApplianceStatisticsClusterStatisticsAvailable( \ + logQueueSize, logIds, logIdsLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_APPLIANCE_STATISTICS_CLUSTER_ID, \ + ZCL_STATISTICS_AVAILABLE_COMMAND_ID, \ + "ub", \ + logQueueSize, logIds, logIdsLen); + + + +/** @brief A function which returns the power profiling information requested in the GetProfileInfo command. The power profiling information consists of a list of attributes which are profiled along with the period used to profile them. +* Cluster: Electrical Measurement, Attributes related to the electrical properties of a device. This cluster is used by power outlets and other devices that need to provide instantaneous data as opposed to metrology data which should be retrieved from the metering cluster.. +* Command: GetProfileInfoResponseCommand*/ +// @param profileCount uint8_t + +// @param profileIntervalPeriod uint8_t + +// @param maxNumberOfIntervals uint8_t + +// @param listOfAttributes /* TYPE WARNING: array array defaults to */ uint8_t * +// @param listOfAttributesLen uint16_t +#define emberAfFillCommandElectricalMeasurementClusterGetProfileInfoResponseCommand( \ + profileCount, profileIntervalPeriod, maxNumberOfIntervals, listOfAttributes, listOfAttributesLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_ELECTRICAL_MEASUREMENT_CLUSTER_ID, \ + ZCL_GET_PROFILE_INFO_RESPONSE_COMMAND_COMMAND_ID, \ + "uuub", \ + profileCount, profileIntervalPeriod, maxNumberOfIntervals, listOfAttributes, listOfAttributesLen); + + + +/** @brief A function which retrieves the power profiling information from the electrical measurement server. +* Cluster: Electrical Measurement, Attributes related to the electrical properties of a device. This cluster is used by power outlets and other devices that need to provide instantaneous data as opposed to metrology data which should be retrieved from the metering cluster.. +* Command: GetProfileInfoCommand*/ +#define emberAfFillCommandElectricalMeasurementClusterGetProfileInfoCommand( \ +) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ELECTRICAL_MEASUREMENT_CLUSTER_ID, \ + ZCL_GET_PROFILE_INFO_COMMAND_COMMAND_ID, \ + "" \ +); + + + +/** @brief A function which returns the electricity measurement profile. The electricity measurement profile includes information regarding the amount of time used to capture data related to the flow of electricity as well as the intervals thes +* Cluster: Electrical Measurement, Attributes related to the electrical properties of a device. This cluster is used by power outlets and other devices that need to provide instantaneous data as opposed to metrology data which should be retrieved from the metering cluster.. +* Command: GetMeasurementProfileResponseCommand*/ +// @param startTime uint32_t + +// @param status uint8_t + +// @param profileIntervalPeriod uint8_t + +// @param numberOfIntervalsDelivered uint8_t + +// @param attributeId uint16_t + +// @param intervals /* TYPE WARNING: array array defaults to */ uint8_t * +// @param intervalsLen uint16_t +#define emberAfFillCommandElectricalMeasurementClusterGetMeasurementProfileResponseCommand( \ + startTime, status, profileIntervalPeriod, numberOfIntervalsDelivered, attributeId, intervals, intervalsLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_ELECTRICAL_MEASUREMENT_CLUSTER_ID, \ + ZCL_GET_MEASUREMENT_PROFILE_RESPONSE_COMMAND_COMMAND_ID, \ + "wuuuvb", \ + startTime, status, profileIntervalPeriod, numberOfIntervalsDelivered, attributeId, intervals, intervalsLen); + + + +/** @brief A function which retrieves an electricity measurement profile from the electricity measurement server for a specific attribute Id requested. +* Cluster: Electrical Measurement, Attributes related to the electrical properties of a device. This cluster is used by power outlets and other devices that need to provide instantaneous data as opposed to metrology data which should be retrieved from the metering cluster.. +* Command: GetMeasurementProfileCommand*/ +// @param attributeId uint16_t + +// @param startTime uint32_t + +// @param numberOfIntervals uint8_t + +#define emberAfFillCommandElectricalMeasurementClusterGetMeasurementProfileCommand( \ + attributeId, startTime, numberOfIntervals) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ELECTRICAL_MEASUREMENT_CLUSTER_ID, \ + ZCL_GET_MEASUREMENT_PROFILE_COMMAND_COMMAND_ID, \ + "vwu", \ + attributeId, startTime, numberOfIntervals); + + + +/** @brief Command description for ScanRequest +* Cluster: ZLL Commissioning, The ZLL commissioning cluster provides commands to support touch link commissioning. +* Command: ScanRequest*/ +// @param transaction uint32_t + +// @param zigbeeInformation uint8_t + +// @param zllInformation uint8_t + +#define emberAfFillCommandZllCommissioningClusterScanRequest( \ + transaction, zigbeeInformation, zllInformation) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ZLL_COMMISSIONING_CLUSTER_ID, \ + ZCL_SCAN_REQUEST_COMMAND_ID, \ + "wuu", \ + transaction, zigbeeInformation, zllInformation); + + + +/** @brief Command description for ScanResponse +* Cluster: ZLL Commissioning, The ZLL commissioning cluster provides commands to support touch link commissioning. +* Command: ScanResponse*/ +// @param transaction uint32_t + +// @param rssiCorrection uint8_t + +// @param zigbeeInformation uint8_t + +// @param zllInformation uint8_t + +// @param keyBitmask uint16_t + +// @param responseId uint32_t + +// @param extendedPanId uint8_t * + +// @param networkUpdateId uint8_t + +// @param logicalChannel uint8_t + +// @param panId uint16_t + +// @param networkAddress uint16_t + +// @param numberOfSubDevices uint8_t + +// @param totalGroupIds uint8_t + +// @param endpointId uint8_t + +// @param profileId uint16_t + +// @param deviceId uint16_t + +// @param version uint8_t + +// @param groupIdCount uint8_t + +#define emberAfFillCommandZllCommissioningClusterScanResponse( \ + transaction, rssiCorrection, zigbeeInformation, zllInformation, keyBitmask, responseId, extendedPanId, networkUpdateId, logicalChannel, panId, networkAddress, numberOfSubDevices, totalGroupIds, endpointId, profileId, deviceId, version, groupIdCount) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_ZLL_COMMISSIONING_CLUSTER_ID, \ + ZCL_SCAN_RESPONSE_COMMAND_ID, \ + "wuuuvw8uuvvuuuvvuu", \ + transaction, rssiCorrection, zigbeeInformation, zllInformation, keyBitmask, responseId, extendedPanId, networkUpdateId, logicalChannel, panId, networkAddress, numberOfSubDevices, totalGroupIds, endpointId, profileId, deviceId, version, groupIdCount); + + + +/** @brief Command description for DeviceInformationRequest +* Cluster: ZLL Commissioning, The ZLL commissioning cluster provides commands to support touch link commissioning. +* Command: DeviceInformationRequest*/ +// @param transaction uint32_t + +// @param startIndex uint8_t + +#define emberAfFillCommandZllCommissioningClusterDeviceInformationRequest( \ + transaction, startIndex) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ZLL_COMMISSIONING_CLUSTER_ID, \ + ZCL_DEVICE_INFORMATION_REQUEST_COMMAND_ID, \ + "wu", \ + transaction, startIndex); + + + +/** @brief Command description for DeviceInformationResponse +* Cluster: ZLL Commissioning, The ZLL commissioning cluster provides commands to support touch link commissioning. +* Command: DeviceInformationResponse*/ +// @param transaction uint32_t + +// @param numberOfSubDevices uint8_t + +// @param startIndex uint8_t + +// @param deviceInformationRecordCount uint8_t + +// @param deviceInformationRecordList /* TYPE WARNING: array array defaults to */ uint8_t * +// @param deviceInformationRecordListLen uint16_t +#define emberAfFillCommandZllCommissioningClusterDeviceInformationResponse( \ + transaction, numberOfSubDevices, startIndex, deviceInformationRecordCount, deviceInformationRecordList, deviceInformationRecordListLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_ZLL_COMMISSIONING_CLUSTER_ID, \ + ZCL_DEVICE_INFORMATION_RESPONSE_COMMAND_ID, \ + "wuuub", \ + transaction, numberOfSubDevices, startIndex, deviceInformationRecordCount, deviceInformationRecordList, deviceInformationRecordListLen); + + + +/** @brief Command description for IdentifyRequest +* Cluster: ZLL Commissioning, The ZLL commissioning cluster provides commands to support touch link commissioning. +* Command: IdentifyRequest*/ +// @param transaction uint32_t + +// @param identifyDuration uint16_t + +#define emberAfFillCommandZllCommissioningClusterIdentifyRequest( \ + transaction, identifyDuration) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ZLL_COMMISSIONING_CLUSTER_ID, \ + ZCL_IDENTIFY_REQUEST_COMMAND_ID, \ + "wv", \ + transaction, identifyDuration); + + + +/** @brief Command description for ResetToFactoryNewRequest +* Cluster: ZLL Commissioning, The ZLL commissioning cluster provides commands to support touch link commissioning. +* Command: ResetToFactoryNewRequest*/ +// @param transaction uint32_t + +#define emberAfFillCommandZllCommissioningClusterResetToFactoryNewRequest( \ + transaction) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ZLL_COMMISSIONING_CLUSTER_ID, \ + ZCL_RESET_TO_FACTORY_NEW_REQUEST_COMMAND_ID, \ + "w", \ + transaction); + + + +/** @brief Command description for NetworkStartRequest +* Cluster: ZLL Commissioning, The ZLL commissioning cluster provides commands to support touch link commissioning. +* Command: NetworkStartRequest*/ +// @param transaction uint32_t + +// @param extendedPanId uint8_t * + +// @param keyIndex uint8_t + +// @param encryptedNetworkKey /* TYPE WARNING: security_key defaults to */ uint8_t * + +// @param logicalChannel uint8_t + +// @param panId uint16_t + +// @param networkAddress uint16_t + +// @param groupIdentifiersBegin uint16_t + +// @param groupIdentifiersEnd uint16_t + +// @param freeNetworkAddressRangeBegin uint16_t + +// @param freeNetworkAddressRangeEnd uint16_t + +// @param freeGroupIdentifierRangeBegin uint16_t + +// @param freeGroupIdentifierRangeEnd uint16_t + +// @param initiatorIeeeAddress uint8_t * + +// @param initiatorNetworkAddress uint16_t + +#define emberAfFillCommandZllCommissioningClusterNetworkStartRequest( \ + transaction, extendedPanId, keyIndex, encryptedNetworkKey, logicalChannel, panId, networkAddress, groupIdentifiersBegin, groupIdentifiersEnd, freeNetworkAddressRangeBegin, freeNetworkAddressRangeEnd, freeGroupIdentifierRangeBegin, freeGroupIdentifierRangeEnd, initiatorIeeeAddress, initiatorNetworkAddress) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ZLL_COMMISSIONING_CLUSTER_ID, \ + ZCL_NETWORK_START_REQUEST_COMMAND_ID, \ + "w8uGuvvvvvvvv8v", \ + transaction, extendedPanId, keyIndex, encryptedNetworkKey, logicalChannel, panId, networkAddress, groupIdentifiersBegin, groupIdentifiersEnd, freeNetworkAddressRangeBegin, freeNetworkAddressRangeEnd, freeGroupIdentifierRangeBegin, freeGroupIdentifierRangeEnd, initiatorIeeeAddress, initiatorNetworkAddress); + + + +/** @brief Command description for NetworkStartResponse +* Cluster: ZLL Commissioning, The ZLL commissioning cluster provides commands to support touch link commissioning. +* Command: NetworkStartResponse*/ +// @param transaction uint32_t + +// @param status uint8_t + +// @param extendedPanId uint8_t * + +// @param networkUpdateId uint8_t + +// @param logicalChannel uint8_t + +// @param panId uint16_t + +#define emberAfFillCommandZllCommissioningClusterNetworkStartResponse( \ + transaction, status, extendedPanId, networkUpdateId, logicalChannel, panId) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_ZLL_COMMISSIONING_CLUSTER_ID, \ + ZCL_NETWORK_START_RESPONSE_COMMAND_ID, \ + "wu8uuv", \ + transaction, status, extendedPanId, networkUpdateId, logicalChannel, panId); + + + +/** @brief Command description for NetworkJoinRouterRequest +* Cluster: ZLL Commissioning, The ZLL commissioning cluster provides commands to support touch link commissioning. +* Command: NetworkJoinRouterRequest*/ +// @param transaction uint32_t + +// @param extendedPanId uint8_t * + +// @param keyIndex uint8_t + +// @param encryptedNetworkKey /* TYPE WARNING: security_key defaults to */ uint8_t * + +// @param networkUpdateId uint8_t + +// @param logicalChannel uint8_t + +// @param panId uint16_t + +// @param networkAddress uint16_t + +// @param groupIdentifiersBegin uint16_t + +// @param groupIdentifiersEnd uint16_t + +// @param freeNetworkAddressRangeBegin uint16_t + +// @param freeNetworkAddressRangeEnd uint16_t + +// @param freeGroupIdentifierRangeBegin uint16_t + +// @param freeGroupIdentifierRangeEnd uint16_t + +#define emberAfFillCommandZllCommissioningClusterNetworkJoinRouterRequest( \ + transaction, extendedPanId, keyIndex, encryptedNetworkKey, networkUpdateId, logicalChannel, panId, networkAddress, groupIdentifiersBegin, groupIdentifiersEnd, freeNetworkAddressRangeBegin, freeNetworkAddressRangeEnd, freeGroupIdentifierRangeBegin, freeGroupIdentifierRangeEnd) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ZLL_COMMISSIONING_CLUSTER_ID, \ + ZCL_NETWORK_JOIN_ROUTER_REQUEST_COMMAND_ID, \ + "w8uGuuvvvvvvvv", \ + transaction, extendedPanId, keyIndex, encryptedNetworkKey, networkUpdateId, logicalChannel, panId, networkAddress, groupIdentifiersBegin, groupIdentifiersEnd, freeNetworkAddressRangeBegin, freeNetworkAddressRangeEnd, freeGroupIdentifierRangeBegin, freeGroupIdentifierRangeEnd); + + + +/** @brief Command description for NetworkJoinRouterResponse +* Cluster: ZLL Commissioning, The ZLL commissioning cluster provides commands to support touch link commissioning. +* Command: NetworkJoinRouterResponse*/ +// @param transaction uint32_t + +// @param status uint8_t + +#define emberAfFillCommandZllCommissioningClusterNetworkJoinRouterResponse( \ + transaction, status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_ZLL_COMMISSIONING_CLUSTER_ID, \ + ZCL_NETWORK_JOIN_ROUTER_RESPONSE_COMMAND_ID, \ + "wu", \ + transaction, status); + + + +/** @brief Command description for NetworkJoinEndDeviceRequest +* Cluster: ZLL Commissioning, The ZLL commissioning cluster provides commands to support touch link commissioning. +* Command: NetworkJoinEndDeviceRequest*/ +// @param transaction uint32_t + +// @param extendedPanId uint8_t * + +// @param keyIndex uint8_t + +// @param encryptedNetworkKey /* TYPE WARNING: security_key defaults to */ uint8_t * + +// @param networkUpdateId uint8_t + +// @param logicalChannel uint8_t + +// @param panId uint16_t + +// @param networkAddress uint16_t + +// @param groupIdentifiersBegin uint16_t + +// @param groupIdentifiersEnd uint16_t + +// @param freeNetworkAddressRangeBegin uint16_t + +// @param freeNetworkAddressRangeEnd uint16_t + +// @param freeGroupIdentifierRangeBegin uint16_t + +// @param freeGroupIdentifierRangeEnd uint16_t + +#define emberAfFillCommandZllCommissioningClusterNetworkJoinEndDeviceRequest( \ + transaction, extendedPanId, keyIndex, encryptedNetworkKey, networkUpdateId, logicalChannel, panId, networkAddress, groupIdentifiersBegin, groupIdentifiersEnd, freeNetworkAddressRangeBegin, freeNetworkAddressRangeEnd, freeGroupIdentifierRangeBegin, freeGroupIdentifierRangeEnd) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ZLL_COMMISSIONING_CLUSTER_ID, \ + ZCL_NETWORK_JOIN_END_DEVICE_REQUEST_COMMAND_ID, \ + "w8uGuuvvvvvvvv", \ + transaction, extendedPanId, keyIndex, encryptedNetworkKey, networkUpdateId, logicalChannel, panId, networkAddress, groupIdentifiersBegin, groupIdentifiersEnd, freeNetworkAddressRangeBegin, freeNetworkAddressRangeEnd, freeGroupIdentifierRangeBegin, freeGroupIdentifierRangeEnd); + + + +/** @brief Command description for NetworkJoinEndDeviceResponse +* Cluster: ZLL Commissioning, The ZLL commissioning cluster provides commands to support touch link commissioning. +* Command: NetworkJoinEndDeviceResponse*/ +// @param transaction uint32_t + +// @param status uint8_t + +#define emberAfFillCommandZllCommissioningClusterNetworkJoinEndDeviceResponse( \ + transaction, status) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_ZLL_COMMISSIONING_CLUSTER_ID, \ + ZCL_NETWORK_JOIN_END_DEVICE_RESPONSE_COMMAND_ID, \ + "wu", \ + transaction, status); + + + +/** @brief Command description for NetworkUpdateRequest +* Cluster: ZLL Commissioning, The ZLL commissioning cluster provides commands to support touch link commissioning. +* Command: NetworkUpdateRequest*/ +// @param transaction uint32_t + +// @param extendedPanId uint8_t * + +// @param networkUpdateId uint8_t + +// @param logicalChannel uint8_t + +// @param panId uint16_t + +// @param networkAddress uint16_t + +#define emberAfFillCommandZllCommissioningClusterNetworkUpdateRequest( \ + transaction, extendedPanId, networkUpdateId, logicalChannel, panId, networkAddress) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ZLL_COMMISSIONING_CLUSTER_ID, \ + ZCL_NETWORK_UPDATE_REQUEST_COMMAND_ID, \ + "w8uuvv", \ + transaction, extendedPanId, networkUpdateId, logicalChannel, panId, networkAddress); + + + +/** @brief Command description for EndpointInformation +* Cluster: ZLL Commissioning, The ZLL commissioning cluster provides commands to support touch link commissioning. +* Command: EndpointInformation*/ +// @param ieeeAddress uint8_t * + +// @param networkAddress uint16_t + +// @param endpointId uint8_t + +// @param profileId uint16_t + +// @param deviceId uint16_t + +// @param version uint8_t + +#define emberAfFillCommandZllCommissioningClusterEndpointInformation( \ + ieeeAddress, networkAddress, endpointId, profileId, deviceId, version) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_ZLL_COMMISSIONING_CLUSTER_ID, \ + ZCL_ENDPOINT_INFORMATION_COMMAND_ID, \ + "8vuvvu", \ + ieeeAddress, networkAddress, endpointId, profileId, deviceId, version); + + + +/** @brief Command description for GetGroupIdentifiersRequest +* Cluster: ZLL Commissioning, The ZLL commissioning cluster provides commands to support touch link commissioning. +* Command: GetGroupIdentifiersRequest*/ +// @param startIndex uint8_t + +#define emberAfFillCommandZllCommissioningClusterGetGroupIdentifiersRequest( \ + startIndex) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ZLL_COMMISSIONING_CLUSTER_ID, \ + ZCL_GET_GROUP_IDENTIFIERS_REQUEST_COMMAND_ID, \ + "u", \ + startIndex); + + + +/** @brief Command description for GetGroupIdentifiersResponse +* Cluster: ZLL Commissioning, The ZLL commissioning cluster provides commands to support touch link commissioning. +* Command: GetGroupIdentifiersResponse*/ +// @param total uint8_t + +// @param startIndex uint8_t + +// @param count uint8_t + +// @param groupInformationRecordList /* TYPE WARNING: array array defaults to */ uint8_t * +// @param groupInformationRecordListLen uint16_t +#define emberAfFillCommandZllCommissioningClusterGetGroupIdentifiersResponse( \ + total, startIndex, count, groupInformationRecordList, groupInformationRecordListLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_ZLL_COMMISSIONING_CLUSTER_ID, \ + ZCL_GET_GROUP_IDENTIFIERS_RESPONSE_COMMAND_ID, \ + "uuub", \ + total, startIndex, count, groupInformationRecordList, groupInformationRecordListLen); + + + +/** @brief Command description for GetEndpointListRequest +* Cluster: ZLL Commissioning, The ZLL commissioning cluster provides commands to support touch link commissioning. +* Command: GetEndpointListRequest*/ +// @param startIndex uint8_t + +#define emberAfFillCommandZllCommissioningClusterGetEndpointListRequest( \ + startIndex) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_ZLL_COMMISSIONING_CLUSTER_ID, \ + ZCL_GET_ENDPOINT_LIST_REQUEST_COMMAND_ID, \ + "u", \ + startIndex); + + + +/** @brief Command description for GetEndpointListResponse +* Cluster: ZLL Commissioning, The ZLL commissioning cluster provides commands to support touch link commissioning. +* Command: GetEndpointListResponse*/ +// @param total uint8_t + +// @param startIndex uint8_t + +// @param count uint8_t + +// @param endpointInformationRecordList /* TYPE WARNING: array array defaults to */ uint8_t * +// @param endpointInformationRecordListLen uint16_t +#define emberAfFillCommandZllCommissioningClusterGetEndpointListResponse( \ + total, startIndex, count, endpointInformationRecordList, endpointInformationRecordListLen) \ +emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_ZLL_COMMISSIONING_CLUSTER_ID, \ + ZCL_GET_ENDPOINT_LIST_RESPONSE_COMMAND_ID, \ + "uuub", \ + total, startIndex, count, endpointInformationRecordList, endpointInformationRecordListLen); + + + +/** @brief A sample manufacturer specific command within the sample manufacturer specific + cluster. +* Cluster: Sample Mfg Specific Cluster, This cluster provides an example of how the Application + Framework can be extended to include manufacturer specific clusters. +* Command: CommandOne*/ +// @param argOne uint8_t + +#define emberAfFillCommandSampleMfgSpecificClusterCommandOne( \ + argOne) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_ID, \ +4098, \ + ZCL_COMMAND_ONE_COMMAND_ID, \ + "u", \ + argOne); + + + +/** @brief A sample manufacturer specific command within the sample manufacturer specific + cluster. +* Cluster: Sample Mfg Specific Cluster 2, This cluster provides an example of how the Application + Framework can be extended to include manufacturer specific clusters. +* Command: CommandTwo*/ +// @param argOne uint8_t + +#define emberAfFillCommandSampleMfgSpecificCluster2CommandTwo( \ + argOne) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_2_ID, \ +4169, \ + ZCL_COMMAND_TWO_COMMAND_ID, \ + "u", \ + argOne); + + + +/** @brief Command to write a token value over the air. +* Cluster: Configuration Cluster, This cluster allows for the OTA configuration of firmware + parameters. +* Command: SetToken*/ +// @param token uint16_t + +// @param data uint8_t * + +#define emberAfFillCommandOtaConfigurationClusterSetToken( \ + token, data) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_OTA_CONFIGURATION_CLUSTER_ID, \ +4098, \ + ZCL_SET_TOKEN_COMMAND_ID, \ + "vs", \ + token, data); + + + +/** @brief Response to a token value read. +* Cluster: Configuration Cluster, This cluster allows for the OTA configuration of firmware + parameters. +* Command: ReturnToken*/ +// @param token uint16_t + +// @param data uint8_t * + +#define emberAfFillCommandOtaConfigurationClusterReturnToken( \ + token, data) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_OTA_CONFIGURATION_CLUSTER_ID, \ +4098, \ + ZCL_RETURN_TOKEN_COMMAND_ID, \ + "vs", \ + token, data); + + + +/** @brief Command to lock the token values. +* Cluster: Configuration Cluster, This cluster allows for the OTA configuration of firmware + parameters. +* Command: LockTokens*/ +#define emberAfFillCommandOtaConfigurationClusterLockTokens( \ +) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_OTA_CONFIGURATION_CLUSTER_ID, \ +4098, \ + ZCL_LOCK_TOKENS_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command to read a token value. +* Cluster: Configuration Cluster, This cluster allows for the OTA configuration of firmware + parameters. +* Command: ReadTokens*/ +// @param token uint16_t + +#define emberAfFillCommandOtaConfigurationClusterReadTokens( \ + token) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_OTA_CONFIGURATION_CLUSTER_ID, \ +4098, \ + ZCL_READ_TOKENS_COMMAND_ID, \ + "v", \ + token); + + + +/** @brief Command to unlock tokens with a device-specific password (if allowed). +* Cluster: Configuration Cluster, This cluster allows for the OTA configuration of firmware + parameters. +* Command: UnlockTokens*/ +// @param data uint8_t * + +#define emberAfFillCommandOtaConfigurationClusterUnlockTokens( \ + data) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_OTA_CONFIGURATION_CLUSTER_ID, \ +4098, \ + ZCL_UNLOCK_TOKENS_COMMAND_ID, \ + "s", \ + data); + + + +/** @brief Command to put the device into streaming mode. +* Cluster: MFGLIB Cluster, This cluster provides commands to kick off MFGLIB actions + over the air. +* Command: stream*/ +// @param channel uint8_t + +// @param power int8_t + +// @param time uint16_t + +#define emberAfFillCommandMfglibClusterstream( \ + channel, power, time) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_MFGLIB_CLUSTER_ID, \ +4098, \ + ZCL_STREAM_COMMAND_ID, \ + "uuv", \ + channel, power, time); + + + +/** @brief Command to put the device into tone mode. +* Cluster: MFGLIB Cluster, This cluster provides commands to kick off MFGLIB actions + over the air. +* Command: tone*/ +// @param channel uint8_t + +// @param power int8_t + +// @param time uint16_t + +#define emberAfFillCommandMfglibClustertone( \ + channel, power, time) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_MFGLIB_CLUSTER_ID, \ +4098, \ + ZCL_TONE_COMMAND_ID, \ + "uuv", \ + channel, power, time); + + + +/** @brief Command to put the device into RX mode. +* Cluster: MFGLIB Cluster, This cluster provides commands to kick off MFGLIB actions + over the air. +* Command: rxMode*/ +// @param channel uint8_t + +// @param power int8_t + +// @param time uint16_t + +#define emberAfFillCommandMfglibClusterrxMode( \ + channel, power, time) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_MFGLIB_CLUSTER_ID, \ +4098, \ + ZCL_RX_MODE_COMMAND_ID, \ + "uuv", \ + channel, power, time); + + + +/** @brief Enable enforcement of APS-level security for all cluster commands. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: EnableApsLinkKeyAuthorization*/ +// @param numberExemptClusters uint8_t + +// @param clusterId /* TYPE WARNING: array array defaults to */ uint8_t * +// @param clusterIdLen uint16_t +#define emberAfFillCommandSlWwahClusterEnableApsLinkKeyAuthorization( \ + numberExemptClusters, clusterId, clusterIdLen) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_ENABLE_APS_LINK_KEY_AUTHORIZATION_COMMAND_ID, \ + "ub", \ + numberExemptClusters, clusterId, clusterIdLen); + + + +/** @brief Command description for SlAPSLinkKeyAuthorizationQueryResponse +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: ApsLinkKeyAuthorizationQueryResponse*/ +// @param clusterId uint16_t + +// @param apsLinkKeyAuthStatus uint8_t + +#define emberAfFillCommandSlWwahClusterApsLinkKeyAuthorizationQueryResponse( \ + clusterId, apsLinkKeyAuthStatus) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_APS_LINK_KEY_AUTHORIZATION_QUERY_RESPONSE_COMMAND_ID, \ + "vu", \ + clusterId, apsLinkKeyAuthStatus); + + + +/** @brief Disable enforcement of APS-level security for all cluster commands. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: DisableApsLinkKeyAuthorization*/ +// @param numberExemptClusters uint8_t + +// @param clusterId /* TYPE WARNING: array array defaults to */ uint8_t * +// @param clusterIdLen uint16_t +#define emberAfFillCommandSlWwahClusterDisableApsLinkKeyAuthorization( \ + numberExemptClusters, clusterId, clusterIdLen) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_DISABLE_APS_LINK_KEY_AUTHORIZATION_COMMAND_ID, \ + "ub", \ + numberExemptClusters, clusterId, clusterIdLen); + + + +/** @brief Command description for SlPoweringOffNotification +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: PoweringOffNotification*/ +// @param powerNotificationReason uint8_t + +// @param manufacturerId uint16_t + +// @param manufacturerReasonLength uint8_t + +// @param manufacturerReason /* TYPE WARNING: array array defaults to */ uint8_t * +// @param manufacturerReasonLen uint16_t +#define emberAfFillCommandSlWwahClusterPoweringOffNotification( \ + powerNotificationReason, manufacturerId, manufacturerReasonLength, manufacturerReason, manufacturerReasonLen) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_POWERING_OFF_NOTIFICATION_COMMAND_ID, \ + "uvub", \ + powerNotificationReason, manufacturerId, manufacturerReasonLength, manufacturerReason, manufacturerReasonLen); + + + +/** @brief Query status of APS-level security enforcement for a specified cluster. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: ApsLinkKeyAuthorizationQuery*/ +// @param clusterId uint16_t + +#define emberAfFillCommandSlWwahClusterApsLinkKeyAuthorizationQuery( \ + clusterId) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_APS_LINK_KEY_AUTHORIZATION_QUERY_COMMAND_ID, \ + "v", \ + clusterId); + + + +/** @brief Command description for SlPoweringOnNotification +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: PoweringOnNotification*/ +// @param powerNotificationReason uint8_t + +// @param manufacturerId uint16_t + +// @param manufacturerReasonLength uint8_t + +// @param manufacturerReason /* TYPE WARNING: array array defaults to */ uint8_t * +// @param manufacturerReasonLen uint16_t +#define emberAfFillCommandSlWwahClusterPoweringOnNotification( \ + powerNotificationReason, manufacturerId, manufacturerReasonLength, manufacturerReason, manufacturerReasonLen) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_POWERING_ON_NOTIFICATION_COMMAND_ID, \ + "uvub", \ + powerNotificationReason, manufacturerId, manufacturerReasonLength, manufacturerReason, manufacturerReasonLen); + + + +/** @brief Trigger device to request a new APS link key from the Trust Center. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: RequestNewApsLinkKey*/ +#define emberAfFillCommandSlWwahClusterRequestNewApsLinkKey( \ +) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_REQUEST_NEW_APS_LINK_KEY_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for SlShortAddressChange +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: ShortAddressChange*/ +// @param deviceEui64 uint8_t * + +// @param deviceShort uint16_t + +#define emberAfFillCommandSlWwahClusterShortAddressChange( \ + deviceEui64, deviceShort) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_SHORT_ADDRESS_CHANGE_COMMAND_ID, \ + "8v", \ + deviceEui64, deviceShort); + + + +/** @brief Enable WWAH App Event retry algorithm. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: EnableWwahAppEventRetryAlgorithm*/ +// @param firstBackoffTimeSeconds uint8_t + +// @param backoffSeqCommonRatio uint8_t + +// @param maxBackoffTimeSeconds uint32_t + +// @param maxRedeliveryAttempts uint8_t + +#define emberAfFillCommandSlWwahClusterEnableWwahAppEventRetryAlgorithm( \ + firstBackoffTimeSeconds, backoffSeqCommonRatio, maxBackoffTimeSeconds, maxRedeliveryAttempts) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_ENABLE_WWAH_APP_EVENT_RETRY_ALGORITHM_COMMAND_ID, \ + "uuwu", \ + firstBackoffTimeSeconds, backoffSeqCommonRatio, maxBackoffTimeSeconds, maxRedeliveryAttempts); + + + +/** @brief Command description for SlAPSAckEnablementQueryResponse +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: ApsAckEnablementQueryResponse*/ +// @param numberExemptClusters uint8_t + +// @param clusterId /* TYPE WARNING: array array defaults to */ uint8_t * +// @param clusterIdLen uint16_t +#define emberAfFillCommandSlWwahClusterApsAckEnablementQueryResponse( \ + numberExemptClusters, clusterId, clusterIdLen) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_APS_ACK_ENABLEMENT_QUERY_RESPONSE_COMMAND_ID, \ + "ub", \ + numberExemptClusters, clusterId, clusterIdLen); + + + +/** @brief Disable WWAH App Event retry algorithm. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: DisableWwahAppEventRetryAlgorithm*/ +#define emberAfFillCommandSlWwahClusterDisableWwahAppEventRetryAlgorithm( \ +) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_DISABLE_WWAH_APP_EVENT_RETRY_ALGORITHM_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for SlPowerDescriptorChange +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: PowerDescriptorChange*/ +// @param currentPowerMode uint32_t + +// @param availablePowerSources uint32_t + +// @param currentPowerSource uint32_t + +// @param currentPowerSourceLevel uint32_t + +#define emberAfFillCommandSlWwahClusterPowerDescriptorChange( \ + currentPowerMode, availablePowerSources, currentPowerSource, currentPowerSourceLevel) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_POWER_DESCRIPTOR_CHANGE_COMMAND_ID, \ + "wwww", \ + currentPowerMode, availablePowerSources, currentPowerSource, currentPowerSourceLevel); + + + +/** @brief Trigger device to request current attribute values from Time Cluster server. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: RequestTime*/ +#define emberAfFillCommandSlWwahClusterRequestTime( \ +) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_REQUEST_TIME_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for SlNewDebugReportNotification +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: NewDebugReportNotification*/ +// @param debugReportId uint8_t + +// @param debugReportSize uint32_t + +#define emberAfFillCommandSlWwahClusterNewDebugReportNotification( \ + debugReportId, debugReportSize) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_NEW_DEBUG_REPORT_NOTIFICATION_COMMAND_ID, \ + "uw", \ + debugReportId, debugReportSize); + + + +/** @brief Enable WWAH rejoin algorithm. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: EnableWwahRejoinAlgorithm*/ +// @param fastRejoinTimeoutSeconds uint16_t + +// @param durationBetweenRejoinsSeconds uint16_t + +// @param fastRejoinFirstBackoffSeconds uint16_t + +// @param maxBackoffTimeSeconds uint16_t + +// @param maxBackoffIterations uint16_t + +#define emberAfFillCommandSlWwahClusterEnableWwahRejoinAlgorithm( \ + fastRejoinTimeoutSeconds, durationBetweenRejoinsSeconds, fastRejoinFirstBackoffSeconds, maxBackoffTimeSeconds, maxBackoffIterations) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_ENABLE_WWAH_REJOIN_ALGORITHM_COMMAND_ID, \ + "vvvvv", \ + fastRejoinTimeoutSeconds, durationBetweenRejoinsSeconds, fastRejoinFirstBackoffSeconds, maxBackoffTimeSeconds, maxBackoffIterations); + + + +/** @brief Command description for SlDebugReportQueryResponse +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: DebugReportQueryResponse*/ +// @param debugReportId uint8_t + +// @param debugReportData /* TYPE WARNING: array array defaults to */ uint8_t * +// @param debugReportDataLen uint16_t +#define emberAfFillCommandSlWwahClusterDebugReportQueryResponse( \ + debugReportId, debugReportData, debugReportDataLen) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_DEBUG_REPORT_QUERY_RESPONSE_COMMAND_ID, \ + "ub", \ + debugReportId, debugReportData, debugReportDataLen); + + + +/** @brief Disable WWAH rejoin algorithm. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: DisableWwahRejoinAlgorithm*/ +#define emberAfFillCommandSlWwahClusterDisableWwahRejoinAlgorithm( \ +) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_DISABLE_WWAH_REJOIN_ALGORITHM_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for SlTrustCenterForClusterServerQueryResponse +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: TrustCenterForClusterServerQueryResponse*/ +// @param numberOfClusters uint8_t + +// @param clusterId /* TYPE WARNING: array array defaults to */ uint8_t * +// @param clusterIdLen uint16_t +#define emberAfFillCommandSlWwahClusterTrustCenterForClusterServerQueryResponse( \ + numberOfClusters, clusterId, clusterIdLen) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_TRUST_CENTER_FOR_CLUSTER_SERVER_QUERY_RESPONSE_COMMAND_ID, \ + "ub", \ + numberOfClusters, clusterId, clusterIdLen); + + + +/** @brief Set the enrollment method of an IAS Zone server. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: SetIasZoneEnrollmentMethod*/ +// @param enrollmentMode uint8_t + +#define emberAfFillCommandSlWwahClusterSetIasZoneEnrollmentMethod( \ + enrollmentMode) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_SET_IAS_ZONE_ENROLLMENT_METHOD_COMMAND_ID, \ + "u", \ + enrollmentMode); + + + +/** @brief Command description for SlSurveyBeaconsResponse +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: SurveyBeaconsResponse*/ +// @param numberOfBeacons uint8_t + +// @param beacon /* TYPE WARNING: array array defaults to */ uint8_t * +// @param beaconLen uint16_t +#define emberAfFillCommandSlWwahClusterSurveyBeaconsResponse( \ + numberOfBeacons, beacon, beaconLen) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_SURVEY_BEACONS_RESPONSE_COMMAND_ID, \ + "ub", \ + numberOfBeacons, beacon, beaconLen); + + + +/** @brief Clear the binding table. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: ClearBindingTable*/ +#define emberAfFillCommandSlWwahClusterClearBindingTable( \ +) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_CLEAR_BINDING_TABLE_COMMAND_ID, \ + "" \ +); + + + +/** @brief Enable device to periodically check connectivity with Zigbee Coordinator. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: EnablePeriodicRouterCheckIns*/ +// @param checkInInterval uint16_t + +#define emberAfFillCommandSlWwahClusterEnablePeriodicRouterCheckIns( \ + checkInInterval) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_ENABLE_PERIODIC_ROUTER_CHECK_INS_COMMAND_ID, \ + "v", \ + checkInInterval); + + + +/** @brief Disable device from periodically checking connectivity with Zigbee Coordinator. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: DisablePeriodicRouterCheckIns*/ +#define emberAfFillCommandSlWwahClusterDisablePeriodicRouterCheckIns( \ +) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_DISABLE_PERIODIC_ROUTER_CHECK_INS_COMMAND_ID, \ + "" \ +); + + + +/** @brief Set MAC poll failure wait time. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: SetMacPollFailureWaitTime*/ +// @param waitTime uint8_t + +#define emberAfFillCommandSlWwahClusterSetMacPollFailureWaitTime( \ + waitTime) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_SET_MAC_POLL_FAILURE_WAIT_TIME_COMMAND_ID, \ + "u", \ + waitTime); + + + +/** @brief Set pending network update parameters. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: SetPendingNetworkUpdate*/ +// @param channel uint8_t + +// @param panId uint16_t + +#define emberAfFillCommandSlWwahClusterSetPendingNetworkUpdate( \ + channel, panId) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_SET_PENDING_NETWORK_UPDATE_COMMAND_ID, \ + "uv", \ + channel, panId); + + + +/** @brief Require all unicast commands to have APS ACKs enabled. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: RequireApsAcksOnUnicasts*/ +// @param numberExemptClusters uint8_t + +// @param clusterId /* TYPE WARNING: array array defaults to */ uint8_t * +// @param clusterIdLen uint16_t +#define emberAfFillCommandSlWwahClusterRequireApsAcksOnUnicasts( \ + numberExemptClusters, clusterId, clusterIdLen) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_REQUIRE_APS_ACKS_ON_UNICASTS_COMMAND_ID, \ + "ub", \ + numberExemptClusters, clusterId, clusterIdLen); + + + +/** @brief Roll back changes made by Require APS ACK on Unicasts. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: RemoveApsAcksOnUnicastsRequirement*/ +#define emberAfFillCommandSlWwahClusterRemoveApsAcksOnUnicastsRequirement( \ +) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_REMOVE_APS_ACKS_ON_UNICASTS_REQUIREMENT_COMMAND_ID, \ + "" \ +); + + + +/** @brief Query whether unicast commands are required to have APS ACKs enabled. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: ApsAckRequirementQuery*/ +#define emberAfFillCommandSlWwahClusterApsAckRequirementQuery( \ +) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_APS_ACK_REQUIREMENT_QUERY_COMMAND_ID, \ + "" \ +); + + + +/** @brief Query for specified debug report. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: DebugReportQuery*/ +// @param debugReportId uint8_t + +#define emberAfFillCommandSlWwahClusterDebugReportQuery( \ + debugReportId) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_DEBUG_REPORT_QUERY_COMMAND_ID, \ + "u", \ + debugReportId); + + + +/** @brief Causes device to perform a scan for beacons advertising the device's network. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: SurveyBeacons*/ +// @param standardBeacons uint8_t + +#define emberAfFillCommandSlWwahClusterSurveyBeacons( \ + standardBeacons) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_SURVEY_BEACONS_COMMAND_ID, \ + "u", \ + standardBeacons); + + + +/** @brief Disallow OTA downgrade of all device firmware components. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: DisableOtaDowngrades*/ +#define emberAfFillCommandSlWwahClusterDisableOtaDowngrades( \ +) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_DISABLE_OTA_DOWNGRADES_COMMAND_ID, \ + "" \ +); + + + +/** @brief Causes device to ignore MGMT Leave Without Rejoin commands. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: DisableMgmtLeaveWithoutRejoin*/ +#define emberAfFillCommandSlWwahClusterDisableMgmtLeaveWithoutRejoin( \ +) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_DISABLE_MGMT_LEAVE_WITHOUT_REJOIN_COMMAND_ID, \ + "" \ +); + + + +/** @brief Causes device to ignore Touchlink Interpan messages. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: DisableTouchlinkInterpanMessageSupport*/ +#define emberAfFillCommandSlWwahClusterDisableTouchlinkInterpanMessageSupport( \ +) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_DISABLE_TOUCHLINK_INTERPAN_MESSAGE_SUPPORT_COMMAND_ID, \ + "" \ +); + + + +/** @brief Enable WWAH Parent Classification advertisements. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: EnableWwahParentClassification*/ +#define emberAfFillCommandSlWwahClusterEnableWwahParentClassification( \ +) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_ENABLE_WWAH_PARENT_CLASSIFICATION_COMMAND_ID, \ + "" \ +); + + + +/** @brief Disable WWAH Parent Classification advertisements. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: DisableWwahParentClassification*/ +#define emberAfFillCommandSlWwahClusterDisableWwahParentClassification( \ +) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_DISABLE_WWAH_PARENT_CLASSIFICATION_COMMAND_ID, \ + "" \ +); + + + +/** @brief Process only network key rotation commands sent via unicast and encrypted by Trust Center Link Key. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: EnableTcSecurityOnNtwkKeyRotation*/ +#define emberAfFillCommandSlWwahClusterEnableTcSecurityOnNtwkKeyRotation( \ +) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_ENABLE_TC_SECURITY_ON_NTWK_KEY_ROTATION_COMMAND_ID, \ + "" \ +); + + + +/** @brief Enable WWAH Bad Parent Recovery feature. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: EnableWwahBadParentRecovery*/ +#define emberAfFillCommandSlWwahClusterEnableWwahBadParentRecovery( \ +) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_ENABLE_WWAH_BAD_PARENT_RECOVERY_COMMAND_ID, \ + "" \ +); + + + +/** @brief Disable WWAH Bad Parent Recovery feature. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: DisableWwahBadParentRecovery*/ +#define emberAfFillCommandSlWwahClusterDisableWwahBadParentRecovery( \ +) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_DISABLE_WWAH_BAD_PARENT_RECOVERY_COMMAND_ID, \ + "" \ +); + + + +/** @brief Enable Configuration Mode. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: EnableConfigurationMode*/ +#define emberAfFillCommandSlWwahClusterEnableConfigurationMode( \ +) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_ENABLE_CONFIGURATION_MODE_COMMAND_ID, \ + "" \ +); + + + +/** @brief Disable Configuration Mode. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: DisableConfigurationMode*/ +#define emberAfFillCommandSlWwahClusterDisableConfigurationMode( \ +) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_DISABLE_CONFIGURATION_MODE_COMMAND_ID, \ + "" \ +); + + + +/** @brief Use only the Trust Center as cluster server for the set of clusters specified. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: UseTrustCenterForClusterServer*/ +// @param numberOfClusters uint8_t + +// @param clusterId /* TYPE WARNING: array array defaults to */ uint8_t * +// @param clusterIdLen uint16_t +#define emberAfFillCommandSlWwahClusterUseTrustCenterForClusterServer( \ + numberOfClusters, clusterId, clusterIdLen) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_USE_TRUST_CENTER_FOR_CLUSTER_SERVER_COMMAND_ID, \ + "ub", \ + numberOfClusters, clusterId, clusterIdLen); + + + +/** @brief Causes device to send an appropriate Trust Center for Cluster Server Query Response command. +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: TrustCenterForClusterServerQuery*/ +#define emberAfFillCommandSlWwahClusterTrustCenterForClusterServerQuery( \ +) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_CLIENT_TO_SERVER), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_TRUST_CENTER_FOR_CLUSTER_SERVER_QUERY_COMMAND_ID, \ + "" \ +); + + + +/** @brief Command description for SlUseTrustCenterForClusterServerResponse +* Cluster: SL Works With All Hubs, Silicon Labs proprietary attributes and commands for Works With All Hubs functional extensions. +* Command: UseTrustCenterForClusterServerResponse*/ +// @param status uint8_t + +// @param clusterStatusLength uint8_t + +// @param clusterStatus /* TYPE WARNING: array array defaults to */ uint8_t * +// @param clusterStatusLen uint16_t +#define emberAfFillCommandSlWwahClusterUseTrustCenterForClusterServerResponse( \ + status, clusterStatusLength, clusterStatus, clusterStatusLen) \ +emberAfFillExternalManufacturerSpecificBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_MANUFACTURER_SPECIFIC_MASK \ + | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), \ + ZCL_SL_WWAH_CLUSTER_ID, \ +4631, \ + ZCL_USE_TRUST_CENTER_FOR_CLUSTER_SERVER_RESPONSE_COMMAND_ID, \ + "uub", \ + status, clusterStatusLength, clusterStatus, clusterStatusLen); + + +// End Cluster Specific Commands + +/** @} END addtogroup */ +#endif // SILABS_CLUSTER_CLIENT_API diff --git a/silabs_examples/credentials/host/zap/zap-config.h b/silabs_examples/credentials/host/zap/zap-config.h new file mode 100644 index 00000000000000..a610d1fe1efc15 --- /dev/null +++ b/silabs_examples/credentials/host/zap/zap-config.h @@ -0,0 +1,197 @@ +// This file is generated by ZCL Advanced Platform generator. Please don't edit manually. + +// The following is brought in by the endianness component, which all +// applications must include +#include "sl_endianness.h" + +#ifndef SILABS_AF_ENDPOINT_CONFIG +#define SILABS_AF_ENDPOINT_CONFIG 1 + +// Default values for the attributes longer than a pointer, in a form of a +// binary blob. All attribute values with size greater than 2 bytes. Excluding 0 +// values and externally saved values. Separate block is generated for +// big-endian and little-endian cases. +#define GENERATED_DEFAULTS_COUNT (0) +#if BIGENDIAN_CPU +#define GENERATED_DEFAULTS { \ +} +#else //!BIGENDIAN_CPU +#define GENERATED_DEFAULTS { \ +} +#endif + + +// This is an array of EmberAfAttributeMinMaxValue structures. +#define GENERATED_MIN_MAX_DEFAULT_COUNT (0) +#define GENERATED_MIN_MAX_DEFAULTS { \ +} + +#define GENERATED_ATTRIBUTE_COUNT (18) +// This is an array of EmberAfAttributeMetadata structures. +#define GENERATED_ATTRIBUTES { \ + { 0xFFFD, ZCL_INT16U_ATTRIBUTE_TYPE, 2, (ATTRIBUTE_MASK_CLIENT| ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)3 } }, /* 0 Cluster: Basic, Attribute: cluster revision, Side: client*/ \ + { 0x0000, ZCL_INT8U_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)0x08 } }, /* 1 Cluster: Basic, Attribute: ZCL version, Side: server*/ \ + { 0x0007, ZCL_ENUM8_ATTRIBUTE_TYPE, 1, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)0x00 } }, /* 2 Cluster: Basic, Attribute: power source, Side: server*/ \ + { 0xFFFD, ZCL_INT16U_ATTRIBUTE_TYPE, 2, (ATTRIBUTE_MASK_SINGLETON), { (uint8_t*)3 } }, /* 3 Cluster: Basic, Attribute: cluster revision, Side: server*/ \ + { 0xFFFD, ZCL_INT16U_ATTRIBUTE_TYPE, 2, (ATTRIBUTE_MASK_CLIENT), { (uint8_t*)2 } }, /* 4 Cluster: Identify, Attribute: cluster revision, Side: client*/ \ + { 0x0000, ZCL_INT16U_ATTRIBUTE_TYPE, 2, (ATTRIBUTE_MASK_WRITABLE), { (uint8_t*)0x0000 } }, /* 5 Cluster: Identify, Attribute: identify time, Side: server*/ \ + { 0xFFFD, ZCL_INT16U_ATTRIBUTE_TYPE, 2, (0x00), { (uint8_t*)2 } }, /* 6 Cluster: Identify, Attribute: cluster revision, Side: server*/ \ + { 0xFFFD, ZCL_INT16U_ATTRIBUTE_TYPE, 2, (ATTRIBUTE_MASK_CLIENT), { (uint8_t*)3 } }, /* 7 Cluster: Groups, Attribute: cluster revision, Side: client*/ \ + { 0xFFFD, ZCL_INT16U_ATTRIBUTE_TYPE, 2, (ATTRIBUTE_MASK_CLIENT), { (uint8_t*)2 } }, /* 8 Cluster: On/off, Attribute: cluster revision, Side: client*/ \ + { 0x0000, ZCL_BOOLEAN_ATTRIBUTE_TYPE, 1, (0x00), { (uint8_t*)0x00 } }, /* 9 Cluster: On/off, Attribute: on/off, Side: server*/ \ + { 0xFFFD, ZCL_INT16U_ATTRIBUTE_TYPE, 2, (0x00), { (uint8_t*)2 } }, /* 10 Cluster: On/off, Attribute: cluster revision, Side: server*/ \ + { 0xFFFD, ZCL_INT16U_ATTRIBUTE_TYPE, 2, (ATTRIBUTE_MASK_CLIENT), { (uint8_t*)3 } }, /* 11 Cluster: Level Control, Attribute: cluster revision, Side: client*/ \ + { 0xFFFD, ZCL_INT16U_ATTRIBUTE_TYPE, 2, (0x00), { (uint8_t*)4 } }, /* 12 Cluster: Over the Air Bootloading, Attribute: cluster revision, Side: server*/ \ + { 0xFFFD, ZCL_INT16U_ATTRIBUTE_TYPE, 2, (ATTRIBUTE_MASK_CLIENT), { (uint8_t*)3 } }, /* 13 Cluster: Poll Control, Attribute: cluster revision, Side: client*/ \ + { 0xFFFD, ZCL_INT16U_ATTRIBUTE_TYPE, 2, (ATTRIBUTE_MASK_CLIENT), { (uint8_t*)3 } }, /* 14 Cluster: Door Lock, Attribute: cluster revision, Side: client*/ \ + { 0xFFFD, ZCL_INT16U_ATTRIBUTE_TYPE, 2, (ATTRIBUTE_MASK_CLIENT), { (uint8_t*)3 } }, /* 15 Cluster: Thermostat, Attribute: cluster revision, Side: client*/ \ + { 0xFFFD, ZCL_INT16U_ATTRIBUTE_TYPE, 2, (ATTRIBUTE_MASK_CLIENT), { (uint8_t*)3 } }, /* 16 Cluster: Color Control, Attribute: cluster revision, Side: client*/ \ + { 0xFFFD, ZCL_INT16U_ATTRIBUTE_TYPE, 2, (ATTRIBUTE_MASK_CLIENT), { (uint8_t*)2 } } /* 17 Cluster: Occupancy Sensing, Attribute: cluster revision, Side: client*/ \ + } + +#define GENERATED_CLUSTER_COUNT (14) +// This is an array of EmberAfCluster structures. +#define GENERATED_CLUSTERS { \ + { 0x0000, (EmberAfAttributeMetadata*)&(generatedAttributes[0]), 1, 2, CLUSTER_MASK_CLIENT, NULL }, /* 0, Endpoint Id: 1, Cluster: Basic, Side: client*/ \ + { 0x0000, (EmberAfAttributeMetadata*)&(generatedAttributes[1]), 3, 4, CLUSTER_MASK_SERVER, NULL }, /* 1, Endpoint Id: 1, Cluster: Basic, Side: server*/ \ + { 0x0003, (EmberAfAttributeMetadata*)&(generatedAttributes[4]), 1, 2, CLUSTER_MASK_CLIENT, NULL }, /* 2, Endpoint Id: 1, Cluster: Identify, Side: client*/ \ + { 0x0003, (EmberAfAttributeMetadata*)&(generatedAttributes[5]), 2, 4, CLUSTER_MASK_SERVER, NULL }, /* 3, Endpoint Id: 1, Cluster: Identify, Side: server*/ \ + { 0x0004, (EmberAfAttributeMetadata*)&(generatedAttributes[7]), 1, 2, CLUSTER_MASK_CLIENT, NULL }, /* 4, Endpoint Id: 1, Cluster: Groups, Side: client*/ \ + { 0x0006, (EmberAfAttributeMetadata*)&(generatedAttributes[8]), 1, 2, CLUSTER_MASK_CLIENT, NULL }, /* 5, Endpoint Id: 1, Cluster: On/off, Side: client*/ \ + { 0x0006, (EmberAfAttributeMetadata*)&(generatedAttributes[9]), 2, 3, CLUSTER_MASK_SERVER, NULL }, /* 6, Endpoint Id: 1, Cluster: On/off, Side: server*/ \ + { 0x0008, (EmberAfAttributeMetadata*)&(generatedAttributes[11]), 1, 2, CLUSTER_MASK_CLIENT, NULL }, /* 7, Endpoint Id: 1, Cluster: Level Control, Side: client*/ \ + { 0x0019, (EmberAfAttributeMetadata*)&(generatedAttributes[12]), 1, 2, CLUSTER_MASK_SERVER, NULL }, /* 8, Endpoint Id: 1, Cluster: Over the Air Bootloading, Side: server*/ \ + { 0x0020, (EmberAfAttributeMetadata*)&(generatedAttributes[13]), 1, 2, CLUSTER_MASK_CLIENT, NULL }, /* 9, Endpoint Id: 1, Cluster: Poll Control, Side: client*/ \ + { 0x0101, (EmberAfAttributeMetadata*)&(generatedAttributes[14]), 1, 2, CLUSTER_MASK_CLIENT, NULL }, /* 10, Endpoint Id: 1, Cluster: Door Lock, Side: client*/ \ + { 0x0201, (EmberAfAttributeMetadata*)&(generatedAttributes[15]), 1, 2, CLUSTER_MASK_CLIENT, NULL }, /* 11, Endpoint Id: 1, Cluster: Thermostat, Side: client*/ \ + { 0x0300, (EmberAfAttributeMetadata*)&(generatedAttributes[16]), 1, 2, CLUSTER_MASK_CLIENT, NULL }, /* 12, Endpoint Id: 1, Cluster: Color Control, Side: client*/ \ + { 0x0406, (EmberAfAttributeMetadata*)&(generatedAttributes[17]), 1, 2, CLUSTER_MASK_CLIENT, NULL } /* 13, Endpoint Id: 1, Cluster: Occupancy Sensing, Side: client*/ \ +} + +#define GENERATED_ENDPOINT_TYPE_COUNT (1) +// This is an array of EmberAfEndpointType structures. +#define GENERATED_ENDPOINT_TYPES { \ + { ((EmberAfCluster*)&(generatedClusters[0])), 14, 33 }, \ +} + +// Largest attribute size is needed for various buffers +#define ATTRIBUTE_LARGEST (2) + +// Total size of singleton attributes +#define ATTRIBUTE_SINGLETONS_SIZE (6) + +// Total size of attribute storage +#define ATTRIBUTE_MAX_SIZE (33) + +// Number of fixed endpoints +#define FIXED_ENDPOINT_COUNT (1) + +// Array of endpoints that are supported, the data inside the array is the +// endpoint number. +#define FIXED_ENDPOINT_ARRAY { \ + 1 \ +} + +// Array of profile ids +#define FIXED_PROFILE_IDS { \ + 260 \ +} + +// Array of device ids +#define FIXED_DEVICE_IDS { \ + 80 \ +} + +// Array of device versions +#define FIXED_DEVICE_VERSIONS { \ + 1 \ +} + +// Array of endpoint types supported on each endpoint +#define FIXED_ENDPOINT_TYPES { \ + 0 \ +} + +// Array of networks supported on each endpoint +#define FIXED_NETWORKS { \ + 0 \ +} + + + +// This is an array of EmberAfManufacturerCodeEntry structures for clusters. +#define GENERATED_CLUSTER_MANUFACTURER_CODE_COUNT (0) +#define GENERATED_CLUSTER_MANUFACTURER_CODES { \ + { 0x00, 0x00 } \ +} + +// This is an array of EmberAfManufacturerCodeEntry structures for attributes. +#define GENERATED_ATTRIBUTE_MANUFACTURER_CODE_COUNT (0) +#define GENERATED_ATTRIBUTE_MANUFACTURER_CODES { \ + { 0x00, 0x00 } \ +} + +// Array of EmberAfPluginReportingEntry structures. +#define EMBER_AF_GENERATED_REPORTING_CONFIG_DEFAULTS_TABLE_SIZE (1) +#define EMBER_AF_GENERATED_REPORTING_CONFIG_DEFAULTS { \ + { EMBER_ZCL_REPORTING_DIRECTION_REPORTED, 0x0001, 0x0006, 0x0000, CLUSTER_MASK_SERVER, 0x0000, 1, 65534, 0 }, /* Endpoint Id: 1, Cluster: On/off, Attribute: on/off */ \ +} + +#define EMBER_AF_MANUFACTURER_CODE 0x1049 +#define EMBER_AF_DEFAULT_RESPONSE_POLICY_CONDITIONAL + +// All Enabled Clusters +#define ZCL_USING_BASIC_CLUSTER_CLIENT +#define ZCL_USING_BASIC_CLUSTER_SERVER +#define ZCL_USING_COLOR_CONTROL_CLUSTER_CLIENT +#define ZCL_USING_DOOR_LOCK_CLUSTER_CLIENT +#define ZCL_USING_GROUPS_CLUSTER_CLIENT +#define ZCL_USING_IDENTIFY_CLUSTER_CLIENT +#define ZCL_USING_IDENTIFY_CLUSTER_SERVER +#define ZCL_USING_LEVEL_CONTROL_CLUSTER_CLIENT +#define ZCL_USING_OCCUPANCY_SENSING_CLUSTER_CLIENT +#define ZCL_USING_ON_OFF_CLUSTER_CLIENT +#define ZCL_USING_ON_OFF_CLUSTER_SERVER +#define ZCL_USING_OTA_BOOTLOAD_CLUSTER_SERVER +#define ZCL_USING_POLL_CONTROL_CLUSTER_CLIENT +#define ZCL_USING_THERMOSTAT_CLUSTER_CLIENT + +// Cluster Counts +#define EMBER_AF_BASIC_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1) +#define EMBER_AF_COLOR_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_DOOR_LOCK_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_GROUPS_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_IDENTIFY_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_IDENTIFY_CLUSTER_SERVER_ENDPOINT_COUNT (1) +#define EMBER_AF_LEVEL_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_OCCUPANCY_SENSING_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_ON_OFF_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_ON_OFF_CLUSTER_SERVER_ENDPOINT_COUNT (1) +#define EMBER_AF_OTA_BOOTLOAD_CLUSTER_SERVER_ENDPOINT_COUNT (1) +#define EMBER_AF_POLL_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_THERMOSTAT_CLUSTER_CLIENT_ENDPOINT_COUNT (1) + +// All Enabled Cluster Attributes +#define ZCL_USING_BASIC_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE +#define ZCL_USING_BASIC_CLUSTER_VERSION_ATTRIBUTE +#define ZCL_USING_BASIC_CLUSTER_POWER_SOURCE_ATTRIBUTE +#define ZCL_USING_BASIC_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE +#define ZCL_USING_IDENTIFY_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE +#define ZCL_USING_IDENTIFY_CLUSTER_IDENTIFY_TIME_ATTRIBUTE +#define ZCL_USING_IDENTIFY_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE +#define ZCL_USING_GROUPS_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE +#define ZCL_USING_ON_OFF_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE +#define ZCL_USING_ON_OFF_CLUSTER_ON_OFF_ATTRIBUTE +#define ZCL_USING_ON_OFF_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE +#define ZCL_USING_LEVEL_CONTROL_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE +#define ZCL_USING_OTA_BOOTLOAD_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE +#define ZCL_USING_POLL_CONTROL_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE +#define ZCL_USING_DOOR_LOCK_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE +#define ZCL_USING_THERMOSTAT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE +#define ZCL_USING_COLOR_CONTROL_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE +#define ZCL_USING_OCCUPANCY_SENSING_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE + + + +#endif // SILABS_AF_ENDPOINT_CONFIG \ No newline at end of file diff --git a/silabs_examples/credentials/host/zap/zap-enabled-incoming-commands.h b/silabs_examples/credentials/host/zap/zap-enabled-incoming-commands.h new file mode 100644 index 00000000000000..c44ab1ae42e117 --- /dev/null +++ b/silabs_examples/credentials/host/zap/zap-enabled-incoming-commands.h @@ -0,0 +1,37 @@ +/***************************************************************************//** + * @file zap-enabled-incoming-commands.h + * @brief This file contains a set of macros for all the cluster commands which + have incoming enabled. + * This file is generated. Do not update file manually. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ +#define ZCL_CLUSTER_BASIC_SERVER_INCOMING_COMMAND_RESET_TO_FACTORY_DEFAULTS_ENABLED +#define ZCL_CLUSTER_DOOR_LOCK_CLIENT_INCOMING_COMMAND_LOCK_DOOR_RESPONSE_ENABLED +#define ZCL_CLUSTER_DOOR_LOCK_CLIENT_INCOMING_COMMAND_UNLOCK_DOOR_RESPONSE_ENABLED +#define ZCL_CLUSTER_GROUPS_CLIENT_INCOMING_COMMAND_ADD_GROUP_RESPONSE_ENABLED +#define ZCL_CLUSTER_GROUPS_CLIENT_INCOMING_COMMAND_GET_GROUP_MEMBERSHIP_RESPONSE_ENABLED +#define ZCL_CLUSTER_GROUPS_CLIENT_INCOMING_COMMAND_REMOVE_GROUP_RESPONSE_ENABLED +#define ZCL_CLUSTER_GROUPS_CLIENT_INCOMING_COMMAND_VIEW_GROUP_RESPONSE_ENABLED +#define ZCL_CLUSTER_IDENTIFY_CLIENT_INCOMING_COMMAND_IDENTIFY_QUERY_RESPONSE_ENABLED +#define ZCL_CLUSTER_IDENTIFY_SERVER_INCOMING_COMMAND_IDENTIFY_ENABLED +#define ZCL_CLUSTER_IDENTIFY_SERVER_INCOMING_COMMAND_IDENTIFY_QUERY_ENABLED +#define ZCL_CLUSTER_ON_OFF_SERVER_INCOMING_COMMAND_OFF_ENABLED +#define ZCL_CLUSTER_ON_OFF_SERVER_INCOMING_COMMAND_ON_ENABLED +#define ZCL_CLUSTER_ON_OFF_SERVER_INCOMING_COMMAND_TOGGLE_ENABLED +#define ZCL_CLUSTER_OVER_THE_AIR_BOOTLOADING_SERVER_INCOMING_COMMAND_IMAGE_BLOCK_REQUEST_ENABLED +#define ZCL_CLUSTER_OVER_THE_AIR_BOOTLOADING_SERVER_INCOMING_COMMAND_QUERY_NEXT_IMAGE_REQUEST_ENABLED +#define ZCL_CLUSTER_OVER_THE_AIR_BOOTLOADING_SERVER_INCOMING_COMMAND_UPGRADE_END_REQUEST_ENABLED +#define ZCL_CLUSTER_POLL_CONTROL_CLIENT_INCOMING_COMMAND_CHECK_IN_ENABLED +#define ZCL_CLUSTER_THERMOSTAT_CLIENT_INCOMING_COMMAND_CURRENT_WEEKLY_SCHEDULE_ENABLED +#define ZCL_CLUSTER_THERMOSTAT_CLIENT_INCOMING_COMMAND_RELAY_STATUS_LOG_ENABLED diff --git a/silabs_examples/credentials/host/zap/zap-event.h b/silabs_examples/credentials/host/zap/zap-event.h new file mode 100644 index 00000000000000..e19016dc21f0eb --- /dev/null +++ b/silabs_examples/credentials/host/zap/zap-event.h @@ -0,0 +1,35 @@ +/***************************************************************************//** + * @file zap-event.h + * @brief Generated file for zcl events using ZAP. Do not update file manually. + ******************************************************************************* + * # License + * Copyright 2020 Silicon Laboratories Inc. www.silabs.com + ******************************************************************************* + * + * The licensor of this software is Silicon Laboratories Inc. Your use of this + * software is governed by the terms of Silicon Labs Master Software License + * Agreement (MSLA) available at + * www.silabs.com/about-us/legal/master-software-license-agreement. This + * software is distributed to you in Source Code format and is governed by the + * sections of the MSLA applicable to Source Code. + * + ******************************************************************************/ + + +#ifdef UC_BUILD +#include "sl_component_catalog.h" + +#ifdef SL_CATALOG_ZIGBEE_ZCL_FRAMEWORK_CORE_PRESENT +#include "af.h" + +#define EMBER_AF_GENERATED_UC_EVENTS_DEF + +#define EMBER_AF_GENERATED_UC_EVENTS_INIT + +// sl_zigbee_event_context_t structs used to populate the sli_zigbee_app_event_context table +#define EMBER_AF_GENERATED_UC_EVENT_CONTEXT + +#define EMBER_AF_GENERATED_UC_EVENT_CONTEXT_COUNT 0 + +#endif // SL_CATALOG_ZIGBEE_ZCL_FRAMEWORK_CORE_PRESENT +#endif // UC_BUILD \ No newline at end of file diff --git a/silabs_examples/credentials/host/zap/zap-id.h b/silabs_examples/credentials/host/zap/zap-id.h new file mode 100644 index 00000000000000..87e3f28f004159 --- /dev/null +++ b/silabs_examples/credentials/host/zap/zap-id.h @@ -0,0 +1,5723 @@ +// This file is generated by ZCL Advanced Platform generator. Please don't edit manually. + +#ifndef __ZAP_GEN_ID__ +#define __ZAP_GEN_ID__ + +// Global, non-cluster-specific things +#define ZCL_READ_ATTRIBUTES_COMMAND_ID (0x0) +#define ZCL_READ_ATTRIBUTES_RESPONSE_COMMAND_ID (0x1) +#define ZCL_WRITE_ATTRIBUTES_COMMAND_ID (0x2) +#define ZCL_WRITE_ATTRIBUTES_UNDIVIDED_COMMAND_ID (0x3) +#define ZCL_WRITE_ATTRIBUTES_RESPONSE_COMMAND_ID (0x4) +#define ZCL_WRITE_ATTRIBUTES_NO_RESPONSE_COMMAND_ID (0x5) +#define ZCL_CONFIGURE_REPORTING_COMMAND_ID (0x6) +#define ZCL_CONFIGURE_REPORTING_RESPONSE_COMMAND_ID (0x7) +#define ZCL_READ_REPORTING_CONFIGURATION_COMMAND_ID (0x8) +#define ZCL_READ_REPORTING_CONFIGURATION_RESPONSE_COMMAND_ID (0x9) +#define ZCL_REPORT_ATTRIBUTES_COMMAND_ID (0xA) +#define ZCL_DEFAULT_RESPONSE_COMMAND_ID (0xB) +#define ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID (0xC) +#define ZCL_DISCOVER_ATTRIBUTES_RESPONSE_COMMAND_ID (0xD) +#define ZCL_READ_ATTRIBUTES_STRUCTURED_COMMAND_ID (0xE) +#define ZCL_WRITE_ATTRIBUTES_STRUCTURED_COMMAND_ID (0xF) +#define ZCL_WRITE_ATTRIBUTES_STRUCTURED_RESPONSE_COMMAND_ID (0x10) +#define ZCL_DISCOVER_COMMANDS_RECEIVED_COMMAND_ID (0x11) +#define ZCL_DISCOVER_COMMANDS_RECEIVED_RESPONSE_COMMAND_ID (0x12) +#define ZCL_DISCOVER_COMMANDS_GENERATED_COMMAND_ID (0x13) +#define ZCL_DISCOVER_COMMANDS_GENERATED_RESPONSE_COMMAND_ID (0x14) +#define ZCL_DISCOVER_ATTRIBUTES_EXTENDED_COMMAND_ID (0x15) +#define ZCL_DISCOVER_ATTRIBUTES_EXTENDED_RESPONSE_COMMAND_ID (0x16) + + +// Definitions for cluster: Basic +#define ZCL_BASIC_CLUSTER_ID (0x0) + +// Client attributes for cluster: Basic +#define ZCL_BASIC_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_BASIC_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Basic +#define ZCL_VERSION_ATTRIBUTE_ID (0x0) +#define ZCL_APPLICATION_VERSION_ATTRIBUTE_ID (0x1) +#define ZCL_STACK_VERSION_ATTRIBUTE_ID (0x2) +#define ZCL_HW_VERSION_ATTRIBUTE_ID (0x3) +#define ZCL_MANUFACTURER_NAME_ATTRIBUTE_ID (0x4) +#define ZCL_MODEL_IDENTIFIER_ATTRIBUTE_ID (0x5) +#define ZCL_DATE_CODE_ATTRIBUTE_ID (0x6) +#define ZCL_POWER_SOURCE_ATTRIBUTE_ID (0x7) +#define ZCL_GENERIC_DEVICE_CLASS_ATTRIBUTE_ID (0x8) +#define ZCL_GENERIC_DEVICE_TYPE_ATTRIBUTE_ID (0x9) +#define ZCL_PRODUCT_CODE_ATTRIBUTE_ID (0xA) +#define ZCL_PRODUCT_URL_ATTRIBUTE_ID (0xB) +#define ZCL_LOCATION_DESCRIPTION_ATTRIBUTE_ID (0x10) +#define ZCL_PHYSICAL_ENVIRONMENT_ATTRIBUTE_ID (0x11) +#define ZCL_DEVICE_ENABLED_ATTRIBUTE_ID (0x12) +#define ZCL_ALARM_MASK_ATTRIBUTE_ID (0x13) +#define ZCL_DISABLE_LOCAL_CONFIG_ATTRIBUTE_ID (0x14) +#define ZCL_CURRENT_LOCALE_ATTRIBUTE_ID (0x15) +#define ZCL_SW_BUILD_ID_ATTRIBUTE_ID (0x4000) +#define ZCL_BASIC_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_BASIC_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Basic +#define ZCL_RESET_TO_FACTORY_DEFAULTS_COMMAND_ID (0x0) +#define ZCL_GET_LOCALES_SUPPORTED_COMMAND_ID (0x1) +#define ZCL_GET_LOCALES_SUPPORTED_RESPONSE_COMMAND_ID (0x1) + +// End of cluster: Basic + +// Definitions for cluster: Power Configuration +#define ZCL_POWER_CONFIG_CLUSTER_ID (0x1) + +// Client attributes for cluster: Power Configuration +#define ZCL_POWER_CONFIG_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_POWER_CONFIG_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Power Configuration +#define ZCL_MAINS_VOLTAGE_ATTRIBUTE_ID (0x0) +#define ZCL_MAINS_FREQUENCY_ATTRIBUTE_ID (0x1) +#define ZCL_MAINS_ALARM_MASK_ATTRIBUTE_ID (0x10) +#define ZCL_MAINS_VOLTAGE_MIN_THRESHOLD_ATTRIBUTE_ID (0x11) +#define ZCL_MAINS_VOLTAGE_MAX_THRESHOLD_ATTRIBUTE_ID (0x12) +#define ZCL_MAINS_VOLTAGE_DWELL_TRIP_POINT_ATTRIBUTE_ID (0x13) +#define ZCL_BATTERY_VOLTAGE_ATTRIBUTE_ID (0x20) +#define ZCL_BATTERY_PERCENTAGE_REMAINING_ATTRIBUTE_ID (0x21) +#define ZCL_BATTERY_MANUFACTURER_ATTRIBUTE_ID (0x30) +#define ZCL_BATTERY_SIZE_ATTRIBUTE_ID (0x31) +#define ZCL_BATTERY_AHR_RATING_ATTRIBUTE_ID (0x32) +#define ZCL_BATTERY_QUANTITY_ATTRIBUTE_ID (0x33) +#define ZCL_BATTERY_RATED_VOLTAGE_ATTRIBUTE_ID (0x34) +#define ZCL_BATTERY_ALARM_MASK_ATTRIBUTE_ID (0x35) +#define ZCL_BATTERY_VOLTAGE_MIN_THRESHOLD_ATTRIBUTE_ID (0x36) +#define ZCL_BATTERY_VOLTAGE_THRESHOLD_1_ATTRIBUTE_ID (0x37) +#define ZCL_BATTERY_VOLTAGE_THRESHOLD_2_ATTRIBUTE_ID (0x38) +#define ZCL_BATTERY_VOLTAGE_THRESHOLD_3_ATTRIBUTE_ID (0x39) +#define ZCL_BATTERY_PERCENTAGE_MIN_THRESHOLD_ATTRIBUTE_ID (0x3A) +#define ZCL_BATTERY_PERCENTAGE_THRESHOLD_1_ATTRIBUTE_ID (0x3B) +#define ZCL_BATTERY_PERCENTAGE_THRESHOLD_2_ATTRIBUTE_ID (0x3C) +#define ZCL_BATTERY_PERCENTAGE_THRESHOLD_3_ATTRIBUTE_ID (0x3D) +#define ZCL_BATTERY_ALARM_STATE_ATTRIBUTE_ID (0x3E) +#define ZCL_BATTERY_2_VOLTAGE_ATTRIBUTE_ID (0x40) +#define ZCL_BATTERY_2_PERCENTAGE_REMAINING_ATTRIBUTE_ID (0x41) +#define ZCL_BATTERY_2_MANUFACTURER_ATTRIBUTE_ID (0x50) +#define ZCL_BATTERY_2_SIZE_ATTRIBUTE_ID (0x51) +#define ZCL_BATTERY_2_AHR_RATING_ATTRIBUTE_ID (0x52) +#define ZCL_BATTERY_2_QUANTITY_ATTRIBUTE_ID (0x53) +#define ZCL_BATTERY_2_RATED_VOLTAGE_ATTRIBUTE_ID (0x54) +#define ZCL_BATTERY_2_ALARM_MASK_ATTRIBUTE_ID (0x55) +#define ZCL_BATTERY_2_VOLTAGE_MIN_THRESHOLD_ATTRIBUTE_ID (0x56) +#define ZCL_BATTERY_2_VOLTAGE_THRESHOLD_1_ATTRIBUTE_ID (0x57) +#define ZCL_BATTERY_2_VOLTAGE_THRESHOLD_2_ATTRIBUTE_ID (0x58) +#define ZCL_BATTERY_2_VOLTAGE_THRESHOLD_3_ATTRIBUTE_ID (0x59) +#define ZCL_BATTERY_2_PERCENTAGE_MIN_THRESHOLD_ATTRIBUTE_ID (0x5A) +#define ZCL_BATTERY_2_PERCENTAGE_THRESHOLD_1_ATTRIBUTE_ID (0x5B) +#define ZCL_BATTERY_2_PERCENTAGE_THRESHOLD_2_ATTRIBUTE_ID (0x5C) +#define ZCL_BATTERY_2_PERCENTAGE_THRESHOLD_3_ATTRIBUTE_ID (0x5D) +#define ZCL_BATTERY_2_ALARM_STATE_ATTRIBUTE_ID (0x5E) +#define ZCL_BATTERY_3_VOLTAGE_ATTRIBUTE_ID (0x60) +#define ZCL_BATTERY_3_PERCENTAGE_REMAINING_ATTRIBUTE_ID (0x61) +#define ZCL_BATTERY_3_MANUFACTURER_ATTRIBUTE_ID (0x70) +#define ZCL_BATTERY_3_SIZE_ATTRIBUTE_ID (0x71) +#define ZCL_BATTERY_3_AHR_RATING_ATTRIBUTE_ID (0x72) +#define ZCL_BATTERY_3_QUANTITY_ATTRIBUTE_ID (0x73) +#define ZCL_BATTERY_3_RATED_VOLTAGE_ATTRIBUTE_ID (0x74) +#define ZCL_BATTERY_3_ALARM_MASK_ATTRIBUTE_ID (0x75) +#define ZCL_BATTERY_3_VOLTAGE_MIN_THRESHOLD_ATTRIBUTE_ID (0x76) +#define ZCL_BATTERY_3_VOLTAGE_THRESHOLD_1_ATTRIBUTE_ID (0x77) +#define ZCL_BATTERY_3_VOLTAGE_THRESHOLD_2_ATTRIBUTE_ID (0x78) +#define ZCL_BATTERY_3_VOLTAGE_THRESHOLD_3_ATTRIBUTE_ID (0x79) +#define ZCL_BATTERY_3_PERCENTAGE_MIN_THRESHOLD_ATTRIBUTE_ID (0x7A) +#define ZCL_BATTERY_3_PERCENTAGE_THRESHOLD_1_ATTRIBUTE_ID (0x7B) +#define ZCL_BATTERY_3_PERCENTAGE_THRESHOLD_2_ATTRIBUTE_ID (0x7C) +#define ZCL_BATTERY_3_PERCENTAGE_THRESHOLD_3_ATTRIBUTE_ID (0x7D) +#define ZCL_BATTERY_3_ALARM_STATE_ATTRIBUTE_ID (0x7E) +#define ZCL_POWER_CONFIG_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_POWER_CONFIG_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Power Configuration + +// End of cluster: Power Configuration + +// Definitions for cluster: Device Temperature Configuration +#define ZCL_DEVICE_TEMP_CLUSTER_ID (0x2) + +// Client attributes for cluster: Device Temperature Configuration +#define ZCL_DEVICE_TEMP_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_DEVICE_TEMP_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Device Temperature Configuration +#define ZCL_CURRENT_TEMPERATURE_ATTRIBUTE_ID (0x0) +#define ZCL_MIN_TEMP_EXPERIENCED_ATTRIBUTE_ID (0x1) +#define ZCL_MAX_TEMP_EXPERIENCED_ATTRIBUTE_ID (0x2) +#define ZCL_OVER_TEMP_TOTAL_DWELL_ATTRIBUTE_ID (0x3) +#define ZCL_DEVICE_TEMP_ALARM_MASK_ATTRIBUTE_ID (0x10) +#define ZCL_LOW_TEMP_THRESHOLD_ATTRIBUTE_ID (0x11) +#define ZCL_HIGH_TEMP_THRESHOLD_ATTRIBUTE_ID (0x12) +#define ZCL_LOW_TEMP_DWELL_TRIP_POINT_ATTRIBUTE_ID (0x13) +#define ZCL_HIGH_TEMP_DWELL_TRIP_POINT_ATTRIBUTE_ID (0x14) +#define ZCL_DEVICE_TEMP_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_DEVICE_TEMP_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Device Temperature Configuration + +// End of cluster: Device Temperature Configuration + +// Definitions for cluster: Identify +#define ZCL_IDENTIFY_CLUSTER_ID (0x3) + +// Client attributes for cluster: Identify +#define ZCL_IDENTIFY_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_IDENTIFY_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Identify +#define ZCL_IDENTIFY_TIME_ATTRIBUTE_ID (0x0) +#define ZCL_COMMISSION_STATE_ATTRIBUTE_ID (0x1) +#define ZCL_IDENTIFY_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_IDENTIFY_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Identify +#define ZCL_IDENTIFY_COMMAND_ID (0x0) +#define ZCL_IDENTIFY_QUERY_RESPONSE_COMMAND_ID (0x0) +#define ZCL_IDENTIFY_QUERY_COMMAND_ID (0x1) +#define ZCL_EZ_MODE_INVOKE_COMMAND_ID (0x2) +#define ZCL_UPDATE_COMMISSION_STATE_COMMAND_ID (0x3) +#define ZCL_TRIGGER_EFFECT_COMMAND_ID (0x40) + +// End of cluster: Identify + +// Definitions for cluster: Groups +#define ZCL_GROUPS_CLUSTER_ID (0x4) + +// Client attributes for cluster: Groups +#define ZCL_GROUPS_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_GROUPS_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Groups +#define ZCL_GROUP_NAME_SUPPORT_ATTRIBUTE_ID (0x0) +#define ZCL_GROUPS_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_GROUPS_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Groups +#define ZCL_ADD_GROUP_COMMAND_ID (0x0) +#define ZCL_ADD_GROUP_RESPONSE_COMMAND_ID (0x0) +#define ZCL_VIEW_GROUP_COMMAND_ID (0x1) +#define ZCL_VIEW_GROUP_RESPONSE_COMMAND_ID (0x1) +#define ZCL_GET_GROUP_MEMBERSHIP_COMMAND_ID (0x2) +#define ZCL_GET_GROUP_MEMBERSHIP_RESPONSE_COMMAND_ID (0x2) +#define ZCL_REMOVE_GROUP_COMMAND_ID (0x3) +#define ZCL_REMOVE_GROUP_RESPONSE_COMMAND_ID (0x3) +#define ZCL_REMOVE_ALL_GROUPS_COMMAND_ID (0x4) +#define ZCL_ADD_GROUP_IF_IDENTIFYING_COMMAND_ID (0x5) + +// End of cluster: Groups + +// Definitions for cluster: Scenes +#define ZCL_SCENES_CLUSTER_ID (0x5) + +// Client attributes for cluster: Scenes +#define ZCL_SCENES_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_SCENES_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Scenes +#define ZCL_SCENE_COUNT_ATTRIBUTE_ID (0x0) +#define ZCL_CURRENT_SCENE_ATTRIBUTE_ID (0x1) +#define ZCL_CURRENT_GROUP_ATTRIBUTE_ID (0x2) +#define ZCL_SCENE_VALID_ATTRIBUTE_ID (0x3) +#define ZCL_SCENE_NAME_SUPPORT_ATTRIBUTE_ID (0x4) +#define ZCL_LAST_CONFIGURED_BY_ATTRIBUTE_ID (0x5) +#define ZCL_SCENES_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_SCENES_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Scenes +#define ZCL_ADD_SCENE_COMMAND_ID (0x0) +#define ZCL_ADD_SCENE_RESPONSE_COMMAND_ID (0x0) +#define ZCL_VIEW_SCENE_COMMAND_ID (0x1) +#define ZCL_VIEW_SCENE_RESPONSE_COMMAND_ID (0x1) +#define ZCL_REMOVE_SCENE_COMMAND_ID (0x2) +#define ZCL_REMOVE_SCENE_RESPONSE_COMMAND_ID (0x2) +#define ZCL_REMOVE_ALL_SCENES_COMMAND_ID (0x3) +#define ZCL_REMOVE_ALL_SCENES_RESPONSE_COMMAND_ID (0x3) +#define ZCL_STORE_SCENE_COMMAND_ID (0x4) +#define ZCL_STORE_SCENE_RESPONSE_COMMAND_ID (0x4) +#define ZCL_RECALL_SCENE_COMMAND_ID (0x5) +#define ZCL_GET_SCENE_MEMBERSHIP_COMMAND_ID (0x6) +#define ZCL_GET_SCENE_MEMBERSHIP_RESPONSE_COMMAND_ID (0x6) +#define ZCL_ENHANCED_ADD_SCENE_COMMAND_ID (0x40) +#define ZCL_ENHANCED_ADD_SCENE_RESPONSE_COMMAND_ID (0x40) +#define ZCL_ENHANCED_VIEW_SCENE_COMMAND_ID (0x41) +#define ZCL_ENHANCED_VIEW_SCENE_RESPONSE_COMMAND_ID (0x41) +#define ZCL_COPY_SCENE_COMMAND_ID (0x42) +#define ZCL_COPY_SCENE_RESPONSE_COMMAND_ID (0x42) + +// End of cluster: Scenes + +// Definitions for cluster: On/off +#define ZCL_ON_OFF_CLUSTER_ID (0x6) + +// Client attributes for cluster: On/off +#define ZCL_ON_OFF_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ON_OFF_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: On/off +#define ZCL_ON_OFF_ATTRIBUTE_ID (0x0) +#define ZCL_SAMPLE_MFG_SPECIFIC_TRANSITION_TIME_ATTRIBUTE_ID (0x0) +#define ZCL_SAMPLE_MFG_SPECIFIC_TRANSITION_TIME_2_ATTRIBUTE_ID (0x0) +#define ZCL_SAMPLE_MFG_SPECIFIC_TRANSITION_TIME_3_ATTRIBUTE_ID (0x1) +#define ZCL_SAMPLE_MFG_SPECIFIC_TRANSITION_TIME_4_ATTRIBUTE_ID (0x1) +#define ZCL_GLOBAL_SCENE_CONTROL_ATTRIBUTE_ID (0x4000) +#define ZCL_ON_TIME_ATTRIBUTE_ID (0x4001) +#define ZCL_OFF_WAIT_TIME_ATTRIBUTE_ID (0x4002) +#define ZCL_START_UP_ON_OFF_ATTRIBUTE_ID (0x4003) +#define ZCL_ON_OFF_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ON_OFF_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: On/off +#define ZCL_OFF_COMMAND_ID (0x0) +#define ZCL_SAMPLE_MFG_SPECIFIC_OFF_WITH_TRANSITION_COMMAND_ID (0x0) +#define ZCL_ON_COMMAND_ID (0x1) +#define ZCL_SAMPLE_MFG_SPECIFIC_ON_WITH_TRANSITION_COMMAND_ID (0x1) +#define ZCL_SAMPLE_MFG_SPECIFIC_ON_WITH_TRANSITION2_COMMAND_ID (0x1) +#define ZCL_TOGGLE_COMMAND_ID (0x2) +#define ZCL_SAMPLE_MFG_SPECIFIC_TOGGLE_WITH_TRANSITION_COMMAND_ID (0x2) +#define ZCL_SAMPLE_MFG_SPECIFIC_TOGGLE_WITH_TRANSITION2_COMMAND_ID (0x2) +#define ZCL_OFF_WITH_EFFECT_COMMAND_ID (0x40) +#define ZCL_ON_WITH_RECALL_GLOBAL_SCENE_COMMAND_ID (0x41) +#define ZCL_ON_WITH_TIMED_OFF_COMMAND_ID (0x42) + +// End of cluster: On/off + +// Definitions for cluster: On/off Switch Configuration +#define ZCL_ON_OFF_SWITCH_CONFIG_CLUSTER_ID (0x7) + +// Client attributes for cluster: On/off Switch Configuration +#define ZCL_ON_OFF_SWITCH_CONFIG_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ON_OFF_SWITCH_CONFIG_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: On/off Switch Configuration +#define ZCL_SWITCH_TYPE_ATTRIBUTE_ID (0x0) +#define ZCL_SWITCH_ACTIONS_ATTRIBUTE_ID (0x10) +#define ZCL_ON_OFF_SWITCH_CONFIG_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ON_OFF_SWITCH_CONFIG_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: On/off Switch Configuration + +// End of cluster: On/off Switch Configuration + +// Definitions for cluster: Level Control +#define ZCL_LEVEL_CONTROL_CLUSTER_ID (0x8) + +// Client attributes for cluster: Level Control +#define ZCL_LEVEL_CONTROL_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_LEVEL_CONTROL_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Level Control +#define ZCL_CURRENT_LEVEL_ATTRIBUTE_ID (0x0) +#define ZCL_LEVEL_CONTROL_REMAINING_TIME_ATTRIBUTE_ID (0x1) +#define ZCL_LEVEL_CONTROL_MIN_LEVEL_ATTRIBUTE_ID (0x2) +#define ZCL_LEVEL_CONTROL_MAX_LEVEL_ATTRIBUTE_ID (0x3) +#define ZCL_LEVEL_CONTROL_CURRENT_FREQUENCY_ATTRIBUTE_ID (0x4) +#define ZCL_LEVEL_CONTROL_MIN_FREQUENCY_ATTRIBUTE_ID (0x5) +#define ZCL_LEVEL_CONTROL_MAX_FREQUENCY_ATTRIBUTE_ID (0x6) +#define ZCL_OPTIONS_ATTRIBUTE_ID (0xF) +#define ZCL_ON_OFF_TRANSITION_TIME_ATTRIBUTE_ID (0x10) +#define ZCL_ON_LEVEL_ATTRIBUTE_ID (0x11) +#define ZCL_ON_TRANSITION_TIME_ATTRIBUTE_ID (0x12) +#define ZCL_OFF_TRANSITION_TIME_ATTRIBUTE_ID (0x13) +#define ZCL_DEFAULT_MOVE_RATE_ATTRIBUTE_ID (0x14) +#define ZCL_START_UP_CURRENT_LEVEL_ATTRIBUTE_ID (0x4000) +#define ZCL_LEVEL_CONTROL_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_LEVEL_CONTROL_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Level Control +#define ZCL_MOVE_TO_LEVEL_COMMAND_ID (0x0) +#define ZCL_MOVE_COMMAND_ID (0x1) +#define ZCL_STEP_COMMAND_ID (0x2) +#define ZCL_STOP_COMMAND_ID (0x3) +#define ZCL_MOVE_TO_LEVEL_WITH_ON_OFF_COMMAND_ID (0x4) +#define ZCL_MOVE_WITH_ON_OFF_COMMAND_ID (0x5) +#define ZCL_STEP_WITH_ON_OFF_COMMAND_ID (0x6) +#define ZCL_STOP_WITH_ON_OFF_COMMAND_ID (0x7) +#define ZCL_MOVE_TO_CLOSEST_FREQUENCY_COMMAND_ID (0x8) + +// End of cluster: Level Control + +// Definitions for cluster: Alarms +#define ZCL_ALARM_CLUSTER_ID (0x9) + +// Client attributes for cluster: Alarms +#define ZCL_ALARM_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ALARM_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Alarms +#define ZCL_ALARM_COUNT_ATTRIBUTE_ID (0x0) +#define ZCL_ALARM_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ALARM_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Alarms +#define ZCL_RESET_ALARM_COMMAND_ID (0x0) +#define ZCL_ALARM_COMMAND_ID (0x0) +#define ZCL_RESET_ALL_ALARMS_COMMAND_ID (0x1) +#define ZCL_GET_ALARM_RESPONSE_COMMAND_ID (0x1) +#define ZCL_GET_ALARM_COMMAND_ID (0x2) +#define ZCL_RESET_ALARM_LOG_COMMAND_ID (0x3) + +// End of cluster: Alarms + +// Definitions for cluster: Time +#define ZCL_TIME_CLUSTER_ID (0xA) + +// Client attributes for cluster: Time +#define ZCL_TIME_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_TIME_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Time +#define ZCL_TIME_ATTRIBUTE_ID (0x0) +#define ZCL_TIME_STATUS_ATTRIBUTE_ID (0x1) +#define ZCL_TIME_ZONE_ATTRIBUTE_ID (0x2) +#define ZCL_DST_START_ATTRIBUTE_ID (0x3) +#define ZCL_DST_END_ATTRIBUTE_ID (0x4) +#define ZCL_DST_SHIFT_ATTRIBUTE_ID (0x5) +#define ZCL_STANDARD_TIME_ATTRIBUTE_ID (0x6) +#define ZCL_LOCAL_TIME_ATTRIBUTE_ID (0x7) +#define ZCL_LAST_SET_TIME_ATTRIBUTE_ID (0x8) +#define ZCL_VALID_UNTIL_TIME_ATTRIBUTE_ID (0x9) +#define ZCL_TIME_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_TIME_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Time + +// End of cluster: Time + +// Definitions for cluster: RSSI Location +#define ZCL_RSSI_LOCATION_CLUSTER_ID (0xB) + +// Client attributes for cluster: RSSI Location +#define ZCL_RSSI_LOCATION_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_RSSI_LOCATION_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: RSSI Location +#define ZCL_LOCATION_TYPE_ATTRIBUTE_ID (0x0) +#define ZCL_LOCATION_METHOD_ATTRIBUTE_ID (0x1) +#define ZCL_LOCATION_AGE_ATTRIBUTE_ID (0x2) +#define ZCL_QUALITY_MEASURE_ATTRIBUTE_ID (0x3) +#define ZCL_NUMBER_OF_DEVICES_ATTRIBUTE_ID (0x4) +#define ZCL_COORDINATE1_ATTRIBUTE_ID (0x10) +#define ZCL_COORDINATE2_ATTRIBUTE_ID (0x11) +#define ZCL_COORDINATE3_ATTRIBUTE_ID (0x12) +#define ZCL_POWER_ATTRIBUTE_ID (0x13) +#define ZCL_PATH_LOSS_EXPONENT_ATTRIBUTE_ID (0x14) +#define ZCL_REPORTING_PERIOD_ATTRIBUTE_ID (0x15) +#define ZCL_CALCULATION_PERIOD_ATTRIBUTE_ID (0x16) +#define ZCL_NUMBER_RSSI_MEASUREMENTS_ATTRIBUTE_ID (0x17) +#define ZCL_RSSI_LOCATION_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_RSSI_LOCATION_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: RSSI Location +#define ZCL_SET_ABSOLUTE_LOCATION_COMMAND_ID (0x0) +#define ZCL_DEVICE_CONFIGURATION_RESPONSE_COMMAND_ID (0x0) +#define ZCL_SET_DEVICE_CONFIGURATION_COMMAND_ID (0x1) +#define ZCL_LOCATION_DATA_RESPONSE_COMMAND_ID (0x1) +#define ZCL_GET_DEVICE_CONFIGURATION_COMMAND_ID (0x2) +#define ZCL_LOCATION_DATA_NOTIFICATION_COMMAND_ID (0x2) +#define ZCL_GET_LOCATION_DATA_COMMAND_ID (0x3) +#define ZCL_COMPACT_LOCATION_DATA_NOTIFICATION_COMMAND_ID (0x3) +#define ZCL_RSSI_RESPONSE_COMMAND_ID (0x4) +#define ZCL_RSSI_PING_COMMAND_ID (0x4) +#define ZCL_SEND_PINGS_COMMAND_ID (0x5) +#define ZCL_RSSI_REQUEST_COMMAND_ID (0x5) +#define ZCL_ANCHOR_NODE_ANNOUNCE_COMMAND_ID (0x6) +#define ZCL_REPORT_RSSI_MEASUREMENTS_COMMAND_ID (0x6) +#define ZCL_REQUEST_OWN_LOCATION_COMMAND_ID (0x7) + +// End of cluster: RSSI Location + +// Definitions for cluster: Binary Input (Basic) +#define ZCL_BINARY_INPUT_BASIC_CLUSTER_ID (0xF) + +// Client attributes for cluster: Binary Input (Basic) +#define ZCL_BINARY_INPUT_BASIC_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_BINARY_INPUT_BASIC_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Binary Input (Basic) +#define ZCL_ACTIVE_TEXT_ATTRIBUTE_ID (0x4) +#define ZCL_DESCRIPTION_ATTRIBUTE_ID (0x1C) +#define ZCL_INACTIVE_TEXT_ATTRIBUTE_ID (0x2E) +#define ZCL_OUT_OF_SERVICE_ATTRIBUTE_ID (0x51) +#define ZCL_POLARITY_ATTRIBUTE_ID (0x54) +#define ZCL_PRESENT_VALUE_ATTRIBUTE_ID (0x55) +#define ZCL_RELIABILITY_ATTRIBUTE_ID (0x67) +#define ZCL_STATUS_FLAGS_ATTRIBUTE_ID (0x6F) +#define ZCL_APPLICATION_TYPE_ATTRIBUTE_ID (0x100) +#define ZCL_BINARY_INPUT_BASIC_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_BINARY_INPUT_BASIC_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Binary Input (Basic) + +// End of cluster: Binary Input (Basic) + +// Definitions for cluster: Commissioning +#define ZCL_COMMISSIONING_CLUSTER_ID (0x15) + +// Client attributes for cluster: Commissioning +#define ZCL_COMMISSIONING_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_COMMISSIONING_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Commissioning +#define ZCL_SHORT_ADDRESS_ATTRIBUTE_ID (0x0) +#define ZCL_EXTENDED_PAN_ID_ATTRIBUTE_ID (0x1) +#define ZCL_PAN_ID_ATTRIBUTE_ID (0x2) +#define ZCL_CHANNEL_MASK_ATTRIBUTE_ID (0x3) +#define ZCL_PROTOCOL_VERSION_ATTRIBUTE_ID (0x4) +#define ZCL_STACK_PROFILE_ATTRIBUTE_ID (0x5) +#define ZCL_STARTUP_CONTROL_ATTRIBUTE_ID (0x6) +#define ZCL_TRUST_CENTER_ADDRESS_ATTRIBUTE_ID (0x10) +#define ZCL_TRUST_CENTER_MASTER_KEY_ATTRIBUTE_ID (0x11) +#define ZCL_NETWORK_KEY_ATTRIBUTE_ID (0x12) +#define ZCL_USE_INSECURE_JOIN_ATTRIBUTE_ID (0x13) +#define ZCL_PRECONFIGURED_LINK_KEY_ATTRIBUTE_ID (0x14) +#define ZCL_NETWORK_KEY_SEQUENCE_NUMBER_ATTRIBUTE_ID (0x15) +#define ZCL_NETWORK_KEY_TYPE_ATTRIBUTE_ID (0x16) +#define ZCL_NETWORK_MANAGER_ADDRESS_ATTRIBUTE_ID (0x17) +#define ZCL_SCAN_ATTEMPTS_ATTRIBUTE_ID (0x20) +#define ZCL_TIME_BETWEEN_SCANS_ATTRIBUTE_ID (0x21) +#define ZCL_REJOIN_INTERVAL_ATTRIBUTE_ID (0x22) +#define ZCL_MAX_REJOIN_INTERVAL_ATTRIBUTE_ID (0x23) +#define ZCL_INDIRECT_POLL_RATE_ATTRIBUTE_ID (0x30) +#define ZCL_PARENT_RETRY_THRESHOLD_ATTRIBUTE_ID (0x31) +#define ZCL_CONCENTRATOR_FLAG_ATTRIBUTE_ID (0x40) +#define ZCL_CONCENTRATOR_RADIUS_ATTRIBUTE_ID (0x41) +#define ZCL_CONCENTRATOR_DISCOVERY_TIME_ATTRIBUTE_ID (0x42) +#define ZCL_COMMISSIONING_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_COMMISSIONING_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Commissioning +#define ZCL_RESTART_DEVICE_COMMAND_ID (0x0) +#define ZCL_RESTART_DEVICE_RESPONSE_COMMAND_ID (0x0) +#define ZCL_SAVE_STARTUP_PARAMETERS_COMMAND_ID (0x1) +#define ZCL_SAVE_STARTUP_PARAMETERS_RESPONSE_COMMAND_ID (0x1) +#define ZCL_RESTORE_STARTUP_PARAMETERS_COMMAND_ID (0x2) +#define ZCL_RESTORE_STARTUP_PARAMETERS_RESPONSE_COMMAND_ID (0x2) +#define ZCL_RESET_STARTUP_PARAMETERS_COMMAND_ID (0x3) +#define ZCL_RESET_STARTUP_PARAMETERS_RESPONSE_COMMAND_ID (0x3) + +// End of cluster: Commissioning + +// Definitions for cluster: Partition +#define ZCL_PARTITION_CLUSTER_ID (0x16) + +// Client attributes for cluster: Partition +#define ZCL_PARTITION_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_PARTITION_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Partition +#define ZCL_PARTITION_MAXIMUM_INCOMING_TRANSFER_SIZE_ATTRIBUTE_ID (0x0) +#define ZCL_PARTITION_MAXIMUM_OUTGOING_TRANSFER_SIZE_ATTRIBUTE_ID (0x1) +#define ZCL_PARTIONED_FRAME_SIZE_ATTRIBUTE_ID (0x2) +#define ZCL_LARGE_FRAME_SIZE_ATTRIBUTE_ID (0x3) +#define ZCL_NUMBER_OF_ACK_FRAME_ATTRIBUTE_ID (0x4) +#define ZCL_NACK_TIMEOUT_ATTRIBUTE_ID (0x5) +#define ZCL_INTERFRAME_DELAY_ATTRIBUTE_ID (0x6) +#define ZCL_NUMBER_OF_SEND_RETRIES_ATTRIBUTE_ID (0x7) +#define ZCL_SENDER_TIMEOUT_ATTRIBUTE_ID (0x8) +#define ZCL_RECEIVER_TIMEOUT_ATTRIBUTE_ID (0x9) +#define ZCL_PARTITION_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_PARTITION_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Partition +#define ZCL_TRANSFER_PARTITIONED_FRAME_COMMAND_ID (0x0) +#define ZCL_MULTIPLE_ACK_COMMAND_ID (0x0) +#define ZCL_READ_HANDSHAKE_PARAM_COMMAND_ID (0x1) +#define ZCL_READ_HANDSHAKE_PARAM_RESPONSE_COMMAND_ID (0x1) +#define ZCL_WRITE_HANDSHAKE_PARAM_COMMAND_ID (0x2) + +// End of cluster: Partition + +// Definitions for cluster: Over the Air Bootloading +#define ZCL_OTA_BOOTLOAD_CLUSTER_ID (0x19) + +// Client attributes for cluster: Over the Air Bootloading +#define ZCL_UPGRADE_SERVER_ID_ATTRIBUTE_ID (0x0) +#define ZCL_FILE_OFFSET_ATTRIBUTE_ID (0x1) +#define ZCL_CURRENT_FILE_VERSION_ATTRIBUTE_ID (0x2) +#define ZCL_CURRENT_ZIGBEE_STACK_VERSION_ATTRIBUTE_ID (0x3) +#define ZCL_DOWNLOADED_FILE_VERSION_ATTRIBUTE_ID (0x4) +#define ZCL_DOWNLOADED_ZIGBEE_STACK_VERSION_ATTRIBUTE_ID (0x5) +#define ZCL_IMAGE_UPGRADE_STATUS_ATTRIBUTE_ID (0x6) +#define ZCL_MANUFACTURER_ID_ATTRIBUTE_ID (0x7) +#define ZCL_IMAGE_TYPE_ID_ATTRIBUTE_ID (0x8) +#define ZCL_MINIMUM_BLOCK_REQUEST_PERIOD_ATTRIBUTE_ID (0x9) +#define ZCL_IMAGE_STAMP_ATTRIBUTE_ID (0xA) +#define ZCL_UPGRADE_ACTIVATION_POLICY_ATTRIBUTE_ID (0xB) +#define ZCL_UPGRADE_TIMEOUT_POLICY_ATTRIBUTE_ID (0xC) +#define ZCL_OTA_BOOTLOAD_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_OTA_BOOTLOAD_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Over the Air Bootloading +#define ZCL_OTA_BOOTLOAD_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_OTA_BOOTLOAD_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Over the Air Bootloading +#define ZCL_IMAGE_NOTIFY_COMMAND_ID (0x0) +#define ZCL_QUERY_NEXT_IMAGE_REQUEST_COMMAND_ID (0x1) +#define ZCL_QUERY_NEXT_IMAGE_RESPONSE_COMMAND_ID (0x2) +#define ZCL_IMAGE_BLOCK_REQUEST_COMMAND_ID (0x3) +#define ZCL_IMAGE_PAGE_REQUEST_COMMAND_ID (0x4) +#define ZCL_IMAGE_BLOCK_RESPONSE_COMMAND_ID (0x5) +#define ZCL_UPGRADE_END_REQUEST_COMMAND_ID (0x6) +#define ZCL_UPGRADE_END_RESPONSE_COMMAND_ID (0x7) +#define ZCL_QUERY_SPECIFIC_FILE_REQUEST_COMMAND_ID (0x8) +#define ZCL_QUERY_SPECIFIC_FILE_RESPONSE_COMMAND_ID (0x9) + +// End of cluster: Over the Air Bootloading + +// Definitions for cluster: Power Profile +#define ZCL_POWER_PROFILE_CLUSTER_ID (0x1A) + +// Client attributes for cluster: Power Profile +#define ZCL_POWER_PROFILE_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_POWER_PROFILE_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Power Profile +#define ZCL_TOTAL_PROFILE_NUM_ATTRIBUTE_ID (0x0) +#define ZCL_MULTIPLE_SCHEDULING_ATTRIBUTE_ID (0x1) +#define ZCL_ENERGY_FORMATTING_ATTRIBUTE_ID (0x2) +#define ZCL_ENERGY_REMOTE_ATTRIBUTE_ID (0x3) +#define ZCL_SCHEDULE_MODE_ATTRIBUTE_ID (0x4) +#define ZCL_POWER_PROFILE_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_POWER_PROFILE_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Power Profile +#define ZCL_POWER_PROFILE_REQUEST_COMMAND_ID (0x0) +#define ZCL_POWER_PROFILE_NOTIFICATION_COMMAND_ID (0x0) +#define ZCL_POWER_PROFILE_STATE_REQUEST_COMMAND_ID (0x1) +#define ZCL_POWER_PROFILE_RESPONSE_COMMAND_ID (0x1) +#define ZCL_GET_POWER_PROFILE_PRICE_RESPONSE_COMMAND_ID (0x2) +#define ZCL_POWER_PROFILE_STATE_RESPONSE_COMMAND_ID (0x2) +#define ZCL_GET_OVERALL_SCHEDULE_PRICE_RESPONSE_COMMAND_ID (0x3) +#define ZCL_GET_POWER_PROFILE_PRICE_COMMAND_ID (0x3) +#define ZCL_ENERGY_PHASES_SCHEDULE_NOTIFICATION_COMMAND_ID (0x4) +#define ZCL_POWER_PROFILES_STATE_NOTIFICATION_COMMAND_ID (0x4) +#define ZCL_ENERGY_PHASES_SCHEDULE_RESPONSE_COMMAND_ID (0x5) +#define ZCL_GET_OVERALL_SCHEDULE_PRICE_COMMAND_ID (0x5) +#define ZCL_POWER_PROFILE_SCHEDULE_CONSTRAINTS_REQUEST_COMMAND_ID (0x6) +#define ZCL_ENERGY_PHASES_SCHEDULE_REQUEST_COMMAND_ID (0x6) +#define ZCL_ENERGY_PHASES_SCHEDULE_STATE_REQUEST_COMMAND_ID (0x7) +#define ZCL_ENERGY_PHASES_SCHEDULE_STATE_RESPONSE_COMMAND_ID (0x7) +#define ZCL_GET_POWER_PROFILE_PRICE_EXTENDED_RESPONSE_COMMAND_ID (0x8) +#define ZCL_ENERGY_PHASES_SCHEDULE_STATE_NOTIFICATION_COMMAND_ID (0x8) +#define ZCL_POWER_PROFILE_SCHEDULE_CONSTRAINTS_NOTIFICATION_COMMAND_ID (0x9) +#define ZCL_POWER_PROFILE_SCHEDULE_CONSTRAINTS_RESPONSE_COMMAND_ID (0xA) +#define ZCL_GET_POWER_PROFILE_PRICE_EXTENDED_COMMAND_ID (0xB) + +// End of cluster: Power Profile + +// Definitions for cluster: Appliance Control +#define ZCL_APPLIANCE_CONTROL_CLUSTER_ID (0x1B) + +// Client attributes for cluster: Appliance Control +#define ZCL_APPLIANCE_CONTROL_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_APPLIANCE_CONTROL_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Appliance Control +#define ZCL_START_TIME_ATTRIBUTE_ID (0x0) +#define ZCL_FINISH_TIME_ATTRIBUTE_ID (0x1) +#define ZCL_REMAINING_TIME_ATTRIBUTE_ID (0x2) +#define ZCL_APPLIANCE_CONTROL_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_APPLIANCE_CONTROL_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Appliance Control +#define ZCL_EXECUTION_OF_A_COMMAND_COMMAND_ID (0x0) +#define ZCL_SIGNAL_STATE_RESPONSE_COMMAND_ID (0x0) +#define ZCL_SIGNAL_STATE_COMMAND_ID (0x1) +#define ZCL_SIGNAL_STATE_NOTIFICATION_COMMAND_ID (0x1) +#define ZCL_WRITE_FUNCTIONS_COMMAND_ID (0x2) +#define ZCL_OVERLOAD_PAUSE_RESUME_COMMAND_ID (0x3) +#define ZCL_OVERLOAD_PAUSE_COMMAND_ID (0x4) +#define ZCL_OVERLOAD_WARNING_COMMAND_ID (0x5) + +// End of cluster: Appliance Control + +// Definitions for cluster: Poll Control +#define ZCL_POLL_CONTROL_CLUSTER_ID (0x20) + +// Client attributes for cluster: Poll Control +#define ZCL_POLL_CONTROL_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_POLL_CONTROL_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Poll Control +#define ZCL_CHECK_IN_INTERVAL_ATTRIBUTE_ID (0x0) +#define ZCL_LONG_POLL_INTERVAL_ATTRIBUTE_ID (0x1) +#define ZCL_SHORT_POLL_INTERVAL_ATTRIBUTE_ID (0x2) +#define ZCL_FAST_POLL_TIMEOUT_ATTRIBUTE_ID (0x3) +#define ZCL_CHECK_IN_INTERVAL_MIN_ATTRIBUTE_ID (0x4) +#define ZCL_LONG_POLL_INTERVAL_MIN_ATTRIBUTE_ID (0x5) +#define ZCL_FAST_POLL_TIMEOUT_MAX_ATTRIBUTE_ID (0x6) +#define ZCL_POLL_CONTROL_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_POLL_CONTROL_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Poll Control +#define ZCL_CHECK_IN_COMMAND_ID (0x0) +#define ZCL_CHECK_IN_RESPONSE_COMMAND_ID (0x0) +#define ZCL_FAST_POLL_STOP_COMMAND_ID (0x1) +#define ZCL_SET_LONG_POLL_INTERVAL_COMMAND_ID (0x2) +#define ZCL_SET_SHORT_POLL_INTERVAL_COMMAND_ID (0x3) + +// End of cluster: Poll Control + +// Definitions for cluster: Green Power +#define ZCL_GREEN_POWER_CLUSTER_ID (0x21) + +// Client attributes for cluster: Green Power +#define ZCL_GP_CLIENT_GPP_MAX_PROXY_TABLE_ENTRIES_ATTRIBUTE_ID (0x10) +#define ZCL_GP_CLIENT_PROXY_TABLE_ATTRIBUTE_ID (0x11) +#define ZCL_GP_CLIENT_GPP_NOTIFICATION_RETRY_NUMBER_ATTRIBUTE_ID (0x12) +#define ZCL_GP_CLIENT_GPP_NOTIFICATION_RETRY_TIMER_ATTRIBUTE_ID (0x13) +#define ZCL_GP_CLIENT_GPP_MAX_SEARCH_COUNTER_ATTRIBUTE_ID (0x14) +#define ZCL_GP_CLIENT_GPP_BLOCKED_GPD_ID_ATTRIBUTE_ID (0x15) +#define ZCL_GP_CLIENT_GPP_FUNCTIONALITY_ATTRIBUTE_ID (0x16) +#define ZCL_GP_CLIENT_GPP_ACTIVE_FUNCTIONALITY_ATTRIBUTE_ID (0x17) +#define ZCL_GP_CLIENT_GP_SHARED_SECURITY_KEY_TYPE_ATTRIBUTE_ID (0x20) +#define ZCL_GP_CLIENT_GP_SHARED_SECURITY_KEY_ATTRIBUTE_ID (0x21) +#define ZCL_GP_CLIENT_GP_LINK_KEY_ATTRIBUTE_ID (0x22) +#define ZCL_GREEN_POWER_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_GREEN_POWER_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Green Power +#define ZCL_GP_SERVER_GPS_MAX_SINK_TABLE_ENTRIES_ATTRIBUTE_ID (0x0) +#define ZCL_GP_SERVER_SINK_TABLE_ATTRIBUTE_ID (0x1) +#define ZCL_GP_SERVER_GPS_COMMUNICATION_MODE_ATTRIBUTE_ID (0x2) +#define ZCL_GP_SERVER_GPS_COMMISSIONING_EXIT_MODE_ATTRIBUTE_ID (0x3) +#define ZCL_GP_SERVER_GPS_COMMISSIONING_WINDOW_ATTRIBUTE_ID (0x4) +#define ZCL_GP_SERVER_GPS_SECURITY_LEVEL_ATTRIBUTE_ID (0x5) +#define ZCL_GP_SERVER_GPS_FUNCTIONALITY_ATTRIBUTE_ID (0x6) +#define ZCL_GP_SERVER_GPS_ACTIVE_FUNCTIONALITY_ATTRIBUTE_ID (0x7) +#define ZCL_GP_SERVER_GP_SHARED_SECURITY_KEY_TYPE_ATTRIBUTE_ID (0x20) +#define ZCL_GP_SERVER_GP_SHARED_SECURITY_KEY_ATTRIBUTE_ID (0x21) +#define ZCL_GP_SERVER_GP_LINK_KEY_ATTRIBUTE_ID (0x22) +#define ZCL_GREEN_POWER_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_GREEN_POWER_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Green Power +#define ZCL_GP_NOTIFICATION_COMMAND_ID (0x0) +#define ZCL_GP_NOTIFICATION_RESPONSE_COMMAND_ID (0x0) +#define ZCL_GP_PAIRING_SEARCH_COMMAND_ID (0x1) +#define ZCL_GP_PAIRING_COMMAND_ID (0x1) +#define ZCL_GP_PROXY_COMMISSIONING_MODE_COMMAND_ID (0x2) +#define ZCL_GP_TUNNELING_STOP_COMMAND_ID (0x3) +#define ZCL_GP_COMMISSIONING_NOTIFICATION_COMMAND_ID (0x4) +#define ZCL_GP_SINK_COMMISSIONING_MODE_COMMAND_ID (0x5) +#define ZCL_GP_RESPONSE_COMMAND_ID (0x6) +#define ZCL_GP_TRANSLATION_TABLE_UPDATE_COMMAND_ID (0x7) +#define ZCL_GP_TRANSLATION_TABLE_REQUEST_COMMAND_ID (0x8) +#define ZCL_GP_TRANSLATION_TABLE_RESPONSE_COMMAND_ID (0x8) +#define ZCL_GP_PAIRING_CONFIGURATION_COMMAND_ID (0x9) +#define ZCL_GP_SINK_TABLE_REQUEST_COMMAND_ID (0xA) +#define ZCL_GP_SINK_TABLE_RESPONSE_COMMAND_ID (0xA) +#define ZCL_GP_PROXY_TABLE_RESPONSE_COMMAND_ID (0xB) +#define ZCL_GP_PROXY_TABLE_REQUEST_COMMAND_ID (0xB) + +// End of cluster: Green Power + +// Definitions for cluster: Keep-Alive +#define ZCL_KEEPALIVE_CLUSTER_ID (0x25) + +// Client attributes for cluster: Keep-Alive +#define ZCL_KEEPALIVE_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_KEEPALIVE_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Keep-Alive +#define ZCL_KEEPALIVE_BASE_ATTRIBUTE_ID (0x0) +#define ZCL_KEEPALIVE_JITTER_ATTRIBUTE_ID (0x1) +#define ZCL_KEEPALIVE_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_KEEPALIVE_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Keep-Alive + +// End of cluster: Keep-Alive + +// Definitions for cluster: Shade Configuration +#define ZCL_SHADE_CONFIG_CLUSTER_ID (0x100) + +// Client attributes for cluster: Shade Configuration +#define ZCL_SHADE_CONFIG_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_SHADE_CONFIG_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Shade Configuration +#define ZCL_SHADE_CONFIG_PHYSICAL_CLOSED_LIMIT_ATTRIBUTE_ID (0x0) +#define ZCL_SHADE_CONFIG_MOTOR_STEP_SIZE_ATTRIBUTE_ID (0x1) +#define ZCL_SHADE_CONFIG_STATUS_ATTRIBUTE_ID (0x2) +#define ZCL_SHADE_CONFIG_CLOSED_LIMIT_ATTRIBUTE_ID (0x10) +#define ZCL_SHADE_CONFIG_MODE_ATTRIBUTE_ID (0x11) +#define ZCL_SHADE_CONFIG_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_SHADE_CONFIG_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Shade Configuration + +// End of cluster: Shade Configuration + +// Definitions for cluster: Door Lock +#define ZCL_DOOR_LOCK_CLUSTER_ID (0x101) + +// Client attributes for cluster: Door Lock +#define ZCL_DOOR_LOCK_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_DOOR_LOCK_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Door Lock +#define ZCL_LOCK_STATE_ATTRIBUTE_ID (0x0) +#define ZCL_LOCK_TYPE_ATTRIBUTE_ID (0x1) +#define ZCL_ACTUATOR_ENABLED_ATTRIBUTE_ID (0x2) +#define ZCL_DOOR_STATE_ATTRIBUTE_ID (0x3) +#define ZCL_DOOR_OPEN_EVENTS_ATTRIBUTE_ID (0x4) +#define ZCL_DOOR_CLOSED_EVENTS_ATTRIBUTE_ID (0x5) +#define ZCL_OPEN_PERIOD_ATTRIBUTE_ID (0x6) +#define ZCL_NUM_LOCK_RECORDS_SUPPORTED_ATTRIBUTE_ID (0x10) +#define ZCL_NUM_TOTAL_USERS_SUPPORTED_ATTRIBUTE_ID (0x11) +#define ZCL_NUM_PIN_USERS_SUPPORTED_ATTRIBUTE_ID (0x12) +#define ZCL_NUM_RFID_USERS_SUPPORTED_ATTRIBUTE_ID (0x13) +#define ZCL_NUM_WEEKDAY_SCHEDULES_SUPPORTED_PER_USER_ATTRIBUTE_ID (0x14) +#define ZCL_NUM_YEARDAY_SCHEDULES_SUPPORTED_PER_USER_ATTRIBUTE_ID (0x15) +#define ZCL_NUM_HOLIDAY_SCHEDULES_SUPPORTED_PER_USER_ATTRIBUTE_ID (0x16) +#define ZCL_MAX_PIN_LENGTH_ATTRIBUTE_ID (0x17) +#define ZCL_MIN_PIN_LENGTH_ATTRIBUTE_ID (0x18) +#define ZCL_MAX_RFID_CODE_LENGTH_ATTRIBUTE_ID (0x19) +#define ZCL_MIN_RFID_CODE_LENGTH_ATTRIBUTE_ID (0x1A) +#define ZCL_NUM_BIOMETRIC_USERS_SUPPORTED_ATTRIBUTE_ID (0x1B) +#define ZCL_ENABLE_LOGGING_ATTRIBUTE_ID (0x20) +#define ZCL_LANGUAGE_ATTRIBUTE_ID (0x21) +#define ZCL_LED_SETTINGS_ATTRIBUTE_ID (0x22) +#define ZCL_AUTO_RELOCK_TIME_ATTRIBUTE_ID (0x23) +#define ZCL_SOUND_VOLUME_ATTRIBUTE_ID (0x24) +#define ZCL_OPERATING_MODE_ATTRIBUTE_ID (0x25) +#define ZCL_SUPPORTED_OPERATING_MODES_ATTRIBUTE_ID (0x26) +#define ZCL_DEFAULT_CONFIGURATION_REGISTER_ATTRIBUTE_ID (0x27) +#define ZCL_ENABLE_LOCAL_PROGRAMMING_ATTRIBUTE_ID (0x28) +#define ZCL_ENABLE_ONE_TOUCH_LOCKING_ATTRIBUTE_ID (0x29) +#define ZCL_ENABLE_INSIDE_STATUS_LED_ATTRIBUTE_ID (0x2A) +#define ZCL_ENABLE_PRIVACY_MODE_BUTTON_ATTRIBUTE_ID (0x2B) +#define ZCL_WRONG_CODE_ENTRY_LIMIT_ATTRIBUTE_ID (0x30) +#define ZCL_USER_CODE_TEMPORARY_DISABLE_TIME_ATTRIBUTE_ID (0x31) +#define ZCL_SEND_PIN_OVER_THE_AIR_ATTRIBUTE_ID (0x32) +#define ZCL_REQUIRE_PIN_FOR_RF_OPERATION_ATTRIBUTE_ID (0x33) +#define ZCL_ZIGBEE_SECURITY_LEVEL_ATTRIBUTE_ID (0x34) +#define ZCL_DOOR_LOCK_ALARM_MASK_ATTRIBUTE_ID (0x40) +#define ZCL_KEYPAD_OPERATION_EVENT_MASK_ATTRIBUTE_ID (0x41) +#define ZCL_RF_OPERATION_EVENT_MASK_ATTRIBUTE_ID (0x42) +#define ZCL_MANUAL_OPERATION_EVENT_MASK_ATTRIBUTE_ID (0x43) +#define ZCL_RFID_OPERATION_EVENT_MASK_ATTRIBUTE_ID (0x44) +#define ZCL_KEYPAD_PROGRAMMING_EVENT_MASK_ATTRIBUTE_ID (0x45) +#define ZCL_RF_PROGRAMMING_EVENT_MASK_ATTRIBUTE_ID (0x46) +#define ZCL_RFID_PROGRAMMING_EVENT_MASK_ATTRIBUTE_ID (0x47) +#define ZCL_BIOMETRIC_OPERATION_EVENT_MASK_ATTRIBUTE_ID (0x48) +#define ZCL_BIOMETRIC_PROGRAMMING_EVENT_MASK_ATTRIBUTE_ID (0x49) +#define ZCL_DOOR_LOCK_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_DOOR_LOCK_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Door Lock +#define ZCL_LOCK_DOOR_COMMAND_ID (0x0) +#define ZCL_LOCK_DOOR_RESPONSE_COMMAND_ID (0x0) +#define ZCL_UNLOCK_DOOR_COMMAND_ID (0x1) +#define ZCL_UNLOCK_DOOR_RESPONSE_COMMAND_ID (0x1) +#define ZCL_TOGGLE_COMMAND_ID (0x2) +#define ZCL_TOGGLE_RESPONSE_COMMAND_ID (0x2) +#define ZCL_UNLOCK_WITH_TIMEOUT_COMMAND_ID (0x3) +#define ZCL_UNLOCK_WITH_TIMEOUT_RESPONSE_COMMAND_ID (0x3) +#define ZCL_GET_LOG_RECORD_COMMAND_ID (0x4) +#define ZCL_GET_LOG_RECORD_RESPONSE_COMMAND_ID (0x4) +#define ZCL_SET_PIN_COMMAND_ID (0x5) +#define ZCL_SET_PIN_RESPONSE_COMMAND_ID (0x5) +#define ZCL_GET_PIN_COMMAND_ID (0x6) +#define ZCL_GET_PIN_RESPONSE_COMMAND_ID (0x6) +#define ZCL_CLEAR_PIN_COMMAND_ID (0x7) +#define ZCL_CLEAR_PIN_RESPONSE_COMMAND_ID (0x7) +#define ZCL_CLEAR_ALL_PINS_COMMAND_ID (0x8) +#define ZCL_CLEAR_ALL_PINS_RESPONSE_COMMAND_ID (0x8) +#define ZCL_SET_USER_STATUS_COMMAND_ID (0x9) +#define ZCL_SET_USER_STATUS_RESPONSE_COMMAND_ID (0x9) +#define ZCL_GET_USER_STATUS_COMMAND_ID (0xA) +#define ZCL_GET_USER_STATUS_RESPONSE_COMMAND_ID (0xA) +#define ZCL_SET_WEEKDAY_SCHEDULE_COMMAND_ID (0xB) +#define ZCL_SET_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID (0xB) +#define ZCL_GET_WEEKDAY_SCHEDULE_COMMAND_ID (0xC) +#define ZCL_GET_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID (0xC) +#define ZCL_CLEAR_WEEKDAY_SCHEDULE_COMMAND_ID (0xD) +#define ZCL_CLEAR_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID (0xD) +#define ZCL_SET_YEARDAY_SCHEDULE_COMMAND_ID (0xE) +#define ZCL_SET_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID (0xE) +#define ZCL_GET_YEARDAY_SCHEDULE_COMMAND_ID (0xF) +#define ZCL_GET_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID (0xF) +#define ZCL_CLEAR_YEARDAY_SCHEDULE_COMMAND_ID (0x10) +#define ZCL_CLEAR_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x10) +#define ZCL_SET_HOLIDAY_SCHEDULE_COMMAND_ID (0x11) +#define ZCL_SET_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x11) +#define ZCL_GET_HOLIDAY_SCHEDULE_COMMAND_ID (0x12) +#define ZCL_GET_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x12) +#define ZCL_CLEAR_HOLIDAY_SCHEDULE_COMMAND_ID (0x13) +#define ZCL_CLEAR_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID (0x13) +#define ZCL_SET_USER_TYPE_COMMAND_ID (0x14) +#define ZCL_SET_USER_TYPE_RESPONSE_COMMAND_ID (0x14) +#define ZCL_GET_USER_TYPE_COMMAND_ID (0x15) +#define ZCL_GET_USER_TYPE_RESPONSE_COMMAND_ID (0x15) +#define ZCL_SET_RFID_COMMAND_ID (0x16) +#define ZCL_SET_RFID_RESPONSE_COMMAND_ID (0x16) +#define ZCL_GET_RFID_COMMAND_ID (0x17) +#define ZCL_GET_RFID_RESPONSE_COMMAND_ID (0x17) +#define ZCL_CLEAR_RFID_COMMAND_ID (0x18) +#define ZCL_CLEAR_RFID_RESPONSE_COMMAND_ID (0x18) +#define ZCL_CLEAR_ALL_RFIDS_COMMAND_ID (0x19) +#define ZCL_CLEAR_ALL_RFIDS_RESPONSE_COMMAND_ID (0x19) +#define ZCL_SET_DISPOSABLE_SCHEDULE_COMMAND_ID (0x1A) +#define ZCL_SET_DISPOSABLE_SCHEDULE_RESPONSE_COMMAND_ID (0x1A) +#define ZCL_GET_DISPOSABLE_SCHEDULE_COMMAND_ID (0x1B) +#define ZCL_GET_DISPOSABLE_SCHEDULE_RESPONSE_COMMAND_ID (0x1B) +#define ZCL_CLEAR_DISPOSABLE_SCHEDULE_COMMAND_ID (0x1C) +#define ZCL_CLEAR_DISPOSABLE_SCHEDULE_RESPONSE_COMMAND_ID (0x1C) +#define ZCL_CLEAR_BIOMETRIC_CREDENTIAL_COMMAND_ID (0x1D) +#define ZCL_CLEAR_BIOMETRIC_CREDENTIAL_RESPONSE_COMMAND_ID (0x1D) +#define ZCL_CLEAR_ALL_BIOMETRIC_CREDENTIALS_COMMAND_ID (0x1E) +#define ZCL_CLEAR_ALL_BIOMETRIC_CREDENTIALS_RESPONSE_COMMAND_ID (0x1E) +#define ZCL_OPERATION_EVENT_NOTIFICATION_COMMAND_ID (0x20) +#define ZCL_PROGRAMMING_EVENT_NOTIFICATION_COMMAND_ID (0x21) + +// End of cluster: Door Lock + +// Definitions for cluster: Window Covering +#define ZCL_WINDOW_COVERING_CLUSTER_ID (0x102) + +// Client attributes for cluster: Window Covering +#define ZCL_WINDOW_COVERING_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_WINDOW_COVERING_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Window Covering +#define ZCL_COVERING_TYPE_ATTRIBUTE_ID (0x0) +#define ZCL_LIMIT_LIFT_ATTRIBUTE_ID (0x1) +#define ZCL_LIMIT_TILT_ATTRIBUTE_ID (0x2) +#define ZCL_CURRENT_LIFT_ATTRIBUTE_ID (0x3) +#define ZCL_CURRENT_TILT_ATTRIBUTE_ID (0x4) +#define ZCL_NUMBER_LIFT_ATTRIBUTE_ID (0x5) +#define ZCL_NUMBER_TILT_ATTRIBUTE_ID (0x6) +#define ZCL_CONFIG_STATUS_ATTRIBUTE_ID (0x7) +#define ZCL_CURRENT_LIFT_PERCENTAGE_ATTRIBUTE_ID (0x8) +#define ZCL_CURRENT_TILT_PERCENTAGE_ATTRIBUTE_ID (0x9) +#define ZCL_OPEN_LIMIT_LIFT_ATTRIBUTE_ID (0x10) +#define ZCL_CLOSED_LIMIT_LIFT_ATTRIBUTE_ID (0x11) +#define ZCL_OPEN_LIMIT_TILT_ATTRIBUTE_ID (0x12) +#define ZCL_CLOSED_LIMIT_TILT_ATTRIBUTE_ID (0x13) +#define ZCL_VELOCITY_LIFT_ATTRIBUTE_ID (0x14) +#define ZCL_ACCELERATION_LIFT_ATTRIBUTE_ID (0x15) +#define ZCL_DECELERATION_LIFT_ATTRIBUTE_ID (0x16) +#define ZCL_MODE_ATTRIBUTE_ID (0x17) +#define ZCL_SETPOINTS_LIFT_ATTRIBUTE_ID (0x18) +#define ZCL_SETPOINTS_TILT_ATTRIBUTE_ID (0x19) +#define ZCL_WINDOW_COVERING_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_WINDOW_COVERING_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Window Covering +#define ZCL_WINDOW_COVERING_UP_OPEN_COMMAND_ID (0x0) +#define ZCL_WINDOW_COVERING_DOWN_CLOSE_COMMAND_ID (0x1) +#define ZCL_WINDOW_COVERING_STOP_COMMAND_ID (0x2) +#define ZCL_WINDOW_COVERING_GO_TO_LIFT_VALUE_COMMAND_ID (0x4) +#define ZCL_WINDOW_COVERING_GO_TO_LIFT_PERCENTAGE_COMMAND_ID (0x5) +#define ZCL_WINDOW_COVERING_GO_TO_TILT_VALUE_COMMAND_ID (0x7) +#define ZCL_WINDOW_COVERING_GO_TO_TILT_PERCENTAGE_COMMAND_ID (0x8) + +// End of cluster: Window Covering + +// Definitions for cluster: Barrier Control +#define ZCL_BARRIER_CONTROL_CLUSTER_ID (0x103) + +// Client attributes for cluster: Barrier Control +#define ZCL_BARRIER_CONTROL_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_BARRIER_CONTROL_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Barrier Control +#define ZCL_BARRIER_MOVING_STATE_ATTRIBUTE_ID (0x1) +#define ZCL_BARRIER_SAFETY_STATUS_ATTRIBUTE_ID (0x2) +#define ZCL_BARRIER_CAPABILITIES_ATTRIBUTE_ID (0x3) +#define ZCL_BARRIER_OPEN_EVENTS_ATTRIBUTE_ID (0x4) +#define ZCL_BARRIER_CLOSE_EVENTS_ATTRIBUTE_ID (0x5) +#define ZCL_BARRIER_COMMAND_OPEN_EVENTS_ATTRIBUTE_ID (0x6) +#define ZCL_BARRIER_COMMAND_CLOSE_EVENTS_ATTRIBUTE_ID (0x7) +#define ZCL_BARRIER_OPEN_PERIOD_ATTRIBUTE_ID (0x8) +#define ZCL_BARRIER_CLOSE_PERIOD_ATTRIBUTE_ID (0x9) +#define ZCL_BARRIER_POSITION_ATTRIBUTE_ID (0xA) +#define ZCL_BARRIER_CONTROL_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_BARRIER_CONTROL_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Barrier Control +#define ZCL_BARRIER_CONTROL_GO_TO_PERCENT_COMMAND_ID (0x0) +#define ZCL_BARRIER_CONTROL_STOP_COMMAND_ID (0x1) + +// End of cluster: Barrier Control + +// Definitions for cluster: Pump Configuration and Control +#define ZCL_PUMP_CONFIG_CONTROL_CLUSTER_ID (0x200) + +// Client attributes for cluster: Pump Configuration and Control +#define ZCL_PUMP_CONFIG_CONTROL_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_PUMP_CONFIG_CONTROL_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Pump Configuration and Control +#define ZCL_MAX_PRESSURE_ATTRIBUTE_ID (0x0) +#define ZCL_MAX_SPEED_ATTRIBUTE_ID (0x1) +#define ZCL_MAX_FLOW_ATTRIBUTE_ID (0x2) +#define ZCL_MIN_CONST_PRESSURE_ATTRIBUTE_ID (0x3) +#define ZCL_MAX_CONST_PRESSURE_ATTRIBUTE_ID (0x4) +#define ZCL_MIN_COMP_PRESSURE_ATTRIBUTE_ID (0x5) +#define ZCL_MAX_COMP_PRESSURE_ATTRIBUTE_ID (0x6) +#define ZCL_MIN_CONST_SPEED_ATTRIBUTE_ID (0x7) +#define ZCL_MAX_CONST_SPEED_ATTRIBUTE_ID (0x8) +#define ZCL_MIN_CONST_FLOW_ATTRIBUTE_ID (0x9) +#define ZCL_MAX_CONST_FLOW_ATTRIBUTE_ID (0xA) +#define ZCL_MIN_CONST_TEMP_ATTRIBUTE_ID (0xB) +#define ZCL_MAX_CONST_TEMP_ATTRIBUTE_ID (0xC) +#define ZCL_PUMP_STATUS_ATTRIBUTE_ID (0x10) +#define ZCL_EFFECTIVE_OPERATION_MODE_ATTRIBUTE_ID (0x11) +#define ZCL_EFFECTIVE_CONTROL_MODE_ATTRIBUTE_ID (0x12) +#define ZCL_CAPACITY_ATTRIBUTE_ID (0x13) +#define ZCL_SPEED_ATTRIBUTE_ID (0x14) +#define ZCL_LIFETIME_RUNNING_HOURS_ATTRIBUTE_ID (0x15) +#define ZCL_PUMP_POWER_ATTRIBUTE_ID (0x16) +#define ZCL_LIFETIME_ENERGY_CONSUMED_ATTRIBUTE_ID (0x17) +#define ZCL_OPERATION_MODE_ATTRIBUTE_ID (0x20) +#define ZCL_CONTROL_MODE_ATTRIBUTE_ID (0x21) +#define ZCL_PUMP_ALARM_MASK_ATTRIBUTE_ID (0x22) +#define ZCL_PUMP_CONFIG_CONTROL_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_PUMP_CONFIG_CONTROL_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Pump Configuration and Control + +// End of cluster: Pump Configuration and Control + +// Definitions for cluster: Thermostat +#define ZCL_THERMOSTAT_CLUSTER_ID (0x201) + +// Client attributes for cluster: Thermostat +#define ZCL_THERMOSTAT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_THERMOSTAT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Thermostat +#define ZCL_LOCAL_TEMPERATURE_ATTRIBUTE_ID (0x0) +#define ZCL_OUTDOOR_TEMPERATURE_ATTRIBUTE_ID (0x1) +#define ZCL_THERMOSTAT_OCCUPANCY_ATTRIBUTE_ID (0x2) +#define ZCL_ABS_MIN_HEAT_SETPOINT_LIMIT_ATTRIBUTE_ID (0x3) +#define ZCL_ABS_MAX_HEAT_SETPOINT_LIMIT_ATTRIBUTE_ID (0x4) +#define ZCL_ABS_MIN_COOL_SETPOINT_LIMIT_ATTRIBUTE_ID (0x5) +#define ZCL_ABS_MAX_COOL_SETPOINT_LIMIT_ATTRIBUTE_ID (0x6) +#define ZCL_PI_COOLING_DEMAND_ATTRIBUTE_ID (0x7) +#define ZCL_PI_HEATING_DEMAND_ATTRIBUTE_ID (0x8) +#define ZCL_HVAC_SYSTEM_TYPE_CONFIGURATION_ATTRIBUTE_ID (0x9) +#define ZCL_LOCAL_TEMPERATURE_CALIBRATION_ATTRIBUTE_ID (0x10) +#define ZCL_OCCUPIED_COOLING_SETPOINT_ATTRIBUTE_ID (0x11) +#define ZCL_OCCUPIED_HEATING_SETPOINT_ATTRIBUTE_ID (0x12) +#define ZCL_UNOCCUPIED_COOLING_SETPOINT_ATTRIBUTE_ID (0x13) +#define ZCL_UNOCCUPIED_HEATING_SETPOINT_ATTRIBUTE_ID (0x14) +#define ZCL_MIN_HEAT_SETPOINT_LIMIT_ATTRIBUTE_ID (0x15) +#define ZCL_MAX_HEAT_SETPOINT_LIMIT_ATTRIBUTE_ID (0x16) +#define ZCL_MIN_COOL_SETPOINT_LIMIT_ATTRIBUTE_ID (0x17) +#define ZCL_MAX_COOL_SETPOINT_LIMIT_ATTRIBUTE_ID (0x18) +#define ZCL_MIN_SETPOINT_DEAD_BAND_ATTRIBUTE_ID (0x19) +#define ZCL_REMOTE_SENSING_ATTRIBUTE_ID (0x1A) +#define ZCL_CONTROL_SEQUENCE_OF_OPERATION_ATTRIBUTE_ID (0x1B) +#define ZCL_SYSTEM_MODE_ATTRIBUTE_ID (0x1C) +#define ZCL_THERMOSTAT_ALARM_MASK_ATTRIBUTE_ID (0x1D) +#define ZCL_THERMOSTAT_RUNNING_MODE_ATTRIBUTE_ID (0x1E) +#define ZCL_START_OF_WEEK_ATTRIBUTE_ID (0x20) +#define ZCL_NUMBER_OF_WEEKLY_TRANSITIONS_ATTRIBUTE_ID (0x21) +#define ZCL_NUMBER_OF_DAILY_TRANSITIONS_ATTRIBUTE_ID (0x22) +#define ZCL_TEMPERATURE_SETPOINT_HOLD_ATTRIBUTE_ID (0x23) +#define ZCL_TEMPERATURE_SETPOINT_HOLD_DURATION_ATTRIBUTE_ID (0x24) +#define ZCL_THERMOSTAT_PROGRAMMING_OPERATION_MODE_ATTRIBUTE_ID (0x25) +#define ZCL_THERMOSTAT_RUNNING_STATE_ATTRIBUTE_ID (0x29) +#define ZCL_SETPOINT_CHANGE_SOURCE_ATTRIBUTE_ID (0x30) +#define ZCL_SETPOINT_CHANGE_AMOUNT_ATTRIBUTE_ID (0x31) +#define ZCL_SETPOINT_CHANGE_SOURCE_TIMESTAMP_ATTRIBUTE_ID (0x32) +#define ZCL_OCCUPIED_SETBACK_ATTRIBUTE_ID (0x34) +#define ZCL_OCCUPIED_SETBACK_MIN_ATTRIBUTE_ID (0x35) +#define ZCL_OCCUPIED_SETBACK_MAX_ATTRIBUTE_ID (0x36) +#define ZCL_UNOCCUPIED_SETBACK_ATTRIBUTE_ID (0x37) +#define ZCL_UNOCCUPIED_SETBACK_MIN_ATTRIBUTE_ID (0x38) +#define ZCL_UNOCCUPIED_SETBACK_MAX_ATTRIBUTE_ID (0x39) +#define ZCL_EMERGENCY_HEAT_DELTA_ATTRIBUTE_ID (0x3A) +#define ZCL_AC_TYPE_ATTRIBUTE_ID (0x40) +#define ZCL_AC_CAPACITY_ATTRIBUTE_ID (0x41) +#define ZCL_AC_REFRIGERANT_TYPE_ATTRIBUTE_ID (0x42) +#define ZCL_AC_COMPRESSOR_ATTRIBUTE_ID (0x43) +#define ZCL_AC_ERROR_CODE_ATTRIBUTE_ID (0x44) +#define ZCL_AC_LOUVER_POSITION_ATTRIBUTE_ID (0x45) +#define ZCL_AC_COIL_TEMPERATURE_ATTRIBUTE_ID (0x46) +#define ZCL_AC_CAPACITY_FORMAT_ATTRIBUTE_ID (0x47) +#define ZCL_THERMOSTAT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_THERMOSTAT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Thermostat +#define ZCL_SETPOINT_RAISE_LOWER_COMMAND_ID (0x0) +#define ZCL_CURRENT_WEEKLY_SCHEDULE_COMMAND_ID (0x0) +#define ZCL_SET_WEEKLY_SCHEDULE_COMMAND_ID (0x1) +#define ZCL_RELAY_STATUS_LOG_COMMAND_ID (0x1) +#define ZCL_GET_WEEKLY_SCHEDULE_COMMAND_ID (0x2) +#define ZCL_CLEAR_WEEKLY_SCHEDULE_COMMAND_ID (0x3) +#define ZCL_GET_RELAY_STATUS_LOG_COMMAND_ID (0x4) + +// End of cluster: Thermostat + +// Definitions for cluster: Fan Control +#define ZCL_FAN_CONTROL_CLUSTER_ID (0x202) + +// Client attributes for cluster: Fan Control +#define ZCL_FAN_CONTROL_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_FAN_CONTROL_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Fan Control +#define ZCL_FAN_CONTROL_FAN_MODE_ATTRIBUTE_ID (0x0) +#define ZCL_FAN_CONTROL_FAN_MODE_SEQUENCE_ATTRIBUTE_ID (0x1) +#define ZCL_FAN_DELAY_ATTRIBUTE_ID (0x2) +#define ZCL_FAN_CONTROL_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_FAN_CONTROL_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Fan Control + +// End of cluster: Fan Control + +// Definitions for cluster: Dehumidification Control +#define ZCL_DEHUMID_CONTROL_CLUSTER_ID (0x203) + +// Client attributes for cluster: Dehumidification Control +#define ZCL_DEHUMID_CONTROL_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_DEHUMID_CONTROL_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Dehumidification Control +#define ZCL_RELATIVE_HUMIDITY_ATTRIBUTE_ID (0x0) +#define ZCL_DEHUMIDIFICATION_COOLING_ATTRIBUTE_ID (0x1) +#define ZCL_RH_DEHUMIDIFICATION_SETPOINT_ATTRIBUTE_ID (0x10) +#define ZCL_RELATIVE_HUMIDITY_MODE_ATTRIBUTE_ID (0x11) +#define ZCL_DEHUMIDIFICATION_LOCKOUT_ATTRIBUTE_ID (0x12) +#define ZCL_DEHUMIDIFICATION_HYSTERESIS_ATTRIBUTE_ID (0x13) +#define ZCL_DEHUMIDIFICATION_MAX_COOL_ATTRIBUTE_ID (0x14) +#define ZCL_RELATIVE_HUMIDITY_DISPLAY_ATTRIBUTE_ID (0x15) +#define ZCL_DEHUMID_CONTROL_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_DEHUMID_CONTROL_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Dehumidification Control + +// End of cluster: Dehumidification Control + +// Definitions for cluster: Thermostat User Interface Configuration +#define ZCL_THERMOSTAT_UI_CONFIG_CLUSTER_ID (0x204) + +// Client attributes for cluster: Thermostat User Interface Configuration +#define ZCL_THERMOSTAT_UI_CONFIG_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_THERMOSTAT_UI_CONFIG_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Thermostat User Interface Configuration +#define ZCL_TEMPERATURE_DISPLAY_MODE_ATTRIBUTE_ID (0x0) +#define ZCL_KEYPAD_LOCKOUT_ATTRIBUTE_ID (0x1) +#define ZCL_SCHEDULE_PROGRAMMING_VISIBILITY_ATTRIBUTE_ID (0x2) +#define ZCL_BACKLIGHT_TIMEOUT_ATTRIBUTE_ID (0x3) +#define ZCL_SETPOINT_SOURCE_INDICATION_ATTRIBUTE_ID (0x4) +#define ZCL_THERMOSTAT_UI_CONFIG_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_THERMOSTAT_UI_CONFIG_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Thermostat User Interface Configuration + +// End of cluster: Thermostat User Interface Configuration + +// Definitions for cluster: Color Control +#define ZCL_COLOR_CONTROL_CLUSTER_ID (0x300) + +// Client attributes for cluster: Color Control +#define ZCL_COLOR_CONTROL_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_COLOR_CONTROL_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Color Control +#define ZCL_COLOR_CONTROL_CURRENT_HUE_ATTRIBUTE_ID (0x0) +#define ZCL_COLOR_CONTROL_CURRENT_SATURATION_ATTRIBUTE_ID (0x1) +#define ZCL_COLOR_CONTROL_REMAINING_TIME_ATTRIBUTE_ID (0x2) +#define ZCL_COLOR_CONTROL_CURRENT_X_ATTRIBUTE_ID (0x3) +#define ZCL_COLOR_CONTROL_CURRENT_Y_ATTRIBUTE_ID (0x4) +#define ZCL_COLOR_CONTROL_DRIFT_COMPENSATION_ATTRIBUTE_ID (0x5) +#define ZCL_COLOR_CONTROL_COMPENSATION_TEXT_ATTRIBUTE_ID (0x6) +#define ZCL_COLOR_CONTROL_COLOR_TEMPERATURE_ATTRIBUTE_ID (0x7) +#define ZCL_COLOR_CONTROL_COLOR_MODE_ATTRIBUTE_ID (0x8) +#define ZCL_COLOR_CONTROL_OPTIONS_ATTRIBUTE_ID (0xF) +#define ZCL_COLOR_CONTROL_NUMBER_OF_PRIMARIES_ATTRIBUTE_ID (0x10) +#define ZCL_COLOR_CONTROL_PRIMARY_1_X_ATTRIBUTE_ID (0x11) +#define ZCL_COLOR_CONTROL_PRIMARY_1_Y_ATTRIBUTE_ID (0x12) +#define ZCL_COLOR_CONTROL_PRIMARY_1_INTENSITY_ATTRIBUTE_ID (0x13) +#define ZCL_COLOR_CONTROL_PRIMARY_2_X_ATTRIBUTE_ID (0x15) +#define ZCL_COLOR_CONTROL_PRIMARY_2_Y_ATTRIBUTE_ID (0x16) +#define ZCL_COLOR_CONTROL_PRIMARY_2_INTENSITY_ATTRIBUTE_ID (0x17) +#define ZCL_COLOR_CONTROL_PRIMARY_3_X_ATTRIBUTE_ID (0x19) +#define ZCL_COLOR_CONTROL_PRIMARY_3_Y_ATTRIBUTE_ID (0x1A) +#define ZCL_COLOR_CONTROL_PRIMARY_3_INTENSITY_ATTRIBUTE_ID (0x1B) +#define ZCL_COLOR_CONTROL_PRIMARY_4_X_ATTRIBUTE_ID (0x20) +#define ZCL_COLOR_CONTROL_PRIMARY_4_Y_ATTRIBUTE_ID (0x21) +#define ZCL_COLOR_CONTROL_PRIMARY_4_INTENSITY_ATTRIBUTE_ID (0x22) +#define ZCL_COLOR_CONTROL_PRIMARY_5_X_ATTRIBUTE_ID (0x24) +#define ZCL_COLOR_CONTROL_PRIMARY_5_Y_ATTRIBUTE_ID (0x25) +#define ZCL_COLOR_CONTROL_PRIMARY_5_INTENSITY_ATTRIBUTE_ID (0x26) +#define ZCL_COLOR_CONTROL_PRIMARY_6_X_ATTRIBUTE_ID (0x28) +#define ZCL_COLOR_CONTROL_PRIMARY_6_Y_ATTRIBUTE_ID (0x29) +#define ZCL_COLOR_CONTROL_PRIMARY_6_INTENSITY_ATTRIBUTE_ID (0x2A) +#define ZCL_COLOR_CONTROL_WHITE_POINT_X_ATTRIBUTE_ID (0x30) +#define ZCL_COLOR_CONTROL_WHITE_POINT_Y_ATTRIBUTE_ID (0x31) +#define ZCL_COLOR_CONTROL_COLOR_POINT_R_X_ATTRIBUTE_ID (0x32) +#define ZCL_COLOR_CONTROL_COLOR_POINT_R_Y_ATTRIBUTE_ID (0x33) +#define ZCL_COLOR_CONTROL_COLOR_POINT_R_INTENSITY_ATTRIBUTE_ID (0x34) +#define ZCL_COLOR_CONTROL_COLOR_POINT_G_X_ATTRIBUTE_ID (0x36) +#define ZCL_COLOR_CONTROL_COLOR_POINT_G_Y_ATTRIBUTE_ID (0x37) +#define ZCL_COLOR_CONTROL_COLOR_POINT_G_INTENSITY_ATTRIBUTE_ID (0x38) +#define ZCL_COLOR_CONTROL_COLOR_POINT_B_X_ATTRIBUTE_ID (0x3A) +#define ZCL_COLOR_CONTROL_COLOR_POINT_B_Y_ATTRIBUTE_ID (0x3B) +#define ZCL_COLOR_CONTROL_COLOR_POINT_B_INTENSITY_ATTRIBUTE_ID (0x3C) +#define ZCL_COLOR_CONTROL_ENHANCED_CURRENT_HUE_ATTRIBUTE_ID (0x4000) +#define ZCL_COLOR_CONTROL_ENHANCED_COLOR_MODE_ATTRIBUTE_ID (0x4001) +#define ZCL_COLOR_CONTROL_COLOR_LOOP_ACTIVE_ATTRIBUTE_ID (0x4002) +#define ZCL_COLOR_CONTROL_COLOR_LOOP_DIRECTION_ATTRIBUTE_ID (0x4003) +#define ZCL_COLOR_CONTROL_COLOR_LOOP_TIME_ATTRIBUTE_ID (0x4004) +#define ZCL_COLOR_CONTROL_COLOR_LOOP_START_ENHANCED_HUE_ATTRIBUTE_ID (0x4005) +#define ZCL_COLOR_CONTROL_COLOR_LOOP_STORED_ENHANCED_HUE_ATTRIBUTE_ID (0x4006) +#define ZCL_COLOR_CONTROL_COLOR_CAPABILITIES_ATTRIBUTE_ID (0x400A) +#define ZCL_COLOR_CONTROL_COLOR_TEMP_PHYSICAL_MIN_ATTRIBUTE_ID (0x400B) +#define ZCL_COLOR_CONTROL_COLOR_TEMP_PHYSICAL_MAX_ATTRIBUTE_ID (0x400C) +#define ZCL_COLOR_CONTROL_TEMPERATURE_LEVEL_MIN_MIREDS_ATTRIBUTE_ID (0x400D) +#define ZCL_START_UP_COLOR_TEMPERATURE_MIREDS_ATTRIBUTE_ID (0x4010) +#define ZCL_COLOR_CONTROL_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_COLOR_CONTROL_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Color Control +#define ZCL_MOVE_TO_HUE_COMMAND_ID (0x0) +#define ZCL_MOVE_HUE_COMMAND_ID (0x1) +#define ZCL_STEP_HUE_COMMAND_ID (0x2) +#define ZCL_MOVE_TO_SATURATION_COMMAND_ID (0x3) +#define ZCL_MOVE_SATURATION_COMMAND_ID (0x4) +#define ZCL_STEP_SATURATION_COMMAND_ID (0x5) +#define ZCL_MOVE_TO_HUE_AND_SATURATION_COMMAND_ID (0x6) +#define ZCL_MOVE_TO_COLOR_COMMAND_ID (0x7) +#define ZCL_MOVE_COLOR_COMMAND_ID (0x8) +#define ZCL_STEP_COLOR_COMMAND_ID (0x9) +#define ZCL_MOVE_TO_COLOR_TEMPERATURE_COMMAND_ID (0xA) +#define ZCL_ENHANCED_MOVE_TO_HUE_COMMAND_ID (0x40) +#define ZCL_ENHANCED_MOVE_HUE_COMMAND_ID (0x41) +#define ZCL_ENHANCED_STEP_HUE_COMMAND_ID (0x42) +#define ZCL_ENHANCED_MOVE_TO_HUE_AND_SATURATION_COMMAND_ID (0x43) +#define ZCL_COLOR_LOOP_SET_COMMAND_ID (0x44) +#define ZCL_STOP_MOVE_STEP_COMMAND_ID (0x47) +#define ZCL_MOVE_COLOR_TEMPERATURE_COMMAND_ID (0x4B) +#define ZCL_STEP_COLOR_TEMPERATURE_COMMAND_ID (0x4C) + +// End of cluster: Color Control + +// Definitions for cluster: Ballast Configuration +#define ZCL_BALLAST_CONFIGURATION_CLUSTER_ID (0x301) + +// Client attributes for cluster: Ballast Configuration +#define ZCL_BALLAST_CONFIGURATION_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_BALLAST_CONFIGURATION_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Ballast Configuration +#define ZCL_PHYSICAL_MIN_LEVEL_ATTRIBUTE_ID (0x0) +#define ZCL_PHYSICAL_MAX_LEVEL_ATTRIBUTE_ID (0x1) +#define ZCL_BALLAST_STATUS_ATTRIBUTE_ID (0x2) +#define ZCL_MIN_LEVEL_ATTRIBUTE_ID (0x10) +#define ZCL_MAX_LEVEL_ATTRIBUTE_ID (0x11) +#define ZCL_POWER_ON_LEVEL_ATTRIBUTE_ID (0x12) +#define ZCL_POWER_ON_FADE_TIME_ATTRIBUTE_ID (0x13) +#define ZCL_INTRINSIC_BALLAST_FACTOR_ATTRIBUTE_ID (0x14) +#define ZCL_BALLAST_FACTOR_ADJUSTMENT_ATTRIBUTE_ID (0x15) +#define ZCL_LAMP_QUALITY_ATTRIBUTE_ID (0x20) +#define ZCL_LAMP_TYPE_ATTRIBUTE_ID (0x30) +#define ZCL_LAMP_MANUFACTURER_ATTRIBUTE_ID (0x31) +#define ZCL_LAMP_RATED_HOURS_ATTRIBUTE_ID (0x32) +#define ZCL_LAMP_BURN_HOURS_ATTRIBUTE_ID (0x33) +#define ZCL_LAMP_ALARM_MODE_ATTRIBUTE_ID (0x34) +#define ZCL_LAMP_BURN_HOURS_TRIP_POINT_ATTRIBUTE_ID (0x35) +#define ZCL_BALLAST_CONFIGURATION_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_BALLAST_CONFIGURATION_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Ballast Configuration + +// End of cluster: Ballast Configuration + +// Definitions for cluster: Illuminance Measurement +#define ZCL_ILLUM_MEASUREMENT_CLUSTER_ID (0x400) + +// Client attributes for cluster: Illuminance Measurement +#define ZCL_ILLUM_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ILLUM_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Illuminance Measurement +#define ZCL_ILLUM_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_ILLUM_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_ILLUM_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_ILLUM_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_MEASUREMENT_LIGHT_SENSOR_TYPE_ATTRIBUTE_ID (0x4) +#define ZCL_ILLUM_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ILLUM_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Illuminance Measurement + +// End of cluster: Illuminance Measurement + +// Definitions for cluster: Illuminance Level Sensing +#define ZCL_ILLUM_LEVEL_SENSING_CLUSTER_ID (0x401) + +// Client attributes for cluster: Illuminance Level Sensing +#define ZCL_ILLUM_LEVEL_SENSING_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ILLUM_LEVEL_SENSING_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Illuminance Level Sensing +#define ZCL_LEVEL_STATUS_ATTRIBUTE_ID (0x0) +#define ZCL_SENSING_LIGHT_SENSOR_TYPE_ATTRIBUTE_ID (0x1) +#define ZCL_ILLUMINANCE_TARGET_LEVEL_ATTRIBUTE_ID (0x10) +#define ZCL_ILLUM_LEVEL_SENSING_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ILLUM_LEVEL_SENSING_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Illuminance Level Sensing + +// End of cluster: Illuminance Level Sensing + +// Definitions for cluster: Temperature Measurement +#define ZCL_TEMP_MEASUREMENT_CLUSTER_ID (0x402) + +// Client attributes for cluster: Temperature Measurement +#define ZCL_TEMP_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_TEMP_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Temperature Measurement +#define ZCL_TEMP_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_TEMP_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_TEMP_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_TEMP_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_TEMP_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_TEMP_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Temperature Measurement + +// End of cluster: Temperature Measurement + +// Definitions for cluster: Pressure Measurement +#define ZCL_PRESSURE_MEASUREMENT_CLUSTER_ID (0x403) + +// Client attributes for cluster: Pressure Measurement +#define ZCL_PRESSURE_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_PRESSURE_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Pressure Measurement +#define ZCL_PRESSURE_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_PRESSURE_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_PRESSURE_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_PRESSURE_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_PRESSURE_SCALED_VALUE_ATTRIBUTE_ID (0x10) +#define ZCL_PRESSURE_MIN_SCALED_VALUE_ATTRIBUTE_ID (0x11) +#define ZCL_PRESSURE_MAX_SCALED_VALUE_ATTRIBUTE_ID (0x12) +#define ZCL_PRESSURE_SCALED_TOLERANCE_ATTRIBUTE_ID (0x13) +#define ZCL_PRESSURE_SCALE_ATTRIBUTE_ID (0x14) +#define ZCL_PRESSURE_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_PRESSURE_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Pressure Measurement + +// End of cluster: Pressure Measurement + +// Definitions for cluster: Flow Measurement +#define ZCL_FLOW_MEASUREMENT_CLUSTER_ID (0x404) + +// Client attributes for cluster: Flow Measurement +#define ZCL_FLOW_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_FLOW_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Flow Measurement +#define ZCL_FLOW_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_FLOW_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_FLOW_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_FLOW_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_FLOW_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_FLOW_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Flow Measurement + +// End of cluster: Flow Measurement + +// Definitions for cluster: Relative Humidity Measurement +#define ZCL_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER_ID (0x405) + +// Client attributes for cluster: Relative Humidity Measurement +#define ZCL_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Relative Humidity Measurement +#define ZCL_RELATIVE_HUMIDITY_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_RELATIVE_HUMIDITY_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_RELATIVE_HUMIDITY_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_RELATIVE_HUMIDITY_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Relative Humidity Measurement + +// End of cluster: Relative Humidity Measurement + +// Definitions for cluster: Occupancy Sensing +#define ZCL_OCCUPANCY_SENSING_CLUSTER_ID (0x406) + +// Client attributes for cluster: Occupancy Sensing +#define ZCL_OCCUPANCY_SENSING_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_OCCUPANCY_SENSING_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Occupancy Sensing +#define ZCL_OCCUPANCY_ATTRIBUTE_ID (0x0) +#define ZCL_OCCUPANCY_SENSOR_TYPE_ATTRIBUTE_ID (0x1) +#define ZCL_OCCUPANCY_SENSOR_TYPE_BITMAP_ATTRIBUTE_ID (0x2) +#define ZCL_PIR_OCCUPIED_TO_UNOCCUPIED_DELAY_ATTRIBUTE_ID (0x10) +#define ZCL_PIR_UNOCCUPIED_TO_OCCUPIED_DELAY_ATTRIBUTE_ID (0x11) +#define ZCL_PIR_UNOCCUPIED_TO_OCCUPIED_THRESHOLD_ATTRIBUTE_ID (0x12) +#define ZCL_ULTRASONIC_OCCUPIED_TO_UNOCCUPIED_DELAY_ATTRIBUTE_ID (0x20) +#define ZCL_ULTRASONIC_UNOCCUPIED_TO_OCCUPIED_DELAY_ATTRIBUTE_ID (0x21) +#define ZCL_ULTRASONIC_UNOCCUPIED_TO_OCCUPIED_THRESHOLD_ATTRIBUTE_ID (0x22) +#define ZCL_PHYSICAL_CONTACT_OCCUPIED_TO_UNOCCUPIED_DELAY_ATTRIBUTE_ID (0x30) +#define ZCL_PHYSICAL_CONTACT_UNOCCUPIED_TO_OCCUPIED_DELAY_ATTRIBUTE_ID (0x31) +#define ZCL_PHYSICAL_CONTACT_UNOCCUPIED_TO_OCCUPIED_THRESHOLD_ATTRIBUTE_ID (0x32) +#define ZCL_OCCUPANCY_SENSING_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_OCCUPANCY_SENSING_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Occupancy Sensing + +// End of cluster: Occupancy Sensing + +// Definitions for cluster: Carbon Monoxide Concentration Measurement +#define ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x40C) + +// Client attributes for cluster: Carbon Monoxide Concentration Measurement +#define ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Carbon Monoxide Concentration Measurement +#define ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Carbon Monoxide Concentration Measurement + +// End of cluster: Carbon Monoxide Concentration Measurement + +// Definitions for cluster: Carbon Dioxide Concentration Measurement +#define ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x40D) + +// Client attributes for cluster: Carbon Dioxide Concentration Measurement +#define ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Carbon Dioxide Concentration Measurement +#define ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Carbon Dioxide Concentration Measurement + +// End of cluster: Carbon Dioxide Concentration Measurement + +// Definitions for cluster: Ethylene Concentration Measurement +#define ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x40E) + +// Client attributes for cluster: Ethylene Concentration Measurement +#define ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Ethylene Concentration Measurement +#define ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Ethylene Concentration Measurement + +// End of cluster: Ethylene Concentration Measurement + +// Definitions for cluster: Ethylene Oxide Concentration Measurement +#define ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x40F) + +// Client attributes for cluster: Ethylene Oxide Concentration Measurement +#define ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Ethylene Oxide Concentration Measurement +#define ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Ethylene Oxide Concentration Measurement + +// End of cluster: Ethylene Oxide Concentration Measurement + +// Definitions for cluster: Hydrogen Concentration Measurement +#define ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x410) + +// Client attributes for cluster: Hydrogen Concentration Measurement +#define ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Hydrogen Concentration Measurement +#define ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Hydrogen Concentration Measurement + +// End of cluster: Hydrogen Concentration Measurement + +// Definitions for cluster: Hydrogen Sulphide Concentration Measurement +#define ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x411) + +// Client attributes for cluster: Hydrogen Sulphide Concentration Measurement +#define ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Hydrogen Sulphide Concentration Measurement +#define ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Hydrogen Sulphide Concentration Measurement + +// End of cluster: Hydrogen Sulphide Concentration Measurement + +// Definitions for cluster: Nitric Oxide Concentration Measurement +#define ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x412) + +// Client attributes for cluster: Nitric Oxide Concentration Measurement +#define ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Nitric Oxide Concentration Measurement +#define ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Nitric Oxide Concentration Measurement + +// End of cluster: Nitric Oxide Concentration Measurement + +// Definitions for cluster: Nitrogen Dioxide Concentration Measurement +#define ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x413) + +// Client attributes for cluster: Nitrogen Dioxide Concentration Measurement +#define ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Nitrogen Dioxide Concentration Measurement +#define ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Nitrogen Dioxide Concentration Measurement + +// End of cluster: Nitrogen Dioxide Concentration Measurement + +// Definitions for cluster: Oxygen Concentration Measurement +#define ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x414) + +// Client attributes for cluster: Oxygen Concentration Measurement +#define ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Oxygen Concentration Measurement +#define ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Oxygen Concentration Measurement + +// End of cluster: Oxygen Concentration Measurement + +// Definitions for cluster: Ozone Concentration Measurement +#define ZCL_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x415) + +// Client attributes for cluster: Ozone Concentration Measurement +#define ZCL_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Ozone Concentration Measurement +#define ZCL_OZONE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_OZONE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_OZONE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_OZONE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Ozone Concentration Measurement + +// End of cluster: Ozone Concentration Measurement + +// Definitions for cluster: Sulfur Dioxide Concentration Measurement +#define ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x416) + +// Client attributes for cluster: Sulfur Dioxide Concentration Measurement +#define ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Sulfur Dioxide Concentration Measurement +#define ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Sulfur Dioxide Concentration Measurement + +// End of cluster: Sulfur Dioxide Concentration Measurement + +// Definitions for cluster: Dissolved Oxygen Concentration Measurement +#define ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x417) + +// Client attributes for cluster: Dissolved Oxygen Concentration Measurement +#define ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Dissolved Oxygen Concentration Measurement +#define ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Dissolved Oxygen Concentration Measurement + +// End of cluster: Dissolved Oxygen Concentration Measurement + +// Definitions for cluster: Bromate Concentration Measurement +#define ZCL_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x418) + +// Client attributes for cluster: Bromate Concentration Measurement +#define ZCL_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Bromate Concentration Measurement +#define ZCL_BROMATE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_BROMATE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_BROMATE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_BROMATE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Bromate Concentration Measurement + +// End of cluster: Bromate Concentration Measurement + +// Definitions for cluster: Chloramines Concentration Measurement +#define ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x419) + +// Client attributes for cluster: Chloramines Concentration Measurement +#define ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Chloramines Concentration Measurement +#define ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Chloramines Concentration Measurement + +// End of cluster: Chloramines Concentration Measurement + +// Definitions for cluster: Chlorine Concentration Measurement +#define ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x41A) + +// Client attributes for cluster: Chlorine Concentration Measurement +#define ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Chlorine Concentration Measurement +#define ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Chlorine Concentration Measurement + +// End of cluster: Chlorine Concentration Measurement + +// Definitions for cluster: Fecal coliform and E. Coli Concentration Measurement +#define ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x41B) + +// Client attributes for cluster: Fecal coliform and E. Coli Concentration Measurement +#define ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Fecal coliform and E. Coli Concentration Measurement +#define ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Fecal coliform and E. Coli Concentration Measurement + +// End of cluster: Fecal coliform and E. Coli Concentration Measurement + +// Definitions for cluster: Fluoride Concentration Measurement +#define ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x41C) + +// Client attributes for cluster: Fluoride Concentration Measurement +#define ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Fluoride Concentration Measurement +#define ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Fluoride Concentration Measurement + +// End of cluster: Fluoride Concentration Measurement + +// Definitions for cluster: Haloacetic Acids Concentration Measurement +#define ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x41D) + +// Client attributes for cluster: Haloacetic Acids Concentration Measurement +#define ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Haloacetic Acids Concentration Measurement +#define ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Haloacetic Acids Concentration Measurement + +// End of cluster: Haloacetic Acids Concentration Measurement + +// Definitions for cluster: Total Trihalomethanes Concentration Measurement +#define ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x41E) + +// Client attributes for cluster: Total Trihalomethanes Concentration Measurement +#define ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Total Trihalomethanes Concentration Measurement +#define ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Total Trihalomethanes Concentration Measurement + +// End of cluster: Total Trihalomethanes Concentration Measurement + +// Definitions for cluster: Total Coliform Bacteria Concentration Measurement +#define ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x41F) + +// Client attributes for cluster: Total Coliform Bacteria Concentration Measurement +#define ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Total Coliform Bacteria Concentration Measurement +#define ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Total Coliform Bacteria Concentration Measurement + +// End of cluster: Total Coliform Bacteria Concentration Measurement + +// Definitions for cluster: Turbidity Concentration Measurement +#define ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x420) + +// Client attributes for cluster: Turbidity Concentration Measurement +#define ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Turbidity Concentration Measurement +#define ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Turbidity Concentration Measurement + +// End of cluster: Turbidity Concentration Measurement + +// Definitions for cluster: Copper Concentration Measurement +#define ZCL_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x421) + +// Client attributes for cluster: Copper Concentration Measurement +#define ZCL_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Copper Concentration Measurement +#define ZCL_COPPER_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_COPPER_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_COPPER_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_COPPER_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Copper Concentration Measurement + +// End of cluster: Copper Concentration Measurement + +// Definitions for cluster: Lead Concentration Measurement +#define ZCL_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x422) + +// Client attributes for cluster: Lead Concentration Measurement +#define ZCL_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Lead Concentration Measurement +#define ZCL_LEAD_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_LEAD_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_LEAD_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_LEAD_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Lead Concentration Measurement + +// End of cluster: Lead Concentration Measurement + +// Definitions for cluster: Manganese Concentration Measurement +#define ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x423) + +// Client attributes for cluster: Manganese Concentration Measurement +#define ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Manganese Concentration Measurement +#define ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Manganese Concentration Measurement + +// End of cluster: Manganese Concentration Measurement + +// Definitions for cluster: Sulfate Concentration Measurement +#define ZCL_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x424) + +// Client attributes for cluster: Sulfate Concentration Measurement +#define ZCL_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Sulfate Concentration Measurement +#define ZCL_SULFATE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_SULFATE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_SULFATE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_SULFATE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Sulfate Concentration Measurement + +// End of cluster: Sulfate Concentration Measurement + +// Definitions for cluster: Bromodichloromethane Concentration Measurement +#define ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x425) + +// Client attributes for cluster: Bromodichloromethane Concentration Measurement +#define ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Bromodichloromethane Concentration Measurement +#define ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Bromodichloromethane Concentration Measurement + +// End of cluster: Bromodichloromethane Concentration Measurement + +// Definitions for cluster: Bromoform Concentration Measurement +#define ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x426) + +// Client attributes for cluster: Bromoform Concentration Measurement +#define ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Bromoform Concentration Measurement +#define ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Bromoform Concentration Measurement + +// End of cluster: Bromoform Concentration Measurement + +// Definitions for cluster: Chlorodibromomethane Concentration Measurement +#define ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x427) + +// Client attributes for cluster: Chlorodibromomethane Concentration Measurement +#define ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Chlorodibromomethane Concentration Measurement +#define ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Chlorodibromomethane Concentration Measurement + +// End of cluster: Chlorodibromomethane Concentration Measurement + +// Definitions for cluster: Chloroform Concentration Measurement +#define ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x428) + +// Client attributes for cluster: Chloroform Concentration Measurement +#define ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Chloroform Concentration Measurement +#define ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Chloroform Concentration Measurement + +// End of cluster: Chloroform Concentration Measurement + +// Definitions for cluster: Sodium Concentration Measurement +#define ZCL_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER_ID (0x429) + +// Client attributes for cluster: Sodium Concentration Measurement +#define ZCL_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Sodium Concentration Measurement +#define ZCL_SODIUM_CONCENTRATION_MEASUREMENT_MEASURED_VALUE_ATTRIBUTE_ID (0x0) +#define ZCL_SODIUM_CONCENTRATION_MEASUREMENT_MIN_MEASURED_VALUE_ATTRIBUTE_ID (0x1) +#define ZCL_SODIUM_CONCENTRATION_MEASUREMENT_MAX_MEASURED_VALUE_ATTRIBUTE_ID (0x2) +#define ZCL_SODIUM_CONCENTRATION_MEASUREMENT_TOLERANCE_ATTRIBUTE_ID (0x3) +#define ZCL_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Sodium Concentration Measurement + +// End of cluster: Sodium Concentration Measurement + +// Definitions for cluster: IAS Zone +#define ZCL_IAS_ZONE_CLUSTER_ID (0x500) + +// Client attributes for cluster: IAS Zone +#define ZCL_IAS_ZONE_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_IAS_ZONE_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: IAS Zone +#define ZCL_ZONE_STATE_ATTRIBUTE_ID (0x0) +#define ZCL_ZONE_TYPE_ATTRIBUTE_ID (0x1) +#define ZCL_ZONE_STATUS_ATTRIBUTE_ID (0x2) +#define ZCL_IAS_CIE_ADDRESS_ATTRIBUTE_ID (0x10) +#define ZCL_ZONE_ID_ATTRIBUTE_ID (0x11) +#define ZCL_NUMBER_OF_ZONE_SENSITIVITY_LEVELS_SUPPORTED_ATTRIBUTE_ID (0x12) +#define ZCL_CURRENT_ZONE_SENSITIVITY_LEVEL_ATTRIBUTE_ID (0x13) +#define ZCL_IAS_ZONE_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_IAS_ZONE_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: IAS Zone +#define ZCL_ZONE_ENROLL_RESPONSE_COMMAND_ID (0x0) +#define ZCL_ZONE_STATUS_CHANGE_NOTIFICATION_COMMAND_ID (0x0) +#define ZCL_INITIATE_NORMAL_OPERATION_MODE_COMMAND_ID (0x1) +#define ZCL_ZONE_ENROLL_REQUEST_COMMAND_ID (0x1) +#define ZCL_INITIATE_TEST_MODE_COMMAND_ID (0x2) +#define ZCL_INITIATE_NORMAL_OPERATION_MODE_RESPONSE_COMMAND_ID (0x2) +#define ZCL_INITIATE_TEST_MODE_RESPONSE_COMMAND_ID (0x3) + +// End of cluster: IAS Zone + +// Definitions for cluster: IAS ACE +#define ZCL_IAS_ACE_CLUSTER_ID (0x501) + +// Client attributes for cluster: IAS ACE +#define ZCL_IAS_ACE_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_IAS_ACE_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: IAS ACE +#define ZCL_IAS_ACE_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_IAS_ACE_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: IAS ACE +#define ZCL_ARM_COMMAND_ID (0x0) +#define ZCL_ARM_RESPONSE_COMMAND_ID (0x0) +#define ZCL_BYPASS_COMMAND_ID (0x1) +#define ZCL_GET_ZONE_ID_MAP_RESPONSE_COMMAND_ID (0x1) +#define ZCL_EMERGENCY_COMMAND_ID (0x2) +#define ZCL_GET_ZONE_INFORMATION_RESPONSE_COMMAND_ID (0x2) +#define ZCL_FIRE_COMMAND_ID (0x3) +#define ZCL_ZONE_STATUS_CHANGED_COMMAND_ID (0x3) +#define ZCL_PANIC_COMMAND_ID (0x4) +#define ZCL_PANEL_STATUS_CHANGED_COMMAND_ID (0x4) +#define ZCL_GET_ZONE_ID_MAP_COMMAND_ID (0x5) +#define ZCL_GET_PANEL_STATUS_RESPONSE_COMMAND_ID (0x5) +#define ZCL_GET_ZONE_INFORMATION_COMMAND_ID (0x6) +#define ZCL_SET_BYPASSED_ZONE_LIST_COMMAND_ID (0x6) +#define ZCL_GET_PANEL_STATUS_COMMAND_ID (0x7) +#define ZCL_BYPASS_RESPONSE_COMMAND_ID (0x7) +#define ZCL_GET_BYPASSED_ZONE_LIST_COMMAND_ID (0x8) +#define ZCL_GET_ZONE_STATUS_RESPONSE_COMMAND_ID (0x8) +#define ZCL_GET_ZONE_STATUS_COMMAND_ID (0x9) + +// End of cluster: IAS ACE + +// Definitions for cluster: IAS WD +#define ZCL_IAS_WD_CLUSTER_ID (0x502) + +// Client attributes for cluster: IAS WD +#define ZCL_IAS_WD_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_IAS_WD_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: IAS WD +#define ZCL_MAX_DURATION_ATTRIBUTE_ID (0x0) +#define ZCL_IAS_WD_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_IAS_WD_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: IAS WD +#define ZCL_START_WARNING_COMMAND_ID (0x0) +#define ZCL_SQUAWK_COMMAND_ID (0x1) + +// End of cluster: IAS WD + +// Definitions for cluster: Generic Tunnel +#define ZCL_GENERIC_TUNNEL_CLUSTER_ID (0x600) + +// Client attributes for cluster: Generic Tunnel +#define ZCL_GENERIC_TUNNEL_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_GENERIC_TUNNEL_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Generic Tunnel +#define ZCL_MAXIMUM_INCOMING_TRANSFER_SIZE_ATTRIBUTE_ID (0x1) +#define ZCL_MAXIMUM_OUTGOING_TRANSFER_SIZE_ATTRIBUTE_ID (0x2) +#define ZCL_PROTOCOL_ADDRESS_ATTRIBUTE_ID (0x3) +#define ZCL_GENERIC_TUNNEL_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_GENERIC_TUNNEL_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Generic Tunnel +#define ZCL_MATCH_PROTOCOL_ADDRESS_COMMAND_ID (0x0) +#define ZCL_MATCH_PROTOCOL_ADDRESS_RESPONSE_COMMAND_ID (0x0) +#define ZCL_ADVERTISE_PROTOCOL_ADDRESS_COMMAND_ID (0x1) + +// End of cluster: Generic Tunnel + +// Definitions for cluster: BACnet Protocol Tunnel +#define ZCL_BACNET_PROTOCOL_TUNNEL_CLUSTER_ID (0x601) + +// Client attributes for cluster: BACnet Protocol Tunnel +#define ZCL_BACNET_PROTOCOL_TUNNEL_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_BACNET_PROTOCOL_TUNNEL_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: BACnet Protocol Tunnel +#define ZCL_BACNET_PROTOCOL_TUNNEL_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_BACNET_PROTOCOL_TUNNEL_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: BACnet Protocol Tunnel +#define ZCL_TRANSFER_NPDU_COMMAND_ID (0x0) + +// End of cluster: BACnet Protocol Tunnel + +// Definitions for cluster: 11073 Protocol Tunnel +#define ZCL_11073_PROTOCOL_TUNNEL_CLUSTER_ID (0x614) + +// Client attributes for cluster: 11073 Protocol Tunnel +#define ZCL_11073_PROTOCOL_TUNNEL_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_11073_PROTOCOL_TUNNEL_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: 11073 Protocol Tunnel +#define ZCL_DEVICE_ID_LIST_ATTRIBUTE_ID (0x0) +#define ZCL_MANAGER_TARGET_ATTRIBUTE_ID (0x1) +#define ZCL_MANAGER_ENDPOINT_ATTRIBUTE_ID (0x2) +#define ZCL_CONNECTED_ATTRIBUTE_ID (0x3) +#define ZCL_PREEMPTIBLE_ATTRIBUTE_ID (0x4) +#define ZCL_IDLE_TIMEOUT_ATTRIBUTE_ID (0x5) +#define ZCL_11073_PROTOCOL_TUNNEL_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_11073_PROTOCOL_TUNNEL_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: 11073 Protocol Tunnel +#define ZCL_TRANSFER_APDU_COMMAND_ID (0x0) +#define ZCL_CONNECT_REQUEST_COMMAND_ID (0x1) +#define ZCL_DISCONNECT_REQUEST_COMMAND_ID (0x2) +#define ZCL_CONNECT_STATUS_NOTIFICATION_COMMAND_ID (0x3) + +// End of cluster: 11073 Protocol Tunnel + +// Definitions for cluster: ISO 7816 Protocol Tunnel +#define ZCL_ISO7816_PROTOCOL_TUNNEL_CLUSTER_ID (0x615) + +// Client attributes for cluster: ISO 7816 Protocol Tunnel +#define ZCL_ISO7816_PROTOCOL_TUNNEL_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ISO7816_PROTOCOL_TUNNEL_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: ISO 7816 Protocol Tunnel +#define ZCL_ISO7816_PROTOCOL_TUNNEL_STATUS_ATTRIBUTE_ID (0x0) +#define ZCL_ISO7816_PROTOCOL_TUNNEL_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ISO7816_PROTOCOL_TUNNEL_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: ISO 7816 Protocol Tunnel +#define ZCL_TRANSFER_APDU_FROM_CLIENT_COMMAND_ID (0x0) +#define ZCL_TRANSFER_APDU_FROM_SERVER_COMMAND_ID (0x0) +#define ZCL_INSERT_SMART_CARD_COMMAND_ID (0x1) +#define ZCL_EXTRACT_SMART_CARD_COMMAND_ID (0x2) + +// End of cluster: ISO 7816 Protocol Tunnel + +// Definitions for cluster: Price +#define ZCL_PRICE_CLUSTER_ID (0x700) + +// Client attributes for cluster: Price +#define ZCL_PRICE_INCREASE_RANDOMIZE_MINUTES_ATTRIBUTE_ID (0x0) +#define ZCL_PRICE_DECREASE_RANDOMIZE_MINUTES_ATTRIBUTE_ID (0x1) +#define ZCL_COMMODITY_TYPE_CLIENT_ATTRIBUTE_ID (0x2) +#define ZCL_PRICE_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_PRICE_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Price +#define ZCL_TIER1_PRICE_LABEL_ATTRIBUTE_ID (0x0) +#define ZCL_TIER2_PRICE_LABEL_ATTRIBUTE_ID (0x1) +#define ZCL_TIER3_PRICE_LABEL_ATTRIBUTE_ID (0x2) +#define ZCL_TIER4_PRICE_LABEL_ATTRIBUTE_ID (0x3) +#define ZCL_TIER5_PRICE_LABEL_ATTRIBUTE_ID (0x4) +#define ZCL_TIER6_PRICE_LABEL_ATTRIBUTE_ID (0x5) +#define ZCL_TIER7_PRICE_LABEL_ATTRIBUTE_ID (0x6) +#define ZCL_TIER8_PRICE_LABEL_ATTRIBUTE_ID (0x7) +#define ZCL_TIER9_PRICE_LABEL_ATTRIBUTE_ID (0x8) +#define ZCL_TIER10_PRICE_LABEL_ATTRIBUTE_ID (0x9) +#define ZCL_TIER11_PRICE_LABEL_ATTRIBUTE_ID (0xA) +#define ZCL_TIER12_PRICE_LABEL_ATTRIBUTE_ID (0xB) +#define ZCL_TIER13_PRICE_LABEL_ATTRIBUTE_ID (0xC) +#define ZCL_TIER14_PRICE_LABEL_ATTRIBUTE_ID (0xD) +#define ZCL_TIER15_PRICE_LABEL_ATTRIBUTE_ID (0xE) +#define ZCL_TIER16_PRICE_LABEL_ATTRIBUTE_ID (0xF) +#define ZCL_TIER17_PRICE_LABEL_ATTRIBUTE_ID (0x10) +#define ZCL_TIER18_PRICE_LABEL_ATTRIBUTE_ID (0x11) +#define ZCL_TIER19_PRICE_LABEL_ATTRIBUTE_ID (0x12) +#define ZCL_TIER20_PRICE_LABEL_ATTRIBUTE_ID (0x13) +#define ZCL_TIER21_PRICE_LABEL_ATTRIBUTE_ID (0x14) +#define ZCL_TIER22_PRICE_LABEL_ATTRIBUTE_ID (0x15) +#define ZCL_TIER23_PRICE_LABEL_ATTRIBUTE_ID (0x16) +#define ZCL_TIER24_PRICE_LABEL_ATTRIBUTE_ID (0x17) +#define ZCL_TIER25_PRICE_LABEL_ATTRIBUTE_ID (0x18) +#define ZCL_TIER26_PRICE_LABEL_ATTRIBUTE_ID (0x19) +#define ZCL_TIER27_PRICE_LABEL_ATTRIBUTE_ID (0x1A) +#define ZCL_TIER28_PRICE_LABEL_ATTRIBUTE_ID (0x1B) +#define ZCL_TIER29_PRICE_LABEL_ATTRIBUTE_ID (0x1C) +#define ZCL_TIER30_PRICE_LABEL_ATTRIBUTE_ID (0x1D) +#define ZCL_TIER31_PRICE_LABEL_ATTRIBUTE_ID (0x1E) +#define ZCL_TIER32_PRICE_LABEL_ATTRIBUTE_ID (0x1F) +#define ZCL_TIER33_PRICE_LABEL_ATTRIBUTE_ID (0x20) +#define ZCL_TIER34_PRICE_LABEL_ATTRIBUTE_ID (0x21) +#define ZCL_TIER35_PRICE_LABEL_ATTRIBUTE_ID (0x22) +#define ZCL_TIER36_PRICE_LABEL_ATTRIBUTE_ID (0x23) +#define ZCL_TIER37_PRICE_LABEL_ATTRIBUTE_ID (0x24) +#define ZCL_TIER38_PRICE_LABEL_ATTRIBUTE_ID (0x25) +#define ZCL_TIER39_PRICE_LABEL_ATTRIBUTE_ID (0x26) +#define ZCL_TIER40_PRICE_LABEL_ATTRIBUTE_ID (0x27) +#define ZCL_TIER41_PRICE_LABEL_ATTRIBUTE_ID (0x28) +#define ZCL_TIER42_PRICE_LABEL_ATTRIBUTE_ID (0x29) +#define ZCL_TIER43_PRICE_LABEL_ATTRIBUTE_ID (0x2A) +#define ZCL_TIER44_PRICE_LABEL_ATTRIBUTE_ID (0x2B) +#define ZCL_TIER45_PRICE_LABEL_ATTRIBUTE_ID (0x2C) +#define ZCL_TIER46_PRICE_LABEL_ATTRIBUTE_ID (0x2D) +#define ZCL_TIER47_PRICE_LABEL_ATTRIBUTE_ID (0x2E) +#define ZCL_TIER48_PRICE_LABEL_ATTRIBUTE_ID (0x2F) +#define ZCL_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x100) +#define ZCL_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x101) +#define ZCL_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x102) +#define ZCL_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x103) +#define ZCL_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x104) +#define ZCL_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x105) +#define ZCL_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x106) +#define ZCL_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x107) +#define ZCL_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x108) +#define ZCL_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x109) +#define ZCL_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x10A) +#define ZCL_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x10B) +#define ZCL_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x10C) +#define ZCL_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x10D) +#define ZCL_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x10E) +#define ZCL_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x10F) +#define ZCL_TIER1_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x110) +#define ZCL_TIER1_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x111) +#define ZCL_TIER1_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x112) +#define ZCL_TIER1_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x113) +#define ZCL_TIER1_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x114) +#define ZCL_TIER1_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x115) +#define ZCL_TIER1_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x116) +#define ZCL_TIER1_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x117) +#define ZCL_TIER1_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x118) +#define ZCL_TIER1_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x119) +#define ZCL_TIER1_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x11A) +#define ZCL_TIER1_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x11B) +#define ZCL_TIER1_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x11C) +#define ZCL_TIER1_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x11D) +#define ZCL_TIER1_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x11E) +#define ZCL_TIER1_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x11F) +#define ZCL_TIER2_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x120) +#define ZCL_TIER2_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x121) +#define ZCL_TIER2_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x122) +#define ZCL_TIER2_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x123) +#define ZCL_TIER2_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x124) +#define ZCL_TIER2_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x125) +#define ZCL_TIER2_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x126) +#define ZCL_TIER2_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x127) +#define ZCL_TIER2_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x128) +#define ZCL_TIER2_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x129) +#define ZCL_TIER2_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x12A) +#define ZCL_TIER2_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x12B) +#define ZCL_TIER2_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x12C) +#define ZCL_TIER2_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x12D) +#define ZCL_TIER2_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x12E) +#define ZCL_TIER2_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x12F) +#define ZCL_TIER3_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x130) +#define ZCL_TIER3_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x131) +#define ZCL_TIER3_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x132) +#define ZCL_TIER3_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x133) +#define ZCL_TIER3_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x134) +#define ZCL_TIER3_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x135) +#define ZCL_TIER3_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x136) +#define ZCL_TIER3_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x137) +#define ZCL_TIER3_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x138) +#define ZCL_TIER3_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x139) +#define ZCL_TIER3_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x13A) +#define ZCL_TIER3_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x13B) +#define ZCL_TIER3_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x13C) +#define ZCL_TIER3_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x13D) +#define ZCL_TIER3_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x13E) +#define ZCL_TIER3_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x13F) +#define ZCL_TIER4_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x140) +#define ZCL_TIER4_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x141) +#define ZCL_TIER4_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x142) +#define ZCL_TIER4_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x143) +#define ZCL_TIER4_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x144) +#define ZCL_TIER4_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x145) +#define ZCL_TIER4_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x146) +#define ZCL_TIER4_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x147) +#define ZCL_TIER4_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x148) +#define ZCL_TIER4_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x149) +#define ZCL_TIER4_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x14A) +#define ZCL_TIER4_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x14B) +#define ZCL_TIER4_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x14C) +#define ZCL_TIER4_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x14D) +#define ZCL_TIER4_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x14E) +#define ZCL_TIER4_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x14F) +#define ZCL_TIER5_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x150) +#define ZCL_TIER5_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x151) +#define ZCL_TIER5_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x152) +#define ZCL_TIER5_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x153) +#define ZCL_TIER5_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x154) +#define ZCL_TIER5_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x155) +#define ZCL_TIER5_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x156) +#define ZCL_TIER5_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x157) +#define ZCL_TIER5_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x158) +#define ZCL_TIER5_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x159) +#define ZCL_TIER5_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x15A) +#define ZCL_TIER5_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x15B) +#define ZCL_TIER5_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x15C) +#define ZCL_TIER5_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x15D) +#define ZCL_TIER5_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x15E) +#define ZCL_TIER5_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x15F) +#define ZCL_TIER6_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x160) +#define ZCL_TIER6_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x161) +#define ZCL_TIER6_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x162) +#define ZCL_TIER6_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x163) +#define ZCL_TIER6_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x164) +#define ZCL_TIER6_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x165) +#define ZCL_TIER6_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x166) +#define ZCL_TIER6_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x167) +#define ZCL_TIER6_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x168) +#define ZCL_TIER6_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x169) +#define ZCL_TIER6_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x16A) +#define ZCL_TIER6_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x16B) +#define ZCL_TIER6_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x16C) +#define ZCL_TIER6_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x16D) +#define ZCL_TIER6_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x16E) +#define ZCL_TIER6_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x16F) +#define ZCL_TIER7_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x170) +#define ZCL_TIER7_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x171) +#define ZCL_TIER7_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x172) +#define ZCL_TIER7_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x173) +#define ZCL_TIER7_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x174) +#define ZCL_TIER7_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x175) +#define ZCL_TIER7_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x176) +#define ZCL_TIER7_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x177) +#define ZCL_TIER7_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x178) +#define ZCL_TIER7_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x179) +#define ZCL_TIER7_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x17A) +#define ZCL_TIER7_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x17B) +#define ZCL_TIER7_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x17C) +#define ZCL_TIER7_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x17D) +#define ZCL_TIER7_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x17E) +#define ZCL_TIER7_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x17F) +#define ZCL_TIER8_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x180) +#define ZCL_TIER8_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x181) +#define ZCL_TIER8_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x182) +#define ZCL_TIER8_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x183) +#define ZCL_TIER8_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x184) +#define ZCL_TIER8_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x185) +#define ZCL_TIER8_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x186) +#define ZCL_TIER8_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x187) +#define ZCL_TIER8_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x188) +#define ZCL_TIER8_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x189) +#define ZCL_TIER8_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x18A) +#define ZCL_TIER8_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x18B) +#define ZCL_TIER8_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x18C) +#define ZCL_TIER8_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x18D) +#define ZCL_TIER8_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x18E) +#define ZCL_TIER8_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x18F) +#define ZCL_TIER9_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x190) +#define ZCL_TIER9_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x191) +#define ZCL_TIER9_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x192) +#define ZCL_TIER9_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x193) +#define ZCL_TIER9_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x194) +#define ZCL_TIER9_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x195) +#define ZCL_TIER9_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x196) +#define ZCL_TIER9_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x197) +#define ZCL_TIER9_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x198) +#define ZCL_TIER9_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x199) +#define ZCL_TIER9_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x19A) +#define ZCL_TIER9_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x19B) +#define ZCL_TIER9_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x19C) +#define ZCL_TIER9_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x19D) +#define ZCL_TIER9_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x19E) +#define ZCL_TIER9_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x19F) +#define ZCL_TIER10_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x1A0) +#define ZCL_TIER10_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x1A1) +#define ZCL_TIER10_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x1A2) +#define ZCL_TIER10_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x1A3) +#define ZCL_TIER10_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x1A4) +#define ZCL_TIER10_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x1A5) +#define ZCL_TIER10_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x1A6) +#define ZCL_TIER10_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x1A7) +#define ZCL_TIER10_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x1A8) +#define ZCL_TIER10_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x1A9) +#define ZCL_TIER10_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x1AA) +#define ZCL_TIER10_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x1AB) +#define ZCL_TIER10_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x1AC) +#define ZCL_TIER10_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x1AD) +#define ZCL_TIER10_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x1AE) +#define ZCL_TIER10_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x1AF) +#define ZCL_TIER11_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x1B0) +#define ZCL_TIER11_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x1B1) +#define ZCL_TIER11_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x1B2) +#define ZCL_TIER11_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x1B3) +#define ZCL_TIER11_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x1B4) +#define ZCL_TIER11_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x1B5) +#define ZCL_TIER11_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x1B6) +#define ZCL_TIER11_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x1B7) +#define ZCL_TIER11_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x1B8) +#define ZCL_TIER11_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x1B9) +#define ZCL_TIER11_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x1BA) +#define ZCL_TIER11_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x1BB) +#define ZCL_TIER11_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x1BC) +#define ZCL_TIER11_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x1BD) +#define ZCL_TIER11_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x1BE) +#define ZCL_TIER11_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x1BF) +#define ZCL_TIER12_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x1C0) +#define ZCL_TIER12_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x1C1) +#define ZCL_TIER12_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x1C2) +#define ZCL_TIER12_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x1C3) +#define ZCL_TIER12_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x1C4) +#define ZCL_TIER12_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x1C5) +#define ZCL_TIER12_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x1C6) +#define ZCL_TIER12_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x1C7) +#define ZCL_TIER12_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x1C8) +#define ZCL_TIER12_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x1C9) +#define ZCL_TIER12_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x1CA) +#define ZCL_TIER12_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x1CB) +#define ZCL_TIER12_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x1CC) +#define ZCL_TIER12_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x1CD) +#define ZCL_TIER12_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x1CE) +#define ZCL_TIER12_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x1CF) +#define ZCL_TIER13_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x1D0) +#define ZCL_TIER13_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x1D1) +#define ZCL_TIER13_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x1D2) +#define ZCL_TIER13_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x1D3) +#define ZCL_TIER13_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x1D4) +#define ZCL_TIER13_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x1D5) +#define ZCL_TIER13_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x1D6) +#define ZCL_TIER13_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x1D7) +#define ZCL_TIER13_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x1D8) +#define ZCL_TIER13_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x1D9) +#define ZCL_TIER13_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x1DA) +#define ZCL_TIER13_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x1DB) +#define ZCL_TIER13_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x1DC) +#define ZCL_TIER13_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x1DD) +#define ZCL_TIER13_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x1DE) +#define ZCL_TIER13_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x1DF) +#define ZCL_TIER14_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x1E0) +#define ZCL_TIER14_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x1E1) +#define ZCL_TIER14_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x1E2) +#define ZCL_TIER14_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x1E3) +#define ZCL_TIER14_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x1E4) +#define ZCL_TIER14_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x1E5) +#define ZCL_TIER14_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x1E6) +#define ZCL_TIER14_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x1E7) +#define ZCL_TIER14_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x1E8) +#define ZCL_TIER14_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x1E9) +#define ZCL_TIER14_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x1EA) +#define ZCL_TIER14_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x1EB) +#define ZCL_TIER14_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x1EC) +#define ZCL_TIER14_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x1ED) +#define ZCL_TIER14_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x1EE) +#define ZCL_TIER14_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x1EF) +#define ZCL_TIER15_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x1F0) +#define ZCL_TIER15_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x1F1) +#define ZCL_TIER15_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x1F2) +#define ZCL_TIER15_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x1F3) +#define ZCL_TIER15_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x1F4) +#define ZCL_TIER15_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x1F5) +#define ZCL_TIER15_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x1F6) +#define ZCL_TIER15_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x1F7) +#define ZCL_TIER15_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x1F8) +#define ZCL_TIER15_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x1F9) +#define ZCL_TIER15_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x1FA) +#define ZCL_TIER15_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x1FB) +#define ZCL_TIER15_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x1FC) +#define ZCL_TIER15_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x1FD) +#define ZCL_TIER15_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x1FE) +#define ZCL_TIER15_BLOCK_THRESHOLD_COUNT_ATTRIBUTE_ID (0x1FF) +#define ZCL_START_OF_BLOCK_PERIOD_ATTRIBUTE_ID (0x200) +#define ZCL_BLOCK_PERIOD_DURATION_MINUTES_ATTRIBUTE_ID (0x201) +#define ZCL_THRESHOLD_MULTIPLIER_ATTRIBUTE_ID (0x202) +#define ZCL_THRESHOLD_DIVISOR_ATTRIBUTE_ID (0x203) +#define ZCL_BLOCK_PERIOD_DURATION_TYPE_ATTRIBUTE_ID (0x204) +#define ZCL_COMMODITY_TYPE_SERVER_ATTRIBUTE_ID (0x300) +#define ZCL_STANDING_CHARGE_ATTRIBUTE_ID (0x301) +#define ZCL_CONVERSION_FACTOR_ATTRIBUTE_ID (0x302) +#define ZCL_CONVERSION_FACTOR_TRAILING_DIGIT_ATTRIBUTE_ID (0x303) +#define ZCL_CALORIFIC_VALUE_ATTRIBUTE_ID (0x304) +#define ZCL_CALORIFIC_VALUE_UNIT_ATTRIBUTE_ID (0x305) +#define ZCL_CALORIFIC_VALUE_TRAILING_DIGIT_ATTRIBUTE_ID (0x306) +#define ZCL_NO_TIER_BLOCK1_PRICE_ATTRIBUTE_ID (0x400) +#define ZCL_NO_TIER_BLOCK2_PRICE_ATTRIBUTE_ID (0x401) +#define ZCL_NO_TIER_BLOCK3_PRICE_ATTRIBUTE_ID (0x402) +#define ZCL_NO_TIER_BLOCK4_PRICE_ATTRIBUTE_ID (0x403) +#define ZCL_NO_TIER_BLOCK5_PRICE_ATTRIBUTE_ID (0x404) +#define ZCL_NO_TIER_BLOCK6_PRICE_ATTRIBUTE_ID (0x405) +#define ZCL_NO_TIER_BLOCK7_PRICE_ATTRIBUTE_ID (0x406) +#define ZCL_NO_TIER_BLOCK8_PRICE_ATTRIBUTE_ID (0x407) +#define ZCL_NO_TIER_BLOCK9_PRICE_ATTRIBUTE_ID (0x408) +#define ZCL_NO_TIER_BLOCK10_PRICE_ATTRIBUTE_ID (0x409) +#define ZCL_NO_TIER_BLOCK11_PRICE_ATTRIBUTE_ID (0x40A) +#define ZCL_NO_TIER_BLOCK12_PRICE_ATTRIBUTE_ID (0x40B) +#define ZCL_NO_TIER_BLOCK13_PRICE_ATTRIBUTE_ID (0x40C) +#define ZCL_NO_TIER_BLOCK14_PRICE_ATTRIBUTE_ID (0x40D) +#define ZCL_NO_TIER_BLOCK15_PRICE_ATTRIBUTE_ID (0x40E) +#define ZCL_NO_TIER_BLOCK16_PRICE_ATTRIBUTE_ID (0x40F) +#define ZCL_TIER1_BLOCK1_PRICE_ATTRIBUTE_ID (0x410) +#define ZCL_TIER1_BLOCK2_PRICE_ATTRIBUTE_ID (0x411) +#define ZCL_TIER1_BLOCK3_PRICE_ATTRIBUTE_ID (0x412) +#define ZCL_TIER1_BLOCK4_PRICE_ATTRIBUTE_ID (0x413) +#define ZCL_TIER1_BLOCK5_PRICE_ATTRIBUTE_ID (0x414) +#define ZCL_TIER1_BLOCK6_PRICE_ATTRIBUTE_ID (0x415) +#define ZCL_TIER1_BLOCK7_PRICE_ATTRIBUTE_ID (0x416) +#define ZCL_TIER1_BLOCK8_PRICE_ATTRIBUTE_ID (0x417) +#define ZCL_TIER1_BLOCK9_PRICE_ATTRIBUTE_ID (0x418) +#define ZCL_TIER1_BLOCK10_PRICE_ATTRIBUTE_ID (0x419) +#define ZCL_TIER1_BLOCK11_PRICE_ATTRIBUTE_ID (0x41A) +#define ZCL_TIER1_BLOCK12_PRICE_ATTRIBUTE_ID (0x41B) +#define ZCL_TIER1_BLOCK13_PRICE_ATTRIBUTE_ID (0x41C) +#define ZCL_TIER1_BLOCK14_PRICE_ATTRIBUTE_ID (0x41D) +#define ZCL_TIER1_BLOCK15_PRICE_ATTRIBUTE_ID (0x41E) +#define ZCL_TIER1_BLOCK16_PRICE_ATTRIBUTE_ID (0x41F) +#define ZCL_TIER2_BLOCK1_PRICE_ATTRIBUTE_ID (0x420) +#define ZCL_TIER2_BLOCK2_PRICE_ATTRIBUTE_ID (0x421) +#define ZCL_TIER2_BLOCK3_PRICE_ATTRIBUTE_ID (0x422) +#define ZCL_TIER2_BLOCK4_PRICE_ATTRIBUTE_ID (0x423) +#define ZCL_TIER2_BLOCK5_PRICE_ATTRIBUTE_ID (0x424) +#define ZCL_TIER2_BLOCK6_PRICE_ATTRIBUTE_ID (0x425) +#define ZCL_TIER2_BLOCK7_PRICE_ATTRIBUTE_ID (0x426) +#define ZCL_TIER2_BLOCK8_PRICE_ATTRIBUTE_ID (0x427) +#define ZCL_TIER2_BLOCK9_PRICE_ATTRIBUTE_ID (0x428) +#define ZCL_TIER2_BLOCK10_PRICE_ATTRIBUTE_ID (0x429) +#define ZCL_TIER2_BLOCK11_PRICE_ATTRIBUTE_ID (0x42A) +#define ZCL_TIER2_BLOCK12_PRICE_ATTRIBUTE_ID (0x42B) +#define ZCL_TIER2_BLOCK13_PRICE_ATTRIBUTE_ID (0x42C) +#define ZCL_TIER2_BLOCK14_PRICE_ATTRIBUTE_ID (0x42D) +#define ZCL_TIER2_BLOCK15_PRICE_ATTRIBUTE_ID (0x42E) +#define ZCL_TIER2_BLOCK16_PRICE_ATTRIBUTE_ID (0x42F) +#define ZCL_TIER3_BLOCK1_PRICE_ATTRIBUTE_ID (0x430) +#define ZCL_TIER3_BLOCK2_PRICE_ATTRIBUTE_ID (0x431) +#define ZCL_TIER3_BLOCK3_PRICE_ATTRIBUTE_ID (0x432) +#define ZCL_TIER3_BLOCK4_PRICE_ATTRIBUTE_ID (0x433) +#define ZCL_TIER3_BLOCK5_PRICE_ATTRIBUTE_ID (0x434) +#define ZCL_TIER3_BLOCK6_PRICE_ATTRIBUTE_ID (0x435) +#define ZCL_TIER3_BLOCK7_PRICE_ATTRIBUTE_ID (0x436) +#define ZCL_TIER3_BLOCK8_PRICE_ATTRIBUTE_ID (0x437) +#define ZCL_TIER3_BLOCK9_PRICE_ATTRIBUTE_ID (0x438) +#define ZCL_TIER3_BLOCK10_PRICE_ATTRIBUTE_ID (0x439) +#define ZCL_TIER3_BLOCK11_PRICE_ATTRIBUTE_ID (0x43A) +#define ZCL_TIER3_BLOCK12_PRICE_ATTRIBUTE_ID (0x43B) +#define ZCL_TIER3_BLOCK13_PRICE_ATTRIBUTE_ID (0x43C) +#define ZCL_TIER3_BLOCK14_PRICE_ATTRIBUTE_ID (0x43D) +#define ZCL_TIER3_BLOCK15_PRICE_ATTRIBUTE_ID (0x43E) +#define ZCL_TIER3_BLOCK16_PRICE_ATTRIBUTE_ID (0x43F) +#define ZCL_TIER4_BLOCK1_PRICE_ATTRIBUTE_ID (0x440) +#define ZCL_TIER4_BLOCK2_PRICE_ATTRIBUTE_ID (0x441) +#define ZCL_TIER4_BLOCK3_PRICE_ATTRIBUTE_ID (0x442) +#define ZCL_TIER4_BLOCK4_PRICE_ATTRIBUTE_ID (0x443) +#define ZCL_TIER4_BLOCK5_PRICE_ATTRIBUTE_ID (0x444) +#define ZCL_TIER4_BLOCK6_PRICE_ATTRIBUTE_ID (0x445) +#define ZCL_TIER4_BLOCK7_PRICE_ATTRIBUTE_ID (0x446) +#define ZCL_TIER4_BLOCK8_PRICE_ATTRIBUTE_ID (0x447) +#define ZCL_TIER4_BLOCK9_PRICE_ATTRIBUTE_ID (0x448) +#define ZCL_TIER4_BLOCK10_PRICE_ATTRIBUTE_ID (0x449) +#define ZCL_TIER4_BLOCK11_PRICE_ATTRIBUTE_ID (0x44A) +#define ZCL_TIER4_BLOCK12_PRICE_ATTRIBUTE_ID (0x44B) +#define ZCL_TIER4_BLOCK13_PRICE_ATTRIBUTE_ID (0x44C) +#define ZCL_TIER4_BLOCK14_PRICE_ATTRIBUTE_ID (0x44D) +#define ZCL_TIER4_BLOCK15_PRICE_ATTRIBUTE_ID (0x44E) +#define ZCL_TIER4_BLOCK16_PRICE_ATTRIBUTE_ID (0x44F) +#define ZCL_TIER5_BLOCK1_PRICE_ATTRIBUTE_ID (0x450) +#define ZCL_TIER5_BLOCK2_PRICE_ATTRIBUTE_ID (0x451) +#define ZCL_TIER5_BLOCK3_PRICE_ATTRIBUTE_ID (0x452) +#define ZCL_TIER5_BLOCK4_PRICE_ATTRIBUTE_ID (0x453) +#define ZCL_TIER5_BLOCK5_PRICE_ATTRIBUTE_ID (0x454) +#define ZCL_TIER5_BLOCK6_PRICE_ATTRIBUTE_ID (0x455) +#define ZCL_TIER5_BLOCK7_PRICE_ATTRIBUTE_ID (0x456) +#define ZCL_TIER5_BLOCK8_PRICE_ATTRIBUTE_ID (0x457) +#define ZCL_TIER5_BLOCK9_PRICE_ATTRIBUTE_ID (0x458) +#define ZCL_TIER5_BLOCK10_PRICE_ATTRIBUTE_ID (0x459) +#define ZCL_TIER5_BLOCK11_PRICE_ATTRIBUTE_ID (0x45A) +#define ZCL_TIER5_BLOCK12_PRICE_ATTRIBUTE_ID (0x45B) +#define ZCL_TIER5_BLOCK13_PRICE_ATTRIBUTE_ID (0x45C) +#define ZCL_TIER5_BLOCK14_PRICE_ATTRIBUTE_ID (0x45D) +#define ZCL_TIER5_BLOCK15_PRICE_ATTRIBUTE_ID (0x45E) +#define ZCL_TIER5_BLOCK16_PRICE_ATTRIBUTE_ID (0x45F) +#define ZCL_TIER6_BLOCK1_PRICE_ATTRIBUTE_ID (0x460) +#define ZCL_TIER6_BLOCK2_PRICE_ATTRIBUTE_ID (0x461) +#define ZCL_TIER6_BLOCK3_PRICE_ATTRIBUTE_ID (0x462) +#define ZCL_TIER6_BLOCK4_PRICE_ATTRIBUTE_ID (0x463) +#define ZCL_TIER6_BLOCK5_PRICE_ATTRIBUTE_ID (0x464) +#define ZCL_TIER6_BLOCK6_PRICE_ATTRIBUTE_ID (0x465) +#define ZCL_TIER6_BLOCK7_PRICE_ATTRIBUTE_ID (0x466) +#define ZCL_TIER6_BLOCK8_PRICE_ATTRIBUTE_ID (0x467) +#define ZCL_TIER6_BLOCK9_PRICE_ATTRIBUTE_ID (0x468) +#define ZCL_TIER6_BLOCK10_PRICE_ATTRIBUTE_ID (0x469) +#define ZCL_TIER6_BLOCK11_PRICE_ATTRIBUTE_ID (0x46A) +#define ZCL_TIER6_BLOCK12_PRICE_ATTRIBUTE_ID (0x46B) +#define ZCL_TIER6_BLOCK13_PRICE_ATTRIBUTE_ID (0x46C) +#define ZCL_TIER6_BLOCK14_PRICE_ATTRIBUTE_ID (0x46D) +#define ZCL_TIER6_BLOCK15_PRICE_ATTRIBUTE_ID (0x46E) +#define ZCL_TIER6_BLOCK16_PRICE_ATTRIBUTE_ID (0x46F) +#define ZCL_TIER7_BLOCK1_PRICE_ATTRIBUTE_ID (0x470) +#define ZCL_TIER7_BLOCK2_PRICE_ATTRIBUTE_ID (0x471) +#define ZCL_TIER7_BLOCK3_PRICE_ATTRIBUTE_ID (0x472) +#define ZCL_TIER7_BLOCK4_PRICE_ATTRIBUTE_ID (0x473) +#define ZCL_TIER7_BLOCK5_PRICE_ATTRIBUTE_ID (0x474) +#define ZCL_TIER7_BLOCK6_PRICE_ATTRIBUTE_ID (0x475) +#define ZCL_TIER7_BLOCK7_PRICE_ATTRIBUTE_ID (0x476) +#define ZCL_TIER7_BLOCK8_PRICE_ATTRIBUTE_ID (0x477) +#define ZCL_TIER7_BLOCK9_PRICE_ATTRIBUTE_ID (0x478) +#define ZCL_TIER7_BLOCK10_PRICE_ATTRIBUTE_ID (0x479) +#define ZCL_TIER7_BLOCK11_PRICE_ATTRIBUTE_ID (0x47A) +#define ZCL_TIER7_BLOCK12_PRICE_ATTRIBUTE_ID (0x47B) +#define ZCL_TIER7_BLOCK13_PRICE_ATTRIBUTE_ID (0x47C) +#define ZCL_TIER7_BLOCK14_PRICE_ATTRIBUTE_ID (0x47D) +#define ZCL_TIER7_BLOCK15_PRICE_ATTRIBUTE_ID (0x47E) +#define ZCL_TIER7_BLOCK16_PRICE_ATTRIBUTE_ID (0x47F) +#define ZCL_TIER8_BLOCK1_PRICE_ATTRIBUTE_ID (0x480) +#define ZCL_TIER8_BLOCK2_PRICE_ATTRIBUTE_ID (0x481) +#define ZCL_TIER8_BLOCK3_PRICE_ATTRIBUTE_ID (0x482) +#define ZCL_TIER8_BLOCK4_PRICE_ATTRIBUTE_ID (0x483) +#define ZCL_TIER8_BLOCK5_PRICE_ATTRIBUTE_ID (0x484) +#define ZCL_TIER8_BLOCK6_PRICE_ATTRIBUTE_ID (0x485) +#define ZCL_TIER8_BLOCK7_PRICE_ATTRIBUTE_ID (0x486) +#define ZCL_TIER8_BLOCK8_PRICE_ATTRIBUTE_ID (0x487) +#define ZCL_TIER8_BLOCK9_PRICE_ATTRIBUTE_ID (0x488) +#define ZCL_TIER8_BLOCK10_PRICE_ATTRIBUTE_ID (0x489) +#define ZCL_TIER8_BLOCK11_PRICE_ATTRIBUTE_ID (0x48A) +#define ZCL_TIER8_BLOCK12_PRICE_ATTRIBUTE_ID (0x48B) +#define ZCL_TIER8_BLOCK13_PRICE_ATTRIBUTE_ID (0x48C) +#define ZCL_TIER8_BLOCK14_PRICE_ATTRIBUTE_ID (0x48D) +#define ZCL_TIER8_BLOCK15_PRICE_ATTRIBUTE_ID (0x48E) +#define ZCL_TIER8_BLOCK16_PRICE_ATTRIBUTE_ID (0x48F) +#define ZCL_TIER9_BLOCK1_PRICE_ATTRIBUTE_ID (0x490) +#define ZCL_TIER9_BLOCK2_PRICE_ATTRIBUTE_ID (0x491) +#define ZCL_TIER9_BLOCK3_PRICE_ATTRIBUTE_ID (0x492) +#define ZCL_TIER9_BLOCK4_PRICE_ATTRIBUTE_ID (0x493) +#define ZCL_TIER9_BLOCK5_PRICE_ATTRIBUTE_ID (0x494) +#define ZCL_TIER9_BLOCK6_PRICE_ATTRIBUTE_ID (0x495) +#define ZCL_TIER9_BLOCK7_PRICE_ATTRIBUTE_ID (0x496) +#define ZCL_TIER9_BLOCK8_PRICE_ATTRIBUTE_ID (0x497) +#define ZCL_TIER9_BLOCK9_PRICE_ATTRIBUTE_ID (0x498) +#define ZCL_TIER9_BLOCK10_PRICE_ATTRIBUTE_ID (0x499) +#define ZCL_TIER9_BLOCK11_PRICE_ATTRIBUTE_ID (0x49A) +#define ZCL_TIER9_BLOCK12_PRICE_ATTRIBUTE_ID (0x49B) +#define ZCL_TIER9_BLOCK13_PRICE_ATTRIBUTE_ID (0x49C) +#define ZCL_TIER9_BLOCK14_PRICE_ATTRIBUTE_ID (0x49D) +#define ZCL_TIER9_BLOCK15_PRICE_ATTRIBUTE_ID (0x49E) +#define ZCL_TIER9_BLOCK16_PRICE_ATTRIBUTE_ID (0x49F) +#define ZCL_TIER10_BLOCK1_PRICE_ATTRIBUTE_ID (0x4A0) +#define ZCL_TIER10_BLOCK2_PRICE_ATTRIBUTE_ID (0x4A1) +#define ZCL_TIER10_BLOCK3_PRICE_ATTRIBUTE_ID (0x4A2) +#define ZCL_TIER10_BLOCK4_PRICE_ATTRIBUTE_ID (0x4A3) +#define ZCL_TIER10_BLOCK5_PRICE_ATTRIBUTE_ID (0x4A4) +#define ZCL_TIER10_BLOCK6_PRICE_ATTRIBUTE_ID (0x4A5) +#define ZCL_TIER10_BLOCK7_PRICE_ATTRIBUTE_ID (0x4A6) +#define ZCL_TIER10_BLOCK8_PRICE_ATTRIBUTE_ID (0x4A7) +#define ZCL_TIER10_BLOCK9_PRICE_ATTRIBUTE_ID (0x4A8) +#define ZCL_TIER10_BLOCK10_PRICE_ATTRIBUTE_ID (0x4A9) +#define ZCL_TIER10_BLOCK11_PRICE_ATTRIBUTE_ID (0x4AA) +#define ZCL_TIER10_BLOCK12_PRICE_ATTRIBUTE_ID (0x4AB) +#define ZCL_TIER10_BLOCK13_PRICE_ATTRIBUTE_ID (0x4AC) +#define ZCL_TIER10_BLOCK14_PRICE_ATTRIBUTE_ID (0x4AD) +#define ZCL_TIER10_BLOCK15_PRICE_ATTRIBUTE_ID (0x4AE) +#define ZCL_TIER10_BLOCK16_PRICE_ATTRIBUTE_ID (0x4AF) +#define ZCL_TIER11_BLOCK1_PRICE_ATTRIBUTE_ID (0x4B0) +#define ZCL_TIER11_BLOCK2_PRICE_ATTRIBUTE_ID (0x4B1) +#define ZCL_TIER11_BLOCK3_PRICE_ATTRIBUTE_ID (0x4B2) +#define ZCL_TIER11_BLOCK4_PRICE_ATTRIBUTE_ID (0x4B3) +#define ZCL_TIER11_BLOCK5_PRICE_ATTRIBUTE_ID (0x4B4) +#define ZCL_TIER11_BLOCK6_PRICE_ATTRIBUTE_ID (0x4B5) +#define ZCL_TIER11_BLOCK7_PRICE_ATTRIBUTE_ID (0x4B6) +#define ZCL_TIER11_BLOCK8_PRICE_ATTRIBUTE_ID (0x4B7) +#define ZCL_TIER11_BLOCK9_PRICE_ATTRIBUTE_ID (0x4B8) +#define ZCL_TIER11_BLOCK10_PRICE_ATTRIBUTE_ID (0x4B9) +#define ZCL_TIER11_BLOCK11_PRICE_ATTRIBUTE_ID (0x4BA) +#define ZCL_TIER11_BLOCK12_PRICE_ATTRIBUTE_ID (0x4BB) +#define ZCL_TIER11_BLOCK13_PRICE_ATTRIBUTE_ID (0x4BC) +#define ZCL_TIER11_BLOCK14_PRICE_ATTRIBUTE_ID (0x4BD) +#define ZCL_TIER11_BLOCK15_PRICE_ATTRIBUTE_ID (0x4BE) +#define ZCL_TIER11_BLOCK16_PRICE_ATTRIBUTE_ID (0x4BF) +#define ZCL_TIER12_BLOCK1_PRICE_ATTRIBUTE_ID (0x4C0) +#define ZCL_TIER12_BLOCK2_PRICE_ATTRIBUTE_ID (0x4C1) +#define ZCL_TIER12_BLOCK3_PRICE_ATTRIBUTE_ID (0x4C2) +#define ZCL_TIER12_BLOCK4_PRICE_ATTRIBUTE_ID (0x4C3) +#define ZCL_TIER12_BLOCK5_PRICE_ATTRIBUTE_ID (0x4C4) +#define ZCL_TIER12_BLOCK6_PRICE_ATTRIBUTE_ID (0x4C5) +#define ZCL_TIER12_BLOCK7_PRICE_ATTRIBUTE_ID (0x4C6) +#define ZCL_TIER12_BLOCK8_PRICE_ATTRIBUTE_ID (0x4C7) +#define ZCL_TIER12_BLOCK9_PRICE_ATTRIBUTE_ID (0x4C8) +#define ZCL_TIER12_BLOCK10_PRICE_ATTRIBUTE_ID (0x4C9) +#define ZCL_TIER12_BLOCK11_PRICE_ATTRIBUTE_ID (0x4CA) +#define ZCL_TIER12_BLOCK12_PRICE_ATTRIBUTE_ID (0x4CB) +#define ZCL_TIER12_BLOCK13_PRICE_ATTRIBUTE_ID (0x4CC) +#define ZCL_TIER12_BLOCK14_PRICE_ATTRIBUTE_ID (0x4CD) +#define ZCL_TIER12_BLOCK15_PRICE_ATTRIBUTE_ID (0x4CE) +#define ZCL_TIER12_BLOCK16_PRICE_ATTRIBUTE_ID (0x4CF) +#define ZCL_TIER13_BLOCK1_PRICE_ATTRIBUTE_ID (0x4D0) +#define ZCL_TIER13_BLOCK2_PRICE_ATTRIBUTE_ID (0x4D1) +#define ZCL_TIER13_BLOCK3_PRICE_ATTRIBUTE_ID (0x4D2) +#define ZCL_TIER13_BLOCK4_PRICE_ATTRIBUTE_ID (0x4D3) +#define ZCL_TIER13_BLOCK5_PRICE_ATTRIBUTE_ID (0x4D4) +#define ZCL_TIER13_BLOCK6_PRICE_ATTRIBUTE_ID (0x4D5) +#define ZCL_TIER13_BLOCK7_PRICE_ATTRIBUTE_ID (0x4D6) +#define ZCL_TIER13_BLOCK8_PRICE_ATTRIBUTE_ID (0x4D7) +#define ZCL_TIER13_BLOCK9_PRICE_ATTRIBUTE_ID (0x4D8) +#define ZCL_TIER13_BLOCK10_PRICE_ATTRIBUTE_ID (0x4D9) +#define ZCL_TIER13_BLOCK11_PRICE_ATTRIBUTE_ID (0x4DA) +#define ZCL_TIER13_BLOCK12_PRICE_ATTRIBUTE_ID (0x4DB) +#define ZCL_TIER13_BLOCK13_PRICE_ATTRIBUTE_ID (0x4DC) +#define ZCL_TIER13_BLOCK14_PRICE_ATTRIBUTE_ID (0x4DD) +#define ZCL_TIER13_BLOCK15_PRICE_ATTRIBUTE_ID (0x4DE) +#define ZCL_TIER13_BLOCK16_PRICE_ATTRIBUTE_ID (0x4DF) +#define ZCL_TIER14_BLOCK1_PRICE_ATTRIBUTE_ID (0x4E0) +#define ZCL_TIER14_BLOCK2_PRICE_ATTRIBUTE_ID (0x4E1) +#define ZCL_TIER14_BLOCK3_PRICE_ATTRIBUTE_ID (0x4E2) +#define ZCL_TIER14_BLOCK4_PRICE_ATTRIBUTE_ID (0x4E3) +#define ZCL_TIER14_BLOCK5_PRICE_ATTRIBUTE_ID (0x4E4) +#define ZCL_TIER14_BLOCK6_PRICE_ATTRIBUTE_ID (0x4E5) +#define ZCL_TIER14_BLOCK7_PRICE_ATTRIBUTE_ID (0x4E6) +#define ZCL_TIER14_BLOCK8_PRICE_ATTRIBUTE_ID (0x4E7) +#define ZCL_TIER14_BLOCK9_PRICE_ATTRIBUTE_ID (0x4E8) +#define ZCL_TIER14_BLOCK10_PRICE_ATTRIBUTE_ID (0x4E9) +#define ZCL_TIER14_BLOCK11_PRICE_ATTRIBUTE_ID (0x4EA) +#define ZCL_TIER14_BLOCK12_PRICE_ATTRIBUTE_ID (0x4EB) +#define ZCL_TIER14_BLOCK13_PRICE_ATTRIBUTE_ID (0x4EC) +#define ZCL_TIER14_BLOCK14_PRICE_ATTRIBUTE_ID (0x4ED) +#define ZCL_TIER14_BLOCK15_PRICE_ATTRIBUTE_ID (0x4EE) +#define ZCL_TIER14_BLOCK16_PRICE_ATTRIBUTE_ID (0x4EF) +#define ZCL_TIER15_BLOCK1_PRICE_ATTRIBUTE_ID (0x4F0) +#define ZCL_TIER15_BLOCK2_PRICE_ATTRIBUTE_ID (0x4F1) +#define ZCL_TIER15_BLOCK3_PRICE_ATTRIBUTE_ID (0x4F2) +#define ZCL_TIER15_BLOCK4_PRICE_ATTRIBUTE_ID (0x4F3) +#define ZCL_TIER15_BLOCK5_PRICE_ATTRIBUTE_ID (0x4F4) +#define ZCL_TIER15_BLOCK6_PRICE_ATTRIBUTE_ID (0x4F5) +#define ZCL_TIER15_BLOCK7_PRICE_ATTRIBUTE_ID (0x4F6) +#define ZCL_TIER15_BLOCK8_PRICE_ATTRIBUTE_ID (0x4F7) +#define ZCL_TIER15_BLOCK9_PRICE_ATTRIBUTE_ID (0x4F8) +#define ZCL_TIER15_BLOCK10_PRICE_ATTRIBUTE_ID (0x4F9) +#define ZCL_TIER15_BLOCK11_PRICE_ATTRIBUTE_ID (0x4FA) +#define ZCL_TIER15_BLOCK12_PRICE_ATTRIBUTE_ID (0x4FB) +#define ZCL_TIER15_BLOCK13_PRICE_ATTRIBUTE_ID (0x4FC) +#define ZCL_TIER15_BLOCK14_PRICE_ATTRIBUTE_ID (0x4FD) +#define ZCL_TIER15_BLOCK15_PRICE_ATTRIBUTE_ID (0x4FE) +#define ZCL_TIER15_BLOCK16_PRICE_ATTRIBUTE_ID (0x4FF) +#define ZCL_PRICE_TIER16_ATTRIBUTE_ID (0x50F) +#define ZCL_PRICE_TIER17_ATTRIBUTE_ID (0x510) +#define ZCL_PRICE_TIER18_ATTRIBUTE_ID (0x511) +#define ZCL_PRICE_TIER19_ATTRIBUTE_ID (0x512) +#define ZCL_PRICE_TIER20_ATTRIBUTE_ID (0x513) +#define ZCL_PRICE_TIER21_ATTRIBUTE_ID (0x514) +#define ZCL_PRICE_TIER22_ATTRIBUTE_ID (0x515) +#define ZCL_PRICE_TIER23_ATTRIBUTE_ID (0x516) +#define ZCL_PRICE_TIER24_ATTRIBUTE_ID (0x517) +#define ZCL_PRICE_TIER25_ATTRIBUTE_ID (0x518) +#define ZCL_PRICE_TIER26_ATTRIBUTE_ID (0x519) +#define ZCL_PRICE_TIER27_ATTRIBUTE_ID (0x51A) +#define ZCL_PRICE_TIER28_ATTRIBUTE_ID (0x51B) +#define ZCL_PRICE_TIER29_ATTRIBUTE_ID (0x51C) +#define ZCL_PRICE_TIER30_ATTRIBUTE_ID (0x51D) +#define ZCL_PRICE_TIER31_ATTRIBUTE_ID (0x51E) +#define ZCL_PRICE_TIER32_ATTRIBUTE_ID (0x51F) +#define ZCL_PRICE_TIER33_ATTRIBUTE_ID (0x520) +#define ZCL_PRICE_TIER34_ATTRIBUTE_ID (0x521) +#define ZCL_PRICE_TIER35_ATTRIBUTE_ID (0x522) +#define ZCL_PRICE_TIER36_ATTRIBUTE_ID (0x523) +#define ZCL_PRICE_TIER37_ATTRIBUTE_ID (0x524) +#define ZCL_PRICE_TIER38_ATTRIBUTE_ID (0x525) +#define ZCL_PRICE_TIER39_ATTRIBUTE_ID (0x526) +#define ZCL_PRICE_TIER40_ATTRIBUTE_ID (0x527) +#define ZCL_PRICE_TIER41_ATTRIBUTE_ID (0x528) +#define ZCL_PRICE_TIER42_ATTRIBUTE_ID (0x529) +#define ZCL_PRICE_TIER43_ATTRIBUTE_ID (0x52A) +#define ZCL_PRICE_TIER44_ATTRIBUTE_ID (0x52B) +#define ZCL_PRICE_TIER45_ATTRIBUTE_ID (0x52C) +#define ZCL_PRICE_TIER46_ATTRIBUTE_ID (0x52D) +#define ZCL_PRICE_TIER47_ATTRIBUTE_ID (0x52E) +#define ZCL_PRICE_TIER48_ATTRIBUTE_ID (0x52F) +#define ZCL_CPP1_PRICE_ATTRIBUTE_ID (0x5FE) +#define ZCL_CPP2_PRICE_ATTRIBUTE_ID (0x5FF) +#define ZCL_TARIFF_LABEL_ATTRIBUTE_ID (0x610) +#define ZCL_NUMBER_OF_PRICE_TIERS_IN_USE_ATTRIBUTE_ID (0x611) +#define ZCL_NUMBER_OF_BLOCK_THRESHOLDS_IN_USE_ATTRIBUTE_ID (0x612) +#define ZCL_TIER_BLOCK_MODE_ATTRIBUTE_ID (0x613) +#define ZCL_TARIFF_UNIT_OF_MEASURE_ATTRIBUTE_ID (0x615) +#define ZCL_TARIFF_CURRENCY_ATTRIBUTE_ID (0x616) +#define ZCL_TARIFF_PRICE_TRAILING_DIGIT_ATTRIBUTE_ID (0x617) +#define ZCL_TARIFF_RESOLUTION_PERIOD_ATTRIBUTE_ID (0x619) +#define ZCL_TARIFF_CO2_ATTRIBUTE_ID (0x620) +#define ZCL_TARIFF_CO2_UNIT_ATTRIBUTE_ID (0x621) +#define ZCL_TARIFF_CO2_TRAILING_DIGIT_ATTRIBUTE_ID (0x622) +#define ZCL_CURRENT_BILLING_PERIOD_START_ATTRIBUTE_ID (0x700) +#define ZCL_CURRENT_BILLING_PERIOD_DURATION_ATTRIBUTE_ID (0x701) +#define ZCL_LAST_BILLING_PERIOD_START_ATTRIBUTE_ID (0x702) +#define ZCL_LAST_BILLING_PERIOD_DURATION_ATTRIBUTE_ID (0x703) +#define ZCL_LAST_BILLING_PERIOD_CONSOLIDATED_BILL_ATTRIBUTE_ID (0x704) +#define ZCL_CREDIT_PAYMENT_DUE_DATE_ATTRIBUTE_ID (0x800) +#define ZCL_CREDIT_PAYMENT_STATUS_ATTRIBUTE_ID (0x801) +#define ZCL_CREDIT_PAYMENT_OVER_DUE_AMOUNT_ATTRIBUTE_ID (0x802) +#define ZCL_PAYMENT_DISCOUNT_ATTRIBUTE_ID (0x80A) +#define ZCL_PAYMENT_DISCOUNT_PERIOD_ATTRIBUTE_ID (0x80B) +#define ZCL_CREDIT_PAYMENT_1_ATTRIBUTE_ID (0x810) +#define ZCL_CREDIT_PAYMENT_DATE_1_ATTRIBUTE_ID (0x811) +#define ZCL_CREDIT_PAYMENT_REF_1_ATTRIBUTE_ID (0x812) +#define ZCL_CREDIT_PAYMENT_2_ATTRIBUTE_ID (0x820) +#define ZCL_CREDIT_PAYMENT_DATE_2_ATTRIBUTE_ID (0x821) +#define ZCL_CREDIT_PAYMENT_REF_2_ATTRIBUTE_ID (0x822) +#define ZCL_CREDIT_PAYMENT_3_ATTRIBUTE_ID (0x830) +#define ZCL_CREDIT_PAYMENT_DATE_3_ATTRIBUTE_ID (0x831) +#define ZCL_CREDIT_PAYMENT_REF_3_ATTRIBUTE_ID (0x832) +#define ZCL_CREDIT_PAYMENT_4_ATTRIBUTE_ID (0x840) +#define ZCL_CREDIT_PAYMENT_DATE_4_ATTRIBUTE_ID (0x841) +#define ZCL_CREDIT_PAYMENT_REF_4_ATTRIBUTE_ID (0x842) +#define ZCL_CREDIT_PAYMENT_5_ATTRIBUTE_ID (0x850) +#define ZCL_CREDIT_PAYMENT_DATE_5_ATTRIBUTE_ID (0x851) +#define ZCL_CREDIT_PAYMENT_REF_5_ATTRIBUTE_ID (0x852) +#define ZCL_RX_TIER1_PRICE_LABEL_ATTRIBUTE_ID (0x8000) +#define ZCL_RX_TIER2_PRICE_LABEL_ATTRIBUTE_ID (0x8001) +#define ZCL_RX_TIER3_PRICE_LABEL_ATTRIBUTE_ID (0x8002) +#define ZCL_RX_TIER4_PRICE_LABEL_ATTRIBUTE_ID (0x8003) +#define ZCL_RX_TIER5_PRICE_LABEL_ATTRIBUTE_ID (0x8004) +#define ZCL_RX_TIER6_PRICE_LABEL_ATTRIBUTE_ID (0x8005) +#define ZCL_RX_TIER7_PRICE_LABEL_ATTRIBUTE_ID (0x8006) +#define ZCL_RX_TIER8_PRICE_LABEL_ATTRIBUTE_ID (0x8007) +#define ZCL_RX_TIER9_PRICE_LABEL_ATTRIBUTE_ID (0x8008) +#define ZCL_RX_TIER10_PRICE_LABEL_ATTRIBUTE_ID (0x8009) +#define ZCL_RX_TIER11_PRICE_LABEL_ATTRIBUTE_ID (0x800A) +#define ZCL_RX_TIER12_PRICE_LABEL_ATTRIBUTE_ID (0x800B) +#define ZCL_RX_TIER13_PRICE_LABEL_ATTRIBUTE_ID (0x800C) +#define ZCL_RX_TIER14_PRICE_LABEL_ATTRIBUTE_ID (0x800D) +#define ZCL_RX_TIER15_PRICE_LABEL_ATTRIBUTE_ID (0x800E) +#define ZCL_RX_TIER16_PRICE_LABEL_ATTRIBUTE_ID (0x800F) +#define ZCL_RX_TIER17_PRICE_LABEL_ATTRIBUTE_ID (0x8010) +#define ZCL_RX_TIER18_PRICE_LABEL_ATTRIBUTE_ID (0x8011) +#define ZCL_RX_TIER19_PRICE_LABEL_ATTRIBUTE_ID (0x8012) +#define ZCL_RX_TIER20_PRICE_LABEL_ATTRIBUTE_ID (0x8013) +#define ZCL_RX_TIER21_PRICE_LABEL_ATTRIBUTE_ID (0x8014) +#define ZCL_RX_TIER22_PRICE_LABEL_ATTRIBUTE_ID (0x8015) +#define ZCL_RX_TIER23_PRICE_LABEL_ATTRIBUTE_ID (0x8016) +#define ZCL_RX_TIER24_PRICE_LABEL_ATTRIBUTE_ID (0x8017) +#define ZCL_RX_TIER25_PRICE_LABEL_ATTRIBUTE_ID (0x8018) +#define ZCL_RX_TIER26_PRICE_LABEL_ATTRIBUTE_ID (0x8019) +#define ZCL_RX_TIER27_PRICE_LABEL_ATTRIBUTE_ID (0x801A) +#define ZCL_RX_TIER28_PRICE_LABEL_ATTRIBUTE_ID (0x801B) +#define ZCL_RX_TIER29_PRICE_LABEL_ATTRIBUTE_ID (0x801C) +#define ZCL_RX_TIER30_PRICE_LABEL_ATTRIBUTE_ID (0x801D) +#define ZCL_RX_TIER31_PRICE_LABEL_ATTRIBUTE_ID (0x801E) +#define ZCL_RX_TIER32_PRICE_LABEL_ATTRIBUTE_ID (0x801F) +#define ZCL_RX_TIER33_PRICE_LABEL_ATTRIBUTE_ID (0x8020) +#define ZCL_RX_TIER34_PRICE_LABEL_ATTRIBUTE_ID (0x8021) +#define ZCL_RX_TIER35_PRICE_LABEL_ATTRIBUTE_ID (0x8022) +#define ZCL_RX_TIER36_PRICE_LABEL_ATTRIBUTE_ID (0x8023) +#define ZCL_RX_TIER37_PRICE_LABEL_ATTRIBUTE_ID (0x8024) +#define ZCL_RX_TIER38_PRICE_LABEL_ATTRIBUTE_ID (0x8025) +#define ZCL_RX_TIER39_PRICE_LABEL_ATTRIBUTE_ID (0x8026) +#define ZCL_RX_TIER40_PRICE_LABEL_ATTRIBUTE_ID (0x8027) +#define ZCL_RX_TIER41_PRICE_LABEL_ATTRIBUTE_ID (0x8028) +#define ZCL_RX_TIER42_PRICE_LABEL_ATTRIBUTE_ID (0x8029) +#define ZCL_RX_TIER43_PRICE_LABEL_ATTRIBUTE_ID (0x802A) +#define ZCL_RX_TIER44_PRICE_LABEL_ATTRIBUTE_ID (0x802B) +#define ZCL_RX_TIER45_PRICE_LABEL_ATTRIBUTE_ID (0x802C) +#define ZCL_RX_TIER46_PRICE_LABEL_ATTRIBUTE_ID (0x802D) +#define ZCL_RX_TIER47_PRICE_LABEL_ATTRIBUTE_ID (0x802E) +#define ZCL_RX_TIER48_PRICE_LABEL_ATTRIBUTE_ID (0x802F) +#define ZCL_RX_BLOCK1_THRESHOLD_ATTRIBUTE_ID (0x8100) +#define ZCL_RX_BLOCK2_THRESHOLD_ATTRIBUTE_ID (0x8101) +#define ZCL_RX_BLOCK3_THRESHOLD_ATTRIBUTE_ID (0x8102) +#define ZCL_RX_BLOCK4_THRESHOLD_ATTRIBUTE_ID (0x8103) +#define ZCL_RX_BLOCK5_THRESHOLD_ATTRIBUTE_ID (0x8104) +#define ZCL_RX_BLOCK6_THRESHOLD_ATTRIBUTE_ID (0x8105) +#define ZCL_RX_BLOCK7_THRESHOLD_ATTRIBUTE_ID (0x8106) +#define ZCL_RX_BLOCK8_THRESHOLD_ATTRIBUTE_ID (0x8107) +#define ZCL_RX_BLOCK9_THRESHOLD_ATTRIBUTE_ID (0x8108) +#define ZCL_RX_BLOCK10_THRESHOLD_ATTRIBUTE_ID (0x8109) +#define ZCL_RX_BLOCK11_THRESHOLD_ATTRIBUTE_ID (0x810A) +#define ZCL_RX_BLOCK12_THRESHOLD_ATTRIBUTE_ID (0x810B) +#define ZCL_RX_BLOCK13_THRESHOLD_ATTRIBUTE_ID (0x810C) +#define ZCL_RX_BLOCK14_THRESHOLD_ATTRIBUTE_ID (0x810D) +#define ZCL_RX_BLOCK15_THRESHOLD_ATTRIBUTE_ID (0x810E) +#define ZCL_RX_START_OF_BLOCK_PERIOD_ATTRIBUTE_ID (0x8200) +#define ZCL_RX_BLOCK_PERIOD_DURATION_ATTRIBUTE_ID (0x8201) +#define ZCL_RX_THRESHOLD_MULTIPLIER_ATTRIBUTE_ID (0x8202) +#define ZCL_RX_THRESHOLD_DIVISOR_ATTRIBUTE_ID (0x8203) +#define ZCL_RX_NO_TIER_BLOCK1_PRICE_ATTRIBUTE_ID (0x8400) +#define ZCL_RX_NO_TIER_BLOCK2_PRICE_ATTRIBUTE_ID (0x8401) +#define ZCL_RX_NO_TIER_BLOCK3_PRICE_ATTRIBUTE_ID (0x8402) +#define ZCL_RX_NO_TIER_BLOCK4_PRICE_ATTRIBUTE_ID (0x8403) +#define ZCL_RX_NO_TIER_BLOCK5_PRICE_ATTRIBUTE_ID (0x8404) +#define ZCL_RX_NO_TIER_BLOCK6_PRICE_ATTRIBUTE_ID (0x8405) +#define ZCL_RX_NO_TIER_BLOCK7_PRICE_ATTRIBUTE_ID (0x8406) +#define ZCL_RX_NO_TIER_BLOCK8_PRICE_ATTRIBUTE_ID (0x8407) +#define ZCL_RX_NO_TIER_BLOCK9_PRICE_ATTRIBUTE_ID (0x8408) +#define ZCL_RX_NO_TIER_BLOCK10_PRICE_ATTRIBUTE_ID (0x8409) +#define ZCL_RX_NO_TIER_BLOCK11_PRICE_ATTRIBUTE_ID (0x840A) +#define ZCL_RX_NO_TIER_BLOCK12_PRICE_ATTRIBUTE_ID (0x840B) +#define ZCL_RX_NO_TIER_BLOCK13_PRICE_ATTRIBUTE_ID (0x840C) +#define ZCL_RX_NO_TIER_BLOCK14_PRICE_ATTRIBUTE_ID (0x840D) +#define ZCL_RX_NO_TIER_BLOCK15_PRICE_ATTRIBUTE_ID (0x840E) +#define ZCL_RX_NO_TIER_BLOCK16_PRICE_ATTRIBUTE_ID (0x840F) +#define ZCL_RX_TIER1_BLOCK1_PRICE_ATTRIBUTE_ID (0x8410) +#define ZCL_RX_TIER1_BLOCK2_PRICE_ATTRIBUTE_ID (0x8411) +#define ZCL_RX_TIER1_BLOCK3_PRICE_ATTRIBUTE_ID (0x8412) +#define ZCL_RX_TIER1_BLOCK4_PRICE_ATTRIBUTE_ID (0x8413) +#define ZCL_RX_TIER1_BLOCK5_PRICE_ATTRIBUTE_ID (0x8414) +#define ZCL_RX_TIER1_BLOCK6_PRICE_ATTRIBUTE_ID (0x8415) +#define ZCL_RX_TIER1_BLOCK7_PRICE_ATTRIBUTE_ID (0x8416) +#define ZCL_RX_TIER1_BLOCK8_PRICE_ATTRIBUTE_ID (0x8417) +#define ZCL_RX_TIER1_BLOCK9_PRICE_ATTRIBUTE_ID (0x8418) +#define ZCL_RX_TIER1_BLOCK10_PRICE_ATTRIBUTE_ID (0x8419) +#define ZCL_RX_TIER1_BLOCK11_PRICE_ATTRIBUTE_ID (0x841A) +#define ZCL_RX_TIER1_BLOCK12_PRICE_ATTRIBUTE_ID (0x841B) +#define ZCL_RX_TIER1_BLOCK13_PRICE_ATTRIBUTE_ID (0x841C) +#define ZCL_RX_TIER1_BLOCK14_PRICE_ATTRIBUTE_ID (0x841D) +#define ZCL_RX_TIER1_BLOCK15_PRICE_ATTRIBUTE_ID (0x841E) +#define ZCL_RX_TIER1_BLOCK16_PRICE_ATTRIBUTE_ID (0x841F) +#define ZCL_RX_TIER2_BLOCK1_PRICE_ATTRIBUTE_ID (0x8420) +#define ZCL_RX_TIER2_BLOCK2_PRICE_ATTRIBUTE_ID (0x8421) +#define ZCL_RX_TIER2_BLOCK3_PRICE_ATTRIBUTE_ID (0x8422) +#define ZCL_RX_TIER2_BLOCK4_PRICE_ATTRIBUTE_ID (0x8423) +#define ZCL_RX_TIER2_BLOCK5_PRICE_ATTRIBUTE_ID (0x8424) +#define ZCL_RX_TIER2_BLOCK6_PRICE_ATTRIBUTE_ID (0x8425) +#define ZCL_RX_TIER2_BLOCK7_PRICE_ATTRIBUTE_ID (0x8426) +#define ZCL_RX_TIER2_BLOCK8_PRICE_ATTRIBUTE_ID (0x8427) +#define ZCL_RX_TIER2_BLOCK9_PRICE_ATTRIBUTE_ID (0x8428) +#define ZCL_RX_TIER2_BLOCK10_PRICE_ATTRIBUTE_ID (0x8429) +#define ZCL_RX_TIER2_BLOCK11_PRICE_ATTRIBUTE_ID (0x842A) +#define ZCL_RX_TIER2_BLOCK12_PRICE_ATTRIBUTE_ID (0x842B) +#define ZCL_RX_TIER2_BLOCK13_PRICE_ATTRIBUTE_ID (0x842C) +#define ZCL_RX_TIER2_BLOCK14_PRICE_ATTRIBUTE_ID (0x842D) +#define ZCL_RX_TIER2_BLOCK15_PRICE_ATTRIBUTE_ID (0x842E) +#define ZCL_RX_TIER2_BLOCK16_PRICE_ATTRIBUTE_ID (0x842F) +#define ZCL_RX_TIER3_BLOCK1_PRICE_ATTRIBUTE_ID (0x8430) +#define ZCL_RX_TIER3_BLOCK2_PRICE_ATTRIBUTE_ID (0x8431) +#define ZCL_RX_TIER3_BLOCK3_PRICE_ATTRIBUTE_ID (0x8432) +#define ZCL_RX_TIER3_BLOCK4_PRICE_ATTRIBUTE_ID (0x8433) +#define ZCL_RX_TIER3_BLOCK5_PRICE_ATTRIBUTE_ID (0x8434) +#define ZCL_RX_TIER3_BLOCK6_PRICE_ATTRIBUTE_ID (0x8435) +#define ZCL_RX_TIER3_BLOCK7_PRICE_ATTRIBUTE_ID (0x8436) +#define ZCL_RX_TIER3_BLOCK8_PRICE_ATTRIBUTE_ID (0x8437) +#define ZCL_RX_TIER3_BLOCK9_PRICE_ATTRIBUTE_ID (0x8438) +#define ZCL_RX_TIER3_BLOCK10_PRICE_ATTRIBUTE_ID (0x8439) +#define ZCL_RX_TIER3_BLOCK11_PRICE_ATTRIBUTE_ID (0x843A) +#define ZCL_RX_TIER3_BLOCK12_PRICE_ATTRIBUTE_ID (0x843B) +#define ZCL_RX_TIER3_BLOCK13_PRICE_ATTRIBUTE_ID (0x843C) +#define ZCL_RX_TIER3_BLOCK14_PRICE_ATTRIBUTE_ID (0x843D) +#define ZCL_RX_TIER3_BLOCK15_PRICE_ATTRIBUTE_ID (0x843E) +#define ZCL_RX_TIER3_BLOCK16_PRICE_ATTRIBUTE_ID (0x843F) +#define ZCL_RX_TIER4_BLOCK1_PRICE_ATTRIBUTE_ID (0x8440) +#define ZCL_RX_TIER4_BLOCK2_PRICE_ATTRIBUTE_ID (0x8441) +#define ZCL_RX_TIER4_BLOCK3_PRICE_ATTRIBUTE_ID (0x8442) +#define ZCL_RX_TIER4_BLOCK4_PRICE_ATTRIBUTE_ID (0x8443) +#define ZCL_RX_TIER4_BLOCK5_PRICE_ATTRIBUTE_ID (0x8444) +#define ZCL_RX_TIER4_BLOCK6_PRICE_ATTRIBUTE_ID (0x8445) +#define ZCL_RX_TIER4_BLOCK7_PRICE_ATTRIBUTE_ID (0x8446) +#define ZCL_RX_TIER4_BLOCK8_PRICE_ATTRIBUTE_ID (0x8447) +#define ZCL_RX_TIER4_BLOCK9_PRICE_ATTRIBUTE_ID (0x8448) +#define ZCL_RX_TIER4_BLOCK10_PRICE_ATTRIBUTE_ID (0x8449) +#define ZCL_RX_TIER4_BLOCK11_PRICE_ATTRIBUTE_ID (0x844A) +#define ZCL_RX_TIER4_BLOCK12_PRICE_ATTRIBUTE_ID (0x844B) +#define ZCL_RX_TIER4_BLOCK13_PRICE_ATTRIBUTE_ID (0x844C) +#define ZCL_RX_TIER4_BLOCK14_PRICE_ATTRIBUTE_ID (0x844D) +#define ZCL_RX_TIER4_BLOCK15_PRICE_ATTRIBUTE_ID (0x844E) +#define ZCL_RX_TIER4_BLOCK16_PRICE_ATTRIBUTE_ID (0x844F) +#define ZCL_RX_TIER5_BLOCK1_PRICE_ATTRIBUTE_ID (0x8450) +#define ZCL_RX_TIER5_BLOCK2_PRICE_ATTRIBUTE_ID (0x8451) +#define ZCL_RX_TIER5_BLOCK3_PRICE_ATTRIBUTE_ID (0x8452) +#define ZCL_RX_TIER5_BLOCK4_PRICE_ATTRIBUTE_ID (0x8453) +#define ZCL_RX_TIER5_BLOCK5_PRICE_ATTRIBUTE_ID (0x8454) +#define ZCL_RX_TIER5_BLOCK6_PRICE_ATTRIBUTE_ID (0x8455) +#define ZCL_RX_TIER5_BLOCK7_PRICE_ATTRIBUTE_ID (0x8456) +#define ZCL_RX_TIER5_BLOCK8_PRICE_ATTRIBUTE_ID (0x8457) +#define ZCL_RX_TIER5_BLOCK9_PRICE_ATTRIBUTE_ID (0x8458) +#define ZCL_RX_TIER5_BLOCK10_PRICE_ATTRIBUTE_ID (0x8459) +#define ZCL_RX_TIER5_BLOCK11_PRICE_ATTRIBUTE_ID (0x845A) +#define ZCL_RX_TIER5_BLOCK12_PRICE_ATTRIBUTE_ID (0x845B) +#define ZCL_RX_TIER5_BLOCK13_PRICE_ATTRIBUTE_ID (0x845C) +#define ZCL_RX_TIER5_BLOCK14_PRICE_ATTRIBUTE_ID (0x845D) +#define ZCL_RX_TIER5_BLOCK15_PRICE_ATTRIBUTE_ID (0x845E) +#define ZCL_RX_TIER5_BLOCK16_PRICE_ATTRIBUTE_ID (0x845F) +#define ZCL_RX_TIER6_BLOCK1_PRICE_ATTRIBUTE_ID (0x8460) +#define ZCL_RX_TIER6_BLOCK2_PRICE_ATTRIBUTE_ID (0x8461) +#define ZCL_RX_TIER6_BLOCK3_PRICE_ATTRIBUTE_ID (0x8462) +#define ZCL_RX_TIER6_BLOCK4_PRICE_ATTRIBUTE_ID (0x8463) +#define ZCL_RX_TIER6_BLOCK5_PRICE_ATTRIBUTE_ID (0x8464) +#define ZCL_RX_TIER6_BLOCK6_PRICE_ATTRIBUTE_ID (0x8465) +#define ZCL_RX_TIER6_BLOCK7_PRICE_ATTRIBUTE_ID (0x8466) +#define ZCL_RX_TIER6_BLOCK8_PRICE_ATTRIBUTE_ID (0x8467) +#define ZCL_RX_TIER6_BLOCK9_PRICE_ATTRIBUTE_ID (0x8468) +#define ZCL_RX_TIER6_BLOCK10_PRICE_ATTRIBUTE_ID (0x8469) +#define ZCL_RX_TIER6_BLOCK11_PRICE_ATTRIBUTE_ID (0x846A) +#define ZCL_RX_TIER6_BLOCK12_PRICE_ATTRIBUTE_ID (0x846B) +#define ZCL_RX_TIER6_BLOCK13_PRICE_ATTRIBUTE_ID (0x846C) +#define ZCL_RX_TIER6_BLOCK14_PRICE_ATTRIBUTE_ID (0x846D) +#define ZCL_RX_TIER6_BLOCK15_PRICE_ATTRIBUTE_ID (0x846E) +#define ZCL_RX_TIER6_BLOCK16_PRICE_ATTRIBUTE_ID (0x846F) +#define ZCL_RX_TIER7_BLOCK1_PRICE_ATTRIBUTE_ID (0x8470) +#define ZCL_RX_TIER7_BLOCK2_PRICE_ATTRIBUTE_ID (0x8471) +#define ZCL_RX_TIER7_BLOCK3_PRICE_ATTRIBUTE_ID (0x8472) +#define ZCL_RX_TIER7_BLOCK4_PRICE_ATTRIBUTE_ID (0x8473) +#define ZCL_RX_TIER7_BLOCK5_PRICE_ATTRIBUTE_ID (0x8474) +#define ZCL_RX_TIER7_BLOCK6_PRICE_ATTRIBUTE_ID (0x8475) +#define ZCL_RX_TIER7_BLOCK7_PRICE_ATTRIBUTE_ID (0x8476) +#define ZCL_RX_TIER7_BLOCK8_PRICE_ATTRIBUTE_ID (0x8477) +#define ZCL_RX_TIER7_BLOCK9_PRICE_ATTRIBUTE_ID (0x8478) +#define ZCL_RX_TIER7_BLOCK10_PRICE_ATTRIBUTE_ID (0x8479) +#define ZCL_RX_TIER7_BLOCK11_PRICE_ATTRIBUTE_ID (0x847A) +#define ZCL_RX_TIER7_BLOCK12_PRICE_ATTRIBUTE_ID (0x847B) +#define ZCL_RX_TIER7_BLOCK13_PRICE_ATTRIBUTE_ID (0x847C) +#define ZCL_RX_TIER7_BLOCK14_PRICE_ATTRIBUTE_ID (0x847D) +#define ZCL_RX_TIER7_BLOCK15_PRICE_ATTRIBUTE_ID (0x847E) +#define ZCL_RX_TIER7_BLOCK16_PRICE_ATTRIBUTE_ID (0x847F) +#define ZCL_RX_TIER8_BLOCK1_PRICE_ATTRIBUTE_ID (0x8480) +#define ZCL_RX_TIER8_BLOCK2_PRICE_ATTRIBUTE_ID (0x8481) +#define ZCL_RX_TIER8_BLOCK3_PRICE_ATTRIBUTE_ID (0x8482) +#define ZCL_RX_TIER8_BLOCK4_PRICE_ATTRIBUTE_ID (0x8483) +#define ZCL_RX_TIER8_BLOCK5_PRICE_ATTRIBUTE_ID (0x8484) +#define ZCL_RX_TIER8_BLOCK6_PRICE_ATTRIBUTE_ID (0x8485) +#define ZCL_RX_TIER8_BLOCK7_PRICE_ATTRIBUTE_ID (0x8486) +#define ZCL_RX_TIER8_BLOCK8_PRICE_ATTRIBUTE_ID (0x8487) +#define ZCL_RX_TIER8_BLOCK9_PRICE_ATTRIBUTE_ID (0x8488) +#define ZCL_RX_TIER8_BLOCK10_PRICE_ATTRIBUTE_ID (0x8489) +#define ZCL_RX_TIER8_BLOCK11_PRICE_ATTRIBUTE_ID (0x848A) +#define ZCL_RX_TIER8_BLOCK12_PRICE_ATTRIBUTE_ID (0x848B) +#define ZCL_RX_TIER8_BLOCK13_PRICE_ATTRIBUTE_ID (0x848C) +#define ZCL_RX_TIER8_BLOCK14_PRICE_ATTRIBUTE_ID (0x848D) +#define ZCL_RX_TIER8_BLOCK15_PRICE_ATTRIBUTE_ID (0x848E) +#define ZCL_RX_TIER8_BLOCK16_PRICE_ATTRIBUTE_ID (0x848F) +#define ZCL_RX_TIER9_BLOCK1_PRICE_ATTRIBUTE_ID (0x8490) +#define ZCL_RX_TIER9_BLOCK2_PRICE_ATTRIBUTE_ID (0x8491) +#define ZCL_RX_TIER9_BLOCK3_PRICE_ATTRIBUTE_ID (0x8492) +#define ZCL_RX_TIER9_BLOCK4_PRICE_ATTRIBUTE_ID (0x8493) +#define ZCL_RX_TIER9_BLOCK5_PRICE_ATTRIBUTE_ID (0x8494) +#define ZCL_RX_TIER9_BLOCK6_PRICE_ATTRIBUTE_ID (0x8495) +#define ZCL_RX_TIER9_BLOCK7_PRICE_ATTRIBUTE_ID (0x8496) +#define ZCL_RX_TIER9_BLOCK8_PRICE_ATTRIBUTE_ID (0x8497) +#define ZCL_RX_TIER9_BLOCK9_PRICE_ATTRIBUTE_ID (0x8498) +#define ZCL_RX_TIER9_BLOCK10_PRICE_ATTRIBUTE_ID (0x8499) +#define ZCL_RX_TIER9_BLOCK11_PRICE_ATTRIBUTE_ID (0x849A) +#define ZCL_RX_TIER9_BLOCK12_PRICE_ATTRIBUTE_ID (0x849B) +#define ZCL_RX_TIER9_BLOCK13_PRICE_ATTRIBUTE_ID (0x849C) +#define ZCL_RX_TIER9_BLOCK14_PRICE_ATTRIBUTE_ID (0x849D) +#define ZCL_RX_TIER9_BLOCK15_PRICE_ATTRIBUTE_ID (0x849E) +#define ZCL_RX_TIER9_BLOCK16_PRICE_ATTRIBUTE_ID (0x849F) +#define ZCL_RX_TIER10_BLOCK1_PRICE_ATTRIBUTE_ID (0x84A0) +#define ZCL_RX_TIER10_BLOCK2_PRICE_ATTRIBUTE_ID (0x84A1) +#define ZCL_RX_TIER10_BLOCK3_PRICE_ATTRIBUTE_ID (0x84A2) +#define ZCL_RX_TIER10_BLOCK4_PRICE_ATTRIBUTE_ID (0x84A3) +#define ZCL_RX_TIER10_BLOCK5_PRICE_ATTRIBUTE_ID (0x84A4) +#define ZCL_RX_TIER10_BLOCK6_PRICE_ATTRIBUTE_ID (0x84A5) +#define ZCL_RX_TIER10_BLOCK7_PRICE_ATTRIBUTE_ID (0x84A6) +#define ZCL_RX_TIER10_BLOCK8_PRICE_ATTRIBUTE_ID (0x84A7) +#define ZCL_RX_TIER10_BLOCK9_PRICE_ATTRIBUTE_ID (0x84A8) +#define ZCL_RX_TIER10_BLOCK10_PRICE_ATTRIBUTE_ID (0x84A9) +#define ZCL_RX_TIER10_BLOCK11_PRICE_ATTRIBUTE_ID (0x84AA) +#define ZCL_RX_TIER10_BLOCK12_PRICE_ATTRIBUTE_ID (0x84AB) +#define ZCL_RX_TIER10_BLOCK13_PRICE_ATTRIBUTE_ID (0x84AC) +#define ZCL_RX_TIER10_BLOCK14_PRICE_ATTRIBUTE_ID (0x84AD) +#define ZCL_RX_TIER10_BLOCK15_PRICE_ATTRIBUTE_ID (0x84AE) +#define ZCL_RX_TIER10_BLOCK16_PRICE_ATTRIBUTE_ID (0x84AF) +#define ZCL_RX_TIER11_BLOCK1_PRICE_ATTRIBUTE_ID (0x84B0) +#define ZCL_RX_TIER11_BLOCK2_PRICE_ATTRIBUTE_ID (0x84B1) +#define ZCL_RX_TIER11_BLOCK3_PRICE_ATTRIBUTE_ID (0x84B2) +#define ZCL_RX_TIER11_BLOCK4_PRICE_ATTRIBUTE_ID (0x84B3) +#define ZCL_RX_TIER11_BLOCK5_PRICE_ATTRIBUTE_ID (0x84B4) +#define ZCL_RX_TIER11_BLOCK6_PRICE_ATTRIBUTE_ID (0x84B5) +#define ZCL_RX_TIER11_BLOCK7_PRICE_ATTRIBUTE_ID (0x84B6) +#define ZCL_RX_TIER11_BLOCK8_PRICE_ATTRIBUTE_ID (0x84B7) +#define ZCL_RX_TIER11_BLOCK9_PRICE_ATTRIBUTE_ID (0x84B8) +#define ZCL_RX_TIER11_BLOCK10_PRICE_ATTRIBUTE_ID (0x84B9) +#define ZCL_RX_TIER11_BLOCK11_PRICE_ATTRIBUTE_ID (0x84BA) +#define ZCL_RX_TIER11_BLOCK12_PRICE_ATTRIBUTE_ID (0x84BB) +#define ZCL_RX_TIER11_BLOCK13_PRICE_ATTRIBUTE_ID (0x84BC) +#define ZCL_RX_TIER11_BLOCK14_PRICE_ATTRIBUTE_ID (0x84BD) +#define ZCL_RX_TIER11_BLOCK15_PRICE_ATTRIBUTE_ID (0x84BE) +#define ZCL_RX_TIER11_BLOCK16_PRICE_ATTRIBUTE_ID (0x84BF) +#define ZCL_RX_TIER12_BLOCK1_PRICE_ATTRIBUTE_ID (0x84C0) +#define ZCL_RX_TIER12_BLOCK2_PRICE_ATTRIBUTE_ID (0x84C1) +#define ZCL_RX_TIER12_BLOCK3_PRICE_ATTRIBUTE_ID (0x84C2) +#define ZCL_RX_TIER12_BLOCK4_PRICE_ATTRIBUTE_ID (0x84C3) +#define ZCL_RX_TIER12_BLOCK5_PRICE_ATTRIBUTE_ID (0x84C4) +#define ZCL_RX_TIER12_BLOCK6_PRICE_ATTRIBUTE_ID (0x84C5) +#define ZCL_RX_TIER12_BLOCK7_PRICE_ATTRIBUTE_ID (0x84C6) +#define ZCL_RX_TIER12_BLOCK8_PRICE_ATTRIBUTE_ID (0x84C7) +#define ZCL_RX_TIER12_BLOCK9_PRICE_ATTRIBUTE_ID (0x84C8) +#define ZCL_RX_TIER12_BLOCK10_PRICE_ATTRIBUTE_ID (0x84C9) +#define ZCL_RX_TIER12_BLOCK11_PRICE_ATTRIBUTE_ID (0x84CA) +#define ZCL_RX_TIER12_BLOCK12_PRICE_ATTRIBUTE_ID (0x84CB) +#define ZCL_RX_TIER12_BLOCK13_PRICE_ATTRIBUTE_ID (0x84CC) +#define ZCL_RX_TIER12_BLOCK14_PRICE_ATTRIBUTE_ID (0x84CD) +#define ZCL_RX_TIER12_BLOCK15_PRICE_ATTRIBUTE_ID (0x84CE) +#define ZCL_RX_TIER12_BLOCK16_PRICE_ATTRIBUTE_ID (0x84CF) +#define ZCL_RX_TIER13_BLOCK1_PRICE_ATTRIBUTE_ID (0x84D0) +#define ZCL_RX_TIER13_BLOCK2_PRICE_ATTRIBUTE_ID (0x84D1) +#define ZCL_RX_TIER13_BLOCK3_PRICE_ATTRIBUTE_ID (0x84D2) +#define ZCL_RX_TIER13_BLOCK4_PRICE_ATTRIBUTE_ID (0x84D3) +#define ZCL_RX_TIER13_BLOCK5_PRICE_ATTRIBUTE_ID (0x84D4) +#define ZCL_RX_TIER13_BLOCK6_PRICE_ATTRIBUTE_ID (0x84D5) +#define ZCL_RX_TIER13_BLOCK7_PRICE_ATTRIBUTE_ID (0x84D6) +#define ZCL_RX_TIER13_BLOCK8_PRICE_ATTRIBUTE_ID (0x84D7) +#define ZCL_RX_TIER13_BLOCK9_PRICE_ATTRIBUTE_ID (0x84D8) +#define ZCL_RX_TIER13_BLOCK10_PRICE_ATTRIBUTE_ID (0x84D9) +#define ZCL_RX_TIER13_BLOCK11_PRICE_ATTRIBUTE_ID (0x84DA) +#define ZCL_RX_TIER13_BLOCK12_PRICE_ATTRIBUTE_ID (0x84DB) +#define ZCL_RX_TIER13_BLOCK13_PRICE_ATTRIBUTE_ID (0x84DC) +#define ZCL_RX_TIER13_BLOCK14_PRICE_ATTRIBUTE_ID (0x84DD) +#define ZCL_RX_TIER13_BLOCK15_PRICE_ATTRIBUTE_ID (0x84DE) +#define ZCL_RX_TIER13_BLOCK16_PRICE_ATTRIBUTE_ID (0x84DF) +#define ZCL_RX_TIER14_BLOCK1_PRICE_ATTRIBUTE_ID (0x84E0) +#define ZCL_RX_TIER14_BLOCK2_PRICE_ATTRIBUTE_ID (0x84E1) +#define ZCL_RX_TIER14_BLOCK3_PRICE_ATTRIBUTE_ID (0x84E2) +#define ZCL_RX_TIER14_BLOCK4_PRICE_ATTRIBUTE_ID (0x84E3) +#define ZCL_RX_TIER14_BLOCK5_PRICE_ATTRIBUTE_ID (0x84E4) +#define ZCL_RX_TIER14_BLOCK6_PRICE_ATTRIBUTE_ID (0x84E5) +#define ZCL_RX_TIER14_BLOCK7_PRICE_ATTRIBUTE_ID (0x84E6) +#define ZCL_RX_TIER14_BLOCK8_PRICE_ATTRIBUTE_ID (0x84E7) +#define ZCL_RX_TIER14_BLOCK9_PRICE_ATTRIBUTE_ID (0x84E8) +#define ZCL_RX_TIER14_BLOCK10_PRICE_ATTRIBUTE_ID (0x84E9) +#define ZCL_RX_TIER14_BLOCK11_PRICE_ATTRIBUTE_ID (0x84EA) +#define ZCL_RX_TIER14_BLOCK12_PRICE_ATTRIBUTE_ID (0x84EB) +#define ZCL_RX_TIER14_BLOCK13_PRICE_ATTRIBUTE_ID (0x84EC) +#define ZCL_RX_TIER14_BLOCK14_PRICE_ATTRIBUTE_ID (0x84ED) +#define ZCL_RX_TIER14_BLOCK15_PRICE_ATTRIBUTE_ID (0x84EE) +#define ZCL_RX_TIER14_BLOCK16_PRICE_ATTRIBUTE_ID (0x84EF) +#define ZCL_RX_TIER15_BLOCK1_PRICE_ATTRIBUTE_ID (0x84F0) +#define ZCL_RX_TIER15_BLOCK2_PRICE_ATTRIBUTE_ID (0x84F1) +#define ZCL_RX_TIER15_BLOCK3_PRICE_ATTRIBUTE_ID (0x84F2) +#define ZCL_RX_TIER15_BLOCK4_PRICE_ATTRIBUTE_ID (0x84F3) +#define ZCL_RX_TIER15_BLOCK5_PRICE_ATTRIBUTE_ID (0x84F4) +#define ZCL_RX_TIER15_BLOCK6_PRICE_ATTRIBUTE_ID (0x84F5) +#define ZCL_RX_TIER15_BLOCK7_PRICE_ATTRIBUTE_ID (0x84F6) +#define ZCL_RX_TIER15_BLOCK8_PRICE_ATTRIBUTE_ID (0x84F7) +#define ZCL_RX_TIER15_BLOCK9_PRICE_ATTRIBUTE_ID (0x84F8) +#define ZCL_RX_TIER15_BLOCK10_PRICE_ATTRIBUTE_ID (0x84F9) +#define ZCL_RX_TIER15_BLOCK11_PRICE_ATTRIBUTE_ID (0x84FA) +#define ZCL_RX_TIER15_BLOCK12_PRICE_ATTRIBUTE_ID (0x84FB) +#define ZCL_RX_TIER15_BLOCK13_PRICE_ATTRIBUTE_ID (0x84FC) +#define ZCL_RX_TIER15_BLOCK14_PRICE_ATTRIBUTE_ID (0x84FD) +#define ZCL_RX_TIER15_BLOCK15_PRICE_ATTRIBUTE_ID (0x84FE) +#define ZCL_RX_TIER15_BLOCK16_PRICE_ATTRIBUTE_ID (0x84FF) +#define ZCL_RX_PRICE_TIER16_ATTRIBUTE_ID (0x850F) +#define ZCL_RX_PRICE_TIER17_ATTRIBUTE_ID (0x8510) +#define ZCL_RX_PRICE_TIER18_ATTRIBUTE_ID (0x8511) +#define ZCL_RX_PRICE_TIER19_ATTRIBUTE_ID (0x8512) +#define ZCL_RX_PRICE_TIER20_ATTRIBUTE_ID (0x8513) +#define ZCL_RX_PRICE_TIER21_ATTRIBUTE_ID (0x8514) +#define ZCL_RX_PRICE_TIER22_ATTRIBUTE_ID (0x8515) +#define ZCL_RX_PRICE_TIER23_ATTRIBUTE_ID (0x8516) +#define ZCL_RX_PRICE_TIER24_ATTRIBUTE_ID (0x8517) +#define ZCL_RX_PRICE_TIER25_ATTRIBUTE_ID (0x8518) +#define ZCL_RX_PRICE_TIER26_ATTRIBUTE_ID (0x8519) +#define ZCL_RX_PRICE_TIER27_ATTRIBUTE_ID (0x851A) +#define ZCL_RX_PRICE_TIER28_ATTRIBUTE_ID (0x851B) +#define ZCL_RX_PRICE_TIER29_ATTRIBUTE_ID (0x851C) +#define ZCL_RX_PRICE_TIER30_ATTRIBUTE_ID (0x851D) +#define ZCL_RX_PRICE_TIER31_ATTRIBUTE_ID (0x851E) +#define ZCL_RX_PRICE_TIER32_ATTRIBUTE_ID (0x851F) +#define ZCL_RX_PRICE_TIER33_ATTRIBUTE_ID (0x8520) +#define ZCL_RX_PRICE_TIER34_ATTRIBUTE_ID (0x8521) +#define ZCL_RX_PRICE_TIER35_ATTRIBUTE_ID (0x8522) +#define ZCL_RX_PRICE_TIER36_ATTRIBUTE_ID (0x8523) +#define ZCL_RX_PRICE_TIER37_ATTRIBUTE_ID (0x8524) +#define ZCL_RX_PRICE_TIER38_ATTRIBUTE_ID (0x8525) +#define ZCL_RX_PRICE_TIER39_ATTRIBUTE_ID (0x8526) +#define ZCL_RX_PRICE_TIER40_ATTRIBUTE_ID (0x8527) +#define ZCL_RX_PRICE_TIER41_ATTRIBUTE_ID (0x8528) +#define ZCL_RX_PRICE_TIER42_ATTRIBUTE_ID (0x8529) +#define ZCL_RX_PRICE_TIER43_ATTRIBUTE_ID (0x852A) +#define ZCL_RX_PRICE_TIER44_ATTRIBUTE_ID (0x852B) +#define ZCL_RX_PRICE_TIER45_ATTRIBUTE_ID (0x852C) +#define ZCL_RX_PRICE_TIER46_ATTRIBUTE_ID (0x852D) +#define ZCL_RX_PRICE_TIER47_ATTRIBUTE_ID (0x852E) +#define ZCL_RX_PRICE_TIER48_ATTRIBUTE_ID (0x852F) +#define ZCL_RX_TARIFF_LABEL_ATTRIBUTE_ID (0x8610) +#define ZCL_RX_NUMBER_OF_PRICE_TIERS_IN_USE_ATTRIBUTE_ID (0x8611) +#define ZCL_RX_NUMBER_OF_BLOCK_THRESHOLDS_IN_USE_ATTRIBUTE_ID (0x8612) +#define ZCL_RX_TIER_BLOCK_MODE_ATTRIBUTE_ID (0x8613) +#define ZCL_RX_TARIFF_RESOLUTION_PERIOD_ATTRIBUTE_ID (0x8615) +#define ZCL_RX_CO2_ATTRIBUTE_ID (0x8625) +#define ZCL_RX_CO2_UNIT_ATTRIBUTE_ID (0x8626) +#define ZCL_RX_CO2_TRAILING_DIGIT_ATTRIBUTE_ID (0x8627) +#define ZCL_RX_CURRENT_BILLING_PERIOD_START_ATTRIBUTE_ID (0x8700) +#define ZCL_RX_CURRENT_BILLING_PERIOD_DURATION_ATTRIBUTE_ID (0x8701) +#define ZCL_RX_LAST_BILLING_PERIOD_START_ATTRIBUTE_ID (0x8702) +#define ZCL_RX_LAST_BILLING_PERIOD_DURATION_ATTRIBUTE_ID (0x8703) +#define ZCL_RX_LAST_BILLING_PERIOD_CONSOLIDATED_BILL_ATTRIBUTE_ID (0x8704) +#define ZCL_PRICE_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_PRICE_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Price +#define ZCL_PUBLISH_PRICE_COMMAND_ID (0x0) +#define ZCL_GET_CURRENT_PRICE_COMMAND_ID (0x0) +#define ZCL_PUBLISH_BLOCK_PERIOD_COMMAND_ID (0x1) +#define ZCL_GET_SCHEDULED_PRICES_COMMAND_ID (0x1) +#define ZCL_PUBLISH_CONVERSION_FACTOR_COMMAND_ID (0x2) +#define ZCL_PRICE_ACKNOWLEDGEMENT_COMMAND_ID (0x2) +#define ZCL_PUBLISH_CALORIFIC_VALUE_COMMAND_ID (0x3) +#define ZCL_GET_BLOCK_PERIODS_COMMAND_ID (0x3) +#define ZCL_PUBLISH_TARIFF_INFORMATION_COMMAND_ID (0x4) +#define ZCL_GET_CONVERSION_FACTOR_COMMAND_ID (0x4) +#define ZCL_PUBLISH_PRICE_MATRIX_COMMAND_ID (0x5) +#define ZCL_GET_CALORIFIC_VALUE_COMMAND_ID (0x5) +#define ZCL_PUBLISH_BLOCK_THRESHOLDS_COMMAND_ID (0x6) +#define ZCL_GET_TARIFF_INFORMATION_COMMAND_ID (0x6) +#define ZCL_PUBLISH_CO2_VALUE_COMMAND_ID (0x7) +#define ZCL_GET_PRICE_MATRIX_COMMAND_ID (0x7) +#define ZCL_PUBLISH_TIER_LABELS_COMMAND_ID (0x8) +#define ZCL_GET_BLOCK_THRESHOLDS_COMMAND_ID (0x8) +#define ZCL_PUBLISH_BILLING_PERIOD_COMMAND_ID (0x9) +#define ZCL_GET_CO2_VALUE_COMMAND_ID (0x9) +#define ZCL_PUBLISH_CONSOLIDATED_BILL_COMMAND_ID (0xA) +#define ZCL_GET_TIER_LABELS_COMMAND_ID (0xA) +#define ZCL_PUBLISH_CPP_EVENT_COMMAND_ID (0xB) +#define ZCL_GET_BILLING_PERIOD_COMMAND_ID (0xB) +#define ZCL_PUBLISH_CREDIT_PAYMENT_COMMAND_ID (0xC) +#define ZCL_GET_CONSOLIDATED_BILL_COMMAND_ID (0xC) +#define ZCL_PUBLISH_CURRENCY_CONVERSION_COMMAND_ID (0xD) +#define ZCL_CPP_EVENT_RESPONSE_COMMAND_ID (0xD) +#define ZCL_CANCEL_TARIFF_COMMAND_ID (0xE) +#define ZCL_GET_CREDIT_PAYMENT_COMMAND_ID (0xE) +#define ZCL_GET_CURRENCY_CONVERSION_COMMAND_COMMAND_ID (0xF) +#define ZCL_GET_TARIFF_CANCELLATION_COMMAND_ID (0x10) + +// End of cluster: Price + +// Definitions for cluster: Demand Response and Load Control +#define ZCL_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER_ID (0x701) + +// Client attributes for cluster: Demand Response and Load Control +#define ZCL_UTILITY_ENROLLMENT_GROUP_ATTRIBUTE_ID (0x0) +#define ZCL_START_RANDOMIZATION_MINUTES_ATTRIBUTE_ID (0x1) +#define ZCL_DURATION_RANDOMIZATION_MINUTES_ATTRIBUTE_ID (0x2) +#define ZCL_DEVICE_CLASS_VALUE_ATTRIBUTE_ID (0x3) +#define ZCL_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Demand Response and Load Control +#define ZCL_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_DEMAND_RESPONSE_LOAD_CONTROL_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Demand Response and Load Control +#define ZCL_LOAD_CONTROL_EVENT_COMMAND_ID (0x0) +#define ZCL_REPORT_EVENT_STATUS_COMMAND_ID (0x0) +#define ZCL_CANCEL_LOAD_CONTROL_EVENT_COMMAND_ID (0x1) +#define ZCL_GET_SCHEDULED_EVENTS_COMMAND_ID (0x1) +#define ZCL_CANCEL_ALL_LOAD_CONTROL_EVENTS_COMMAND_ID (0x2) + +// End of cluster: Demand Response and Load Control + +// Definitions for cluster: Simple Metering +#define ZCL_SIMPLE_METERING_CLUSTER_ID (0x702) + +// Client attributes for cluster: Simple Metering +#define ZCL_FUNCTIONAL_NOTIFICATION_FLAGS_ATTRIBUTE_ID (0x0) +#define ZCL_NOTIFICATION_FLAGS_2_ATTRIBUTE_ID (0x1) +#define ZCL_NOTIFICATION_FLAGS_3_ATTRIBUTE_ID (0x2) +#define ZCL_NOTIFICATION_FLAGS_4_ATTRIBUTE_ID (0x3) +#define ZCL_NOTIFICATION_FLAGS_5_ATTRIBUTE_ID (0x4) +#define ZCL_NOTIFICATION_FLAGS_6_ATTRIBUTE_ID (0x5) +#define ZCL_NOTIFICATION_FLAGS_7_ATTRIBUTE_ID (0x6) +#define ZCL_NOTIFICATION_FLAGS_8_ATTRIBUTE_ID (0x7) +#define ZCL_SIMPLE_METERING_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_SIMPLE_METERING_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Simple Metering +#define ZCL_CURRENT_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x0) +#define ZCL_CURRENT_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x1) +#define ZCL_CURRENT_MAX_DEMAND_DELIVERED_ATTRIBUTE_ID (0x2) +#define ZCL_CURRENT_MAX_DEMAND_RECEIVED_ATTRIBUTE_ID (0x3) +#define ZCL_DFT_SUMMATION_ATTRIBUTE_ID (0x4) +#define ZCL_DAILY_FREEZE_TIME_ATTRIBUTE_ID (0x5) +#define ZCL_POWER_FACTOR_ATTRIBUTE_ID (0x6) +#define ZCL_READING_SNAP_SHOT_TIME_ATTRIBUTE_ID (0x7) +#define ZCL_CURRENT_MAX_DEMAND_DELIVERED_TIME_ATTRIBUTE_ID (0x8) +#define ZCL_CURRENT_MAX_DEMAND_RECEIVED_TIME_ATTRIBUTE_ID (0x9) +#define ZCL_DEFAULT_UPDATE_PERIOD_ATTRIBUTE_ID (0xA) +#define ZCL_FAST_POLL_UPDATE_PERIOD_ATTRIBUTE_ID (0xB) +#define ZCL_CURRENT_BLOCK_PERIOD_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC) +#define ZCL_DAILY_CONSUMPTION_TARGET_ATTRIBUTE_ID (0xD) +#define ZCL_CURRENT_BLOCK_ATTRIBUTE_ID (0xE) +#define ZCL_PROFILE_INTERVAL_PERIOD_ATTRIBUTE_ID (0xF) +#define ZCL_INTERVAL_READ_REPORTING_PERIOD_ATTRIBUTE_ID (0x10) +#define ZCL_PRESET_READING_TIME_ATTRIBUTE_ID (0x11) +#define ZCL_VOLUME_PER_REPORT_ATTRIBUTE_ID (0x12) +#define ZCL_FLOW_RESTRICTION_ATTRIBUTE_ID (0x13) +#define ZCL_SUPPLY_STATUS_ATTRIBUTE_ID (0x14) +#define ZCL_CURRENT_INLET_ENERGY_CARRIER_SUMMATION_ATTRIBUTE_ID (0x15) +#define ZCL_CURRENT_OUTLET_ENERGY_CARRIER_SUMMATION_ATTRIBUTE_ID (0x16) +#define ZCL_INLET_TEMPERATURE_ATTRIBUTE_ID (0x17) +#define ZCL_OUTLET_TEMPERATURE_ATTRIBUTE_ID (0x18) +#define ZCL_CONTROL_TEMPERATURE_ATTRIBUTE_ID (0x19) +#define ZCL_CURRENT_INLET_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x1A) +#define ZCL_CURRENT_OUTLET_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x1B) +#define ZCL_PREVIOUS_BLOCK_PERIOD_CONSUMIPTION_DELIVERED_ATTRIBUTE_ID (0x1C) +#define ZCL_CURRENT_BLOCK_PERIOD_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x1D) +#define ZCL_CURRENT_BLOCK_RECEIVED_ATTRIBUTE_ID (0x1E) +#define ZCL_DFT_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x1F) +#define ZCL_ACTIVE_REGISTER_TIER_DELIVERED_ATTRIBUTE_ID (0x20) +#define ZCL_ACTIVE_REGISTER_TIER_RECEIVED_ATTRIBUTE_ID (0x21) +#define ZCL_LAST_BLOCK_SWITCH_TIME_ATTRIBUTE_ID (0x22) +#define ZCL_CURRENT_TIER1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x100) +#define ZCL_CURRENT_TIER1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x101) +#define ZCL_CURRENT_TIER2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x102) +#define ZCL_CURRENT_TIER2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x103) +#define ZCL_CURRENT_TIER3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x104) +#define ZCL_CURRENT_TIER3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x105) +#define ZCL_CURRENT_TIER4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x106) +#define ZCL_CURRENT_TIER4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x107) +#define ZCL_CURRENT_TIER5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x108) +#define ZCL_CURRENT_TIER5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x109) +#define ZCL_CURRENT_TIER6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x10A) +#define ZCL_CURRENT_TIER6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x10B) +#define ZCL_CURRENT_TIER7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x10C) +#define ZCL_CURRENT_TIER7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x10D) +#define ZCL_CURRENT_TIER8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x10E) +#define ZCL_CURRENT_TIER8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x10F) +#define ZCL_CURRENT_TIER9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x110) +#define ZCL_CURRENT_TIER9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x111) +#define ZCL_CURRENT_TIER10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x112) +#define ZCL_CURRENT_TIER10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x113) +#define ZCL_CURRENT_TIER11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x114) +#define ZCL_CURRENT_TIER11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x115) +#define ZCL_CURRENT_TIER12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x116) +#define ZCL_CURRENT_TIER12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x117) +#define ZCL_CURRENT_TIER13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x118) +#define ZCL_CURRENT_TIER13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x119) +#define ZCL_CURRENT_TIER14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x11A) +#define ZCL_CURRENT_TIER14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x11B) +#define ZCL_CURRENT_TIER15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x11C) +#define ZCL_CURRENT_TIER15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x11D) +#define ZCL_CURRENT_TIER16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x11E) +#define ZCL_CURRENT_TIER16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x11F) +#define ZCL_CURRENT_TIER17_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x120) +#define ZCL_CURRENT_TIER17_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x121) +#define ZCL_CURRENT_TIER18_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x122) +#define ZCL_CURRENT_TIER18_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x123) +#define ZCL_CURRENT_TIER19_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x124) +#define ZCL_CURRENT_TIER19_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x125) +#define ZCL_CURRENT_TIER20_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x126) +#define ZCL_CURRENT_TIER20_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x127) +#define ZCL_CURRENT_TIER21_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x128) +#define ZCL_CURRENT_TIER21_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x129) +#define ZCL_CURRENT_TIER22_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x12A) +#define ZCL_CURRENT_TIER22_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x12B) +#define ZCL_CURRENT_TIER23_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x12C) +#define ZCL_CURRENT_TIER23_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x12D) +#define ZCL_CURRENT_TIER24_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x12E) +#define ZCL_CURRENT_TIER24_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x12F) +#define ZCL_CURRENT_TIER25_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x130) +#define ZCL_CURRENT_TIER25_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x131) +#define ZCL_CURRENT_TIER26_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x132) +#define ZCL_CURRENT_TIER26_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x133) +#define ZCL_CURRENT_TIER27_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x134) +#define ZCL_CURRENT_TIER27_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x135) +#define ZCL_CURRENT_TIER28_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x136) +#define ZCL_CURRENT_TIER28_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x137) +#define ZCL_CURRENT_TIER29_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x138) +#define ZCL_CURRENT_TIER29_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x139) +#define ZCL_CURRENT_TIER30_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x13A) +#define ZCL_CURRENT_TIER30_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x13B) +#define ZCL_CURRENT_TIER31_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x13C) +#define ZCL_CURRENT_TIER31_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x13D) +#define ZCL_CURRENT_TIER32_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x13E) +#define ZCL_CURRENT_TIER32_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x13F) +#define ZCL_CURRENT_TIER33_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x140) +#define ZCL_CURRENT_TIER33_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x141) +#define ZCL_CURRENT_TIER34_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x142) +#define ZCL_CURRENT_TIER34_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x143) +#define ZCL_CURRENT_TIER35_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x144) +#define ZCL_CURRENT_TIER35_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x145) +#define ZCL_CURRENT_TIER36_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x146) +#define ZCL_CURRENT_TIER36_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x147) +#define ZCL_CURRENT_TIER37_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x148) +#define ZCL_CURRENT_TIER37_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x149) +#define ZCL_CURRENT_TIER38_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x14A) +#define ZCL_CURRENT_TIER38_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x14B) +#define ZCL_CURRENT_TIER39_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x14C) +#define ZCL_CURRENT_TIER39_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x14D) +#define ZCL_CURRENT_TIER40_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x14E) +#define ZCL_CURRENT_TIER40_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x14F) +#define ZCL_CURRENT_TIER41_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x150) +#define ZCL_CURRENT_TIER41_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x151) +#define ZCL_CURRENT_TIER42_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x152) +#define ZCL_CURRENT_TIER42_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x153) +#define ZCL_CURRENT_TIER43_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x154) +#define ZCL_CURRENT_TIER43_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x155) +#define ZCL_CURRENT_TIER44_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x156) +#define ZCL_CURRENT_TIER44_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x157) +#define ZCL_CURRENT_TIER45_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x158) +#define ZCL_CURRENT_TIER45_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x159) +#define ZCL_CURRENT_TIER46_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x15A) +#define ZCL_CURRENT_TIER46_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x15B) +#define ZCL_CURRENT_TIER47_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x15C) +#define ZCL_CURRENT_TIER47_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x15D) +#define ZCL_CURRENT_TIER48_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x15E) +#define ZCL_CURRENT_TIER48_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x15F) +#define ZCL_CPP1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x1FC) +#define ZCL_CPP2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x1FE) +#define ZCL_STATUS_ATTRIBUTE_ID (0x200) +#define ZCL_REMAINING_BATTERY_LIFE_ATTRIBUTE_ID (0x201) +#define ZCL_HOURS_IN_OPERATION_ATTRIBUTE_ID (0x202) +#define ZCL_HOURS_IN_FAULT_ATTRIBUTE_ID (0x203) +#define ZCL_EXTENDED_STATUS_ATTRIBUTE_ID (0x204) +#define ZCL_REMAINING_BATTERY_LIFE_IN_DAYS_ATTRIBUTE_ID (0x205) +#define ZCL_CURRENT_METER_ID_ATTRIBUTE_ID (0x206) +#define ZCL_AMBIENT_CONSUMPTION_INDICATOR_ATTRIBUTE_ID (0x207) +#define ZCL_UNIT_OF_MEASURE_ATTRIBUTE_ID (0x300) +#define ZCL_MULTIPLIER_ATTRIBUTE_ID (0x301) +#define ZCL_DIVISOR_ATTRIBUTE_ID (0x302) +#define ZCL_SUMMATION_FORMATTING_ATTRIBUTE_ID (0x303) +#define ZCL_DEMAND_FORMATTING_ATTRIBUTE_ID (0x304) +#define ZCL_HISTORICAL_CONSUMPTION_FORMATTING_ATTRIBUTE_ID (0x305) +#define ZCL_METERING_DEVICE_TYPE_ATTRIBUTE_ID (0x306) +#define ZCL_SITE_ID_ATTRIBUTE_ID (0x307) +#define ZCL_METER_SERIAL_NUMBER_ATTRIBUTE_ID (0x308) +#define ZCL_ENERGY_CARRIER_UNIT_OF_MEASURE_ATTRIBUTE_ID (0x309) +#define ZCL_ENERGY_CARRIER_SUMMATION_FORMATTING_ATTRIBUTE_ID (0x30A) +#define ZCL_ENERGY_CARRIER_DEMAND_FORMATTING_ATTRIBUTE_ID (0x30B) +#define ZCL_TEMPERATURE_UNIT_OF_MEASURE_ATTRIBUTE_ID (0x30C) +#define ZCL_TEMPERATURE_FORMATTING_ATTRIBUTE_ID (0x30D) +#define ZCL_MODULE_SERIAL_NUMBER_ATTRIBUTE_ID (0x30E) +#define ZCL_OPERATING_TARIFF_LABEL_DELIVERED_ATTRIBUTE_ID (0x30F) +#define ZCL_OPERATING_TARIFF_LABEL_RECEIVED_ATTRIBUTE_ID (0x310) +#define ZCL_CUSTOMER_ID_NUMBER_ATTRIBUTE_ID (0x311) +#define ZCL_ALTERNATIVE_UNIT_OF_MEASURE_ATTRIBUTE_ID (0x312) +#define ZCL_ALTERNATIVE_DEMAND_FORMATTING_ATTRIBUTE_ID (0x313) +#define ZCL_ALTERNATIVE_CONSUMPTION_FORMATTING_ATTRIBUTE_ID (0x314) +#define ZCL_INSTANTANEOUS_DEMAND_ATTRIBUTE_ID (0x400) +#define ZCL_CURRENT_DAY_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x401) +#define ZCL_CURRENT_DAY_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x402) +#define ZCL_PREVIOUS_DAY_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x403) +#define ZCL_PREVIOUS_DAY_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x404) +#define ZCL_CURRENT_PARTIAL_PROFILE_INTERVAL_START_TIME_DELIVERED_ATTRIBUTE_ID (0x405) +#define ZCL_CURRENT_PARTIAL_PROFILE_INTERVAL_START_TIME_RECEIVED_ATTRIBUTE_ID (0x406) +#define ZCL_CURRENT_PARTIAL_PROFILE_INTERVAL_VALUE_DELIVERED_ATTRIBUTE_ID (0x407) +#define ZCL_CURRENT_PARTIAL_PROFILE_INTERVAL_VALUE_RECEIVED_ATTRIBUTE_ID (0x408) +#define ZCL_CURRENT_DAY_MAX_PRESSURE_ATTRIBUTE_ID (0x409) +#define ZCL_CURRENT_DAY_MIN_PRESSURE_ATTRIBUTE_ID (0x40A) +#define ZCL_PREVIOUS_DAY_MAX_PRESSURE_ATTRIBUTE_ID (0x40B) +#define ZCL_PREVIOUS_DAY_MIN_PRESSURE_ATTRIBUTE_ID (0x40C) +#define ZCL_CURRENT_DAY_MAX_DEMAND_ATTRIBUTE_ID (0x40D) +#define ZCL_PREVIOUS_DAY_MAX_DEMAND_ATTRIBUTE_ID (0x40E) +#define ZCL_CURRENT_MONTH_MAX_DEMAND_ATTRIBUTE_ID (0x40F) +#define ZCL_CURRENT_YEAR_MAX_DEMAND_ATTRIBUTE_ID (0x410) +#define ZCL_CURRENT_DAY_MAX_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x411) +#define ZCL_PREVIOUS_DAY_MAX_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x412) +#define ZCL_CURRENT_MONTH_MAX_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x413) +#define ZCL_CURRENT_MONTH_MIN_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x414) +#define ZCL_CURRENT_YEAR_MAX_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x415) +#define ZCL_CURRENT_YEAR_MIN_ENERGY_CARRIER_DEMAND_ATTRIBUTE_ID (0x416) +#define ZCL_PREVIOUS_DAY2_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x420) +#define ZCL_PREVIOUS_DAY2_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x421) +#define ZCL_PREVIOUS_DAY3_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x422) +#define ZCL_PREVIOUS_DAY3_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x423) +#define ZCL_PREVIOUS_DAY4_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x424) +#define ZCL_PREVIOUS_DAY4_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x425) +#define ZCL_PREVIOUS_DAY5_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x426) +#define ZCL_PREVIOUS_DAY5_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x427) +#define ZCL_PREVIOUS_DAY6_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x428) +#define ZCL_PREVIOUS_DAY6_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x429) +#define ZCL_PREVIOUS_DAY7_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x42A) +#define ZCL_PREVIOUS_DAY7_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x42B) +#define ZCL_PREVIOUS_DAY8_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x42C) +#define ZCL_PREVIOUS_DAY8_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x42D) +#define ZCL_CURRENT_WEEK_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x430) +#define ZCL_CURRENT_WEEK_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x431) +#define ZCL_PREVIOUS_WEEK_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x432) +#define ZCL_PREVIOUS_WEEK_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x433) +#define ZCL_PREVIOUS_WEEK2_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x434) +#define ZCL_PREVIOUS_WEEK2_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x435) +#define ZCL_PREVIOUS_WEEK3_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x436) +#define ZCL_PREVIOUS_WEEK3_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x437) +#define ZCL_PREVIOUS_WEEK4_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x438) +#define ZCL_PREVIOUS_WEEK4_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x439) +#define ZCL_PREVIOUS_WEEK5_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x43A) +#define ZCL_PREVIOUS_WEEK5_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x43B) +#define ZCL_CURRENT_MONTH_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x440) +#define ZCL_CURRENT_MONTH_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x441) +#define ZCL_PREVIOUS_MONTH_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x442) +#define ZCL_PREVIOUS_MONTH_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x443) +#define ZCL_PREVIOUS_MONTH2_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x444) +#define ZCL_PREVIOUS_MONTH2_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x445) +#define ZCL_PREVIOUS_MONTH3_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x446) +#define ZCL_PREVIOUS_MONTH3_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x447) +#define ZCL_PREVIOUS_MONTH4_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x448) +#define ZCL_PREVIOUS_MONTH4_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x449) +#define ZCL_PREVIOUS_MONTH5_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x44A) +#define ZCL_PREVIOUS_MONTH5_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x44B) +#define ZCL_PREVIOUS_MONTH6_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x44C) +#define ZCL_PREVIOUS_MONTH6_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x44D) +#define ZCL_PREVIOUS_MONTH7_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x44E) +#define ZCL_PREVIOUS_MONTH7_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x44F) +#define ZCL_PREVIOUS_MONTH8_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x450) +#define ZCL_PREVIOUS_MONTH8_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x451) +#define ZCL_PREVIOUS_MONTH9_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x452) +#define ZCL_PREVIOUS_MONTH9_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x453) +#define ZCL_PREVIOUS_MONTH10_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x454) +#define ZCL_PREVIOUS_MONTH10_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x455) +#define ZCL_PREVIOUS_MONTH11_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x456) +#define ZCL_PREVIOUS_MONTH11_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x457) +#define ZCL_PREVIOUS_MONTH12_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x458) +#define ZCL_PREVIOUS_MONTH12_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x459) +#define ZCL_PREVIOUS_MONTH13_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x45A) +#define ZCL_PREVIOUS_MONTH13_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x45B) +#define ZCL_METERING_HISTORICAL_FREEZE_TIME_ATTRIBUTE_ID (0x45C) +#define ZCL_CURRENT_DAY_MAX_DEMAND_DELIVERED_ATTRIBUTE_ID (0x45D) +#define ZCL_CURRENT_DAY_MAX_DEMAND_DELIVERED_TIME_ATTRIBUTE_ID (0x45E) +#define ZCL_CURRENT_DAY_MAX_DEMAND_RECEIVED_ATTRIBUTE_ID (0x45F) +#define ZCL_CURRENT_DAY_MAX_DEMAND_RECEIVED_TIME_ATTRIBUTE_ID (0x460) +#define ZCL_PREVIOUS_DAY_MAX_DEMAND_DELIVERED_ATTRIBUTE_ID (0x461) +#define ZCL_PREVIOUS_DAY_MAX_DEMAND_DELIVERED_TIME_ATTRIBUTE_ID (0x462) +#define ZCL_PREVIOUS_DAY_MAX_DEMAND_RECEIVED_ATTRIBUTE_ID (0x463) +#define ZCL_PREVIOUS_DAY_MAX_DEMAND_RECEIVED_TIME_ATTRIBUTE_ID (0x464) +#define ZCL_MAX_NUMBER_OF_PERIODS_DELIVERED_ATTRIBUTE_ID (0x500) +#define ZCL_CURRENT_DEMAND_DELIVERED_ATTRIBUTE_ID (0x600) +#define ZCL_DEMAND_LIMIT_ATTRIBUTE_ID (0x601) +#define ZCL_DEMAND_INTEGRATION_PERIOD_ATTRIBUTE_ID (0x602) +#define ZCL_NUMBER_OF_DEMAND_SUBINTERVALS_ATTRIBUTE_ID (0x603) +#define ZCL_DEMAND_LIMIT_ARM_DURATION_IN_MINUTES_ATTRIBUTE_ID (0x604) +#define ZCL_LOAD_LIMIT_SUPPLY_STATE_ATTRIBUTE_ID (0x605) +#define ZCL_LOAD_LIMIT_COUNTER_ATTRIBUTE_ID (0x606) +#define ZCL_SUPPLY_TAMPER_STATE_ATTRIBUTE_ID (0x607) +#define ZCL_SUPPLY_DEPLETION_STATE_ATTRIBUTE_ID (0x608) +#define ZCL_SUPPLY_UNCONTROLLED_FLOW_STATE_ATTRIBUTE_ID (0x609) +#define ZCL_CURRENT_NO_TIER_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x700) +#define ZCL_CURRENT_NO_TIER_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x701) +#define ZCL_CURRENT_NO_TIER_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x702) +#define ZCL_CURRENT_NO_TIER_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x703) +#define ZCL_CURRENT_NO_TIER_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x704) +#define ZCL_CURRENT_NO_TIER_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x705) +#define ZCL_CURRENT_NO_TIER_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x706) +#define ZCL_CURRENT_NO_TIER_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x707) +#define ZCL_CURRENT_NO_TIER_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x708) +#define ZCL_CURRENT_NO_TIER_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x709) +#define ZCL_CURRENT_NO_TIER_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x70A) +#define ZCL_CURRENT_NO_TIER_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x70B) +#define ZCL_CURRENT_NO_TIER_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x70C) +#define ZCL_CURRENT_NO_TIER_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x70D) +#define ZCL_CURRENT_NO_TIER_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x70E) +#define ZCL_CURRENT_NO_TIER_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x70F) +#define ZCL_CURRENT_TIER1_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x710) +#define ZCL_CURRENT_TIER1_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x711) +#define ZCL_CURRENT_TIER1_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x712) +#define ZCL_CURRENT_TIER1_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x713) +#define ZCL_CURRENT_TIER1_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x714) +#define ZCL_CURRENT_TIER1_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x715) +#define ZCL_CURRENT_TIER1_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x716) +#define ZCL_CURRENT_TIER1_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x717) +#define ZCL_CURRENT_TIER1_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x718) +#define ZCL_CURRENT_TIER1_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x719) +#define ZCL_CURRENT_TIER1_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x71A) +#define ZCL_CURRENT_TIER1_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x71B) +#define ZCL_CURRENT_TIER1_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x71C) +#define ZCL_CURRENT_TIER1_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x71D) +#define ZCL_CURRENT_TIER1_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x71E) +#define ZCL_CURRENT_TIER1_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x71F) +#define ZCL_CURRENT_TIER2_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x720) +#define ZCL_CURRENT_TIER2_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x721) +#define ZCL_CURRENT_TIER2_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x722) +#define ZCL_CURRENT_TIER2_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x723) +#define ZCL_CURRENT_TIER2_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x724) +#define ZCL_CURRENT_TIER2_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x725) +#define ZCL_CURRENT_TIER2_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x726) +#define ZCL_CURRENT_TIER2_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x727) +#define ZCL_CURRENT_TIER2_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x728) +#define ZCL_CURRENT_TIER2_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x729) +#define ZCL_CURRENT_TIER2_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x72A) +#define ZCL_CURRENT_TIER2_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x72B) +#define ZCL_CURRENT_TIER2_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x72C) +#define ZCL_CURRENT_TIER2_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x72D) +#define ZCL_CURRENT_TIER2_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x72E) +#define ZCL_CURRENT_TIER2_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x72F) +#define ZCL_CURRENT_TIER3_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x730) +#define ZCL_CURRENT_TIER3_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x731) +#define ZCL_CURRENT_TIER3_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x732) +#define ZCL_CURRENT_TIER3_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x733) +#define ZCL_CURRENT_TIER3_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x734) +#define ZCL_CURRENT_TIER3_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x735) +#define ZCL_CURRENT_TIER3_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x736) +#define ZCL_CURRENT_TIER3_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x737) +#define ZCL_CURRENT_TIER3_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x738) +#define ZCL_CURRENT_TIER3_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x739) +#define ZCL_CURRENT_TIER3_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x73A) +#define ZCL_CURRENT_TIER3_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x73B) +#define ZCL_CURRENT_TIER3_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x73C) +#define ZCL_CURRENT_TIER3_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x73D) +#define ZCL_CURRENT_TIER3_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x73E) +#define ZCL_CURRENT_TIER3_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x73F) +#define ZCL_CURRENT_TIER4_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x740) +#define ZCL_CURRENT_TIER4_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x741) +#define ZCL_CURRENT_TIER4_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x742) +#define ZCL_CURRENT_TIER4_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x743) +#define ZCL_CURRENT_TIER4_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x744) +#define ZCL_CURRENT_TIER4_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x745) +#define ZCL_CURRENT_TIER4_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x746) +#define ZCL_CURRENT_TIER4_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x747) +#define ZCL_CURRENT_TIER4_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x748) +#define ZCL_CURRENT_TIER4_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x749) +#define ZCL_CURRENT_TIER4_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x74A) +#define ZCL_CURRENT_TIER4_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x74B) +#define ZCL_CURRENT_TIER4_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x74C) +#define ZCL_CURRENT_TIER4_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x74D) +#define ZCL_CURRENT_TIER4_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x74E) +#define ZCL_CURRENT_TIER4_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x74F) +#define ZCL_CURRENT_TIER5_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x750) +#define ZCL_CURRENT_TIER5_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x751) +#define ZCL_CURRENT_TIER5_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x752) +#define ZCL_CURRENT_TIER5_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x753) +#define ZCL_CURRENT_TIER5_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x754) +#define ZCL_CURRENT_TIER5_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x755) +#define ZCL_CURRENT_TIER5_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x756) +#define ZCL_CURRENT_TIER5_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x757) +#define ZCL_CURRENT_TIER5_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x758) +#define ZCL_CURRENT_TIER5_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x759) +#define ZCL_CURRENT_TIER5_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x75A) +#define ZCL_CURRENT_TIER5_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x75B) +#define ZCL_CURRENT_TIER5_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x75C) +#define ZCL_CURRENT_TIER5_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x75D) +#define ZCL_CURRENT_TIER5_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x75E) +#define ZCL_CURRENT_TIER5_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x75F) +#define ZCL_CURRENT_TIER6_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x760) +#define ZCL_CURRENT_TIER6_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x761) +#define ZCL_CURRENT_TIER6_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x762) +#define ZCL_CURRENT_TIER6_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x763) +#define ZCL_CURRENT_TIER6_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x764) +#define ZCL_CURRENT_TIER6_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x765) +#define ZCL_CURRENT_TIER6_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x766) +#define ZCL_CURRENT_TIER6_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x767) +#define ZCL_CURRENT_TIER6_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x768) +#define ZCL_CURRENT_TIER6_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x769) +#define ZCL_CURRENT_TIER6_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x76A) +#define ZCL_CURRENT_TIER6_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x76B) +#define ZCL_CURRENT_TIER6_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x76C) +#define ZCL_CURRENT_TIER6_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x76D) +#define ZCL_CURRENT_TIER6_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x76E) +#define ZCL_CURRENT_TIER6_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x76F) +#define ZCL_CURRENT_TIER7_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x770) +#define ZCL_CURRENT_TIER7_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x771) +#define ZCL_CURRENT_TIER7_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x772) +#define ZCL_CURRENT_TIER7_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x773) +#define ZCL_CURRENT_TIER7_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x774) +#define ZCL_CURRENT_TIER7_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x775) +#define ZCL_CURRENT_TIER7_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x776) +#define ZCL_CURRENT_TIER7_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x777) +#define ZCL_CURRENT_TIER7_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x778) +#define ZCL_CURRENT_TIER7_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x779) +#define ZCL_CURRENT_TIER7_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x77A) +#define ZCL_CURRENT_TIER7_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x77B) +#define ZCL_CURRENT_TIER7_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x77C) +#define ZCL_CURRENT_TIER7_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x77D) +#define ZCL_CURRENT_TIER7_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x77E) +#define ZCL_CURRENT_TIER7_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x77F) +#define ZCL_CURRENT_TIER8_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x780) +#define ZCL_CURRENT_TIER8_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x781) +#define ZCL_CURRENT_TIER8_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x782) +#define ZCL_CURRENT_TIER8_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x783) +#define ZCL_CURRENT_TIER8_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x784) +#define ZCL_CURRENT_TIER8_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x785) +#define ZCL_CURRENT_TIER8_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x786) +#define ZCL_CURRENT_TIER8_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x787) +#define ZCL_CURRENT_TIER8_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x788) +#define ZCL_CURRENT_TIER8_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x789) +#define ZCL_CURRENT_TIER8_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x78A) +#define ZCL_CURRENT_TIER8_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x78B) +#define ZCL_CURRENT_TIER8_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x78C) +#define ZCL_CURRENT_TIER8_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x78D) +#define ZCL_CURRENT_TIER8_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x78E) +#define ZCL_CURRENT_TIER8_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x78F) +#define ZCL_CURRENT_TIER9_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x790) +#define ZCL_CURRENT_TIER9_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x791) +#define ZCL_CURRENT_TIER9_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x792) +#define ZCL_CURRENT_TIER9_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x793) +#define ZCL_CURRENT_TIER9_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x794) +#define ZCL_CURRENT_TIER9_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x795) +#define ZCL_CURRENT_TIER9_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x796) +#define ZCL_CURRENT_TIER9_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x797) +#define ZCL_CURRENT_TIER9_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x798) +#define ZCL_CURRENT_TIER9_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x799) +#define ZCL_CURRENT_TIER9_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x79A) +#define ZCL_CURRENT_TIER9_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x79B) +#define ZCL_CURRENT_TIER9_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x79C) +#define ZCL_CURRENT_TIER9_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x79D) +#define ZCL_CURRENT_TIER9_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x79E) +#define ZCL_CURRENT_TIER9_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x79F) +#define ZCL_CURRENT_TIER10_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7A0) +#define ZCL_CURRENT_TIER10_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7A1) +#define ZCL_CURRENT_TIER10_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7A2) +#define ZCL_CURRENT_TIER10_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7A3) +#define ZCL_CURRENT_TIER10_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7A4) +#define ZCL_CURRENT_TIER10_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7A5) +#define ZCL_CURRENT_TIER10_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7A6) +#define ZCL_CURRENT_TIER10_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7A7) +#define ZCL_CURRENT_TIER10_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7A8) +#define ZCL_CURRENT_TIER10_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7A9) +#define ZCL_CURRENT_TIER10_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7AA) +#define ZCL_CURRENT_TIER10_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7AB) +#define ZCL_CURRENT_TIER10_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7AC) +#define ZCL_CURRENT_TIER10_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7AD) +#define ZCL_CURRENT_TIER10_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7AE) +#define ZCL_CURRENT_TIER10_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7AF) +#define ZCL_CURRENT_TIER11_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7B0) +#define ZCL_CURRENT_TIER11_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7B1) +#define ZCL_CURRENT_TIER11_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7B2) +#define ZCL_CURRENT_TIER11_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7B3) +#define ZCL_CURRENT_TIER11_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7B4) +#define ZCL_CURRENT_TIER11_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7B5) +#define ZCL_CURRENT_TIER11_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7B6) +#define ZCL_CURRENT_TIER11_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7B7) +#define ZCL_CURRENT_TIER11_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7B8) +#define ZCL_CURRENT_TIER11_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7B9) +#define ZCL_CURRENT_TIER11_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7BA) +#define ZCL_CURRENT_TIER11_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7BB) +#define ZCL_CURRENT_TIER11_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7BC) +#define ZCL_CURRENT_TIER11_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7BD) +#define ZCL_CURRENT_TIER11_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7BE) +#define ZCL_CURRENT_TIER11_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7BF) +#define ZCL_CURRENT_TIER12_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7C0) +#define ZCL_CURRENT_TIER12_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7C1) +#define ZCL_CURRENT_TIER12_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7C2) +#define ZCL_CURRENT_TIER12_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7C3) +#define ZCL_CURRENT_TIER12_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7C4) +#define ZCL_CURRENT_TIER12_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7C5) +#define ZCL_CURRENT_TIER12_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7C6) +#define ZCL_CURRENT_TIER12_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7C7) +#define ZCL_CURRENT_TIER12_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7C8) +#define ZCL_CURRENT_TIER12_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7C9) +#define ZCL_CURRENT_TIER12_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7CA) +#define ZCL_CURRENT_TIER12_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7CB) +#define ZCL_CURRENT_TIER12_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7CC) +#define ZCL_CURRENT_TIER12_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7CD) +#define ZCL_CURRENT_TIER12_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7CE) +#define ZCL_CURRENT_TIER12_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7CF) +#define ZCL_CURRENT_TIER13_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7D0) +#define ZCL_CURRENT_TIER13_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7D1) +#define ZCL_CURRENT_TIER13_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7D2) +#define ZCL_CURRENT_TIER13_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7D3) +#define ZCL_CURRENT_TIER13_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7D4) +#define ZCL_CURRENT_TIER13_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7D5) +#define ZCL_CURRENT_TIER13_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7D6) +#define ZCL_CURRENT_TIER13_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7D7) +#define ZCL_CURRENT_TIER13_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7D8) +#define ZCL_CURRENT_TIER13_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7D9) +#define ZCL_CURRENT_TIER13_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7DA) +#define ZCL_CURRENT_TIER13_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7DB) +#define ZCL_CURRENT_TIER13_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7DC) +#define ZCL_CURRENT_TIER13_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7DD) +#define ZCL_CURRENT_TIER13_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7DE) +#define ZCL_CURRENT_TIER13_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7DF) +#define ZCL_CURRENT_TIER14_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7E0) +#define ZCL_CURRENT_TIER14_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7E1) +#define ZCL_CURRENT_TIER14_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7E2) +#define ZCL_CURRENT_TIER14_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7E3) +#define ZCL_CURRENT_TIER14_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7E4) +#define ZCL_CURRENT_TIER14_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7E5) +#define ZCL_CURRENT_TIER14_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7E6) +#define ZCL_CURRENT_TIER14_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7E7) +#define ZCL_CURRENT_TIER14_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7E8) +#define ZCL_CURRENT_TIER14_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7E9) +#define ZCL_CURRENT_TIER14_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7EA) +#define ZCL_CURRENT_TIER14_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7EB) +#define ZCL_CURRENT_TIER14_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7EC) +#define ZCL_CURRENT_TIER14_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7ED) +#define ZCL_CURRENT_TIER14_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7EE) +#define ZCL_CURRENT_TIER14_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7EF) +#define ZCL_CURRENT_TIER15_BLOCK1_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7F0) +#define ZCL_CURRENT_TIER15_BLOCK2_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7F1) +#define ZCL_CURRENT_TIER15_BLOCK3_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7F2) +#define ZCL_CURRENT_TIER15_BLOCK4_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7F3) +#define ZCL_CURRENT_TIER15_BLOCK5_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7F4) +#define ZCL_CURRENT_TIER15_BLOCK6_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7F5) +#define ZCL_CURRENT_TIER15_BLOCK7_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7F6) +#define ZCL_CURRENT_TIER15_BLOCK8_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7F7) +#define ZCL_CURRENT_TIER15_BLOCK9_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7F8) +#define ZCL_CURRENT_TIER15_BLOCK10_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7F9) +#define ZCL_CURRENT_TIER15_BLOCK11_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7FA) +#define ZCL_CURRENT_TIER15_BLOCK12_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7FB) +#define ZCL_CURRENT_TIER15_BLOCK13_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7FC) +#define ZCL_CURRENT_TIER15_BLOCK14_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7FD) +#define ZCL_CURRENT_TIER15_BLOCK15_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7FE) +#define ZCL_CURRENT_TIER15_BLOCK16_SUMMATION_DELIVERED_ATTRIBUTE_ID (0x7FF) +#define ZCL_GENERIC_ALARM_MASK_ATTRIBUTE_ID (0x800) +#define ZCL_ELECTRICITY_ALARM_MASK_ATTRIBUTE_ID (0x801) +#define ZCL_GENERIC_FLOW_PRESSURE_ALARM_MASK_ATTRIBUTE_ID (0x802) +#define ZCL_WATER_SPECIFIC_ALARM_MASK_ATTRIBUTE_ID (0x803) +#define ZCL_HEAT_AND_COOLING_SPECIFIC_ALARM_MASK_ATTRIBUTE_ID (0x804) +#define ZCL_GAS_SPECIFIC_ALARM_MASK_ATTRIBUTE_ID (0x805) +#define ZCL_METERING_EXTENDED_GENERIC_ALARM_MASK_ATTRIBUTE_ID (0x806) +#define ZCL_METERING_MANUFACTURE_ALARM_MASK_ATTRIBUTE_ID (0x807) +#define ZCL_CURRENT_NO_TIER_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x900) +#define ZCL_CURRENT_NO_TIER_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x901) +#define ZCL_CURRENT_NO_TIER_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x902) +#define ZCL_CURRENT_NO_TIER_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x903) +#define ZCL_CURRENT_NO_TIER_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x904) +#define ZCL_CURRENT_NO_TIER_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x905) +#define ZCL_CURRENT_NO_TIER_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x906) +#define ZCL_CURRENT_NO_TIER_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x907) +#define ZCL_CURRENT_NO_TIER_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x908) +#define ZCL_CURRENT_NO_TIER_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x909) +#define ZCL_CURRENT_NO_TIER_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x90A) +#define ZCL_CURRENT_NO_TIER_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x90B) +#define ZCL_CURRENT_NO_TIER_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x90C) +#define ZCL_CURRENT_NO_TIER_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x90D) +#define ZCL_CURRENT_NO_TIER_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x90E) +#define ZCL_CURRENT_NO_TIER_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x90F) +#define ZCL_CURRENT_TIER1_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x910) +#define ZCL_CURRENT_TIER1_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x911) +#define ZCL_CURRENT_TIER1_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x912) +#define ZCL_CURRENT_TIER1_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x913) +#define ZCL_CURRENT_TIER1_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x914) +#define ZCL_CURRENT_TIER1_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x915) +#define ZCL_CURRENT_TIER1_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x916) +#define ZCL_CURRENT_TIER1_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x917) +#define ZCL_CURRENT_TIER1_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x918) +#define ZCL_CURRENT_TIER1_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x919) +#define ZCL_CURRENT_TIER1_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x91A) +#define ZCL_CURRENT_TIER1_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x91B) +#define ZCL_CURRENT_TIER1_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x91C) +#define ZCL_CURRENT_TIER1_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x91D) +#define ZCL_CURRENT_TIER1_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x91E) +#define ZCL_CURRENT_TIER1_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x91F) +#define ZCL_CURRENT_TIER2_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x920) +#define ZCL_CURRENT_TIER2_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x921) +#define ZCL_CURRENT_TIER2_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x922) +#define ZCL_CURRENT_TIER2_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x923) +#define ZCL_CURRENT_TIER2_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x924) +#define ZCL_CURRENT_TIER2_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x925) +#define ZCL_CURRENT_TIER2_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x926) +#define ZCL_CURRENT_TIER2_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x927) +#define ZCL_CURRENT_TIER2_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x928) +#define ZCL_CURRENT_TIER2_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x929) +#define ZCL_CURRENT_TIER2_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x92A) +#define ZCL_CURRENT_TIER2_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x92B) +#define ZCL_CURRENT_TIER2_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x92C) +#define ZCL_CURRENT_TIER2_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x92D) +#define ZCL_CURRENT_TIER2_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x92E) +#define ZCL_CURRENT_TIER2_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x92F) +#define ZCL_CURRENT_TIER3_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x930) +#define ZCL_CURRENT_TIER3_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x931) +#define ZCL_CURRENT_TIER3_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x932) +#define ZCL_CURRENT_TIER3_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x933) +#define ZCL_CURRENT_TIER3_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x934) +#define ZCL_CURRENT_TIER3_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x935) +#define ZCL_CURRENT_TIER3_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x936) +#define ZCL_CURRENT_TIER3_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x937) +#define ZCL_CURRENT_TIER3_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x938) +#define ZCL_CURRENT_TIER3_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x939) +#define ZCL_CURRENT_TIER3_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x93A) +#define ZCL_CURRENT_TIER3_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x93B) +#define ZCL_CURRENT_TIER3_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x93C) +#define ZCL_CURRENT_TIER3_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x93D) +#define ZCL_CURRENT_TIER3_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x93E) +#define ZCL_CURRENT_TIER3_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x93F) +#define ZCL_CURRENT_TIER4_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x940) +#define ZCL_CURRENT_TIER4_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x941) +#define ZCL_CURRENT_TIER4_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x942) +#define ZCL_CURRENT_TIER4_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x943) +#define ZCL_CURRENT_TIER4_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x944) +#define ZCL_CURRENT_TIER4_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x945) +#define ZCL_CURRENT_TIER4_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x946) +#define ZCL_CURRENT_TIER4_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x947) +#define ZCL_CURRENT_TIER4_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x948) +#define ZCL_CURRENT_TIER4_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x949) +#define ZCL_CURRENT_TIER4_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x94A) +#define ZCL_CURRENT_TIER4_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x94B) +#define ZCL_CURRENT_TIER4_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x94C) +#define ZCL_CURRENT_TIER4_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x94D) +#define ZCL_CURRENT_TIER4_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x94E) +#define ZCL_CURRENT_TIER4_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x94F) +#define ZCL_CURRENT_TIER5_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x950) +#define ZCL_CURRENT_TIER5_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x951) +#define ZCL_CURRENT_TIER5_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x952) +#define ZCL_CURRENT_TIER5_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x953) +#define ZCL_CURRENT_TIER5_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x954) +#define ZCL_CURRENT_TIER5_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x955) +#define ZCL_CURRENT_TIER5_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x956) +#define ZCL_CURRENT_TIER5_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x957) +#define ZCL_CURRENT_TIER5_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x958) +#define ZCL_CURRENT_TIER5_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x959) +#define ZCL_CURRENT_TIER5_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x95A) +#define ZCL_CURRENT_TIER5_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x95B) +#define ZCL_CURRENT_TIER5_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x95C) +#define ZCL_CURRENT_TIER5_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x95D) +#define ZCL_CURRENT_TIER5_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x95E) +#define ZCL_CURRENT_TIER5_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x95F) +#define ZCL_CURRENT_TIER6_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x960) +#define ZCL_CURRENT_TIER6_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x961) +#define ZCL_CURRENT_TIER6_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x962) +#define ZCL_CURRENT_TIER6_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x963) +#define ZCL_CURRENT_TIER6_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x964) +#define ZCL_CURRENT_TIER6_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x965) +#define ZCL_CURRENT_TIER6_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x966) +#define ZCL_CURRENT_TIER6_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x967) +#define ZCL_CURRENT_TIER6_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x968) +#define ZCL_CURRENT_TIER6_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x969) +#define ZCL_CURRENT_TIER6_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x96A) +#define ZCL_CURRENT_TIER6_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x96B) +#define ZCL_CURRENT_TIER6_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x96C) +#define ZCL_CURRENT_TIER6_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x96D) +#define ZCL_CURRENT_TIER6_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x96E) +#define ZCL_CURRENT_TIER6_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x96F) +#define ZCL_CURRENT_TIER7_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x970) +#define ZCL_CURRENT_TIER7_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x971) +#define ZCL_CURRENT_TIER7_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x972) +#define ZCL_CURRENT_TIER7_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x973) +#define ZCL_CURRENT_TIER7_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x974) +#define ZCL_CURRENT_TIER7_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x975) +#define ZCL_CURRENT_TIER7_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x976) +#define ZCL_CURRENT_TIER7_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x977) +#define ZCL_CURRENT_TIER7_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x978) +#define ZCL_CURRENT_TIER7_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x979) +#define ZCL_CURRENT_TIER7_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x97A) +#define ZCL_CURRENT_TIER7_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x97B) +#define ZCL_CURRENT_TIER7_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x97C) +#define ZCL_CURRENT_TIER7_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x97D) +#define ZCL_CURRENT_TIER7_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x97E) +#define ZCL_CURRENT_TIER7_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x97F) +#define ZCL_CURRENT_TIER8_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x980) +#define ZCL_CURRENT_TIER8_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x981) +#define ZCL_CURRENT_TIER8_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x982) +#define ZCL_CURRENT_TIER8_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x983) +#define ZCL_CURRENT_TIER8_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x984) +#define ZCL_CURRENT_TIER8_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x985) +#define ZCL_CURRENT_TIER8_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x986) +#define ZCL_CURRENT_TIER8_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x987) +#define ZCL_CURRENT_TIER8_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x988) +#define ZCL_CURRENT_TIER8_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x989) +#define ZCL_CURRENT_TIER8_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x98A) +#define ZCL_CURRENT_TIER8_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x98B) +#define ZCL_CURRENT_TIER8_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x98C) +#define ZCL_CURRENT_TIER8_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x98D) +#define ZCL_CURRENT_TIER8_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x98E) +#define ZCL_CURRENT_TIER8_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x98F) +#define ZCL_CURRENT_TIER9_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x990) +#define ZCL_CURRENT_TIER9_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x991) +#define ZCL_CURRENT_TIER9_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x992) +#define ZCL_CURRENT_TIER9_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x993) +#define ZCL_CURRENT_TIER9_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x994) +#define ZCL_CURRENT_TIER9_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x995) +#define ZCL_CURRENT_TIER9_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x996) +#define ZCL_CURRENT_TIER9_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x997) +#define ZCL_CURRENT_TIER9_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x998) +#define ZCL_CURRENT_TIER9_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x999) +#define ZCL_CURRENT_TIER9_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x99A) +#define ZCL_CURRENT_TIER9_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x99B) +#define ZCL_CURRENT_TIER9_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x99C) +#define ZCL_CURRENT_TIER9_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x99D) +#define ZCL_CURRENT_TIER9_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x99E) +#define ZCL_CURRENT_TIER9_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x99F) +#define ZCL_CURRENT_TIER10_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9A0) +#define ZCL_CURRENT_TIER10_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9A1) +#define ZCL_CURRENT_TIER10_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9A2) +#define ZCL_CURRENT_TIER10_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9A3) +#define ZCL_CURRENT_TIER10_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9A4) +#define ZCL_CURRENT_TIER10_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9A5) +#define ZCL_CURRENT_TIER10_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9A6) +#define ZCL_CURRENT_TIER10_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9A7) +#define ZCL_CURRENT_TIER10_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9A8) +#define ZCL_CURRENT_TIER10_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9A9) +#define ZCL_CURRENT_TIER10_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9AA) +#define ZCL_CURRENT_TIER10_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9AB) +#define ZCL_CURRENT_TIER10_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9AC) +#define ZCL_CURRENT_TIER10_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9AD) +#define ZCL_CURRENT_TIER10_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9AE) +#define ZCL_CURRENT_TIER10_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9AF) +#define ZCL_CURRENT_TIER11_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9B0) +#define ZCL_CURRENT_TIER11_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9B1) +#define ZCL_CURRENT_TIER11_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9B2) +#define ZCL_CURRENT_TIER11_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9B3) +#define ZCL_CURRENT_TIER11_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9B4) +#define ZCL_CURRENT_TIER11_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9B5) +#define ZCL_CURRENT_TIER11_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9B6) +#define ZCL_CURRENT_TIER11_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9B7) +#define ZCL_CURRENT_TIER11_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9B8) +#define ZCL_CURRENT_TIER11_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9B9) +#define ZCL_CURRENT_TIER11_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9BA) +#define ZCL_CURRENT_TIER11_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9BB) +#define ZCL_CURRENT_TIER11_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9BC) +#define ZCL_CURRENT_TIER11_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9BD) +#define ZCL_CURRENT_TIER11_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9BE) +#define ZCL_CURRENT_TIER11_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9BF) +#define ZCL_CURRENT_TIER12_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9C0) +#define ZCL_CURRENT_TIER12_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9C1) +#define ZCL_CURRENT_TIER12_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9C2) +#define ZCL_CURRENT_TIER12_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9C3) +#define ZCL_CURRENT_TIER12_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9C4) +#define ZCL_CURRENT_TIER12_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9C5) +#define ZCL_CURRENT_TIER12_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9C6) +#define ZCL_CURRENT_TIER12_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9C7) +#define ZCL_CURRENT_TIER12_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9C8) +#define ZCL_CURRENT_TIER12_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9C9) +#define ZCL_CURRENT_TIER12_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9CA) +#define ZCL_CURRENT_TIER12_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9CB) +#define ZCL_CURRENT_TIER12_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9CC) +#define ZCL_CURRENT_TIER12_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9CD) +#define ZCL_CURRENT_TIER12_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9CE) +#define ZCL_CURRENT_TIER12_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9CF) +#define ZCL_CURRENT_TIER13_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9D0) +#define ZCL_CURRENT_TIER13_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9D1) +#define ZCL_CURRENT_TIER13_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9D2) +#define ZCL_CURRENT_TIER13_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9D3) +#define ZCL_CURRENT_TIER13_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9D4) +#define ZCL_CURRENT_TIER13_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9D5) +#define ZCL_CURRENT_TIER13_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9D6) +#define ZCL_CURRENT_TIER13_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9D7) +#define ZCL_CURRENT_TIER13_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9D8) +#define ZCL_CURRENT_TIER13_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9D9) +#define ZCL_CURRENT_TIER13_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9DA) +#define ZCL_CURRENT_TIER13_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9DB) +#define ZCL_CURRENT_TIER13_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9DC) +#define ZCL_CURRENT_TIER13_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9DD) +#define ZCL_CURRENT_TIER13_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9DE) +#define ZCL_CURRENT_TIER13_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9DF) +#define ZCL_CURRENT_TIER14_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9E0) +#define ZCL_CURRENT_TIER14_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9E1) +#define ZCL_CURRENT_TIER14_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9E2) +#define ZCL_CURRENT_TIER14_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9E3) +#define ZCL_CURRENT_TIER14_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9E4) +#define ZCL_CURRENT_TIER14_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9E5) +#define ZCL_CURRENT_TIER14_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9E6) +#define ZCL_CURRENT_TIER14_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9E7) +#define ZCL_CURRENT_TIER14_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9E8) +#define ZCL_CURRENT_TIER14_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9E9) +#define ZCL_CURRENT_TIER14_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9EA) +#define ZCL_CURRENT_TIER14_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9EB) +#define ZCL_CURRENT_TIER14_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9EC) +#define ZCL_CURRENT_TIER14_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9ED) +#define ZCL_CURRENT_TIER14_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9EE) +#define ZCL_CURRENT_TIER14_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9EF) +#define ZCL_CURRENT_TIER15_BLOCK1_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9F0) +#define ZCL_CURRENT_TIER15_BLOCK2_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9F1) +#define ZCL_CURRENT_TIER15_BLOCK3_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9F2) +#define ZCL_CURRENT_TIER15_BLOCK4_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9F3) +#define ZCL_CURRENT_TIER15_BLOCK5_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9F4) +#define ZCL_CURRENT_TIER15_BLOCK6_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9F5) +#define ZCL_CURRENT_TIER15_BLOCK7_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9F6) +#define ZCL_CURRENT_TIER15_BLOCK8_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9F7) +#define ZCL_CURRENT_TIER15_BLOCK9_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9F8) +#define ZCL_CURRENT_TIER15_BLOCK10_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9F9) +#define ZCL_CURRENT_TIER15_BLOCK11_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9FA) +#define ZCL_CURRENT_TIER15_BLOCK12_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9FB) +#define ZCL_CURRENT_TIER15_BLOCK13_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9FC) +#define ZCL_CURRENT_TIER15_BLOCK14_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9FD) +#define ZCL_CURRENT_TIER15_BLOCK15_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9FE) +#define ZCL_CURRENT_TIER15_BLOCK16_SUMMATION_RECEIVED_ATTRIBUTE_ID (0x9FF) +#define ZCL_BILL_TO_DATE_DELIVERED_ATTRIBUTE_ID (0xA00) +#define ZCL_BILL_TO_DATE_TIME_STAMP_DELIVERED_ATTRIBUTE_ID (0xA01) +#define ZCL_PROJECTED_BILL_DELIVERED_ATTRIBUTE_ID (0xA02) +#define ZCL_PROJECTED_BILL_TIME_STAMP_DELIVERED_ATTRIBUTE_ID (0xA03) +#define ZCL_BILL_DELIVERED_TRAILING_DIGIT_ATTRIBUTE_ID (0xA04) +#define ZCL_BILL_TO_DATE_RECEIVED_ATTRIBUTE_ID (0xA10) +#define ZCL_BILL_TO_DATE_TIME_STAMP_RECEIVED_ATTRIBUTE_ID (0xA11) +#define ZCL_PROJECTED_BILL_RECEIVED_ATTRIBUTE_ID (0xA12) +#define ZCL_PROJECTED_BILL_TIME_STAMP_RECEIVED_ATTRIBUTE_ID (0xA13) +#define ZCL_BILL_RECEIVED_TRAILING_DIGIT_ATTRIBUTE_ID (0xA14) +#define ZCL_PROPOSED_CHANGE_SUPPLY_IMPLEMENTATION_TIME_ATTRIBUTE_ID (0xB00) +#define ZCL_PROPOSED_CHANGE_SUPPLY_STATUS_ATTRIBUTE_ID (0xB01) +#define ZCL_UNCONTROLLED_FLOW_THESHOLD_ATTRIBUTE_ID (0xB10) +#define ZCL_UNCONTROLLED_FLOW_THESHOLD_UNIT_OF_MEASURE_ATTRIBUTE_ID (0xB11) +#define ZCL_UNCONTROLLED_FLOW_MULTIPLIER_ATTRIBUTE_ID (0xB12) +#define ZCL_UNCONTROLLED_FLOW_DIVISOR_ATTRIBUTE_ID (0xB13) +#define ZCL_FLOW_STABILIZATION_PERIOD_ATTRIBUTE_ID (0xB14) +#define ZCL_FLOW_MEASUREMENT_PERIOD_ATTRIBUTE_ID (0xB15) +#define ZCL_ALTERNATIVE_INSTANTANEOUS_DEMAND_ATTRIBUTE_ID (0xC00) +#define ZCL_CURRENT_ALTERNATIVE_DAY_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC01) +#define ZCL_CURRENT_ALTERNATIVE_DAY_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC02) +#define ZCL_PREVIOUS_DAY_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC03) +#define ZCL_PREVIOUS_DAY_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC04) +#define ZCL_CURRENT_ALTERNATIVE_PARTIAL_PROFILE_INTERVAL_START_TIME_DELIVERED_ATTRIBUTE_ID (0xC05) +#define ZCL_CURRENT_ALTERNATIVE_PARTIAL_PROFILE_INTERVAL_START_TIME_RECEIVED_ATTRIBUTE_ID (0xC06) +#define ZCL_CURRENT_ALTERNATIVE_PARTIAL_PROFILE_INTERVAL_VALUE_DELIVERED_ATTRIBUTE_ID (0xC07) +#define ZCL_CURRENT_ALTERNATIVE_PARTIAL_PROFILE_INTERVAL_VALUE_RECEIVED_ATTRIBUTE_ID (0xC08) +#define ZCL_CURRENT_ALTERNATIVE_DAY_MAX_PRESSURE_ATTRIBUTE_ID (0xC09) +#define ZCL_CURRENT_ALTERNATIVE_DAY_MIN_PRESSURE_ATTRIBUTE_ID (0xC0A) +#define ZCL_PREVIOUS_DAY_ALTERNATIVE_MAX_PRESSURE_ATTRIBUTE_ID (0xC0B) +#define ZCL_PREVIOUS_DAY_ALTERNATIVE_MIN_PRESSURE_ATTRIBUTE_ID (0xC0C) +#define ZCL_CURRENT_ALTERNATIVE_DAY_ALTERNATIVE_MAX_DEMAND_ATTRIBUTE_ID (0xC0D) +#define ZCL_PREVIOUS_DAY_ALTERNATIVE_MAX_DEMAND_ATTRIBUTE_ID (0xC0E) +#define ZCL_CURRENT_ALTERNATIVE_MONTH_MAX_DEMAND_ATTRIBUTE_ID (0xC0F) +#define ZCL_CURRENT_ALTERNATIVE_YEAR_MAX_DEMAND_ATTRIBUTE_ID (0xC10) +#define ZCL_PREVIOUS_DAY2_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC20) +#define ZCL_PREVIOUS_DAY2_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC21) +#define ZCL_PREVIOUS_DAY3_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC22) +#define ZCL_PREVIOUS_DAY3_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC23) +#define ZCL_PREVIOUS_DAY4_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC24) +#define ZCL_PREVIOUS_DAY4_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC25) +#define ZCL_PREVIOUS_DAY5_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC26) +#define ZCL_PREVIOUS_DAY5_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC27) +#define ZCL_PREVIOUS_DAY6_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC28) +#define ZCL_PREVIOUS_DAY6_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC29) +#define ZCL_PREVIOUS_DAY7_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC2A) +#define ZCL_PREVIOUS_DAY7_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC2B) +#define ZCL_PREVIOUS_DAY8_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC2C) +#define ZCL_PREVIOUS_DAY8_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC2D) +#define ZCL_CURRENT_WEEK_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC30) +#define ZCL_CURRENT_WEEK_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC31) +#define ZCL_PREVIOUS_WEEK_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC32) +#define ZCL_PREVIOUS_WEEK_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC33) +#define ZCL_PREVIOUS_WEEK2_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC34) +#define ZCL_PREVIOUS_WEEK2_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC35) +#define ZCL_PREVIOUS_WEEK3_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC36) +#define ZCL_PREVIOUS_WEEK3_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC37) +#define ZCL_PREVIOUS_WEEK4_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC38) +#define ZCL_PREVIOUS_WEEK4_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC39) +#define ZCL_PREVIOUS_WEEK5_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC3A) +#define ZCL_PREVIOUS_WEEK5_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC3B) +#define ZCL_CURRENT_MONTH_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC40) +#define ZCL_CURRENT_MONTH_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC41) +#define ZCL_PREVIOUS_MONTH_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC42) +#define ZCL_PREVIOUS_MONTH_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC43) +#define ZCL_PREVIOUS_MONTH2_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC44) +#define ZCL_PREVIOUS_MONTH2_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC45) +#define ZCL_PREVIOUS_MONTH3_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC46) +#define ZCL_PREVIOUS_MONTH3_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC47) +#define ZCL_PREVIOUS_MONTH4_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC48) +#define ZCL_PREVIOUS_MONTH4_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC49) +#define ZCL_PREVIOUS_MONTH5_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC4A) +#define ZCL_PREVIOUS_MONTH5_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC4B) +#define ZCL_PREVIOUS_MONTH6_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC4C) +#define ZCL_PREVIOUS_MONTH6_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC4D) +#define ZCL_PREVIOUS_MONTH7_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC4E) +#define ZCL_PREVIOUS_MONTH7_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC4F) +#define ZCL_PREVIOUS_MONTH8_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC50) +#define ZCL_PREVIOUS_MONTH8_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC51) +#define ZCL_PREVIOUS_MONTH9_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC52) +#define ZCL_PREVIOUS_MONTH9_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC53) +#define ZCL_PREVIOUS_MONTH10_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC54) +#define ZCL_PREVIOUS_MONTH10_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC55) +#define ZCL_PREVIOUS_MONTH11_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC56) +#define ZCL_PREVIOUS_MONTH11_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC57) +#define ZCL_PREVIOUS_MONTH12_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC58) +#define ZCL_PREVIOUS_MONTH12_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC59) +#define ZCL_PREVIOUS_MONTH13_ALTERNATIVE_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0xC5A) +#define ZCL_PREVIOUS_MONTH13_ALTERNATIVE_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0xC5B) +#define ZCL_CURRENT_DAY_ALTERNATIVE_MAX_DEMAND_DELIVERED_ATTRIBUTE_ID (0xC5C) +#define ZCL_CURRENT_DAY_ALTERNATIVE_MAX_DEMAND_DELIVERED_TIME_ATTRIBUTE_ID (0xC5D) +#define ZCL_CURRENT_DAY_ALTERNATIVE_MAX_DEMAND_RECEIVED_ATTRIBUTE_ID (0xC5E) +#define ZCL_CURRENT_DAY_ALTERNATIVE_MAX_DEMAND_RECEIVED_TIME_ATTRIBUTE_ID (0xC5F) +#define ZCL_PREVIOUS_DAY_ALTERNATIVE_MAX_DEMAND_DELIVERED_ATTRIBUTE_ID (0xC60) +#define ZCL_PREVIOUS_DAY_ALTERNATIVE_MAX_DEMAND_DELIVERED_TIME_ATTRIBUTE_ID (0xC61) +#define ZCL_PREVIOUS_DAY_ALTERNATIVE_MAX_DEMAND_RECEIVED_ATTRIBUTE_ID (0xC62) +#define ZCL_PREVIOUS_DAY_ALTERNATIVE_MAX_DEMAND_RECEIVED_TIME_ATTRIBUTE_ID (0xC63) +#define ZCL_CURRENT_ACTIVE_SUMMATION_Q1_ATTRIBUTE_ID (0xD01) +#define ZCL_CURRENT_ACTIVE_SUMMATION_Q2_ATTRIBUTE_ID (0xD02) +#define ZCL_CURRENT_ACTIVE_SUMMATION_Q3_ATTRIBUTE_ID (0xD03) +#define ZCL_CURRENT_ACTIVE_SUMMATION_Q4_ATTRIBUTE_ID (0xD04) +#define ZCL_CURRENT_REACTIVE_SUMMATION_Q1_ATTRIBUTE_ID (0xD05) +#define ZCL_CURRENT_REACTIVE_SUMMATION_Q2_ATTRIBUTE_ID (0xD06) +#define ZCL_CURRENT_REACTIVE_SUMMATION_Q3_ATTRIBUTE_ID (0xD07) +#define ZCL_CURRENT_REACTIVE_SUMMATION_Q4_ATTRIBUTE_ID (0xD08) +#define ZCL_SIMPLE_METERING_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_SIMPLE_METERING_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Simple Metering +#define ZCL_GET_PROFILE_RESPONSE_COMMAND_ID (0x0) +#define ZCL_GET_PROFILE_COMMAND_ID (0x0) +#define ZCL_REQUEST_MIRROR_COMMAND_ID (0x1) +#define ZCL_REQUEST_MIRROR_RESPONSE_COMMAND_ID (0x1) +#define ZCL_REMOVE_MIRROR_COMMAND_ID (0x2) +#define ZCL_MIRROR_REMOVED_COMMAND_ID (0x2) +#define ZCL_REQUEST_FAST_POLL_MODE_RESPONSE_COMMAND_ID (0x3) +#define ZCL_REQUEST_FAST_POLL_MODE_COMMAND_ID (0x3) +#define ZCL_SCHEDULE_SNAPSHOT_RESPONSE_COMMAND_ID (0x4) +#define ZCL_SCHEDULE_SNAPSHOT_COMMAND_ID (0x4) +#define ZCL_TAKE_SNAPSHOT_RESPONSE_COMMAND_ID (0x5) +#define ZCL_TAKE_SNAPSHOT_COMMAND_ID (0x5) +#define ZCL_PUBLISH_SNAPSHOT_COMMAND_ID (0x6) +#define ZCL_GET_SNAPSHOT_COMMAND_ID (0x6) +#define ZCL_GET_SAMPLED_DATA_RESPONSE_COMMAND_ID (0x7) +#define ZCL_START_SAMPLING_COMMAND_ID (0x7) +#define ZCL_CONFIGURE_MIRROR_COMMAND_ID (0x8) +#define ZCL_GET_SAMPLED_DATA_COMMAND_ID (0x8) +#define ZCL_CONFIGURE_NOTIFICATION_SCHEME_COMMAND_ID (0x9) +#define ZCL_MIRROR_REPORT_ATTRIBUTE_RESPONSE_COMMAND_ID (0x9) +#define ZCL_CONFIGURE_NOTIFICATION_FLAGS_COMMAND_ID (0xA) +#define ZCL_RESET_LOAD_LIMIT_COUNTER_COMMAND_ID (0xA) +#define ZCL_GET_NOTIFIED_MESSAGE_COMMAND_ID (0xB) +#define ZCL_CHANGE_SUPPLY_COMMAND_ID (0xB) +#define ZCL_SUPPLY_STATUS_RESPONSE_COMMAND_ID (0xC) +#define ZCL_LOCAL_CHANGE_SUPPLY_COMMAND_ID (0xC) +#define ZCL_START_SAMPLING_RESPONSE_COMMAND_ID (0xD) +#define ZCL_SET_SUPPLY_STATUS_COMMAND_ID (0xD) +#define ZCL_SET_UNCONTROLLED_FLOW_THRESHOLD_COMMAND_ID (0xE) + +// End of cluster: Simple Metering + +// Definitions for cluster: Messaging +#define ZCL_MESSAGING_CLUSTER_ID (0x703) + +// Client attributes for cluster: Messaging +#define ZCL_MESSAGING_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_MESSAGING_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Messaging +#define ZCL_MESSAGING_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_MESSAGING_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Messaging +#define ZCL_DISPLAY_MESSAGE_COMMAND_ID (0x0) +#define ZCL_GET_LAST_MESSAGE_COMMAND_ID (0x0) +#define ZCL_CANCEL_MESSAGE_COMMAND_ID (0x1) +#define ZCL_MESSAGE_CONFIRMATION_COMMAND_ID (0x1) +#define ZCL_DISPLAY_PROTECTED_MESSAGE_COMMAND_ID (0x2) +#define ZCL_GET_MESSAGE_CANCELLATION_COMMAND_ID (0x2) +#define ZCL_CANCEL_ALL_MESSAGES_COMMAND_ID (0x3) + +// End of cluster: Messaging + +// Definitions for cluster: Tunneling +#define ZCL_TUNNELING_CLUSTER_ID (0x704) + +// Client attributes for cluster: Tunneling +#define ZCL_TUNNELING_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_TUNNELING_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Tunneling +#define ZCL_CLOSE_TUNNEL_TIMEOUT_ATTRIBUTE_ID (0x0) +#define ZCL_TUNNELING_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_TUNNELING_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Tunneling +#define ZCL_REQUEST_TUNNEL_COMMAND_ID (0x0) +#define ZCL_REQUEST_TUNNEL_RESPONSE_COMMAND_ID (0x0) +#define ZCL_CLOSE_TUNNEL_COMMAND_ID (0x1) +#define ZCL_TRANSFER_DATA_SERVER_TO_CLIENT_COMMAND_ID (0x1) +#define ZCL_TRANSFER_DATA_CLIENT_TO_SERVER_COMMAND_ID (0x2) +#define ZCL_TRANSFER_DATA_ERROR_SERVER_TO_CLIENT_COMMAND_ID (0x2) +#define ZCL_TRANSFER_DATA_ERROR_CLIENT_TO_SERVER_COMMAND_ID (0x3) +#define ZCL_ACK_TRANSFER_DATA_SERVER_TO_CLIENT_COMMAND_ID (0x3) +#define ZCL_ACK_TRANSFER_DATA_CLIENT_TO_SERVER_COMMAND_ID (0x4) +#define ZCL_READY_DATA_SERVER_TO_CLIENT_COMMAND_ID (0x4) +#define ZCL_READY_DATA_CLIENT_TO_SERVER_COMMAND_ID (0x5) +#define ZCL_SUPPORTED_TUNNEL_PROTOCOLS_RESPONSE_COMMAND_ID (0x5) +#define ZCL_GET_SUPPORTED_TUNNEL_PROTOCOLS_COMMAND_ID (0x6) +#define ZCL_TUNNEL_CLOSURE_NOTIFICATION_COMMAND_ID (0x6) + +// End of cluster: Tunneling + +// Definitions for cluster: Prepayment +#define ZCL_PREPAYMENT_CLUSTER_ID (0x705) + +// Client attributes for cluster: Prepayment +#define ZCL_PREPAYMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_PREPAYMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Prepayment +#define ZCL_PAYMENT_CONTROL_CONFIGURATION_ATTRIBUTE_ID (0x0) +#define ZCL_CREDIT_REMAINING_ATTRIBUTE_ID (0x1) +#define ZCL_EMERGENCY_CREDIT_REMAINING_ATTRIBUTE_ID (0x2) +#define ZCL_CREDIT_STATUS_ATTRIBUTE_ID (0x3) +#define ZCL_CREDIT_REMAINING_TIMESTAMP_ATTRIBUTE_ID (0x4) +#define ZCL_ACCUMULATED_DEBT_ATTRIBUTE_ID (0x5) +#define ZCL_OVERALL_DEBT_CAP_ATTRIBUTE_ID (0x6) +#define ZCL_EMERGENCY_CREDIT_LIMIT_ALLOWANCE_ATTRIBUTE_ID (0x10) +#define ZCL_EMERGENCY_CREDIT_THRESHOLD_ATTRIBUTE_ID (0x11) +#define ZCL_TOTAL_CREDIT_ADDED_ATTRIBUTE_ID (0x20) +#define ZCL_MAX_CREDIT_LIMIT_ATTRIBUTE_ID (0x21) +#define ZCL_MAX_CREDIT_PER_TOP_UP_ATTRIBUTE_ID (0x22) +#define ZCL_FRIENDLY_CREDIT_WARNING_ATTRIBUTE_ID (0x30) +#define ZCL_LOW_CREDIT_WARNING_ATTRIBUTE_ID (0x31) +#define ZCL_IHD_LOW_CREDIT_WARNING_ATTRIBUTE_ID (0x32) +#define ZCL_INTERRUPT_SUSPEND_TIME_ATTRIBUTE_ID (0x33) +#define ZCL_REMAINING_FRIENDLY_CREDIT_TIME_ATTRIBUTE_ID (0x34) +#define ZCL_NEXT_FRIENDLY_CREDIT_PERIOD_ATTRIBUTE_ID (0x35) +#define ZCL_CUT_OFF_VALUE_ATTRIBUTE_ID (0x40) +#define ZCL_TOKEN_CARRIER_ID_ATTRIBUTE_ID (0x80) +#define ZCL_TOP_UP_DATE_TIME_1_ATTRIBUTE_ID (0x100) +#define ZCL_TOP_UP_AMOUNT_1_ATTRIBUTE_ID (0x101) +#define ZCL_TOP_UP_ORIGINATING_DEVICE_1_ATTRIBUTE_ID (0x102) +#define ZCL_TOP_UP_CODE_1_ATTRIBUTE_ID (0x103) +#define ZCL_TOP_UP_DATE_TIME_2_ATTRIBUTE_ID (0x110) +#define ZCL_TOP_UP_AMOUNT_2_ATTRIBUTE_ID (0x111) +#define ZCL_TOP_UP_ORIGINATING_DEVICE_2_ATTRIBUTE_ID (0x112) +#define ZCL_TOP_UP_CODE_2_ATTRIBUTE_ID (0x113) +#define ZCL_TOP_UP_DATE_TIME_3_ATTRIBUTE_ID (0x120) +#define ZCL_TOP_UP_AMOUNT_3_ATTRIBUTE_ID (0x121) +#define ZCL_TOP_UP_ORIGINATING_DEVICE_3_ATTRIBUTE_ID (0x122) +#define ZCL_TOP_UP_CODE_3_ATTRIBUTE_ID (0x123) +#define ZCL_TOP_UP_DATE_TIME_4_ATTRIBUTE_ID (0x130) +#define ZCL_TOP_UP_AMOUNT_4_ATTRIBUTE_ID (0x131) +#define ZCL_TOP_UP_ORIGINATING_DEVICE_4_ATTRIBUTE_ID (0x132) +#define ZCL_TOP_UP_CODE_4_ATTRIBUTE_ID (0x133) +#define ZCL_TOP_UP_DATE_TIME_5_ATTRIBUTE_ID (0x140) +#define ZCL_TOP_UP_AMOUNT_5_ATTRIBUTE_ID (0x141) +#define ZCL_TOP_UP_ORIGINATING_DEVICE_5_ATTRIBUTE_ID (0x142) +#define ZCL_TOP_UP_CODE_5_ATTRIBUTE_ID (0x143) +#define ZCL_DEBT_LABEL_1_ATTRIBUTE_ID (0x210) +#define ZCL_DEBT_AMOUNT_1_ATTRIBUTE_ID (0x211) +#define ZCL_DEBT_RECOVERY_METHOD_1_ATTRIBUTE_ID (0x212) +#define ZCL_DEBT_RECOVERY_START_TIME_1_ATTRIBUTE_ID (0x213) +#define ZCL_DEBT_RECOVERY_COLLECTION_TIME_1_ATTRIBUTE_ID (0x214) +#define ZCL_DEBT_RECOVERY_FREQUENCY_1_ATTRIBUTE_ID (0x216) +#define ZCL_DEBT_RECOVERY_AMOUNT_1_ATTRIBUTE_ID (0x217) +#define ZCL_DEBT_RECOVERY_TOP_UP_PERCENTAGE_1_ATTRIBUTE_ID (0x219) +#define ZCL_DEBT_LABEL_2_ATTRIBUTE_ID (0x220) +#define ZCL_DEBT_AMOUNT_2_ATTRIBUTE_ID (0x221) +#define ZCL_DEBT_RECOVERY_METHOD_2_ATTRIBUTE_ID (0x222) +#define ZCL_DEBT_RECOVERY_START_TIME_2_ATTRIBUTE_ID (0x223) +#define ZCL_DEBT_RECOVERY_COLLECTION_TIME_2_ATTRIBUTE_ID (0x224) +#define ZCL_DEBT_RECOVERY_FREQUENCY_2_ATTRIBUTE_ID (0x226) +#define ZCL_DEBT_RECOVERY_AMOUNT_2_ATTRIBUTE_ID (0x227) +#define ZCL_DEBT_RECOVERY_TOP_UP_PERCENTAGE_2_ATTRIBUTE_ID (0x229) +#define ZCL_DEBT_LABEL_3_ATTRIBUTE_ID (0x230) +#define ZCL_DEBT_AMOUNT_3_ATTRIBUTE_ID (0x231) +#define ZCL_DEBT_RECOVERY_METHOD_3_ATTRIBUTE_ID (0x232) +#define ZCL_DEBT_RECOVERY_START_TIME_3_ATTRIBUTE_ID (0x233) +#define ZCL_DEBT_RECOVERY_COLLECTION_TIME_3_ATTRIBUTE_ID (0x234) +#define ZCL_DEBT_RECOVERY_FREQUENCY_3_ATTRIBUTE_ID (0x236) +#define ZCL_DEBT_RECOVERY_AMOUNT_3_ATTRIBUTE_ID (0x237) +#define ZCL_DEBT_RECOVERY_TOP_UP_PERCENTAGE_3_ATTRIBUTE_ID (0x239) +#define ZCL_PREPAYMENT_ALARM_STATUS_ATTRIBUTE_ID (0x400) +#define ZCL_PREPAY_GENERIC_ALARM_MASK_ATTRIBUTE_ID (0x401) +#define ZCL_PREPAY_SWITCH_ALARM_MASK_ATTRIBUTE_ID (0x402) +#define ZCL_PREPAY_EVENT_ALARM_MASK_ATTRIBUTE_ID (0x403) +#define ZCL_HISTORICAL_COST_CONSUMPTION_FORMATTING_ATTRIBUTE_ID (0x500) +#define ZCL_CONSUMPTION_UNIT_OF_MEASUREMENT_ATTRIBUTE_ID (0x501) +#define ZCL_CURRENCY_SCALING_FACTOR_ATTRIBUTE_ID (0x502) +#define ZCL_PREPAYMANT_CURRENCY_ATTRIBUTE_ID (0x503) +#define ZCL_CURRENT_DAY_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x51C) +#define ZCL_CURRENT_DAY_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x51D) +#define ZCL_PREVIOUS_DAY_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x51E) +#define ZCL_PREVIOUS_DAY_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x51F) +#define ZCL_PREVIOUS_DAY_2_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x520) +#define ZCL_PREVIOUS_DAY_2_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x521) +#define ZCL_PREVIOUS_DAY_3_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x522) +#define ZCL_PREVIOUS_DAY_3_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x523) +#define ZCL_PREVIOUS_DAY_4_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x524) +#define ZCL_PREVIOUS_DAY_4_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x525) +#define ZCL_PREVIOUS_DAY_5_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x526) +#define ZCL_PREVIOUS_DAY_5_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x527) +#define ZCL_PREVIOUS_DAY_6_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x528) +#define ZCL_PREVIOUS_DAY_6_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x529) +#define ZCL_PREVIOUS_DAY_7_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x52A) +#define ZCL_PREVIOUS_DAY_7_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x52B) +#define ZCL_PREVIOUS_DAY_8_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x52C) +#define ZCL_PREVIOUS_DAY_8_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x52D) +#define ZCL_CURRENT_WEEK_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x530) +#define ZCL_CURRENT_WEEK_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x531) +#define ZCL_PREVIOUS_WEEK_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x532) +#define ZCL_PREVIOUS_WEEK_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x533) +#define ZCL_PREVIOUS_WEEK_2_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x534) +#define ZCL_PREVIOUS_WEEK_2_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x535) +#define ZCL_PREVIOUS_WEEK_3_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x536) +#define ZCL_PREVIOUS_WEEK_3_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x537) +#define ZCL_PREVIOUS_WEEK_4_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x538) +#define ZCL_PREVIOUS_WEEK_4_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x539) +#define ZCL_PREVIOUS_WEEK_5_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x53A) +#define ZCL_PREVIOUS_WEEK_5_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x53B) +#define ZCL_CURRENT_MONTH_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x540) +#define ZCL_CURRENT_MONTH_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x541) +#define ZCL_PREVIOUS_MONTH_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x542) +#define ZCL_PREVIOUS_MONTH_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x543) +#define ZCL_PREVIOUS_MONTH_2_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x544) +#define ZCL_PREVIOUS_MONTH_2_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x545) +#define ZCL_PREVIOUS_MONTH_3_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x546) +#define ZCL_PREVIOUS_MONTH_3_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x547) +#define ZCL_PREVIOUS_MONTH_4_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x548) +#define ZCL_PREVIOUS_MONTH_4_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x549) +#define ZCL_PREVIOUS_MONTH_5_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x54A) +#define ZCL_PREVIOUS_MONTH_5_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x54B) +#define ZCL_PREVIOUS_MONTH_6_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x54C) +#define ZCL_PREVIOUS_MONTH_6_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x54D) +#define ZCL_PREVIOUS_MONTH_7_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x54E) +#define ZCL_PREVIOUS_MONTH_7_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x54F) +#define ZCL_PREVIOUS_MONTH_8_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x550) +#define ZCL_PREVIOUS_MONTH_8_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x551) +#define ZCL_PREVIOUS_MONTH_9_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x552) +#define ZCL_PREVIOUS_MONTH_9_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x553) +#define ZCL_PREVIOUS_MONTH_10_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x554) +#define ZCL_PREVIOUS_MONTH_10_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x555) +#define ZCL_PREVIOUS_MONTH_11_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x556) +#define ZCL_PREVIOUS_MONTH_11_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x557) +#define ZCL_PREVIOUS_MONTH_12_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x558) +#define ZCL_PREVIOUS_MONTH_12_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x559) +#define ZCL_PREVIOUS_MONTH_13_COST_CONSUMPTION_DELIVERED_ATTRIBUTE_ID (0x55A) +#define ZCL_PREVIOUS_MONTH_13_COST_CONSUMPTION_RECEIVED_ATTRIBUTE_ID (0x55B) +#define ZCL_PREPAYMENT_HISTORICAL_FREEZE_TIME_ATTRIBUTE_ID (0x55C) +#define ZCL_PREPAYMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_PREPAYMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Prepayment +#define ZCL_SELECT_AVAILABLE_EMERGENCY_CREDIT_COMMAND_ID (0x0) +#define ZCL_PUBLISH_PREPAY_SNAPSHOT_COMMAND_ID (0x1) +#define ZCL_CHANGE_DEBT_COMMAND_ID (0x2) +#define ZCL_CHANGE_PAYMENT_MODE_RESPONSE_COMMAND_ID (0x2) +#define ZCL_EMERGENCY_CREDIT_SETUP_COMMAND_ID (0x3) +#define ZCL_CONSUMER_TOP_UP_RESPONSE_COMMAND_ID (0x3) +#define ZCL_CONSUMER_TOP_UP_COMMAND_ID (0x4) +#define ZCL_CREDIT_ADJUSTMENT_COMMAND_ID (0x5) +#define ZCL_PUBLISH_TOP_UP_LOG_COMMAND_ID (0x5) +#define ZCL_CHANGE_PAYMENT_MODE_COMMAND_ID (0x6) +#define ZCL_PUBLISH_DEBT_LOG_COMMAND_ID (0x6) +#define ZCL_GET_PREPAY_SNAPSHOT_COMMAND_ID (0x7) +#define ZCL_GET_TOP_UP_LOG_COMMAND_ID (0x8) +#define ZCL_SET_LOW_CREDIT_WARNING_LEVEL_COMMAND_ID (0x9) +#define ZCL_GET_DEBT_REPAYMENT_LOG_COMMAND_ID (0xA) +#define ZCL_SET_MAXIMUM_CREDIT_LIMIT_COMMAND_ID (0xB) +#define ZCL_SET_OVERALL_DEBT_CAP_COMMAND_ID (0xC) + +// End of cluster: Prepayment + +// Definitions for cluster: Energy Management +#define ZCL_ENERGY_MANAGEMENT_CLUSTER_ID (0x706) + +// Client attributes for cluster: Energy Management +#define ZCL_ENERGY_MANAGEMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ENERGY_MANAGEMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Energy Management +#define ZCL_LOAD_CONTROL_STATE_ATTRIBUTE_ID (0x0) +#define ZCL_CURRENT_EVENT_ID_ATTRIBUTE_ID (0x1) +#define ZCL_CURRENT_EVENT_STATUS_ATTRIBUTE_ID (0x2) +#define ZCL_CONFORMANCE_LEVEL_ATTRIBUTE_ID (0x3) +#define ZCL_MINIMUM_OFF_TIME_ATTRIBUTE_ID (0x4) +#define ZCL_MINIMUM_ON_TIME_ATTRIBUTE_ID (0x5) +#define ZCL_MINIMUM_CYCLE_PERIOD_ATTRIBUTE_ID (0x6) +#define ZCL_ENERGY_MANAGEMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ENERGY_MANAGEMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Energy Management +#define ZCL_REPORT_EVENT_STATUS_COMMAND_ID (0x0) +#define ZCL_MANAGE_EVENT_COMMAND_ID (0x0) + +// End of cluster: Energy Management + +// Definitions for cluster: Calendar +#define ZCL_CALENDAR_CLUSTER_ID (0x707) + +// Client attributes for cluster: Calendar +#define ZCL_CALENDAR_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_CALENDAR_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Calendar +#define ZCL_AUXILIARY_SWITCH_1_LABEL_ATTRIBUTE_ID (0x0) +#define ZCL_AUXILIARY_SWITCH_2_LABEL_ATTRIBUTE_ID (0x1) +#define ZCL_AUXILIARY_SWITCH_3_LABEL_ATTRIBUTE_ID (0x2) +#define ZCL_AUXILIARY_SWITCH_4_LABEL_ATTRIBUTE_ID (0x3) +#define ZCL_AUXILIARY_SWITCH_5_LABEL_ATTRIBUTE_ID (0x4) +#define ZCL_AUXILIARY_SWITCH_6_LABEL_ATTRIBUTE_ID (0x5) +#define ZCL_AUXILIARY_SWITCH_7_LABEL_ATTRIBUTE_ID (0x6) +#define ZCL_AUXILIARY_SWITCH_8_LABEL_ATTRIBUTE_ID (0x7) +#define ZCL_CALENDAR_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_CALENDAR_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Calendar +#define ZCL_PUBLISH_CALENDAR_COMMAND_ID (0x0) +#define ZCL_GET_CALENDAR_COMMAND_ID (0x0) +#define ZCL_PUBLISH_DAY_PROFILE_COMMAND_ID (0x1) +#define ZCL_GET_DAY_PROFILES_COMMAND_ID (0x1) +#define ZCL_PUBLISH_WEEK_PROFILE_COMMAND_ID (0x2) +#define ZCL_GET_WEEK_PROFILES_COMMAND_ID (0x2) +#define ZCL_PUBLISH_SEASONS_COMMAND_ID (0x3) +#define ZCL_GET_SEASONS_COMMAND_ID (0x3) +#define ZCL_PUBLISH_SPECIAL_DAYS_COMMAND_ID (0x4) +#define ZCL_GET_SPECIAL_DAYS_COMMAND_ID (0x4) +#define ZCL_CANCEL_CALENDAR_COMMAND_ID (0x5) +#define ZCL_GET_CALENDAR_CANCELLATION_COMMAND_ID (0x5) + +// End of cluster: Calendar + +// Definitions for cluster: Device Management +#define ZCL_DEVICE_MANAGEMENT_CLUSTER_ID (0x708) + +// Client attributes for cluster: Device Management +#define ZCL_PROVIDER_ID_CLIENT_ATTRIBUTE_ID (0x0) +#define ZCL_RECEIVED_PROVIDER_ID_CLIENT_ATTRIBUTE_ID (0x10) +#define ZCL_TOU_TARIFF_ACTIVATION_ATTRIBUTE_ID (0x100) +#define ZCL_BLOCK_TARIFF_ACTIVATED_ATTRIBUTE_ID (0x101) +#define ZCL_BLOCK_TOU_TARIFF_ACTIVATED_ATTRIBUTE_ID (0x102) +#define ZCL_SINGLE_TARIFF_RATE_ACTIVATED_ATTRIBUTE_ID (0x103) +#define ZCL_ASYNCHRONOUS_BILLING_OCCURRED_ATTRIBUTE_ID (0x104) +#define ZCL_SYNCHRONOUS_BILLING_OCCURRED_ATTRIBUTE_ID (0x105) +#define ZCL_TARIFF_NOT_SUPPORTED_ATTRIBUTE_ID (0x106) +#define ZCL_PRICE_CLUSTER_NOT_FOUND_ATTRIBUTE_ID (0x107) +#define ZCL_CURRENCY_CHANGE_PASSIVE_ACTIVATED_ATTRIBUTE_ID (0x108) +#define ZCL_CURRENCY_CHANGE_PASSIVE_UPDATED_ATTRIBUTE_ID (0x109) +#define ZCL_PRICE_MATRIX_PASSIVE_ACTIVATED_ATTRIBUTE_ID (0x10A) +#define ZCL_PRICE_MATRIX_PASSIVE_UPDATED_ATTRIBUTE_ID (0x10B) +#define ZCL_TARIFF_CHANGE_PASSIVE_ACTIVATED_ATTRIBUTE_ID (0x10C) +#define ZCL_TARIFF_CHANGE_PASSIVE_UPDATED_ATTRIBUTE_ID (0x10D) +#define ZCL_PUBLISH_PRICE_RECEIVED_ATTRIBUTE_ID (0x1B0) +#define ZCL_PUBLISH_PRICE_ACTIONED_ATTRIBUTE_ID (0x1B1) +#define ZCL_PUBLISH_PRICE_CANCELLED_ATTRIBUTE_ID (0x1B2) +#define ZCL_PUBLISH_PRICE_REJECTED_ATTRIBUTE_ID (0x1B3) +#define ZCL_PUBLISH_TARIFF_INFO_RECEIVED_ATTRIBUTE_ID (0x1B4) +#define ZCL_PUBLISH_TARIFF_INFO_ACTIONED_ATTRIBUTE_ID (0x1B5) +#define ZCL_PUBLISH_TARIFF_INFO_CANCELLED_ATTRIBUTE_ID (0x1B6) +#define ZCL_PUBLISH_TARIFF_INFO_REJECTED_ATTRIBUTE_ID (0x1B7) +#define ZCL_PUBLISH_PRICE_MATRIX_RECEIVED_ATTRIBUTE_ID (0x1B8) +#define ZCL_PUBLISH_PRICE_MATRIX_ACTIONED_ATTRIBUTE_ID (0x1B9) +#define ZCL_PUBLISH_PRICE_MATRIX_CANCELLED_ATTRIBUTE_ID (0x1BA) +#define ZCL_PUBLISH_PRICE_MATRIX_REJECTED_ATTRIBUTE_ID (0x1BB) +#define ZCL_PUBLISH_BLOCK_THRESHOLDS_RECEIVED_ATTRIBUTE_ID (0x1BC) +#define ZCL_PUBLISH_BLOCK_THRESHOLDS_ACTIONED_ATTRIBUTE_ID (0x1BD) +#define ZCL_PUBLISH_BLOCK_THRESHOLDS_CANCELLED_ATTRIBUTE_ID (0x1BE) +#define ZCL_PUBLISH_BLOCK_THRESHOLDS_REJECTED_ATTRIBUTE_ID (0x1BF) +#define ZCL_PUBLISH_CALORIFIC_VALUE_RECEIVED_ATTRIBUTE_ID (0x1C0) +#define ZCL_PUBLISH_CALORIFIC_VALUE_ACTIONED_ATTRIBUTE_ID (0x1C1) +#define ZCL_PUBLISH_CALORIFIC_VALUE_CANCELLED_ATTRIBUTE_ID (0x1C2) +#define ZCL_PUBLISH_CALORIFIC_VALUE_REJECTED_ATTRIBUTE_ID (0x1C3) +#define ZCL_PUBLISH_CONVERSION_FACTOR_RECEIVED_ATTRIBUTE_ID (0x1C4) +#define ZCL_PUBLISH_CONVERSION_FACTOR_ACTIONED_ATTRIBUTE_ID (0x1C5) +#define ZCL_PUBLISH_CONVERSION_FACTOR_CANCELLED_ATTRIBUTE_ID (0x1C6) +#define ZCL_PUBLISH_CONVERSION_FACTOR_REJECTED_ATTRIBUTE_ID (0x1C7) +#define ZCL_PUBLISH_CO2_VALUE_RECEIVED_ATTRIBUTE_ID (0x1C8) +#define ZCL_PUBLISH_CO2_VALUE_ACTIONED_ATTRIBUTE_ID (0x1C9) +#define ZCL_PUBLISH_CO2_VALUE_CANCELLED_ATTRIBUTE_ID (0x1CA) +#define ZCL_PUBLISH_CO2_VALUE_REJECTED_ATTRIBUTE_ID (0x1CB) +#define ZCL_PUBLISH_CPP_EVENT_RECEIVED_ATTRIBUTE_ID (0x1CC) +#define ZCL_PUBLISH_CPP_EVENT_ACTIONED_ATTRIBUTE_ID (0x1CD) +#define ZCL_PUBLISH_CPP_EVENT_CANCELLED_ATTRIBUTE_ID (0x1CE) +#define ZCL_PUBLISH_CPP_EVENT_REJECTED_ATTRIBUTE_ID (0x1CF) +#define ZCL_PUBLISH_TIER_LABELS_RECEIVED_ATTRIBUTE_ID (0x1D0) +#define ZCL_PUBLISH_TIER_LABELS_ACTIONED_ATTRIBUTE_ID (0x1D1) +#define ZCL_PUBLISH_TIER_LABELS_CANCELLED_ATTRIBUTE_ID (0x1D2) +#define ZCL_PUBLISH_TIER_LABELS_REJECTED_ATTRIBUTE_ID (0x1D3) +#define ZCL_PUBLISH_BILLING_PERIOD_RECEIVED_ATTRIBUTE_ID (0x1D4) +#define ZCL_PUBLISH_BILLING_PERIOD_ACTIONED_ATTRIBUTE_ID (0x1D5) +#define ZCL_PUBLISH_BILLING_PERIOD_CANCELLED_ATTRIBUTE_ID (0x1D6) +#define ZCL_PUBLISH_BILLING_PERIOD_REJECTED_ATTRIBUTE_ID (0x1D7) +#define ZCL_PUBLISH_CONSOLIDATED_BILL_RECEIVED_ATTRIBUTE_ID (0x1D8) +#define ZCL_PUBLISH_CONSOLIDATED_BILL_ACTIONED_ATTRIBUTE_ID (0x1D9) +#define ZCL_PUBLISH_CONSOLIDATED_BILL_CANCELLED_ATTRIBUTE_ID (0x1DA) +#define ZCL_PUBLISH_CONSOLIDATED_BILL_REJECTED_ATTRIBUTE_ID (0x1DB) +#define ZCL_PUBLISH_BLOCK_PERIOD_RECEIVED_ATTRIBUTE_ID (0x1DC) +#define ZCL_PUBLISH_BLOCK_PERIOD_ACTIONED_ATTRIBUTE_ID (0x1DD) +#define ZCL_PUBLISH_BLOCK_PERIOD_CANCELLED_ATTRIBUTE_ID (0x1DE) +#define ZCL_PUBLISH_BLOCK_PERIOD_REJECTED_ATTRIBUTE_ID (0x1DF) +#define ZCL_PUBLISH_CREDIT_PAYMENT_INFO_RECEIVED_ATTRIBUTE_ID (0x1E0) +#define ZCL_PUBLISH_CREDIT_PAYMENT_INFO_ACTIONED_ATTRIBUTE_ID (0x1E1) +#define ZCL_PUBLISH_CREDIT_PAYMENT_INFO_CANCELLED_ATTRIBUTE_ID (0x1E2) +#define ZCL_PUBLISH_CREDIT_PAYMENT_INFO_REJECTED_ATTRIBUTE_ID (0x1E3) +#define ZCL_PUBLISH_CURRENCY_CONVERSION_RECEIVED_ATTRIBUTE_ID (0x1E4) +#define ZCL_PUBLISH_CURRENCY_CONVERSION_ACTIONED_ATTRIBUTE_ID (0x1E5) +#define ZCL_PUBLISH_CURRENCY_CONVERSION_CANCELLED_ATTRIBUTE_ID (0x1E6) +#define ZCL_PUBLISH_CURRENCY_CONVERSION_REJECTED_ATTRIBUTE_ID (0x1E7) +#define ZCL_CHECK_METER_ATTRIBUTE_ID (0x200) +#define ZCL_LOW_BATTERY_ATTRIBUTE_ID (0x201) +#define ZCL_TAMPER_DETECT_ATTRIBUTE_ID (0x202) +#define ZCL_DEVICE_MANAGEMENT_SUPPLY_STATUS_ATTRIBUTE_ID (0x203) +#define ZCL_SUPPLY_QUALITY_ATTRIBUTE_ID (0x204) +#define ZCL_LEAK_DETECT_ATTRIBUTE_ID (0x205) +#define ZCL_SERVICE_DISCONNECT_ATTRIBUTE_ID (0x206) +#define ZCL_REVERSE_FLOW_GENERAL_ATTRIBUTE_ID (0x207) +#define ZCL_METER_COVER_REMOVED_ATTRIBUTE_ID (0x208) +#define ZCL_METER_COVER_CLOSED_ATTRIBUTE_ID (0x209) +#define ZCL_STRONG_MAGNETIC_FIELD_ATTRIBUTE_ID (0x20A) +#define ZCL_NO_STRONG_MAGNETIC_FIELD_ATTRIBUTE_ID (0x20B) +#define ZCL_BATTERY_FAILURE_ATTRIBUTE_ID (0x20C) +#define ZCL_PROGRAM_MEMORY_ERROR_ATTRIBUTE_ID (0x20D) +#define ZCL_RAM_ERROR_ATTRIBUTE_ID (0x20E) +#define ZCL_NV_MEMORY_ERROR_ATTRIBUTE_ID (0x20F) +#define ZCL_LOW_VOLTAGE_L1_ATTRIBUTE_ID (0x210) +#define ZCL_HIGH_VOLTAGE_L1_ATTRIBUTE_ID (0x211) +#define ZCL_LOW_VOLTAGE_L2_ATTRIBUTE_ID (0x212) +#define ZCL_HIGH_VOLTAGE_L2_ATTRIBUTE_ID (0x213) +#define ZCL_LOW_VOLTAGE_L3_ATTRIBUTE_ID (0x214) +#define ZCL_HIGH_VOLTAGE_L3_ATTRIBUTE_ID (0x215) +#define ZCL_OVER_CURRENT_L1_ATTRIBUTE_ID (0x216) +#define ZCL_OVER_CURRENT_L2_ATTRIBUTE_ID (0x217) +#define ZCL_OVER_CURRENT_L3_ATTRIBUTE_ID (0x218) +#define ZCL_FREQUENCY_TOO_LOW_L1_ATTRIBUTE_ID (0x219) +#define ZCL_FREQUENCY_TOO_HIGH_L1_ATTRIBUTE_ID (0x21A) +#define ZCL_FREQUENCY_TOO_LOW_L2_ATTRIBUTE_ID (0x21B) +#define ZCL_FREQUENCY_TOO_HIGH_L2_ATTRIBUTE_ID (0x21C) +#define ZCL_FREQUENCY_TOO_LOW_L3_ATTRIBUTE_ID (0x21D) +#define ZCL_FREQUENCY_TOO_HIGH_L3_ATTRIBUTE_ID (0x21E) +#define ZCL_GROUND_FAULT_ATTRIBUTE_ID (0x21F) +#define ZCL_ELECTRIC_TAMPER_DETECT_ATTRIBUTE_ID (0x220) +#define ZCL_INCORRECT_POLARITY_ATTRIBUTE_ID (0x221) +#define ZCL_CURRENT_NO_VOLTAGE_ATTRIBUTE_ID (0x222) +#define ZCL_UNDER_VOLTAGE_ATTRIBUTE_ID (0x223) +#define ZCL_OVER_VOLTAGE_ATTRIBUTE_ID (0x224) +#define ZCL_NORMAL_VOLTAGE_ATTRIBUTE_ID (0x225) +#define ZCL_PF_BELOW_THRESHOLD_ATTRIBUTE_ID (0x226) +#define ZCL_PF_ABOVE_THRESHOLD_ATTRIBUTE_ID (0x227) +#define ZCL_TERMINAL_COVER_REMOVED_ATTRIBUTE_ID (0x228) +#define ZCL_TERMINAL_COVER_CLOSED_ATTRIBUTE_ID (0x229) +#define ZCL_BURST_DETECT_ATTRIBUTE_ID (0x230) +#define ZCL_PRESSURE_TOO_LOW_ATTRIBUTE_ID (0x231) +#define ZCL_PRESSURE_TOO_HIGH_ATTRIBUTE_ID (0x232) +#define ZCL_FLOW_SENSOR_COMMUNICATION_ERROR_ATTRIBUTE_ID (0x233) +#define ZCL_FLOW_SENSOR_MEASUREMENT_FAULT_ATTRIBUTE_ID (0x234) +#define ZCL_FLOW_SENSOR_REVERSE_FLOW_ATTRIBUTE_ID (0x235) +#define ZCL_FLOW_SENSOR_AIR_DETECT_ATTRIBUTE_ID (0x236) +#define ZCL_PIPE_EMPTY_ATTRIBUTE_ID (0x237) +#define ZCL_INLET_TEMP_SENSOR_FAULT_ATTRIBUTE_ID (0x250) +#define ZCL_OUTLET_TEMP_SENSOR_FAULT_ATTRIBUTE_ID (0x251) +#define ZCL_REVERSE_FLOW_ATTRIBUTE_ID (0x260) +#define ZCL_TILT_TAMPER_ATTRIBUTE_ID (0x261) +#define ZCL_BATTERY_COVER_REMOVED_ATTRIBUTE_ID (0x262) +#define ZCL_BATTERY_COVER_CLOSED_ATTRIBUTE_ID (0x263) +#define ZCL_EXCESS_FLOW_ATTRIBUTE_ID (0x264) +#define ZCL_TILT_TAMPER_ENABLED_ATTRIBUTE_ID (0x265) +#define ZCL_MEASUREMENT_SYSTEM_ERROR_ATTRIBUTE_ID (0x270) +#define ZCL_WATCHDOG_ERROR_ATTRIBUTE_ID (0x271) +#define ZCL_SUPPLY_DISCONNECT_FAILURE_ATTRIBUTE_ID (0x272) +#define ZCL_SUPPLY_CONNECT_FAILURE_ATTRIBUTE_ID (0x273) +#define ZCL_MEASUREMENT_SOFTWARE_CHANGED_ATTRIBUTE_ID (0x274) +#define ZCL_DST_ENABLED_ATTRIBUTE_ID (0x275) +#define ZCL_DST_DISABLED_ATTRIBUTE_ID (0x276) +#define ZCL_CLOCK_ADJ_BACKWARD_ATTRIBUTE_ID (0x277) +#define ZCL_CLOCK_ADJ_FORWARD_ATTRIBUTE_ID (0x278) +#define ZCL_CLOCK_INVALID_ATTRIBUTE_ID (0x279) +#define ZCL_COMMUNICATION_ERROR_HAN_ATTRIBUTE_ID (0x27A) +#define ZCL_COMMUNICATION_OK_HAN_ATTRIBUTE_ID (0x27B) +#define ZCL_METER_FRAUD_ATTEMPT_ATTRIBUTE_ID (0x27C) +#define ZCL_POWER_LOSS_ATTRIBUTE_ID (0x27D) +#define ZCL_UNUSUAL_HAN_TRAFFIC_ATTRIBUTE_ID (0x27E) +#define ZCL_UNEXPECTED_CLOCK_CHANGE_ATTRIBUTE_ID (0x27F) +#define ZCL_COMMS_USING_UNAUTHENTICATED_COMPONENT_ATTRIBUTE_ID (0x280) +#define ZCL_METERING_ERROR_REG_CLEAR_ATTRIBUTE_ID (0x281) +#define ZCL_METERING_ALARM_REG_CLEAR_ATTRIBUTE_ID (0x282) +#define ZCL_UNEXPECTED_HW_RESET_ATTRIBUTE_ID (0x283) +#define ZCL_UNEXPECTED_PROGRAM_EXECUTION_ATTRIBUTE_ID (0x284) +#define ZCL_LIMIT_THRESHOLD_EXCEEDED_ATTRIBUTE_ID (0x285) +#define ZCL_LIMIT_THRESHOLD_OK_ATTRIBUTE_ID (0x286) +#define ZCL_LIMIT_THRESHOLD_CHANGED_ATTRIBUTE_ID (0x287) +#define ZCL_MAXIMUM_DEMAND_EXCEEDED_ATTRIBUTE_ID (0x288) +#define ZCL_PROFILE_CLEARED_ATTRIBUTE_ID (0x289) +#define ZCL_LOAD_PROFILE_CLEARED_ATTRIBUTE_ID (0x28A) +#define ZCL_BATTERY_WARN_ATTRIBUTE_ID (0x28B) +#define ZCL_WRONG_SIGNATURE_ATTRIBUTE_ID (0x28C) +#define ZCL_NO_SIGNATURE_ATTRIBUTE_ID (0x28D) +#define ZCL_SIGNATURE_NOT_VALID_ATTRIBUTE_ID (0x28E) +#define ZCL_UNAUTHORISE_ACTION_FROM_HAN_ATTRIBUTE_ID (0x28F) +#define ZCL_FAST_POLLING_START_ATTRIBUTE_ID (0x290) +#define ZCL_FAST_POLLING_END_ATTRIBUTE_ID (0x291) +#define ZCL_METER_REPORTING_INTERVAL_CHANGED_ATTRIBUTE_ID (0x292) +#define ZCL_DISCONNECT_TO_LOAD_LIMIT_ATTRIBUTE_ID (0x293) +#define ZCL_METER_SUPPLY_STATUS_REGISTER_CHANGED_ATTRIBUTE_ID (0x294) +#define ZCL_METER_ALARM_STATUS_REGISTER_CHANGED_ATTRIBUTE_ID (0x295) +#define ZCL_EXTENDED_METER_ALARM_STATUS_REGISTER_CHANGED_ATTRIBUTE_ID (0x296) +#define ZCL_DATA_ACCESS_VIA_LOCAL_PORT_ATTRIBUTE_ID (0x297) +#define ZCL_CONFIGURE_MIRROR_SUCCESS_ATTRIBUTE_ID (0x298) +#define ZCL_CONFIGURE_MIRROR_FAILURE_ATTRIBUTE_ID (0x299) +#define ZCL_CONFIGURE_NOTIFICATION_FLAG_SCHEME_SUCCESS_ATTRIBUTE_ID (0x29A) +#define ZCL_CONFIGURE_NOTIFICATION_FLAG_SCHEME_FAILURE_ATTRIBUTE_ID (0x29B) +#define ZCL_CONFIGURE_NOTIFICATION_FLAGS_SUCCESS_ATTRIBUTE_ID (0x29C) +#define ZCL_CONFIGURE_NOTIFICATION_FLAGS_FAILURE_ATTRIBUTE_ID (0x29D) +#define ZCL_STAY_AWAKE_REQUEST_HAN_ATTRIBUTE_ID (0x29E) +#define ZCL_STAY_AWAKE_REQUEST_WAN_ATTRIBUTE_ID (0x29F) +#define ZCL_MANUFACTURER_SPECIFIC_A_ATTRIBUTE_ID (0x2B0) +#define ZCL_MANUFACTURER_SPECIFIC_B_ATTRIBUTE_ID (0x2B1) +#define ZCL_MANUFACTURER_SPECIFIC_C_ATTRIBUTE_ID (0x2B2) +#define ZCL_MANUFACTURER_SPECIFIC_D_ATTRIBUTE_ID (0x2B3) +#define ZCL_MANUFACTURER_SPECIFIC_E_ATTRIBUTE_ID (0x2B4) +#define ZCL_MANUFACTURER_SPECIFIC_F_ATTRIBUTE_ID (0x2B5) +#define ZCL_MANUFACTURER_SPECIFIC_G_ATTRIBUTE_ID (0x2B6) +#define ZCL_MANUFACTURER_SPECIFIC_H_ATTRIBUTE_ID (0x2B7) +#define ZCL_MANUFACTURER_SPECIFIC_I_ATTRIBUTE_ID (0x2B8) +#define ZCL_GET_PROFILE_COMMAND_RECEIVED_ATTRIBUTE_ID (0x2C0) +#define ZCL_GET_PROFILE_COMMAND_ACTIONED_ATTRIBUTE_ID (0x2C1) +#define ZCL_GET_PROFILE_COMMAND_CANCELLED_ATTRIBUTE_ID (0x2C2) +#define ZCL_GET_PROFILE_COMMAND_REJECTED_ATTRIBUTE_ID (0x2C3) +#define ZCL_REQUEST_MIRROR_RESPONSE_COMMAND_RECEIVED_ATTRIBUTE_ID (0x2C4) +#define ZCL_REQUEST_MIRROR_RESPONSE_COMMAND_ACTIONED_ATTRIBUTE_ID (0x2C5) +#define ZCL_REQUEST_MIRROR_RESPONSE_COMMAND_CANCELLED_ATTRIBUTE_ID (0x2C6) +#define ZCL_REQUEST_MIRROR_RESPONSE_COMMAND_REJECTED_ATTRIBUTE_ID (0x2C7) +#define ZCL_MIRROR_REMOVED_COMMAND_RECEIVED_ATTRIBUTE_ID (0x2C8) +#define ZCL_MIRROR_REMOVED_COMMAND_ACTIONED_ATTRIBUTE_ID (0x2C9) +#define ZCL_MIRROR_REMOVED_COMMAND_CANCELLED_ATTRIBUTE_ID (0x2CA) +#define ZCL_MIRROR_REMOVED_COMMAND_REJECTED_ATTRIBUTE_ID (0x2CB) +#define ZCL_GET_SNAPSHOT_COMMAND_RECEIVED_ATTRIBUTE_ID (0x2CC) +#define ZCL_GET_SNAPSHOT_COMMAND_ACTIONED_ATTRIBUTE_ID (0x2CD) +#define ZCL_GET_SNAPSHOT_COMMAND_CANCELLED_ATTRIBUTE_ID (0x2CE) +#define ZCL_GET_SNAPSHOT_COMMAND_REJECTED_ATTRIBUTE_ID (0x2CF) +#define ZCL_TAKE_SNAPSHOT_COMMAND_RECEIVED_ATTRIBUTE_ID (0x2D0) +#define ZCL_TAKE_SNAPSHOT_COMMAND_ACTIONED_ATTRIBUTE_ID (0x2D1) +#define ZCL_TAKE_SNAPSHOT_COMMAND_CANCELLED_ATTRIBUTE_ID (0x2D2) +#define ZCL_TAKE_SNAPSHOT_COMMAND_REJECTED_ATTRIBUTE_ID (0x2D3) +#define ZCL_MIRROR_REPORT_ATTRIBUTE_RESPONSE_COMMAND_RECEIVED_ATTRIBUTE_ID (0x2D4) +#define ZCL_MIRROR_REPORT_ATTRIBUTE_RESPONSE_COMMAND_ACTIONED_ATTRIBUTE_ID (0x2D5) +#define ZCL_MIRROR_REPORT_ATTRIBUTE_RESPONSE_COMMAND_CANCELLED_ATTRIBUTE_ID (0x2D6) +#define ZCL_MIRROR_REPORT_ATTRIBUTE_RESPONSE_COMMAND_REJECTED_ATTRIBUTE_ID (0x2D7) +#define ZCL_SCHEDULE_SNAPSHOT_COMMAND_RECEIVED_ATTRIBUTE_ID (0x2D8) +#define ZCL_SCHEDULE_SNAPSHOT_COMMAND_ACTIONED_ATTRIBUTE_ID (0x2D9) +#define ZCL_SCHEDULE_SNAPSHOT_COMMAND_CANCELLED_ATTRIBUTE_ID (0x2DA) +#define ZCL_SCHEDULE_SNAPSHOT_COMMAND_REJECTED_ATTRIBUTE_ID (0x2DB) +#define ZCL_START_SAMPLING_COMMAND_RECEIVED_ATTRIBUTE_ID (0x2DC) +#define ZCL_START_SAMPLING_COMMAND_ACTIONED_ATTRIBUTE_ID (0x2DD) +#define ZCL_START_SAMPLING_COMMAND_CANCELLED_ATTRIBUTE_ID (0x2DE) +#define ZCL_START_SAMPLING_COMMAND_REJECTED_ATTRIBUTE_ID (0x2DF) +#define ZCL_GET_SAMPLED_DATA_COMMAND_RECEIVED_ATTRIBUTE_ID (0x2E0) +#define ZCL_GET_SAMPLED_DATA_COMMAND_ACTIONED_ATTRIBUTE_ID (0x2E1) +#define ZCL_GET_SAMPLED_DATA_COMMAND_CANCELLED_ATTRIBUTE_ID (0x2E2) +#define ZCL_GET_SAMPLED_DATA_COMMAND_REJECTED_ATTRIBUTE_ID (0x2E3) +#define ZCL_SUPPLY_ON_ATTRIBUTE_ID (0x2E4) +#define ZCL_SUPPLY_ARMED_ATTRIBUTE_ID (0x2E5) +#define ZCL_SUPPLY_OFF_ATTRIBUTE_ID (0x2E6) +#define ZCL_DISCONNECTED_DUE_TO_TAMPER_DETECTED_ATTRIBUTE_ID (0x2E7) +#define ZCL_MANUAL_DISCONNECT_ATTRIBUTE_ID (0x2E8) +#define ZCL_MANUAL_CONNECT_ATTRIBUTE_ID (0x2E9) +#define ZCL_REMOTE_DISCONNECTION_ATTRIBUTE_ID (0x2EA) +#define ZCL_REMOTE_CONNECT_ATTRIBUTE_ID (0x2EB) +#define ZCL_LOCAL_DISCONNECTION_ATTRIBUTE_ID (0x2EC) +#define ZCL_LOCAL_CONNECT_ATTRIBUTE_ID (0x2ED) +#define ZCL_CHANGE_SUPPLY_RECEIVED_ATTRIBUTE_ID (0x2EE) +#define ZCL_CHANGE_SUPPLY_ACTIONED_ATTRIBUTE_ID (0x2EF) +#define ZCL_CHANGE_SUPPLY_CANCELLED_ATTRIBUTE_ID (0x2F0) +#define ZCL_CHANGE_SUPPLY_REJECTED_ATTRIBUTE_ID (0x2F1) +#define ZCL_LOCAL_CHANGE_SUPPLY_RECEIVED_ATTRIBUTE_ID (0x2F2) +#define ZCL_LOCAL_CHANGE_SUPPLY_ACTIONED_ATTRIBUTE_ID (0x2F3) +#define ZCL_LOCAL_CHANGE_SUPPLY_CANCELLED_ATTRIBUTE_ID (0x2F4) +#define ZCL_LOCAL_CHANGE_SUPPLY_REJECTED_ATTRIBUTE_ID (0x2F5) +#define ZCL_PUBLISH_UNCONTROLLED_FLOW_THRESHOLD_RECEIVED_ATTRIBUTE_ID (0x2F6) +#define ZCL_PUBLISH_UNCONTROLLED_FLOW_THRESHOLD_ACTIONED_ATTRIBUTE_ID (0x2F7) +#define ZCL_PUBLISH_UNCONTROLLED_FLOW_THRESHOLD_CANCELLED_ATTRIBUTE_ID (0x2F8) +#define ZCL_PUBLISH_UNCONTROLLED_FLOW_THRESHOLD_REJECTED_ATTRIBUTE_ID (0x2F9) +#define ZCL_MESSAGE_CONFIRMATION_SENT_ATTRIBUTE_ID (0x300) +#define ZCL_DISPLAY_MESSAGE_RECEIVED_ATTRIBUTE_ID (0x3C0) +#define ZCL_DISPLAY_MESSAGE_ACTIONED_ATTRIBUTE_ID (0x3C1) +#define ZCL_DISPLAY_MESSAGE_CANCELLED_ATTRIBUTE_ID (0x3C2) +#define ZCL_DISPLAY_MESSAGE_REJECTED_ATTRIBUTE_ID (0x3C3) +#define ZCL_CANCEL_MESSAGE_RECEIVED_ATTRIBUTE_ID (0x3C4) +#define ZCL_CANCEL_MESSAGE_ACTIONED_ATTRIBUTE_ID (0x3C5) +#define ZCL_CANCEL_MESSAGE_CANCELLED_ATTRIBUTE_ID (0x3C6) +#define ZCL_CANCEL_MESSAGE_REJECTED_ATTRIBUTE_ID (0x3C7) +#define ZCL_LOW_CREDIT_ATTRIBUTE_ID (0x400) +#define ZCL_NO_CREDIT_ATTRIBUTE_ID (0x401) +#define ZCL_CREDIT_EXHAUSTED_ATTRIBUTE_ID (0x402) +#define ZCL_EMERGENCY_CREDIT_ENABLED_ATTRIBUTE_ID (0x403) +#define ZCL_EMERGENCY_CREDIT_EXHAUSTED_ATTRIBUTE_ID (0x404) +#define ZCL_PREPAY_IHD_LOW_CREDIT_WARNING_ATTRIBUTE_ID (0x405) +#define ZCL_PHYSICAL_ATTACK_ON_THE_PREPAY_METER_ATTRIBUTE_ID (0x420) +#define ZCL_ELECTRONIC_ATTACK_ON_THE_PREPAY_METER_ATTRIBUTE_ID (0x421) +#define ZCL_DISCOUNT_APPLIED_ATTRIBUTE_ID (0x422) +#define ZCL_CREDIT_ADJUSTMENT_ATTRIBUTE_ID (0x423) +#define ZCL_CREDIT_ADJUST_FAIL_ATTRIBUTE_ID (0x424) +#define ZCL_DEBT_ADJUSTMENT_ATTRIBUTE_ID (0x425) +#define ZCL_DEBT_ADJUST_FAIL_ATTRIBUTE_ID (0x426) +#define ZCL_MODE_CHANGE_ATTRIBUTE_ID (0x427) +#define ZCL_TOPUP_CODE_ERROR_ATTRIBUTE_ID (0x428) +#define ZCL_TOPUP_ALREADY_USED_ATTRIBUTE_ID (0x429) +#define ZCL_TOPUP_CODE_INVALID_ATTRIBUTE_ID (0x42A) +#define ZCL_TOPUP_ACCEPTED_VIA_REMOTE_ATTRIBUTE_ID (0x42B) +#define ZCL_TOPUP_ACCEPTED_VIA_MANUAL_ENTRY_ATTRIBUTE_ID (0x42C) +#define ZCL_FRIENDLY_CREDIT_IN_USE_ATTRIBUTE_ID (0x42D) +#define ZCL_FRIENDLY_CREDIT_END_WARNING_ATTRIBUTE_ID (0x42E) +#define ZCL_FRIENDLY_CREDIT_PERIOD_END_ATTRIBUTE_ID (0x42F) +#define ZCL_PREPAY_ERROR_REG_CLEAR_ATTRIBUTE_ID (0x430) +#define ZCL_PREPAY_ALARM_REG_CLEAR_ATTRIBUTE_ID (0x431) +#define ZCL_PREPAY_CLUSTER_NOT_FOUND_ATTRIBUTE_ID (0x432) +#define ZCL_TOPUP_VALUE_TOO_LARGE_ATTRIBUTE_ID (0x433) +#define ZCL_MODE_CREDIT_2_PREPAY_ATTRIBUTE_ID (0x441) +#define ZCL_MODE_PREPAY_2_CREDIT_ATTRIBUTE_ID (0x442) +#define ZCL_MODE_DEFAULT_ATTRIBUTE_ID (0x443) +#define ZCL_SELECT_AVAILABLE_EMERGENCY_CREDIT_RECEIVED_ATTRIBUTE_ID (0x4C0) +#define ZCL_SELECT_AVAILABLE_EMERGENCY_CREDIT_ACTIONED_ATTRIBUTE_ID (0x4C1) +#define ZCL_SELECT_AVAILABLE_EMERGENCY_CREDIT_CANCELLED_ATTRIBUTE_ID (0x4C2) +#define ZCL_SELECT_AVAILABLE_EMERGENCY_CREDIT_REJECTED_ATTRIBUTE_ID (0x4C3) +#define ZCL_CHANGE_DEBT_RECEIVED_ATTRIBUTE_ID (0x4C4) +#define ZCL_CHANGE_DEBT_ACTIONED_ATTRIBUTE_ID (0x4C5) +#define ZCL_CHANGE_DEBT_CANCELLED_ATTRIBUTE_ID (0x4C6) +#define ZCL_CHANGE_DEBT_REJECTED_ATTRIBUTE_ID (0x4C7) +#define ZCL_EMERGENCY_CREDIT_SETUP_RECEIVED_ATTRIBUTE_ID (0x4C8) +#define ZCL_EMERGENCY_CREDIT_SETUP_ACTIONED_ATTRIBUTE_ID (0x4C9) +#define ZCL_EMERGENCY_CREDIT_SETUP_CANCELLED_ATTRIBUTE_ID (0x4CA) +#define ZCL_EMERGENCY_CREDIT_SETUP_REJECTED_ATTRIBUTE_ID (0x4CB) +#define ZCL_CONSUMER_TOPUP_RECEIVED_ATTRIBUTE_ID (0x4CC) +#define ZCL_CONSUMER_TOPUP_ACTIONED_ATTRIBUTE_ID (0x4CD) +#define ZCL_CONSUMER_TOPUP_CANCELLED_ATTRIBUTE_ID (0x4CE) +#define ZCL_CONSUMER_TOPUP_REJECTED_ATTRIBUTE_ID (0x4CF) +#define ZCL_CREDIT_ADJUSTMENT_RECEIVED_ATTRIBUTE_ID (0x4D0) +#define ZCL_CREDIT_ADJUSTMENT_ACTIONED_ATTRIBUTE_ID (0x4D1) +#define ZCL_CREDIT_ADJUSTMENT_CANCELLED_ATTRIBUTE_ID (0x4D2) +#define ZCL_CREDIT_ADJUSTMENT_REJECTED_ATTRIBUTE_ID (0x4D3) +#define ZCL_CHANGE_PAYMENT_MODE_RECEIVED_ATTRIBUTE_ID (0x4D4) +#define ZCL_CHANGE_PAYMENT_MODE_ACTIONED_ATTRIBUTE_ID (0x4D5) +#define ZCL_CHANGE_PAYMENT_MODE_CANCELLED_ATTRIBUTE_ID (0x4D6) +#define ZCL_CHANGE_PAYMENT_MODE_REJECTED_ATTRIBUTE_ID (0x4D7) +#define ZCL_GET_PREPAY_SNAPSHOT_RECEIVED_ATTRIBUTE_ID (0x4D8) +#define ZCL_GET_PREPAY_SNAPSHOT_ACTIONED_ATTRIBUTE_ID (0x4D9) +#define ZCL_GET_PREPAY_SNAPSHOT_CANCELLED_ATTRIBUTE_ID (0x4DA) +#define ZCL_GET_PREPAY_SNAPSHOT_REJECTED_ATTRIBUTE_ID (0x4DB) +#define ZCL_GET_TOPUP_LOG_RECEIVED_ATTRIBUTE_ID (0x4DC) +#define ZCL_GET_TOPUP_LOG_ACTIONED_ATTRIBUTE_ID (0x4DD) +#define ZCL_GET_TOPUP_LOG_CANCELLED_ATTRIBUTE_ID (0x4DE) +#define ZCL_GET_TOPUP_LOG_REJECTED_ATTRIBUTE_ID (0x4DF) +#define ZCL_SET_LOW_CREDIT_WARNING_LEVEL_RECEIVED_ATTRIBUTE_ID (0x4E0) +#define ZCL_SET_LOW_CREDIT_WARNING_LEVEL_ACTIONED_ATTRIBUTE_ID (0x4E1) +#define ZCL_SET_LOW_CREDIT_WARNING_LEVEL_CANCELLED_ATTRIBUTE_ID (0x4E2) +#define ZCL_SET_LOW_CREDIT_WARNING_LEVEL_REJECTED_ATTRIBUTE_ID (0x4E3) +#define ZCL_GET_DEBT_REPAY_LOG_RECEIVED_ATTRIBUTE_ID (0x4E4) +#define ZCL_GET_DEBT_REPAY_LOG_ACTIONED_ATTRIBUTE_ID (0x4E5) +#define ZCL_GET_DEBT_REPAY_LOG_CANCELLED_ATTRIBUTE_ID (0x4E6) +#define ZCL_GET_DEBT_REPAY_LOG_REJECTED_ATTRIBUTE_ID (0x4E7) +#define ZCL_SET_MAXIMUM_CREDIT_LIMIT_RECEIVED_ATTRIBUTE_ID (0x4E8) +#define ZCL_SET_MAXIMUM_CREDIT_LIMIT_ACTIONED_ATTRIBUTE_ID (0x4E9) +#define ZCL_SET_MAXIMUM_CREDIT_LIMIT_CANCELLED_ATTRIBUTE_ID (0x4EA) +#define ZCL_SET_MAXIMUM_CREDIT_LIMIT_REJECTED_ATTRIBUTE_ID (0x4EB) +#define ZCL_SET_OVERALL_DEBT_CAP_RECEIVED_ATTRIBUTE_ID (0x4EC) +#define ZCL_SET_OVERALL_DEBT_CAP_ACTIONED_ATTRIBUTE_ID (0x4ED) +#define ZCL_SET_OVERALL_DEBT_CAP_CANCELLED_ATTRIBUTE_ID (0x4EE) +#define ZCL_SET_OVERALL_DEBT_CAP_REJECTED_ATTRIBUTE_ID (0x4EF) +#define ZCL_CALENDAR_CLUSTER_NOT_FOUND_ATTRIBUTE_ID (0x500) +#define ZCL_CALENDAR_CHANGE_PASSIVE_ACTIVATED_ATTRIBUTE_ID (0x501) +#define ZCL_CALENDAR_CHANGE_PASSIVE_UPDATED_ATTRIBUTE_ID (0x502) +#define ZCL_PUBLISH_CALENDAR_RECEIVED_ATTRIBUTE_ID (0x5C0) +#define ZCL_PUBLISH_CALENDAR_ACTIONED_ATTRIBUTE_ID (0x5C1) +#define ZCL_PUBLISH_CALENDAR_CANCELLED_ATTRIBUTE_ID (0x5C2) +#define ZCL_PUBLISH_CALENDAR_REJECTED_ATTRIBUTE_ID (0x5C3) +#define ZCL_PUBLISH_DAY_PROFILE_RECEIVED_ATTRIBUTE_ID (0x5C4) +#define ZCL_PUBLISH_DAY_PROFILE_ACTIONED_ATTRIBUTE_ID (0x5C5) +#define ZCL_PUBLISH_DAY_PROFILE_CANCELLED_ATTRIBUTE_ID (0x5C6) +#define ZCL_PUBLISH_DAY_PROFILE_REJECTED_ATTRIBUTE_ID (0x5C7) +#define ZCL_PUBLISH_WEEK_PROFILE_RECEIVED_ATTRIBUTE_ID (0x5C8) +#define ZCL_PUBLISH_WEEK_PROFILE_ACTIONED_ATTRIBUTE_ID (0x5C9) +#define ZCL_PUBLISH_WEEK_PROFILE_CANCELLED_ATTRIBUTE_ID (0x5CA) +#define ZCL_PUBLISH_WEEK_PROFILE_REJECTED_ATTRIBUTE_ID (0x5CB) +#define ZCL_PUBLISH_SEASONS_RECEIVED_ATTRIBUTE_ID (0x5CC) +#define ZCL_PUBLISH_SEASONS_ACTIONED_ATTRIBUTE_ID (0x5CD) +#define ZCL_PUBLISH_SEASONS_CANCELLED_ATTRIBUTE_ID (0x5CE) +#define ZCL_PUBLISH_SEASONS_REJECTED_ATTRIBUTE_ID (0x5CF) +#define ZCL_PUBLISH_SPECIAL_DAYS_RECEIVED_ATTRIBUTE_ID (0x5D0) +#define ZCL_PUBLISH_SPECIAL_DAYS_ACTIONED_ATTRIBUTE_ID (0x5D1) +#define ZCL_PUBLISH_SPECIAL_DAYS_CANCELLED_ATTRIBUTE_ID (0x5D2) +#define ZCL_PUBLISH_SPECIAL_DAYS_REJECTED_ATTRIBUTE_ID (0x5D3) +#define ZCL_PASSWORD_1_CHANGE_ATTRIBUTE_ID (0x600) +#define ZCL_PASSWORD_2_CHANGE_ATTRIBUTE_ID (0x601) +#define ZCL_PASSWORD_3_CHANGE_ATTRIBUTE_ID (0x602) +#define ZCL_PASSWORD_4_CHANGE_ATTRIBUTE_ID (0x603) +#define ZCL_EVENT_LOG_CLEARED_ATTRIBUTE_ID (0x604) +#define ZCL_ZIGBEE_APS_TIMEOUT_ATTRIBUTE_ID (0x610) +#define ZCL_ZIGBEE_IEEE_TRANSMISSION_FAILURE_OVER_THRESHOLD_ATTRIBUTE_ID (0x611) +#define ZCL_ZIGBEE_IEEE_FRAME_CHECK_SEQUENCE_THRESHOLD_ATTRIBUTE_ID (0x612) +#define ZCL_ERROR_CERTIFICATE_ATTRIBUTE_ID (0x613) +#define ZCL_ERROR_SIGNATURE_ATTRIBUTE_ID (0x614) +#define ZCL_ERROR_PROGRAM_STORAGE_ATTRIBUTE_ID (0x615) +#define ZCL_PUBLISH_COT_RECEIVED_ATTRIBUTE_ID (0x6C0) +#define ZCL_PUBLISH_COT_ACTIONED_ATTRIBUTE_ID (0x6C1) +#define ZCL_PUBLISH_COT_CANCELLED_ATTRIBUTE_ID (0x6C2) +#define ZCL_PUBLISH_COT_REJECTED_ATTRIBUTE_ID (0x6C3) +#define ZCL_PUBLISH_COS_RECEIVED_ATTRIBUTE_ID (0x6C4) +#define ZCL_PUBLISH_COS_ACTIONED_ATTRIBUTE_ID (0x6C5) +#define ZCL_PUBLISH_COS_CANCELLED_ATTRIBUTE_ID (0x6C6) +#define ZCL_PUBLISH_COS_REJECTED_ATTRIBUTE_ID (0x6C7) +#define ZCL_CHANGE_PASSWORD_RECEIVED_ATTRIBUTE_ID (0x6C8) +#define ZCL_CHANGE_PASSWORD_ACTIONED_ATTRIBUTE_ID (0x6C9) +#define ZCL_CHANGE_PASSWORD_CANCELLED_ATTRIBUTE_ID (0x6CA) +#define ZCL_CHANGE_PASSWORD_REJECTED_ATTRIBUTE_ID (0x6CB) +#define ZCL_SET_EVENT_CONFIGURATION_RECEIVED_ATTRIBUTE_ID (0x6CC) +#define ZCL_SET_EVENT_CONFIGURATION_ACTIONED_ATTRIBUTE_ID (0x6CD) +#define ZCL_SET_EVENT_CONFIGURATION_CANCELLED_ATTRIBUTE_ID (0x6CE) +#define ZCL_SET_EVENT_CONFIGURATION_REJECTED_ATTRIBUTE_ID (0x6CF) +#define ZCL_UPDATE_SITE_ID_RECEIVED_ATTRIBUTE_ID (0x6D0) +#define ZCL_UPDATE_SITE_ID_ACTIONED_ATTRIBUTE_ID (0x6D1) +#define ZCL_UPDATE_SITE_ID_CANCELLED_ATTRIBUTE_ID (0x6D2) +#define ZCL_UPDATE_SITE_ID_REJECTED_ATTRIBUTE_ID (0x6D3) +#define ZCL_UPDATE_CIN_RECEIVED_ATTRIBUTE_ID (0x6D4) +#define ZCL_UPDATE_CIN_ACTIONED_ATTRIBUTE_ID (0x6D5) +#define ZCL_UPDATE_CIN_CANCELLED_ATTRIBUTE_ID (0x6D6) +#define ZCL_UPDATE_CIN_REJECTED_ATTRIBUTE_ID (0x6D7) +#define ZCL_TUNNELING_CLUSTER_NOT_FOUND_ATTRIBUTE_ID (0x700) +#define ZCL_UNSUPPORTED_PROTOCOL_ATTRIBUTE_ID (0x701) +#define ZCL_INCORRECT_PROTOCOL_ATTRIBUTE_ID (0x702) +#define ZCL_REQUEST_TUNNEL_COMMAND_RECEIVED_ATTRIBUTE_ID (0x7C0) +#define ZCL_REQUEST_TUNNEL_COMMAND_REJECTED_ATTRIBUTE_ID (0x7C1) +#define ZCL_REQUEST_TUNNEL_COMMAND_GENERATED_ATTRIBUTE_ID (0x7C2) +#define ZCL_CLOSE_TUNNEL_COMMAND_RECEIVED_ATTRIBUTE_ID (0x7C3) +#define ZCL_CLOSE_TUNNEL_COMMAND_REJECTED_ATTRIBUTE_ID (0x7C4) +#define ZCL_CLOSE_TUNNEL_COMMAND_GENERATED_ATTRIBUTE_ID (0x7C5) +#define ZCL_TRANSFER_DATA_COMMAND_RECEIVED_ATTRIBUTE_ID (0x7C6) +#define ZCL_TRANSFER_DATA_COMMAND_REJECTED_ATTRIBUTE_ID (0x7C7) +#define ZCL_TRANSFER_DATA_COMMAND_GENERATED_ATTRIBUTE_ID (0x7C8) +#define ZCL_TRANSFER_DATA_ERROR_COMMAND_RECEIVED_ATTRIBUTE_ID (0x7C9) +#define ZCL_TRANSFER_DATA_ERROR_COMMAND_REJECTED_ATTRIBUTE_ID (0x7CA) +#define ZCL_TRANSFER_DATA_ERROR_COMMAND_GENERATED_ATTRIBUTE_ID (0x7CB) +#define ZCL_ACK_TRANSFER_DATA_COMMAND_RECEIVED_ATTRIBUTE_ID (0x7CC) +#define ZCL_ACK_TRANSFER_DATA_COMMAND_REJECTED_ATTRIBUTE_ID (0x7CD) +#define ZCL_ACK_TRANSFER_DATA_COMMAND_GENERATED_ATTRIBUTE_ID (0x7CE) +#define ZCL_READY_DATA_COMMAND_RECEIVED_ATTRIBUTE_ID (0x7CF) +#define ZCL_READY_DATA_COMMAND_REJECTED_ATTRIBUTE_ID (0x7D0) +#define ZCL_READY_DATA_COMMAND_GENERATED_ATTRIBUTE_ID (0x7D1) +#define ZCL_GET_SUPPORTED_TUNNEL_PROTOCOLS_COMMAND_RECEIVED_ATTRIBUTE_ID (0x7D2) +#define ZCL_GET_SUPPORTED_TUNNEL_PROTOCOLS_COMMAND_REJECTED_ATTRIBUTE_ID (0x7D3) +#define ZCL_GET_SUPPORTED_TUNNEL_PROTOCOLS_COMMAND_GENERATED_ATTRIBUTE_ID (0x7D4) +#define ZCL_FIRMWARE_READY_FOR_ACTIVATION_ATTRIBUTE_ID (0x800) +#define ZCL_FIRMWARE_ACTIVATED_ATTRIBUTE_ID (0x801) +#define ZCL_FIRMWARE_ACTIVATION_FAILURE_ATTRIBUTE_ID (0x802) +#define ZCL_PATCH_READY_FOR_ACTIVATION_ATTRIBUTE_ID (0x803) +#define ZCL_PATCH_ACTIVATED_ATTRIBUTE_ID (0x804) +#define ZCL_PATCH_FAILURE_ATTRIBUTE_ID (0x805) +#define ZCL_IMAGE_NOTIFY_COMMAND_RECEIVED_ATTRIBUTE_ID (0x8C0) +#define ZCL_IMAGE_NOTIFY_COMMAND_REJECTED_ATTRIBUTE_ID (0x8C1) +#define ZCL_QUERY_NEXT_IMAGE_REQUEST_GENERATED_ATTRIBUTE_ID (0x8C2) +#define ZCL_QUERY_NEXT_IMAGE_RESPONSE_RECEIVED_ATTRIBUTE_ID (0x8C3) +#define ZCL_QUERY_NEXT_IMAGE_RESPONSE_REJECTED_ATTRIBUTE_ID (0x8C4) +#define ZCL_IMAGE_BLOCK_REQUEST_GENERATED_ATTRIBUTE_ID (0x8C5) +#define ZCL_IMAGE_PAGE_REQUEST_GENERATED_ATTRIBUTE_ID (0x8C6) +#define ZCL_IMAGE_BLOCK_RESPONSE_RECEIVED_ATTRIBUTE_ID (0x8C7) +#define ZCL_IMAGE_BLOCK_RESPONSE_REJECTED_ATTRIBUTE_ID (0x8C8) +#define ZCL_UPGRADE_END_REQUEST_GENERATED_ATTRIBUTE_ID (0x8C9) +#define ZCL_UPGRADE_END_RESPONSE_RECEIVED_ATTRIBUTE_ID (0x8CA) +#define ZCL_UPGRADE_END_RESPONSE_REJECTED_ATTRIBUTE_ID (0x8CB) +#define ZCL_QUERY_SPECIFIC_FILE_REQUEST_GENERATED_ATTRIBUTE_ID (0x8CC) +#define ZCL_QUERY_SPECIFIC_FILE_RESPONSE_RECEIVED_ATTRIBUTE_ID (0x8CD) +#define ZCL_QUERY_SPECIFIC_FILE_RESPONSE_REJECTED_ATTRIBUTE_ID (0x8CE) +#define ZCL_DEVICE_MANAGEMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_DEVICE_MANAGEMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Device Management +#define ZCL_PROVIDER_ID_SERVER_ATTRIBUTE_ID (0x100) +#define ZCL_PROVIDER_NAME_ATTRIBUTE_ID (0x101) +#define ZCL_PROVIDER_CONTACT_DETAILS_ATTRIBUTE_ID (0x102) +#define ZCL_PROPOSED_PROVIDER_ID_ATTRIBUTE_ID (0x110) +#define ZCL_PROPOSED_PROVIDER_NAME_ATTRIBUTE_ID (0x111) +#define ZCL_PROPOSED_PROVIDER_CHANGE_DATE_TIME_ATTRIBUTE_ID (0x112) +#define ZCL_PROPOSED_PROVIDER_CHANGE_CONTROL_ATTRIBUTE_ID (0x113) +#define ZCL_RECEIVED_PROVIDER_ID_SERVER_ATTRIBUTE_ID (0x120) +#define ZCL_RECEIVED_PROVIDER_NAME_ATTRIBUTE_ID (0x121) +#define ZCL_RECEIVED_PROVIDER_CONTACT_DETAILS_ATTRIBUTE_ID (0x122) +#define ZCL_RECEIVED_PROPOSED_PROVIDER_ID_ATTRIBUTE_ID (0x130) +#define ZCL_RECEIVED_PROPOSED_PROVIDER_NAME_ATTRIBUTE_ID (0x131) +#define ZCL_RECEIVED_PROPOSED_PROVIDER_CHANGE_DATE_TIME_ATTRIBUTE_ID (0x132) +#define ZCL_RECEIVED_PROPOSED_PROVIDER_CHANGE_CONTROL_ATTRIBUTE_ID (0x133) +#define ZCL_CHANGE_OF_TENANCY_UPDATE_DATE_TIME_ATTRIBUTE_ID (0x200) +#define ZCL_PROPOSED_TENANCY_CHANGE_CONTROL_ATTRIBUTE_ID (0x201) +#define ZCL_WAN_STATUS_ATTRIBUTE_ID (0x300) +#define ZCL_LOW_MEDIUM_THRESHOLD_ATTRIBUTE_ID (0x400) +#define ZCL_MEDIUM_HIGH_THRESHOLD_ATTRIBUTE_ID (0x401) +#define ZCL_DEVICE_MANAGEMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_DEVICE_MANAGEMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Device Management +#define ZCL_GET_CHANGE_OF_TENANCY_COMMAND_ID (0x0) +#define ZCL_PUBLISH_CHANGE_OF_TENANCY_COMMAND_ID (0x0) +#define ZCL_GET_CHANGE_OF_SUPPLIER_COMMAND_ID (0x1) +#define ZCL_PUBLISH_CHANGE_OF_SUPPLIER_COMMAND_ID (0x1) +#define ZCL_REQUEST_NEW_PASSWORD_COMMAND_ID (0x2) +#define ZCL_REQUEST_NEW_PASSWORD_RESPONSE_COMMAND_ID (0x2) +#define ZCL_GET_SITE_ID_COMMAND_ID (0x3) +#define ZCL_UPDATE_SITE_ID_COMMAND_ID (0x3) +#define ZCL_REPORT_EVENT_CONFIGURATION_COMMAND_ID (0x4) +#define ZCL_SET_EVENT_CONFIGURATION_COMMAND_ID (0x4) +#define ZCL_GET_CIN_COMMAND_ID (0x5) +#define ZCL_GET_EVENT_CONFIGURATION_COMMAND_ID (0x5) +#define ZCL_UPDATE_CIN_COMMAND_ID (0x6) + +// End of cluster: Device Management + +// Definitions for cluster: Events +#define ZCL_EVENTS_CLUSTER_ID (0x709) + +// Client attributes for cluster: Events +#define ZCL_EVENTS_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_EVENTS_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Events +#define ZCL_EVENTS_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_EVENTS_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Events +#define ZCL_GET_EVENT_LOG_COMMAND_ID (0x0) +#define ZCL_PUBLISH_EVENT_COMMAND_ID (0x0) +#define ZCL_CLEAR_EVENT_LOG_REQUEST_COMMAND_ID (0x1) +#define ZCL_PUBLISH_EVENT_LOG_COMMAND_ID (0x1) +#define ZCL_CLEAR_EVENT_LOG_RESPONSE_COMMAND_ID (0x2) + +// End of cluster: Events + +// Definitions for cluster: MDU Pairing +#define ZCL_MDU_PAIRING_CLUSTER_ID (0x70A) + +// Client attributes for cluster: MDU Pairing +#define ZCL_MDU_PAIRING_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_MDU_PAIRING_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: MDU Pairing +#define ZCL_MDU_PAIRING_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_MDU_PAIRING_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: MDU Pairing +#define ZCL_PAIRING_RESPONSE_COMMAND_ID (0x0) +#define ZCL_PAIRING_REQUEST_COMMAND_ID (0x0) + +// End of cluster: MDU Pairing + +// Definitions for cluster: Sub-GHz +#define ZCL_SUB_GHZ_CLUSTER_ID (0x70B) + +// Client attributes for cluster: Sub-GHz +#define ZCL_SUB_GHZ_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_SUB_GHZ_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Sub-GHz +#define ZCL_SUB_GHZ_CLUSTER_CHANNEL_CHANGE_ATTRIBUTE_ID (0x0) +#define ZCL_SUB_GHZ_CLUSTER_PAGE_28_CHANNEL_MASK_ATTRIBUTE_ID (0x1) +#define ZCL_SUB_GHZ_CLUSTER_PAGE_29_CHANNEL_MASK_ATTRIBUTE_ID (0x2) +#define ZCL_SUB_GHZ_CLUSTER_PAGE_30_CHANNEL_MASK_ATTRIBUTE_ID (0x3) +#define ZCL_SUB_GHZ_CLUSTER_PAGE_31_CHANNEL_MASK_ATTRIBUTE_ID (0x4) +#define ZCL_SUB_GHZ_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_SUB_GHZ_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Sub-GHz +#define ZCL_SUSPEND_ZCL_MESSAGES_COMMAND_ID (0x0) +#define ZCL_GET_SUSPEND_ZCL_MESSAGES_STATUS_COMMAND_ID (0x0) + +// End of cluster: Sub-GHz + +// Definitions for cluster: Key Establishment +#define ZCL_KEY_ESTABLISHMENT_CLUSTER_ID (0x800) + +// Client attributes for cluster: Key Establishment +#define ZCL_KEY_ESTABLISHMENT_SUITE_CLIENT_ATTRIBUTE_ID (0x0) +#define ZCL_KEY_ESTABLISHMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_KEY_ESTABLISHMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Key Establishment +#define ZCL_KEY_ESTABLISHMENT_SUITE_SERVER_ATTRIBUTE_ID (0x0) +#define ZCL_KEY_ESTABLISHMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_KEY_ESTABLISHMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Key Establishment +#define ZCL_INITIATE_KEY_ESTABLISHMENT_REQUEST_COMMAND_ID (0x0) +#define ZCL_INITIATE_KEY_ESTABLISHMENT_RESPONSE_COMMAND_ID (0x0) +#define ZCL_EPHEMERAL_DATA_REQUEST_COMMAND_ID (0x1) +#define ZCL_EPHEMERAL_DATA_RESPONSE_COMMAND_ID (0x1) +#define ZCL_CONFIRM_KEY_DATA_REQUEST_COMMAND_ID (0x2) +#define ZCL_CONFIRM_KEY_DATA_RESPONSE_COMMAND_ID (0x2) +#define ZCL_TERMINATE_KEY_ESTABLISHMENT_FROM_CLIENT_COMMAND_ID (0x3) +#define ZCL_TERMINATE_KEY_ESTABLISHMENT_FROM_SERVER_COMMAND_ID (0x3) + +// End of cluster: Key Establishment + +// Definitions for cluster: Information +#define ZCL_INFORMATION_CLUSTER_ID (0x900) + +// Client attributes for cluster: Information +#define ZCL_INFORMATION_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_INFORMATION_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Information +#define ZCL_NODE_DESCRIPTION_ATTRIBUTE_ID (0x0) +#define ZCL_DELIVERY_ENABLE_ATTRIBUTE_ID (0x1) +#define ZCL_PUSH_INFORMATION_TIMER_ATTRIBUTE_ID (0x2) +#define ZCL_ENABLE_SECURE_CONFIGURATION_ATTRIBUTE_ID (0x3) +#define ZCL_NUMBER_OF_CONTENTS_ATTRIBUTE_ID (0x10) +#define ZCL_CONTENT_ROOT_ID_ATTRIBUTE_ID (0x11) +#define ZCL_INFORMATION_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_INFORMATION_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Information +#define ZCL_REQUEST_INFORMATION_COMMAND_ID (0x0) +#define ZCL_REQUEST_INFORMATION_RESPONSE_COMMAND_ID (0x0) +#define ZCL_PUSH_INFORMATION_RESPONSE_COMMAND_ID (0x1) +#define ZCL_PUSH_INFORMATION_COMMAND_ID (0x1) +#define ZCL_SEND_PREFERENCE_COMMAND_ID (0x2) +#define ZCL_SEND_PREFERENCE_RESPONSE_COMMAND_ID (0x2) +#define ZCL_REQUEST_PREFERENCE_RESPONSE_COMMAND_ID (0x3) +#define ZCL_SERVER_REQUEST_PREFERENCE_COMMAND_ID (0x3) +#define ZCL_UPDATE_COMMAND_ID (0x4) +#define ZCL_REQUEST_PREFERENCE_CONFIRMATION_COMMAND_ID (0x4) +#define ZCL_DELETE_COMMAND_ID (0x5) +#define ZCL_UPDATE_RESPONSE_COMMAND_ID (0x5) +#define ZCL_CONFIGURE_NODE_DESCRIPTION_COMMAND_ID (0x6) +#define ZCL_DELETE_RESPONSE_COMMAND_ID (0x6) +#define ZCL_CONFIGURE_DELIVERY_ENABLE_COMMAND_ID (0x7) +#define ZCL_CONFIGURE_PUSH_INFORMATION_TIMER_COMMAND_ID (0x8) +#define ZCL_CONFIGURE_SET_ROOT_ID_COMMAND_ID (0x9) + +// End of cluster: Information + +// Definitions for cluster: Data Sharing +#define ZCL_DATA_SHARING_CLUSTER_ID (0x901) + +// Client attributes for cluster: Data Sharing +#define ZCL_DATA_SHARING_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_DATA_SHARING_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Data Sharing +#define ZCL_DEVICE_NAME_ATTRIBUTE_ID (0x0) +#define ZCL_DEVICE_DESCRIPTION_ATTRIBUTE_ID (0x1) +#define ZCL_DATA_SHARING_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_DATA_SHARING_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Data Sharing +#define ZCL_READ_FILE_REQUEST_COMMAND_ID (0x0) +#define ZCL_WRITE_FILE_REQUEST_COMMAND_ID (0x0) +#define ZCL_READ_RECORD_REQUEST_COMMAND_ID (0x1) +#define ZCL_MODIFY_FILE_REQUEST_COMMAND_ID (0x1) +#define ZCL_WRITE_FILE_RESPONSE_COMMAND_ID (0x2) +#define ZCL_MODIFY_RECORD_REQUEST_COMMAND_ID (0x2) +#define ZCL_FILE_TRANSMISSION_COMMAND_ID (0x3) +#define ZCL_RECORD_TRANSMISSION_COMMAND_ID (0x4) + +// End of cluster: Data Sharing + +// Definitions for cluster: Gaming +#define ZCL_GAMING_CLUSTER_ID (0x902) + +// Client attributes for cluster: Gaming +#define ZCL_GAMING_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_GAMING_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Gaming +#define ZCL_PLAYER_NAME_ATTRIBUTE_ID (0x0) +#define ZCL_NB_OF_GAMES_ATTRIBUTE_ID (0x1) +#define ZCL_LIST_OF_GAMES_ATTRIBUTE_ID (0x2) +#define ZCL_ANNOUNCEMENT_INTERVAL_ATTRIBUTE_ID (0x3) +#define ZCL_GAME_ID_ATTRIBUTE_ID (0x10) +#define ZCL_NAME_OF_GAME_ATTRIBUTE_ID (0x11) +#define ZCL_GAME_MASTER_ATTRIBUTE_ID (0x12) +#define ZCL_GAMING_STATUS_ATTRIBUTE_ID (0x13) +#define ZCL_CURRENT_NB_OF_PLAYERS_ATTRIBUTE_ID (0x14) +#define ZCL_LIST_OF_CURRENT_PLAYERS_ATTRIBUTE_ID (0x15) +#define ZCL_MAX_NB_OF_PLAYERS_ATTRIBUTE_ID (0x16) +#define ZCL_MIN_NB_OF_PLAYERS_ATTRIBUTE_ID (0x17) +#define ZCL_CURRENT_GAME_LEVEL_ATTRIBUTE_ID (0x18) +#define ZCL_SCORE_OF_THIS_PLAYER_ATTRIBUTE_ID (0x19) +#define ZCL_TIMER1_ATTRIBUTE_ID (0x1A) +#define ZCL_TIMER2_ATTRIBUTE_ID (0x1B) +#define ZCL_TIMER3_ATTRIBUTE_ID (0x1C) +#define ZCL_COUNTER1_ATTRIBUTE_ID (0x1D) +#define ZCL_COUNTER2_ATTRIBUTE_ID (0x1E) +#define ZCL_DOWNLOADABLE_ATTRIBUTE_ID (0x1F) +#define ZCL_GAMING_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_GAMING_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Gaming +#define ZCL_SEARCH_GAME_COMMAND_ID (0x0) +#define ZCL_GAME_ANNOUNCEMENT_COMMAND_ID (0x0) +#define ZCL_JOIN_GAME_COMMAND_ID (0x1) +#define ZCL_GENERAL_RESPONSE_COMMAND_ID (0x1) +#define ZCL_START_GAME_COMMAND_ID (0x2) +#define ZCL_PAUSE_GAME_COMMAND_ID (0x3) +#define ZCL_RESUME_GAME_COMMAND_ID (0x4) +#define ZCL_QUIT_GAME_COMMAND_ID (0x5) +#define ZCL_END_GAME_COMMAND_ID (0x6) +#define ZCL_START_OVER_COMMAND_ID (0x7) +#define ZCL_ACTION_CONTROL_COMMAND_ID (0x8) +#define ZCL_DOWNLOAD_GAME_COMMAND_ID (0x9) + +// End of cluster: Gaming + +// Definitions for cluster: Data Rate Control +#define ZCL_DATA_RATE_CONTROL_CLUSTER_ID (0x903) + +// Client attributes for cluster: Data Rate Control +#define ZCL_DATA_RATE_CONTROL_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_DATA_RATE_CONTROL_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Data Rate Control +#define ZCL_AVERAGE_LATENCY_REQUIREMENT_ATTRIBUTE_ID (0x0) +#define ZCL_MAX_LATENCY_REQUIREMENT_ATTRIBUTE_ID (0x1) +#define ZCL_BANDWIDTH_REQUIREMENT_ATTRIBUTE_ID (0x2) +#define ZCL_DATA_RATE_CONTROL_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_DATA_RATE_CONTROL_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Data Rate Control +#define ZCL_PATH_CREATION_COMMAND_ID (0x0) +#define ZCL_DATA_RATE_CONTROL_COMMAND_ID (0x0) +#define ZCL_DATA_RATE_NOTIFICATION_COMMAND_ID (0x1) +#define ZCL_PATH_DELETION_COMMAND_ID (0x2) + +// End of cluster: Data Rate Control + +// Definitions for cluster: Voice over ZigBee +#define ZCL_VOICE_OVER_ZIGBEE_CLUSTER_ID (0x904) + +// Client attributes for cluster: Voice over ZigBee +#define ZCL_VOICE_OVER_ZIGBEE_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_VOICE_OVER_ZIGBEE_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Voice over ZigBee +#define ZCL_CODEC_TYPE_ATTRIBUTE_ID (0x0) +#define ZCL_SAMPLING_FREQUENCY_ATTRIBUTE_ID (0x1) +#define ZCL_CODEC_RATE_ATTRIBUTE_ID (0x2) +#define ZCL_ESTABLISHMENT_TIMEOUT_ATTRIBUTE_ID (0x3) +#define ZCL_CODEC_TYPE_SUB1_ATTRIBUTE_ID (0x4) +#define ZCL_CODEC_TYPE_SUB2_ATTRIBUTE_ID (0x5) +#define ZCL_CODEC_TYPE_SUB3_ATTRIBUTE_ID (0x6) +#define ZCL_COMPRESSION_TYPE_ATTRIBUTE_ID (0x7) +#define ZCL_COMPRESSION_RATE_ATTRIBUTE_ID (0x8) +#define ZCL_OPTION_FLAGS_ATTRIBUTE_ID (0x9) +#define ZCL_THRESHOLD_ATTRIBUTE_ID (0xA) +#define ZCL_VOICE_OVER_ZIGBEE_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_VOICE_OVER_ZIGBEE_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Voice over ZigBee +#define ZCL_ESTABLISHMENT_REQUEST_COMMAND_ID (0x0) +#define ZCL_ESTABLISHMENT_RESPONSE_COMMAND_ID (0x0) +#define ZCL_VOICE_TRANSMISSION_COMMAND_ID (0x1) +#define ZCL_VOICE_TRANSMISSION_RESPONSE_COMMAND_ID (0x1) +#define ZCL_VOICE_TRANSMISSION_COMPLETION_COMMAND_ID (0x2) +#define ZCL_CONTROL_COMMAND_ID (0x2) +#define ZCL_CONTROL_RESPONSE_COMMAND_ID (0x3) + +// End of cluster: Voice over ZigBee + +// Definitions for cluster: Chatting +#define ZCL_CHATTING_CLUSTER_ID (0x905) + +// Client attributes for cluster: Chatting +#define ZCL_CHATTING_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_CHATTING_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Chatting +#define ZCL_U_ID_ATTRIBUTE_ID (0x0) +#define ZCL_NICKNAME_ATTRIBUTE_ID (0x1) +#define ZCL_C_ID_ATTRIBUTE_ID (0x10) +#define ZCL_NAME_ATTRIBUTE_ID (0x11) +#define ZCL_ENABLE_ADD_CHAT_ATTRIBUTE_ID (0x20) +#define ZCL_CHATTING_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_CHATTING_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Chatting +#define ZCL_JOIN_CHAT_REQUEST_COMMAND_ID (0x0) +#define ZCL_START_CHAT_RESPONSE_COMMAND_ID (0x0) +#define ZCL_LEAVE_CHAT_REQUEST_COMMAND_ID (0x1) +#define ZCL_JOIN_CHAT_RESPONSE_COMMAND_ID (0x1) +#define ZCL_SEARCH_CHAT_REQUEST_COMMAND_ID (0x2) +#define ZCL_USER_LEFT_COMMAND_ID (0x2) +#define ZCL_SWITCH_CHAIRMAN_RESPONSE_COMMAND_ID (0x3) +#define ZCL_USER_JOINED_COMMAND_ID (0x3) +#define ZCL_START_CHAT_REQUEST_COMMAND_ID (0x4) +#define ZCL_SEARCH_CHAT_RESPONSE_COMMAND_ID (0x4) +#define ZCL_CHAT_MESSAGE_COMMAND_ID (0x5) +#define ZCL_SWITCH_CHAIRMAN_REQUEST_COMMAND_ID (0x5) +#define ZCL_GET_NODE_INFORMATION_REQUEST_COMMAND_ID (0x6) +#define ZCL_SWITCH_CHAIRMAN_CONFIRM_COMMAND_ID (0x6) +#define ZCL_SWITCH_CHAIRMAN_NOTIFICATION_COMMAND_ID (0x7) +#define ZCL_GET_NODE_INFORMATION_RESPONSE_COMMAND_ID (0x8) + +// End of cluster: Chatting + +// Definitions for cluster: Payment +#define ZCL_PAYMENT_CLUSTER_ID (0xA01) + +// Client attributes for cluster: Payment +#define ZCL_PAYMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_PAYMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Payment +#define ZCL_PAYMENT_USER_ID_ATTRIBUTE_ID (0x0) +#define ZCL_USER_TYPE_ATTRIBUTE_ID (0x1) +#define ZCL_PAYMENT_SERVICE_ID_ATTRIBUTE_ID (0x10) +#define ZCL_PAYMENT_SERVICE_PROVIDER_ID_ATTRIBUTE_ID (0x11) +#define ZCL_TOTEM_ID_ATTRIBUTE_ID (0x12) +#define ZCL_CURRENCY_ATTRIBUTE_ID (0x20) +#define ZCL_PRICE_TRAILING_DIGIT_ATTRIBUTE_ID (0x21) +#define ZCL_PRICE_ATTRIBUTE_ID (0x22) +#define ZCL_GOOD_ID_ATTRIBUTE_ID (0x30) +#define ZCL_SERIAL_NUMBER_ATTRIBUTE_ID (0x31) +#define ZCL_PAYMENT_TIMESTAMP_ATTRIBUTE_ID (0x32) +#define ZCL_TRANS_ID_ATTRIBUTE_ID (0x33) +#define ZCL_TRANS_STATUS_ATTRIBUTE_ID (0x34) +#define ZCL_PAYMENT_STATUS_ATTRIBUTE_ID (0x35) +#define ZCL_PAYMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_PAYMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Payment +#define ZCL_BUY_REQUEST_COMMAND_ID (0x0) +#define ZCL_BUY_CONFIRM_COMMAND_ID (0x0) +#define ZCL_ACCEPT_PAYMENT_COMMAND_ID (0x1) +#define ZCL_RECEIPT_DELIVERY_COMMAND_ID (0x1) +#define ZCL_PAYMENT_CONFIRM_COMMAND_ID (0x2) +#define ZCL_TRANSACTION_END_COMMAND_ID (0x2) + +// End of cluster: Payment + +// Definitions for cluster: Billing +#define ZCL_BILLING_CLUSTER_ID (0xA02) + +// Client attributes for cluster: Billing +#define ZCL_BILLING_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_BILLING_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Billing +#define ZCL_USER_ID_ATTRIBUTE_ID (0x0) +#define ZCL_SERVICE_ID_ATTRIBUTE_ID (0x10) +#define ZCL_SERVICE_PROVIDER_ID_ATTRIBUTE_ID (0x11) +#define ZCL_SESSION_INTERVAL_ATTRIBUTE_ID (0x12) +#define ZCL_TIMESTAMP_ATTRIBUTE_ID (0x20) +#define ZCL_DURATION_ATTRIBUTE_ID (0x21) +#define ZCL_BILLING_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_BILLING_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Billing +#define ZCL_SUBSCRIBE_COMMAND_ID (0x0) +#define ZCL_CHECK_BILL_STATUS_COMMAND_ID (0x0) +#define ZCL_UNSUBSCRIBE_COMMAND_ID (0x1) +#define ZCL_SEND_BILL_RECORD_COMMAND_ID (0x1) +#define ZCL_START_BILLING_SESSION_COMMAND_ID (0x2) +#define ZCL_STOP_BILLING_SESSION_COMMAND_ID (0x3) +#define ZCL_BILL_STATUS_NOTIFICATION_COMMAND_ID (0x4) +#define ZCL_SESSION_KEEP_ALIVE_COMMAND_ID (0x5) + +// End of cluster: Billing + +// Definitions for cluster: Appliance Identification +#define ZCL_APPLIANCE_IDENTIFICATION_CLUSTER_ID (0xB00) + +// Client attributes for cluster: Appliance Identification +#define ZCL_APPLIANCE_IDENTIFICATION_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_APPLIANCE_IDENTIFICATION_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Appliance Identification +#define ZCL_BASIC_IDENTIFICATION_ATTRIBUTE_ID (0x0) +#define ZCL_APPLIANCE_COMPANY_NAME_ATTRIBUTE_ID (0x10) +#define ZCL_COMPANY_ID_ATTRIBUTE_ID (0x11) +#define ZCL_BRAND_NAME_ATTRIBUTE_ID (0x12) +#define ZCL_BRAND_ID_ATTRIBUTE_ID (0x13) +#define ZCL_APPLIANCE_MODEL_ATTRIBUTE_ID (0x14) +#define ZCL_APPLIANCE_PART_NUMBER_ATTRIBUTE_ID (0x15) +#define ZCL_APPLIANCE_PRODUCT_REVISION_ATTRIBUTE_ID (0x16) +#define ZCL_APPLIANCE_SOFTWARE_REVISION_ATTRIBUTE_ID (0x17) +#define ZCL_PRODUCT_TYPE_NAME_ATTRIBUTE_ID (0x18) +#define ZCL_PRODUCT_TYPE_ID_ATTRIBUTE_ID (0x19) +#define ZCL_CECED_SPECIFICATION_VERSION_ATTRIBUTE_ID (0x1A) +#define ZCL_APPLIANCE_IDENTIFICATION_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_APPLIANCE_IDENTIFICATION_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Appliance Identification + +// End of cluster: Appliance Identification + +// Definitions for cluster: Meter Identification +#define ZCL_METER_IDENTIFICATION_CLUSTER_ID (0xB01) + +// Client attributes for cluster: Meter Identification +#define ZCL_METER_IDENTIFICATION_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_METER_IDENTIFICATION_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Meter Identification +#define ZCL_METER_COMPANY_NAME_ATTRIBUTE_ID (0x0) +#define ZCL_METER_TYPE_ID_ATTRIBUTE_ID (0x1) +#define ZCL_DATA_QUALITY_ID_ATTRIBUTE_ID (0x4) +#define ZCL_CUSTOMER_NAME_ATTRIBUTE_ID (0x5) +#define ZCL_METER_MODEL_ATTRIBUTE_ID (0x6) +#define ZCL_METER_PART_NUMBER_ATTRIBUTE_ID (0x7) +#define ZCL_METER_PRODUCT_REVISION_ATTRIBUTE_ID (0x8) +#define ZCL_METER_SOFTWARE_REVISION_ATTRIBUTE_ID (0xA) +#define ZCL_UTILITY_NAME_ATTRIBUTE_ID (0xB) +#define ZCL_POD_ATTRIBUTE_ID (0xC) +#define ZCL_AVAILABLE_POWER_ATTRIBUTE_ID (0xD) +#define ZCL_POWER_THRESHOLD_ATTRIBUTE_ID (0xE) +#define ZCL_METER_IDENTIFICATION_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_METER_IDENTIFICATION_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Meter Identification + +// End of cluster: Meter Identification + +// Definitions for cluster: Appliance Events and Alert +#define ZCL_APPLIANCE_EVENTS_AND_ALERT_CLUSTER_ID (0xB02) + +// Client attributes for cluster: Appliance Events and Alert +#define ZCL_APPLIANCE_EVENTS_AND_ALERT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_APPLIANCE_EVENTS_AND_ALERT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Appliance Events and Alert +#define ZCL_APPLIANCE_EVENTS_AND_ALERT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_APPLIANCE_EVENTS_AND_ALERT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Appliance Events and Alert +#define ZCL_GET_ALERTS_COMMAND_ID (0x0) +#define ZCL_GET_ALERTS_RESPONSE_COMMAND_ID (0x0) +#define ZCL_ALERTS_NOTIFICATION_COMMAND_ID (0x1) +#define ZCL_EVENTS_NOTIFICATION_COMMAND_ID (0x2) + +// End of cluster: Appliance Events and Alert + +// Definitions for cluster: Appliance Statistics +#define ZCL_APPLIANCE_STATISTICS_CLUSTER_ID (0xB03) + +// Client attributes for cluster: Appliance Statistics +#define ZCL_APPLIANCE_STATISTICS_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_APPLIANCE_STATISTICS_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Appliance Statistics +#define ZCL_LOG_MAX_SIZE_ATTRIBUTE_ID (0x0) +#define ZCL_LOG_QUEUE_MAX_SIZE_ATTRIBUTE_ID (0x1) +#define ZCL_APPLIANCE_STATISTICS_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_APPLIANCE_STATISTICS_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Appliance Statistics +#define ZCL_LOG_NOTIFICATION_COMMAND_ID (0x0) +#define ZCL_LOG_REQUEST_COMMAND_ID (0x0) +#define ZCL_LOG_RESPONSE_COMMAND_ID (0x1) +#define ZCL_LOG_QUEUE_REQUEST_COMMAND_ID (0x1) +#define ZCL_LOG_QUEUE_RESPONSE_COMMAND_ID (0x2) +#define ZCL_STATISTICS_AVAILABLE_COMMAND_ID (0x3) + +// End of cluster: Appliance Statistics + +// Definitions for cluster: Electrical Measurement +#define ZCL_ELECTRICAL_MEASUREMENT_CLUSTER_ID (0xB04) + +// Client attributes for cluster: Electrical Measurement +#define ZCL_ELECTRICAL_MEASUREMENT_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ELECTRICAL_MEASUREMENT_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Electrical Measurement +#define ZCL_MEASUREMENT_TYPE_ATTRIBUTE_ID (0x0) +#define ZCL_DC_VOLTAGE_ATTRIBUTE_ID (0x100) +#define ZCL_DC_VOLTAGE_MIN_ATTRIBUTE_ID (0x101) +#define ZCL_DC_VOLTAGE_MAX_ATTRIBUTE_ID (0x102) +#define ZCL_DC_CURRENT_ATTRIBUTE_ID (0x103) +#define ZCL_DC_CURRENT_MIN_ATTRIBUTE_ID (0x104) +#define ZCL_DC_CURRENT_MAX_ATTRIBUTE_ID (0x105) +#define ZCL_DC_POWER_ATTRIBUTE_ID (0x106) +#define ZCL_DC_POWER_MIN_ATTRIBUTE_ID (0x107) +#define ZCL_DC_POWER_MAX_ATTRIBUTE_ID (0x108) +#define ZCL_DC_VOLTAGE_MULTIPLIER_ATTRIBUTE_ID (0x200) +#define ZCL_DC_VOLTAGE_DIVISOR_ATTRIBUTE_ID (0x201) +#define ZCL_DC_CURRENT_MULTIPLIER_ATTRIBUTE_ID (0x202) +#define ZCL_DC_CURRENT_DIVISOR_ATTRIBUTE_ID (0x203) +#define ZCL_DC_POWER_MULTIPLIER_ATTRIBUTE_ID (0x204) +#define ZCL_DC_POWER_DIVISOR_ATTRIBUTE_ID (0x205) +#define ZCL_AC_FREQUENCY_ATTRIBUTE_ID (0x300) +#define ZCL_AC_FREQUENCY_MIN_ATTRIBUTE_ID (0x301) +#define ZCL_AC_FREQUENCY_MAX_ATTRIBUTE_ID (0x302) +#define ZCL_NEUTRAL_CURRENT_ATTRIBUTE_ID (0x303) +#define ZCL_TOTAL_ACTIVE_POWER_ATTRIBUTE_ID (0x304) +#define ZCL_TOTAL_REACTIVE_POWER_ATTRIBUTE_ID (0x305) +#define ZCL_TOTAL_APPARENT_POWER_ATTRIBUTE_ID (0x306) +#define ZCL_MEASURED_1ST_HARMONIC_CURRENT_ATTRIBUTE_ID (0x307) +#define ZCL_MEASURED_3RD_HARMONIC_CURRENT_ATTRIBUTE_ID (0x308) +#define ZCL_MEASURED_5TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x309) +#define ZCL_MEASURED_7TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x30A) +#define ZCL_MEASURED_9TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x30B) +#define ZCL_MEASURED_11TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x30C) +#define ZCL_MEASURED_PHASE_1ST_HARMONIC_CURRENT_ATTRIBUTE_ID (0x30D) +#define ZCL_MEASURED_PHASE_3RD_HARMONIC_CURRENT_ATTRIBUTE_ID (0x30E) +#define ZCL_MEASURED_PHASE_5TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x30F) +#define ZCL_MEASURED_PHASE_7TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x310) +#define ZCL_MEASURED_PHASE_9TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x311) +#define ZCL_MEASURED_PHASE_11TH_HARMONIC_CURRENT_ATTRIBUTE_ID (0x312) +#define ZCL_AC_FREQUENCY_MULTIPLIER_ATTRIBUTE_ID (0x400) +#define ZCL_AC_FREQUENCY_DIVISOR_ATTRIBUTE_ID (0x401) +#define ZCL_POWER_MULTIPLIER_ATTRIBUTE_ID (0x402) +#define ZCL_POWER_DIVISOR_ATTRIBUTE_ID (0x403) +#define ZCL_HARMONIC_CURRENT_MULTIPLIER_ATTRIBUTE_ID (0x404) +#define ZCL_PHASE_HARMONIC_CURRENT_MULTIPLIER_ATTRIBUTE_ID (0x405) +#define ZCL_INSTANTANEOUS_VOLTAGE_ATTRIBUTE_ID (0x500) +#define ZCL_INSTANTANEOUS_LINE_CURRENT_ATTRIBUTE_ID (0x501) +#define ZCL_INSTANTANEOUS_ACTIVE_CURRENT_ATTRIBUTE_ID (0x502) +#define ZCL_INSTANTANEOUS_REACTIVE_CURRENT_ATTRIBUTE_ID (0x503) +#define ZCL_INSTANTANEOUS_POWER_ATTRIBUTE_ID (0x504) +#define ZCL_RMS_VOLTAGE_ATTRIBUTE_ID (0x505) +#define ZCL_RMS_VOLTAGE_MIN_ATTRIBUTE_ID (0x506) +#define ZCL_RMS_VOLTAGE_MAX_ATTRIBUTE_ID (0x507) +#define ZCL_RMS_CURRENT_ATTRIBUTE_ID (0x508) +#define ZCL_RMS_CURRENT_MIN_ATTRIBUTE_ID (0x509) +#define ZCL_RMS_CURRENT_MAX_ATTRIBUTE_ID (0x50A) +#define ZCL_ACTIVE_POWER_ATTRIBUTE_ID (0x50B) +#define ZCL_ACTIVE_POWER_MIN_ATTRIBUTE_ID (0x50C) +#define ZCL_ACTIVE_POWER_MAX_ATTRIBUTE_ID (0x50D) +#define ZCL_REACTIVE_POWER_ATTRIBUTE_ID (0x50E) +#define ZCL_APPARENT_POWER_ATTRIBUTE_ID (0x50F) +#define ZCL_AC_POWER_FACTOR_ATTRIBUTE_ID (0x510) +#define ZCL_AVERAGE_RMS_VOLTAGE_MEASUREMENT_PERIOD_ATTRIBUTE_ID (0x511) +#define ZCL_AVERAGE_RMS_UNDER_VOLTAGE_COUNTER_ATTRIBUTE_ID (0x513) +#define ZCL_RMS_EXTREME_OVER_VOLTAGE_PERIOD_ATTRIBUTE_ID (0x514) +#define ZCL_RMS_EXTREME_UNDER_VOLTAGE_PERIOD_ATTRIBUTE_ID (0x515) +#define ZCL_RMS_VOLTAGE_SAG_PERIOD_ATTRIBUTE_ID (0x516) +#define ZCL_RMS_VOLTAGE_SWELL_PERIOD_ATTRIBUTE_ID (0x517) +#define ZCL_AC_VOLTAGE_MULTIPLIER_ATTRIBUTE_ID (0x600) +#define ZCL_AC_VOLTAGE_DIVISOR_ATTRIBUTE_ID (0x601) +#define ZCL_AC_CURRENT_MULTIPLIER_ATTRIBUTE_ID (0x602) +#define ZCL_AC_CURRENT_DIVISOR_ATTRIBUTE_ID (0x603) +#define ZCL_AC_POWER_MULTIPLIER_ATTRIBUTE_ID (0x604) +#define ZCL_AC_POWER_DIVISOR_ATTRIBUTE_ID (0x605) +#define ZCL_DC_OVERLOAD_ALARMS_MASK_ATTRIBUTE_ID (0x700) +#define ZCL_DC_VOLTAGE_OVERLOAD_ATTRIBUTE_ID (0x701) +#define ZCL_DC_CURRENT_OVERLOAD_ATTRIBUTE_ID (0x702) +#define ZCL_AC_OVERLOAD_ALARMS_MASK_ATTRIBUTE_ID (0x800) +#define ZCL_AC_VOLTAGE_OVERLOAD_ATTRIBUTE_ID (0x801) +#define ZCL_AC_CURRENT_OVERLOAD_ATTRIBUTE_ID (0x802) +#define ZCL_AC_POWER_OVERLOAD_ATTRIBUTE_ID (0x803) +#define ZCL_AC_REACTIVE_POWER_OVERLOAD_ATTRIBUTE_ID (0x804) +#define ZCL_AVERAGE_RMS_OVER_VOLTAGE_ATTRIBUTE_ID (0x805) +#define ZCL_AVERAGE_RMS_UNDER_VOLTAGE_ATTRIBUTE_ID (0x806) +#define ZCL_RMS_EXTREME_OVER_VOLTAGE_ATTRIBUTE_ID (0x807) +#define ZCL_RMS_EXTREME_UNDER_VOLTAGE_ATTRIBUTE_ID (0x808) +#define ZCL_RMS_VOLTAGE_SAG_ATTRIBUTE_ID (0x809) +#define ZCL_RMS_VOLTAGE_SWELL_ATTRIBUTE_ID (0x80A) +#define ZCL_LINE_CURRENT_PHASE_B_ATTRIBUTE_ID (0x901) +#define ZCL_ACTIVE_CURRENT_PHASE_B_ATTRIBUTE_ID (0x902) +#define ZCL_REACTIVE_CURRENT_PHASE_B_ATTRIBUTE_ID (0x903) +#define ZCL_RMS_VOLTAGE_PHASE_B_ATTRIBUTE_ID (0x905) +#define ZCL_RMS_VOLTAGE_MIN_PHASE_B_ATTRIBUTE_ID (0x906) +#define ZCL_RMS_VOLTAGE_MAX_PHASE_B_ATTRIBUTE_ID (0x907) +#define ZCL_RMS_CURRENT_PHASE_B_ATTRIBUTE_ID (0x908) +#define ZCL_RMS_CURRENT_MIN_PHASE_B_ATTRIBUTE_ID (0x909) +#define ZCL_RMS_CURRENT_MAX_PHASE_B_ATTRIBUTE_ID (0x90A) +#define ZCL_ACTIVE_POWER_PHASE_B_ATTRIBUTE_ID (0x90B) +#define ZCL_ACTIVE_POWER_MIN_PHASE_B_ATTRIBUTE_ID (0x90C) +#define ZCL_ACTIVE_POWER_MAX_PHASE_B_ATTRIBUTE_ID (0x90D) +#define ZCL_REACTIVE_POWER_PHASE_B_ATTRIBUTE_ID (0x90E) +#define ZCL_APPARENT_POWER_PHASE_B_ATTRIBUTE_ID (0x90F) +#define ZCL_POWER_FACTOR_PHASE_B_ATTRIBUTE_ID (0x910) +#define ZCL_AVERAGE_RMS_VOLTAGE_MEASUREMENT_PERIOD_PHASE_B_ATTRIBUTE_ID (0x911) +#define ZCL_AVERAGE_RMS_OVER_VOLTAGE_COUNTER_PHASE_B_ATTRIBUTE_ID (0x912) +#define ZCL_AVERAGE_RMS_UNDER_VOLTAGE_COUNTER_PHASE_B_ATTRIBUTE_ID (0x913) +#define ZCL_RMS_EXTREME_OVER_VOLTAGE_PERIOD_PHASE_B_ATTRIBUTE_ID (0x914) +#define ZCL_RMS_EXTREME_UNDER_VOLTAGE_PERIOD_PHASE_B_ATTRIBUTE_ID (0x915) +#define ZCL_RMS_VOLTAGE_SAG_PERIOD_PHASE_B_ATTRIBUTE_ID (0x916) +#define ZCL_RMS_VOLTAGE_SWELL_PERIOD_PHASE_B_ATTRIBUTE_ID (0x917) +#define ZCL_LINE_CURRENT_PHASE_C_ATTRIBUTE_ID (0xA01) +#define ZCL_ACTIVE_CURRENT_PHASE_C_ATTRIBUTE_ID (0xA02) +#define ZCL_REACTIVE_CURRENT_PHASE_C_ATTRIBUTE_ID (0xA03) +#define ZCL_RMS_VOLTAGE_PHASE_C_ATTRIBUTE_ID (0xA05) +#define ZCL_RMS_VOLTAGE_MIN_PHASE_C_ATTRIBUTE_ID (0xA06) +#define ZCL_RMS_VOLTAGE_MAX_PHASE_C_ATTRIBUTE_ID (0xA07) +#define ZCL_RMS_CURRENT_PHASE_C_ATTRIBUTE_ID (0xA08) +#define ZCL_RMS_CURRENT_MIN_PHASE_C_ATTRIBUTE_ID (0xA09) +#define ZCL_RMS_CURRENT_MAX_PHASE_C_ATTRIBUTE_ID (0xA0A) +#define ZCL_ACTIVE_POWER_PHASE_C_ATTRIBUTE_ID (0xA0B) +#define ZCL_ACTIVE_POWER_MIN_PHASE_C_ATTRIBUTE_ID (0xA0C) +#define ZCL_ACTIVE_POWER_MAX_PHASE_C_ATTRIBUTE_ID (0xA0D) +#define ZCL_REACTIVE_POWER_PHASE_C_ATTRIBUTE_ID (0xA0E) +#define ZCL_APPARENT_POWER_PHASE_C_ATTRIBUTE_ID (0xA0F) +#define ZCL_POWER_FACTOR_PHASE_C_ATTRIBUTE_ID (0xA10) +#define ZCL_AVERAGE_RMS_VOLTAGE_MEASUREMENT_PERIOD_PHASE_C_ATTRIBUTE_ID (0xA11) +#define ZCL_AVERAGE_RMS_OVER_VOLTAGE_COUNTER_PHASE_C_ATTRIBUTE_ID (0xA12) +#define ZCL_AVERAGE_RMS_UNDER_VOLTAGE_COUNTER_PHASE_C_ATTRIBUTE_ID (0xA13) +#define ZCL_RMS_EXTREME_OVER_VOLTAGE_PERIOD_PHASE_C_ATTRIBUTE_ID (0xA14) +#define ZCL_RMS_EXTREME_UNDER_VOLTAGE_PERIOD_PHASE_C_ATTRIBUTE_ID (0xA15) +#define ZCL_RMS_VOLTAGE_SAG_PERIOD_PHASE_C_ATTRIBUTE_ID (0xA16) +#define ZCL_RMS_VOLTAGE_SWELL_PERIOD_PHASE_C_ATTRIBUTE_ID (0xA17) +#define ZCL_ELECTRICAL_MEASUREMENT_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ELECTRICAL_MEASUREMENT_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Electrical Measurement +#define ZCL_GET_PROFILE_INFO_RESPONSE_COMMAND_COMMAND_ID (0x0) +#define ZCL_GET_PROFILE_INFO_COMMAND_COMMAND_ID (0x0) +#define ZCL_GET_MEASUREMENT_PROFILE_RESPONSE_COMMAND_COMMAND_ID (0x1) +#define ZCL_GET_MEASUREMENT_PROFILE_COMMAND_COMMAND_ID (0x1) + +// End of cluster: Electrical Measurement + +// Definitions for cluster: Diagnostics +#define ZCL_DIAGNOSTICS_CLUSTER_ID (0xB05) + +// Client attributes for cluster: Diagnostics +#define ZCL_DIAGNOSTICS_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_DIAGNOSTICS_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Diagnostics +#define ZCL_NUMBER_OF_RESETS_ATTRIBUTE_ID (0x0) +#define ZCL_PERSISTENT_MEMORY_WRITES_ATTRIBUTE_ID (0x1) +#define ZCL_MAC_RX_BCAST_ATTRIBUTE_ID (0x100) +#define ZCL_MAC_TX_BCAST_ATTRIBUTE_ID (0x101) +#define ZCL_MAC_RX_UCAST_ATTRIBUTE_ID (0x102) +#define ZCL_MAC_TX_UCAST_ATTRIBUTE_ID (0x103) +#define ZCL_MAC_TX_UCAST_RETRY_ATTRIBUTE_ID (0x104) +#define ZCL_MAC_TX_UCAST_FAIL_ATTRIBUTE_ID (0x105) +#define ZCL_APS_RX_BCAST_ATTRIBUTE_ID (0x106) +#define ZCL_APS_TX_BCAST_ATTRIBUTE_ID (0x107) +#define ZCL_APS_RX_UCAST_ATTRIBUTE_ID (0x108) +#define ZCL_APS_UCAST_SUCCESS_ATTRIBUTE_ID (0x109) +#define ZCL_APS_TX_UCAST_RETRY_ATTRIBUTE_ID (0x10A) +#define ZCL_APS_TX_UCAST_FAIL_ATTRIBUTE_ID (0x10B) +#define ZCL_ROUTE_DISC_INITIATED_ATTRIBUTE_ID (0x10C) +#define ZCL_NEIGHBOR_ADDED_ATTRIBUTE_ID (0x10D) +#define ZCL_NEIGHBOR_REMOVED_ATTRIBUTE_ID (0x10E) +#define ZCL_NEIGHBOR_STALE_ATTRIBUTE_ID (0x10F) +#define ZCL_JOIN_INDICATION_ATTRIBUTE_ID (0x110) +#define ZCL_CHILD_MOVED_ATTRIBUTE_ID (0x111) +#define ZCL_NWK_FC_FAILURE_ATTRIBUTE_ID (0x112) +#define ZCL_APS_FC_FAILURE_ATTRIBUTE_ID (0x113) +#define ZCL_APS_UNAUTHORIZED_KEY_ATTRIBUTE_ID (0x114) +#define ZCL_NWK_DECRYPT_FAILURE_ATTRIBUTE_ID (0x115) +#define ZCL_APS_DECRYPT_FAILURE_ATTRIBUTE_ID (0x116) +#define ZCL_PACKET_BUFFER_ALLOC_FAILURES_ATTRIBUTE_ID (0x117) +#define ZCL_RELAYED_UNICAST_ATTRIBUTE_ID (0x118) +#define ZCL_PHY_TO_MAC_QUEUE_LIMIT_REACHED_ATTRIBUTE_ID (0x119) +#define ZCL_PACKET_VALIDATE_DROP_COUNT_ATTRIBUTE_ID (0x11A) +#define ZCL_AVERAGE_MAC_RETRY_PER_APS_MSG_SENT_ATTRIBUTE_ID (0x11B) +#define ZCL_LAST_MESSAGE_LQI_ATTRIBUTE_ID (0x11C) +#define ZCL_LAST_MESSAGE_RSSI_ATTRIBUTE_ID (0x11D) +#define ZCL_DIAGNOSTICS_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_DIAGNOSTICS_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Diagnostics + +// End of cluster: Diagnostics + +// Definitions for cluster: ZLL Commissioning +#define ZCL_ZLL_COMMISSIONING_CLUSTER_ID (0x1000) + +// Client attributes for cluster: ZLL Commissioning +#define ZCL_ZLL_COMMISSIONING_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ZLL_COMMISSIONING_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: ZLL Commissioning +#define ZCL_ZLL_COMMISSIONING_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_ZLL_COMMISSIONING_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: ZLL Commissioning +#define ZCL_SCAN_REQUEST_COMMAND_ID (0x0) +#define ZCL_SCAN_RESPONSE_COMMAND_ID (0x1) +#define ZCL_DEVICE_INFORMATION_REQUEST_COMMAND_ID (0x2) +#define ZCL_DEVICE_INFORMATION_RESPONSE_COMMAND_ID (0x3) +#define ZCL_IDENTIFY_REQUEST_COMMAND_ID (0x6) +#define ZCL_RESET_TO_FACTORY_NEW_REQUEST_COMMAND_ID (0x7) +#define ZCL_NETWORK_START_REQUEST_COMMAND_ID (0x10) +#define ZCL_NETWORK_START_RESPONSE_COMMAND_ID (0x11) +#define ZCL_NETWORK_JOIN_ROUTER_REQUEST_COMMAND_ID (0x12) +#define ZCL_NETWORK_JOIN_ROUTER_RESPONSE_COMMAND_ID (0x13) +#define ZCL_NETWORK_JOIN_END_DEVICE_REQUEST_COMMAND_ID (0x14) +#define ZCL_NETWORK_JOIN_END_DEVICE_RESPONSE_COMMAND_ID (0x15) +#define ZCL_NETWORK_UPDATE_REQUEST_COMMAND_ID (0x16) +#define ZCL_ENDPOINT_INFORMATION_COMMAND_ID (0x40) +#define ZCL_GET_GROUP_IDENTIFIERS_REQUEST_COMMAND_ID (0x41) +#define ZCL_GET_GROUP_IDENTIFIERS_RESPONSE_COMMAND_ID (0x41) +#define ZCL_GET_ENDPOINT_LIST_REQUEST_COMMAND_ID (0x42) +#define ZCL_GET_ENDPOINT_LIST_RESPONSE_COMMAND_ID (0x42) + +// End of cluster: ZLL Commissioning + +// Definitions for cluster: Sample Mfg Specific Cluster +#define ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_ID (0xFC00) + +// Client attributes for cluster: Sample Mfg Specific Cluster +#define ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Sample Mfg Specific Cluster +#define ZCL_ATTRIBUTE_ONE_ATTRIBUTE_ID (0x0) +#define ZCL_ATTRIBUTE_TWO_ATTRIBUTE_ID (0x1) +#define ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Sample Mfg Specific Cluster +#define ZCL_COMMAND_ONE_COMMAND_ID (0x0) + +// End of cluster: Sample Mfg Specific Cluster + +// Definitions for cluster: Sample Mfg Specific Cluster 2 +#define ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_2_ID (0xFC00) + +// Client attributes for cluster: Sample Mfg Specific Cluster 2 +#define ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_2_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_2_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Sample Mfg Specific Cluster 2 +#define ZCL_ATTRIBUTE_THREE_ATTRIBUTE_ID (0x0) +#define ZCL_ATTRIBUTE_FOUR_ATTRIBUTE_ID (0x1) +#define ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_2_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_2_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Sample Mfg Specific Cluster 2 +#define ZCL_COMMAND_TWO_COMMAND_ID (0x0) + +// End of cluster: Sample Mfg Specific Cluster 2 + +// Definitions for cluster: Configuration Cluster +#define ZCL_OTA_CONFIGURATION_CLUSTER_ID (0xFC01) + +// Client attributes for cluster: Configuration Cluster +#define ZCL_OTA_CONFIGURATION_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_OTA_CONFIGURATION_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: Configuration Cluster +#define ZCL_TOKENS_LOCKED_ATTRIBUTE_ID (0x0) +#define ZCL_OTA_CONFIGURATION_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_OTA_CONFIGURATION_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: Configuration Cluster +#define ZCL_SET_TOKEN_COMMAND_ID (0x0) +#define ZCL_RETURN_TOKEN_COMMAND_ID (0x0) +#define ZCL_LOCK_TOKENS_COMMAND_ID (0x1) +#define ZCL_READ_TOKENS_COMMAND_ID (0x2) +#define ZCL_UNLOCK_TOKENS_COMMAND_ID (0x3) + +// End of cluster: Configuration Cluster + +// Definitions for cluster: MFGLIB Cluster +#define ZCL_MFGLIB_CLUSTER_ID (0xFC02) + +// Client attributes for cluster: MFGLIB Cluster +#define ZCL_MFGLIB_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_MFGLIB_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: MFGLIB Cluster +#define ZCL_PACKETS_RECEIVED_ATTRIBUTE_ID (0x0) +#define ZCL_SAVED_RSSI_ATTRIBUTE_ID (0x1) +#define ZCL_SAVED_LQI_ATTRIBUTE_ID (0x2) +#define ZCL_MFGLIB_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_MFGLIB_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: MFGLIB Cluster +#define ZCL_STREAM_COMMAND_ID (0x0) +#define ZCL_TONE_COMMAND_ID (0x1) +#define ZCL_RX_MODE_COMMAND_ID (0x2) + +// End of cluster: MFGLIB Cluster + +// Definitions for cluster: SL Works With All Hubs +#define ZCL_SL_WWAH_CLUSTER_ID (0xFC57) + +// Client attributes for cluster: SL Works With All Hubs +#define ZCL_SL_WWAH_CLUSTER_CLUSTER_REVISION_CLIENT_ATTRIBUTE_ID (0xFFFD) +#define ZCL_SL_WWAH_CLUSTER_REPORTING_STATUS_CLIENT_ATTRIBUTE_ID (0xFFFE) + +// Server attributes for cluster: SL Works With All Hubs +#define ZCL_SL_DISABLE_OTA_DOWNGRADES_ATTRIBUTE_ID (0x2) +#define ZCL_SL_MGMT_LEAVE_WITHOUT_REJOIN_ENABLED_ATTRIBUTE_ID (0x3) +#define ZCL_SL_NWK_RETRY_COUNT_ATTRIBUTE_ID (0x4) +#define ZCL_SL_MAC_RETRY_COUNT_ATTRIBUTE_ID (0x5) +#define ZCL_SL_ROUTER_CHECKIN_ENABLED_ATTRIBUTE_ID (0x6) +#define ZCL_SL_TOUCHLINK_INTERPAN_ENABLED_ATTRIBUTE_ID (0x7) +#define ZCL_SL_WWAH_PARENT_CLASSIFICATION_ENABLED_ATTRIBUTE_ID (0x8) +#define ZCL_SL_WWAH_APP_EVENT_RETRY_ENABLED_ATTRIBUTE_ID (0x9) +#define ZCL_SL_WWAH_APP_EVENT_RETRY_QUEUE_SIZE_ATTRIBUTE_ID (0xA) +#define ZCL_SL_WWAH_REJOIN_ENABLED_ATTRIBUTE_ID (0xB) +#define ZCL_SL_MAC_POLL_FAILURE_WAIT_TIME_ATTRIBUTE_ID (0xC) +#define ZCL_SL_CONFIGURATION_MODE_ENABLED_ATTRIBUTE_ID (0xD) +#define ZCL_SL_CURRENT_DEBUG_REPORT_ID_ATTRIBUTE_ID (0xE) +#define ZCL_SL_TC_SECURITY_ON_NTWK_KEY_ROTATION_ENABLED_ATTRIBUTE_ID (0xF) +#define ZCL_SL_WWAH_BAD_PARENT_RECOVERY_ENABLED_ATTRIBUTE_ID (0x10) +#define ZCL_SL_PENDING_NETWORK_UPDATE_CHANNEL_ATTRIBUTE_ID (0x11) +#define ZCL_SL_PENDING_NETWORK_UPDATE_PANID_ATTRIBUTE_ID (0x12) +#define ZCL_SL_OTA_MAX_OFFLINE_DURATION_ATTRIBUTE_ID (0x13) +#define ZCL_SL_WWAH_CLUSTER_CLUSTER_REVISION_SERVER_ATTRIBUTE_ID (0xFFFD) +#define ZCL_SL_WWAH_CLUSTER_REPORTING_STATUS_SERVER_ATTRIBUTE_ID (0xFFFE) + +// Commands for cluster: SL Works With All Hubs +#define ZCL_ENABLE_APS_LINK_KEY_AUTHORIZATION_COMMAND_ID (0x0) +#define ZCL_APS_LINK_KEY_AUTHORIZATION_QUERY_RESPONSE_COMMAND_ID (0x0) +#define ZCL_DISABLE_APS_LINK_KEY_AUTHORIZATION_COMMAND_ID (0x1) +#define ZCL_POWERING_OFF_NOTIFICATION_COMMAND_ID (0x1) +#define ZCL_APS_LINK_KEY_AUTHORIZATION_QUERY_COMMAND_ID (0x2) +#define ZCL_POWERING_ON_NOTIFICATION_COMMAND_ID (0x2) +#define ZCL_REQUEST_NEW_APS_LINK_KEY_COMMAND_ID (0x3) +#define ZCL_SHORT_ADDRESS_CHANGE_COMMAND_ID (0x3) +#define ZCL_ENABLE_WWAH_APP_EVENT_RETRY_ALGORITHM_COMMAND_ID (0x4) +#define ZCL_APS_ACK_ENABLEMENT_QUERY_RESPONSE_COMMAND_ID (0x4) +#define ZCL_DISABLE_WWAH_APP_EVENT_RETRY_ALGORITHM_COMMAND_ID (0x5) +#define ZCL_POWER_DESCRIPTOR_CHANGE_COMMAND_ID (0x5) +#define ZCL_REQUEST_TIME_COMMAND_ID (0x6) +#define ZCL_NEW_DEBUG_REPORT_NOTIFICATION_COMMAND_ID (0x6) +#define ZCL_ENABLE_WWAH_REJOIN_ALGORITHM_COMMAND_ID (0x7) +#define ZCL_DEBUG_REPORT_QUERY_RESPONSE_COMMAND_ID (0x7) +#define ZCL_DISABLE_WWAH_REJOIN_ALGORITHM_COMMAND_ID (0x8) +#define ZCL_TRUST_CENTER_FOR_CLUSTER_SERVER_QUERY_RESPONSE_COMMAND_ID (0x8) +#define ZCL_SET_IAS_ZONE_ENROLLMENT_METHOD_COMMAND_ID (0x9) +#define ZCL_SURVEY_BEACONS_RESPONSE_COMMAND_ID (0x9) +#define ZCL_CLEAR_BINDING_TABLE_COMMAND_ID (0xA) +#define ZCL_ENABLE_PERIODIC_ROUTER_CHECK_INS_COMMAND_ID (0xB) +#define ZCL_DISABLE_PERIODIC_ROUTER_CHECK_INS_COMMAND_ID (0xC) +#define ZCL_SET_MAC_POLL_FAILURE_WAIT_TIME_COMMAND_ID (0xD) +#define ZCL_SET_PENDING_NETWORK_UPDATE_COMMAND_ID (0xE) +#define ZCL_REQUIRE_APS_ACKS_ON_UNICASTS_COMMAND_ID (0xF) +#define ZCL_REMOVE_APS_ACKS_ON_UNICASTS_REQUIREMENT_COMMAND_ID (0x10) +#define ZCL_APS_ACK_REQUIREMENT_QUERY_COMMAND_ID (0x11) +#define ZCL_DEBUG_REPORT_QUERY_COMMAND_ID (0x12) +#define ZCL_SURVEY_BEACONS_COMMAND_ID (0x13) +#define ZCL_DISABLE_OTA_DOWNGRADES_COMMAND_ID (0x14) +#define ZCL_DISABLE_MGMT_LEAVE_WITHOUT_REJOIN_COMMAND_ID (0x15) +#define ZCL_DISABLE_TOUCHLINK_INTERPAN_MESSAGE_SUPPORT_COMMAND_ID (0x16) +#define ZCL_ENABLE_WWAH_PARENT_CLASSIFICATION_COMMAND_ID (0x17) +#define ZCL_DISABLE_WWAH_PARENT_CLASSIFICATION_COMMAND_ID (0x18) +#define ZCL_ENABLE_TC_SECURITY_ON_NTWK_KEY_ROTATION_COMMAND_ID (0x19) +#define ZCL_ENABLE_WWAH_BAD_PARENT_RECOVERY_COMMAND_ID (0x1A) +#define ZCL_DISABLE_WWAH_BAD_PARENT_RECOVERY_COMMAND_ID (0x1B) +#define ZCL_ENABLE_CONFIGURATION_MODE_COMMAND_ID (0x1C) +#define ZCL_DISABLE_CONFIGURATION_MODE_COMMAND_ID (0x1D) +#define ZCL_USE_TRUST_CENTER_FOR_CLUSTER_SERVER_COMMAND_ID (0x1E) +#define ZCL_TRUST_CENTER_FOR_CLUSTER_SERVER_QUERY_COMMAND_ID (0x1F) +#define ZCL_USE_TRUST_CENTER_FOR_CLUSTER_SERVER_RESPONSE_COMMAND_ID (0x9E) + +// End of cluster: SL Works With All Hubs + +#endif // __ZAP_GEN_ID__ diff --git a/silabs_examples/credentials/host/zap/zap-print.h b/silabs_examples/credentials/host/zap/zap-print.h new file mode 100644 index 00000000000000..9c606d32356c62 --- /dev/null +++ b/silabs_examples/credentials/host/zap/zap-print.h @@ -0,0 +1,37 @@ +// This file is generated by ZCL Advanced Platform generator. Please don't edit manually. + +// Enclosing macro to prevent multiple inclusion +#ifndef SILABS_PRINT_CLUSTER +#define SILABS_PRINT_CLUSTER + + +// This is the mapping of IDs to cluster names assuming a format according +// to the "EmberAfClusterName" defined in the ZCL header. +// The names of clusters that are not present, are removed. + + #define SILABS_PRINTCLUSTER_BASIC_CLUSTER { ZCL_BASIC_CLUSTER_ID, 0x0000, "Basic" }, + #define SILABS_PRINTCLUSTER_COLOR_CONTROL_CLUSTER { ZCL_COLOR_CONTROL_CLUSTER_ID, 0x0000, "Color Control" }, + #define SILABS_PRINTCLUSTER_DOOR_LOCK_CLUSTER { ZCL_DOOR_LOCK_CLUSTER_ID, 0x0000, "Door Lock" }, + #define SILABS_PRINTCLUSTER_GROUPS_CLUSTER { ZCL_GROUPS_CLUSTER_ID, 0x0000, "Groups" }, + #define SILABS_PRINTCLUSTER_IDENTIFY_CLUSTER { ZCL_IDENTIFY_CLUSTER_ID, 0x0000, "Identify" }, + #define SILABS_PRINTCLUSTER_LEVEL_CONTROL_CLUSTER { ZCL_LEVEL_CONTROL_CLUSTER_ID, 0x0000, "Level Control" }, + #define SILABS_PRINTCLUSTER_OCCUPANCY_SENSING_CLUSTER { ZCL_OCCUPANCY_SENSING_CLUSTER_ID, 0x0000, "Occupancy Sensing" }, + #define SILABS_PRINTCLUSTER_ON_OFF_CLUSTER { ZCL_ON_OFF_CLUSTER_ID, 0x0000, "On/off" }, + #define SILABS_PRINTCLUSTER_OTA_BOOTLOAD_CLUSTER { ZCL_OTA_BOOTLOAD_CLUSTER_ID, 0x0000, "Over the Air Bootloading" }, + #define SILABS_PRINTCLUSTER_POLL_CONTROL_CLUSTER { ZCL_POLL_CONTROL_CLUSTER_ID, 0x0000, "Poll Control" }, + #define SILABS_PRINTCLUSTER_THERMOSTAT_CLUSTER { ZCL_THERMOSTAT_CLUSTER_ID, 0x0000, "Thermostat" }, + +#define CLUSTER_IDS_TO_NAMES \ + SILABS_PRINTCLUSTER_BASIC_CLUSTER \ + SILABS_PRINTCLUSTER_COLOR_CONTROL_CLUSTER \ + SILABS_PRINTCLUSTER_DOOR_LOCK_CLUSTER \ + SILABS_PRINTCLUSTER_GROUPS_CLUSTER \ + SILABS_PRINTCLUSTER_IDENTIFY_CLUSTER \ + SILABS_PRINTCLUSTER_LEVEL_CONTROL_CLUSTER \ + SILABS_PRINTCLUSTER_OCCUPANCY_SENSING_CLUSTER \ + SILABS_PRINTCLUSTER_ON_OFF_CLUSTER \ + SILABS_PRINTCLUSTER_OTA_BOOTLOAD_CLUSTER \ + SILABS_PRINTCLUSTER_POLL_CONTROL_CLUSTER \ + SILABS_PRINTCLUSTER_THERMOSTAT_CLUSTER \ + +#endif // SILABS_PRINT_CLUSTER diff --git a/silabs_examples/credentials/host/zap/zap-tokens.h b/silabs_examples/credentials/host/zap/zap-tokens.h new file mode 100644 index 00000000000000..b9c4f40435e655 --- /dev/null +++ b/silabs_examples/credentials/host/zap/zap-tokens.h @@ -0,0 +1,27 @@ +// This file is generated by ZCL Advanced Platform generator. Please don't edit manually. + +// This file contains the tokens for nonSingletons stored in flash + + + +// Types for the tokens +#ifdef DEFINETYPES +#endif // DEFINETYPES + + +#ifdef DEFINETOKENS +#endif // DEFINETOKENS + + +// Macro snippet that loads all the attributes from tokens +#define GENERATED_TOKEN_LOADER(endpoint) do {\ +} while(false) + + +// Macro snippet that saves the attribute to token +#define GENERATED_TOKEN_SAVER do { \ + uint8_t allZeroData[1]; \ + MEMSET(allZeroData, 0, 1); \ + if ( data == NULL ) { data = allZeroData; } \ +} while(false) + diff --git a/silabs_examples/credentials/host/zap/zap-type.h b/silabs_examples/credentials/host/zap/zap-type.h new file mode 100644 index 00000000000000..88090c473bfb9f --- /dev/null +++ b/silabs_examples/credentials/host/zap/zap-type.h @@ -0,0 +1,4341 @@ +// This file is generated by ZCL Advanced Platform generator. Please don't edit manually. + +#ifndef __ZAP_GEN_TYPE__ +#define __ZAP_GEN_TYPE__ + +// ZCL attribute types +enum { + ZCL_NO_DATA_ATTRIBUTE_TYPE = 0x00, // No data + ZCL_DATA8_ATTRIBUTE_TYPE = 0x08, // 8-bit data + ZCL_DATA16_ATTRIBUTE_TYPE = 0x09, // 16-bit data + ZCL_DATA24_ATTRIBUTE_TYPE = 0x0A, // 24-bit data + ZCL_DATA32_ATTRIBUTE_TYPE = 0x0B, // 32-bit data + ZCL_DATA40_ATTRIBUTE_TYPE = 0x0C, // 40-bit data + ZCL_DATA48_ATTRIBUTE_TYPE = 0x0D, // 48-bit data + ZCL_DATA56_ATTRIBUTE_TYPE = 0x0E, // 56-bit data + ZCL_DATA64_ATTRIBUTE_TYPE = 0x0F, // 64-bit data + ZCL_BOOLEAN_ATTRIBUTE_TYPE = 0x10, // Boolean + ZCL_BITMAP8_ATTRIBUTE_TYPE = 0x18, // 8-bit bitmap + ZCL_BITMAP16_ATTRIBUTE_TYPE = 0x19, // 16-bit bitmap + ZCL_BITMAP24_ATTRIBUTE_TYPE = 0x1A, // 24-bit bitmap + ZCL_BITMAP32_ATTRIBUTE_TYPE = 0x1B, // 32-bit bitmap + ZCL_BITMAP40_ATTRIBUTE_TYPE = 0x1C, // 40-bit bitmap + ZCL_BITMAP48_ATTRIBUTE_TYPE = 0x1D, // 48-bit bitmap + ZCL_BITMAP56_ATTRIBUTE_TYPE = 0x1E, // 56-bit bitmap + ZCL_BITMAP64_ATTRIBUTE_TYPE = 0x1F, // 64-bit bitmap + ZCL_INT8U_ATTRIBUTE_TYPE = 0x20, // Unsigned 8-bit integer + ZCL_INT16U_ATTRIBUTE_TYPE = 0x21, // Unsigned 16-bit integer + ZCL_INT24U_ATTRIBUTE_TYPE = 0x22, // Unsigned 24-bit integer + ZCL_INT32U_ATTRIBUTE_TYPE = 0x23, // Unsigned 32-bit integer + ZCL_INT40U_ATTRIBUTE_TYPE = 0x24, // Unsigned 40-bit integer + ZCL_INT48U_ATTRIBUTE_TYPE = 0x25, // Unsigned 48-bit integer + ZCL_INT56U_ATTRIBUTE_TYPE = 0x26, // Unsigned 56-bit integer + ZCL_INT64U_ATTRIBUTE_TYPE = 0x27, // Unsigned 64-bit integer + ZCL_INT8S_ATTRIBUTE_TYPE = 0x28, // Signed 8-bit integer + ZCL_INT16S_ATTRIBUTE_TYPE = 0x29, // Signed 16-bit integer + ZCL_INT24S_ATTRIBUTE_TYPE = 0x2A, // Signed 24-bit integer + ZCL_INT32S_ATTRIBUTE_TYPE = 0x2B, // Signed 32-bit integer + ZCL_INT40S_ATTRIBUTE_TYPE = 0x2C, // Signed 40-bit integer + ZCL_INT48S_ATTRIBUTE_TYPE = 0x2D, // Signed 48-bit integer + ZCL_INT56S_ATTRIBUTE_TYPE = 0x2E, // Signed 56-bit integer + ZCL_INT64S_ATTRIBUTE_TYPE = 0x2F, // Signed 64-bit integer + ZCL_ENUM8_ATTRIBUTE_TYPE = 0x30, // 8-bit enumeration + ZCL_ENUM16_ATTRIBUTE_TYPE = 0x31, // 16-bit enumeration + ZCL_FLOAT_SEMI_ATTRIBUTE_TYPE = 0x38, // Semi-precision + ZCL_FLOAT_SINGLE_ATTRIBUTE_TYPE = 0x39, // Single precision + ZCL_FLOAT_DOUBLE_ATTRIBUTE_TYPE = 0x3A, // Double precision + ZCL_OCTET_STRING_ATTRIBUTE_TYPE = 0x41, // Octet string + ZCL_CHAR_STRING_ATTRIBUTE_TYPE = 0x42, // Character string + ZCL_LONG_OCTET_STRING_ATTRIBUTE_TYPE = 0x43, // Long octet string + ZCL_LONG_CHAR_STRING_ATTRIBUTE_TYPE = 0x44, // Long character string + ZCL_ARRAY_ATTRIBUTE_TYPE = 0x48, // Array + ZCL_STRUCT_ATTRIBUTE_TYPE = 0x4C, // Structure + ZCL_SET_ATTRIBUTE_TYPE = 0x50, // Set + ZCL_BAG_ATTRIBUTE_TYPE = 0x51, // Bag + ZCL_TIME_OF_DAY_ATTRIBUTE_TYPE = 0xE0, // Time of day + ZCL_DATE_ATTRIBUTE_TYPE = 0xE1, // Date + ZCL_UTC_TIME_ATTRIBUTE_TYPE = 0xE2, // UTC Time + ZCL_CLUSTER_ID_ATTRIBUTE_TYPE = 0xE8, // Cluster ID + ZCL_ATTRIBUTE_ID_ATTRIBUTE_TYPE = 0xE9, // Attribute ID + ZCL_BACNET_OID_ATTRIBUTE_TYPE = 0xEA, // BACnet OID + ZCL_IEEE_ADDRESS_ATTRIBUTE_TYPE = 0xF0, // IEEE address + ZCL_SECURITY_KEY_ATTRIBUTE_TYPE = 0xF1, // 128-bit security key + ZCL_UNKNOWN_ATTRIBUTE_TYPE = 0xFF, // Unknown +}; + +// ZCL attribute sizes +#define ZAP_GENERATED_ATTRIBUTE_SIZES { \ + ZCL_DATA8_ATTRIBUTE_TYPE, 1, \ + ZCL_DATA16_ATTRIBUTE_TYPE, 2, \ + ZCL_DATA24_ATTRIBUTE_TYPE, 3, \ + ZCL_DATA32_ATTRIBUTE_TYPE, 4, \ + ZCL_DATA40_ATTRIBUTE_TYPE, 5, \ + ZCL_DATA48_ATTRIBUTE_TYPE, 6, \ + ZCL_DATA56_ATTRIBUTE_TYPE, 7, \ + ZCL_DATA64_ATTRIBUTE_TYPE, 8, \ + ZCL_BOOLEAN_ATTRIBUTE_TYPE, 1, \ + ZCL_BITMAP8_ATTRIBUTE_TYPE, 1, \ + ZCL_BITMAP16_ATTRIBUTE_TYPE, 2, \ + ZCL_BITMAP24_ATTRIBUTE_TYPE, 3, \ + ZCL_BITMAP32_ATTRIBUTE_TYPE, 4, \ + ZCL_BITMAP40_ATTRIBUTE_TYPE, 5, \ + ZCL_BITMAP48_ATTRIBUTE_TYPE, 6, \ + ZCL_BITMAP56_ATTRIBUTE_TYPE, 7, \ + ZCL_BITMAP64_ATTRIBUTE_TYPE, 8, \ + ZCL_INT8U_ATTRIBUTE_TYPE, 1, \ + ZCL_INT16U_ATTRIBUTE_TYPE, 2, \ + ZCL_INT24U_ATTRIBUTE_TYPE, 3, \ + ZCL_INT32U_ATTRIBUTE_TYPE, 4, \ + ZCL_INT40U_ATTRIBUTE_TYPE, 5, \ + ZCL_INT48U_ATTRIBUTE_TYPE, 6, \ + ZCL_INT56U_ATTRIBUTE_TYPE, 7, \ + ZCL_INT64U_ATTRIBUTE_TYPE, 8, \ + ZCL_INT8S_ATTRIBUTE_TYPE, 1, \ + ZCL_INT16S_ATTRIBUTE_TYPE, 2, \ + ZCL_INT24S_ATTRIBUTE_TYPE, 3, \ + ZCL_INT32S_ATTRIBUTE_TYPE, 4, \ + ZCL_INT40S_ATTRIBUTE_TYPE, 5, \ + ZCL_INT48S_ATTRIBUTE_TYPE, 6, \ + ZCL_INT56S_ATTRIBUTE_TYPE, 7, \ + ZCL_INT64S_ATTRIBUTE_TYPE, 8, \ + ZCL_ENUM8_ATTRIBUTE_TYPE, 1, \ + ZCL_ENUM16_ATTRIBUTE_TYPE, 2, \ + ZCL_FLOAT_SEMI_ATTRIBUTE_TYPE, 2, \ + ZCL_FLOAT_SINGLE_ATTRIBUTE_TYPE, 4, \ + ZCL_FLOAT_DOUBLE_ATTRIBUTE_TYPE, 8, \ + ZCL_TIME_OF_DAY_ATTRIBUTE_TYPE, 4, \ + ZCL_DATE_ATTRIBUTE_TYPE, 4, \ + ZCL_UTC_TIME_ATTRIBUTE_TYPE, 4, \ + ZCL_CLUSTER_ID_ATTRIBUTE_TYPE, 2, \ + ZCL_ATTRIBUTE_ID_ATTRIBUTE_TYPE, 2, \ + ZCL_BACNET_OID_ATTRIBUTE_TYPE, 4, \ + ZCL_IEEE_ADDRESS_ATTRIBUTE_TYPE, 8, \ + ZCL_SECURITY_KEY_ATTRIBUTE_TYPE, 16, \ +} + +// ZCL enums + + +// Enum for 11073ConnectRequestConnectControl +typedef enum { + EMBER_ZCL_11073_CONNECT_REQUEST_CONNECT_CONTROL_PREEMPTIBLE = 1, +} EmberAf11073ConnectRequestConnectControl; + +// Enum for 11073TunnelConnectionStatus +typedef enum { + EMBER_ZCL_11073_TUNNEL_CONNECTION_STATUS_DISCONNECTED = 0, + EMBER_ZCL_11073_TUNNEL_CONNECTION_STATUS_CONNECTED = 1, + EMBER_ZCL_11073_TUNNEL_CONNECTION_STATUS_NOT_AUTHORIZED = 2, + EMBER_ZCL_11073_TUNNEL_CONNECTION_STATUS_RECONNECT_REQUEST = 3, + EMBER_ZCL_11073_TUNNEL_CONNECTION_STATUS_ALREADY_CONNECTED = 4, +} EmberAf11073TunnelConnectionStatus; + +// Enum for AlertCountType +typedef enum { + EMBER_ZCL_ALERT_COUNT_TYPE_UNSTRUCTURED = 0, +} EmberAfAlertCountType; + +// Enum for AlertStructureCategory +typedef enum { + EMBER_ZCL_ALERT_STRUCTURE_CATEGORY_WARNING = 256, + EMBER_ZCL_ALERT_STRUCTURE_CATEGORY_DANGER = 512, + EMBER_ZCL_ALERT_STRUCTURE_CATEGORY_FAILURE = 768, +} EmberAfAlertStructureCategory; + +// Enum for AlertStructurePresenceRecovery +typedef enum { + EMBER_ZCL_ALERT_STRUCTURE_PRESENCE_RECOVERY_RECOVERY = 0, + EMBER_ZCL_ALERT_STRUCTURE_PRESENCE_RECOVERY_PRESENCE = 4096, +} EmberAfAlertStructurePresenceRecovery; + +// Enum for AlternateCostUnit +typedef enum { + EMBER_ZCL_ALTERNATE_COST_UNIT_KG_OF_CO2_PER_UNIT_OF_MEASURE = 2, +} EmberAfAlternateCostUnit; + +// Enum for AmiCriticalityLevel +typedef enum { + EMBER_ZCL_AMI_CRITICALITY_LEVEL_RESERVED = 0, + EMBER_ZCL_AMI_CRITICALITY_LEVEL_GREEN = 1, + EMBER_ZCL_AMI_CRITICALITY_LEVEL_1 = 2, + EMBER_ZCL_AMI_CRITICALITY_LEVEL_2 = 3, + EMBER_ZCL_AMI_CRITICALITY_LEVEL_3 = 4, + EMBER_ZCL_AMI_CRITICALITY_LEVEL_4 = 5, + EMBER_ZCL_AMI_CRITICALITY_LEVEL_5 = 6, + EMBER_ZCL_AMI_CRITICALITY_LEVEL_EMERGENCY = 7, + EMBER_ZCL_AMI_CRITICALITY_LEVEL_PLANNED_OUTAGE = 8, + EMBER_ZCL_AMI_CRITICALITY_LEVEL_SERVICE_DISCONNECT = 9, + EMBER_ZCL_AMI_CRITICALITY_LEVEL_UTILITY_DEFINED1 = 10, + EMBER_ZCL_AMI_CRITICALITY_LEVEL_UTILITY_DEFINED2 = 11, + EMBER_ZCL_AMI_CRITICALITY_LEVEL_UTILITY_DEFINED3 = 12, + EMBER_ZCL_AMI_CRITICALITY_LEVEL_UTILITY_DEFINED4 = 13, + EMBER_ZCL_AMI_CRITICALITY_LEVEL_UTILITY_DEFINED5 = 14, + EMBER_ZCL_AMI_CRITICALITY_LEVEL_UTILITY_DEFINED6 = 15, +} EmberAfAmiCriticalityLevel; + +// Enum for AmiEventStatus +typedef enum { + EMBER_ZCL_AMI_EVENT_STATUS_LOAD_CONTROL_EVENT_COMMAND_RX = 1, + EMBER_ZCL_AMI_EVENT_STATUS_EVENT_STARTED = 2, + EMBER_ZCL_AMI_EVENT_STATUS_EVENT_COMPLETED = 3, + EMBER_ZCL_AMI_EVENT_STATUS_USER_HAS_CHOOSE_TO_OPT_OUT = 4, + EMBER_ZCL_AMI_EVENT_STATUS_USER_HAS_CHOOSE_TO_OPT_IN = 5, + EMBER_ZCL_AMI_EVENT_STATUS_THE_EVENT_HAS_BEEN_CANCELED = 6, + EMBER_ZCL_AMI_EVENT_STATUS_THE_EVENT_HAS_BEEN_SUPERSEDED = 7, + EMBER_ZCL_AMI_EVENT_STATUS_EVENT_PARTIALLY_COMPLETED_WITH_USER_OPT_OUT = 8, + EMBER_ZCL_AMI_EVENT_STATUS_EVENT_PARTIALLY_COMPLETED_DUE_TO_USER_OPT_IN = 9, + EMBER_ZCL_AMI_EVENT_STATUS_EVENT_COMPLETED_NO_USER_PARTICIPATION_PREVIOUS_OPT_OUT = 10, + EMBER_ZCL_AMI_EVENT_STATUS_INVALID_OPT_OUT = 246, + EMBER_ZCL_AMI_EVENT_STATUS_EVENT_NOT_FOUND = 247, + EMBER_ZCL_AMI_EVENT_STATUS_REJECTED_INVALID_CANCEL_COMMAND = 248, + EMBER_ZCL_AMI_EVENT_STATUS_REJECTED_INVALID_CANCEL_COMMAND_INVALID_EFFECTIVE_TIME = 249, + EMBER_ZCL_AMI_EVENT_STATUS_REJECTED_EVENT_EXPIRED = 251, + EMBER_ZCL_AMI_EVENT_STATUS_REJECTED_INVALID_CANCEL_UNDEFINED_EVENT = 253, + EMBER_ZCL_AMI_EVENT_STATUS_LOAD_CONTROL_EVENT_COMMAND_REJECTED = 254, +} EmberAfAmiEventStatus; + +// Enum for AmiGetProfileStatus +typedef enum { + EMBER_ZCL_AMI_GET_PROFILE_STATUS_SUCCESS = 0, + EMBER_ZCL_AMI_GET_PROFILE_STATUS_UNDEFINED_INTERVAL_CHANNEL_REQUESTED = 1, + EMBER_ZCL_AMI_GET_PROFILE_STATUS_INTERVAL_CHANNEL_NOT_SUPPORTED = 2, + EMBER_ZCL_AMI_GET_PROFILE_STATUS_INVALID_END_TIME = 3, + EMBER_ZCL_AMI_GET_PROFILE_STATUS_MORE_PERIODS_REQUESTED_THAN_CAN_BE_RETURNED = 4, + EMBER_ZCL_AMI_GET_PROFILE_STATUS_NO_INTERVALS_AVAILABLE_FOR_THE_REQUESTED_TIME = 5, +} EmberAfAmiGetProfileStatus; + +// Enum for AmiIntervalChannel +typedef enum { + EMBER_ZCL_AMI_INTERVAL_CHANNEL_CONSUMPTION_DELIVERED = 0, + EMBER_ZCL_AMI_INTERVAL_CHANNEL_CONSUMPTION_RECEIVED = 1, +} EmberAfAmiIntervalChannel; + +// Enum for AmiIntervalPeriod +typedef enum { + EMBER_ZCL_AMI_INTERVAL_PERIOD_DAILY = 0, + EMBER_ZCL_AMI_INTERVAL_PERIOD_MINUTES60 = 1, + EMBER_ZCL_AMI_INTERVAL_PERIOD_MINUTES30 = 2, + EMBER_ZCL_AMI_INTERVAL_PERIOD_MINUTES15 = 3, + EMBER_ZCL_AMI_INTERVAL_PERIOD_MINUTES10 = 4, + EMBER_ZCL_AMI_INTERVAL_PERIOD_MINUTES7P5 = 5, + EMBER_ZCL_AMI_INTERVAL_PERIOD_MINUTES5 = 6, + EMBER_ZCL_AMI_INTERVAL_PERIOD_MINUTES2P5 = 7, +} EmberAfAmiIntervalPeriod; + +// Enum for AmiKeyEstablishmentStatus +typedef enum { + EMBER_ZCL_AMI_KEY_ESTABLISHMENT_STATUS_SUCCESS = 0, + EMBER_ZCL_AMI_KEY_ESTABLISHMENT_STATUS_UNKNOWN_ISSUER = 1, + EMBER_ZCL_AMI_KEY_ESTABLISHMENT_STATUS_BAD_KEY_CONFIRM = 2, + EMBER_ZCL_AMI_KEY_ESTABLISHMENT_STATUS_BAD_MESSAGE = 3, + EMBER_ZCL_AMI_KEY_ESTABLISHMENT_STATUS_NO_RESOURCES = 4, + EMBER_ZCL_AMI_KEY_ESTABLISHMENT_STATUS_UNSUPPORTED_SUITE = 5, + EMBER_ZCL_AMI_KEY_ESTABLISHMENT_STATUS_INVALID_KEY_USAGE = 6, +} EmberAfAmiKeyEstablishmentStatus; + +// Enum for AmiRegistrationState +typedef enum { + EMBER_ZCL_AMI_REGISTRATION_STATE_UNREGISTERED = 0, + EMBER_ZCL_AMI_REGISTRATION_STATE_JOINING_NETWORK = 1, + EMBER_ZCL_AMI_REGISTRATION_STATE_JOINED_NETWORK = 2, + EMBER_ZCL_AMI_REGISTRATION_STATE_SUBMITTED_REGISTRATION_REQUEST = 3, + EMBER_ZCL_AMI_REGISTRATION_STATE_REGISTRATION_REJECTED = 4, + EMBER_ZCL_AMI_REGISTRATION_STATE_REGISTERED = 5, + EMBER_ZCL_AMI_REGISTRATION_STATE_REGISTERATION_NOT_POSSIBLE = 6, +} EmberAfAmiRegistrationState; + +// Enum for AmiUnitOfMeasure +typedef enum { + EMBER_ZCL_AMI_UNIT_OF_MEASURE_KILO_WATT_HOURS = 0, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_CUBIC_METER_PER_HOUR = 1, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_CUBIC_FEET_PER_HOUR = 2, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_CENTUM_CUBIC_FEET_PER_HOUR = 3, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_US_GALLONS_PER_HOUR = 4, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_IMPERIAL_GALLONS_PER_HOUR = 5, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_BT_US_OR_BTU_PER_HOUR = 6, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_LITERS_OR_LITERS_PER_HOUR = 7, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_KPA_GAUGE = 8, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_KPA_ABSOLUTE = 9, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_MCF_OR_MCF_PER_SECOND = 10, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_UNITLESS = 11, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_MJ_OR_MJ_PER_SECOND = 12, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_K_VAR_OR_K_VAR_HOURS = 13, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_KILO_WATT_HOURS_BCD = 128, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_CUBIC_METER_PER_HOUR_BCD = 129, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_CUBIC_FEET_PER_HOUR_BCD = 130, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_CENTUM_CUBIC_FEET_PER_HOUR_BCD = 131, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_US_GALLONS_PER_HOUR_BCD = 132, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_IMPERIAL_GALLONS_PER_HOUR_BCD = 133, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_BT_US_OR_BTU_PER_HOUR_BCD = 134, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_LITERS_OR_LITERS_PER_HOUR_BCD = 135, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_KPA_GUAGE_BCD = 136, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_KPA_ABSOLUTE_BCD = 137, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_MCF_OR_MCF_PER_SECOND_BCD = 138, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_UNITLESS_BCD = 139, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_MJ_OR_MJ_PER_SECOND_BCD = 140, + EMBER_ZCL_AMI_UNIT_OF_MEASURE_K_VAR_OR_K_VAR_HOURS_BCD = 141, +} EmberAfAmiUnitOfMeasure; + +// Enum for AnonymousDataState +typedef enum { + EMBER_ZCL_ANONYMOUS_DATA_STATE_NO_SOURCE_FOUND = 0, + EMBER_ZCL_ANONYMOUS_DATA_STATE_SOURCE_FOUND = 1, +} EmberAfAnonymousDataState; + +// Enum for ApplianceStatus +typedef enum { + EMBER_ZCL_APPLIANCE_STATUS_OFF = 1, + EMBER_ZCL_APPLIANCE_STATUS_STAND_BY = 2, + EMBER_ZCL_APPLIANCE_STATUS_PROGRAMMED = 3, + EMBER_ZCL_APPLIANCE_STATUS_PROGRAMMED_WAITING_TO_START = 4, + EMBER_ZCL_APPLIANCE_STATUS_RUNNING = 5, + EMBER_ZCL_APPLIANCE_STATUS_PAUSE = 6, + EMBER_ZCL_APPLIANCE_STATUS_END_PROGRAMMED = 7, + EMBER_ZCL_APPLIANCE_STATUS_FAILURE = 8, + EMBER_ZCL_APPLIANCE_STATUS_PROGRAMME_INTERRUPTED = 9, + EMBER_ZCL_APPLIANCE_STATUS_IDLE = 10, + EMBER_ZCL_APPLIANCE_STATUS_RINSE_HOLD = 11, + EMBER_ZCL_APPLIANCE_STATUS_SERVICE = 12, + EMBER_ZCL_APPLIANCE_STATUS_SUPERFREEZING = 13, + EMBER_ZCL_APPLIANCE_STATUS_SUPERCOOLING = 14, + EMBER_ZCL_APPLIANCE_STATUS_SUPERHEATING = 15, +} EmberAfApplianceStatus; + +// Enum for AttributeReportingStatus +typedef enum { + EMBER_ZCL_ATTRIBUTE_REPORTING_STATUS_PENDING = 0, + EMBER_ZCL_ATTRIBUTE_REPORTING_STATUS_ATTRIBUTE_REPORTING_COMPLETE = 1, +} EmberAfAttributeReportingStatus; + +// Enum for AttributeWritePermission +typedef enum { + EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_DENY_WRITE = 0, + EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_ALLOW_WRITE_NORMAL = 1, + EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_ALLOW_WRITE_OF_READ_ONLY = 2, + EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_UNSUPPORTED_ATTRIBUTE = 134, + EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_INVALID_VALUE = 135, + EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_READ_ONLY = 136, + EMBER_ZCL_ATTRIBUTE_WRITE_PERMISSION_INVALID_DATA_TYPE = 141, +} EmberAfAttributeWritePermission; + +// Enum for BarrierControlBarrierPosition +typedef enum { + EMBER_ZCL_BARRIER_CONTROL_BARRIER_POSITION_CLOSED = 0, + EMBER_ZCL_BARRIER_CONTROL_BARRIER_POSITION_OPEN = 100, + EMBER_ZCL_BARRIER_CONTROL_BARRIER_POSITION_UNKNOWN = 255, +} EmberAfBarrierControlBarrierPosition; + +// Enum for BarrierControlMovingState +typedef enum { + EMBER_ZCL_BARRIER_CONTROL_MOVING_STATE_STOPPED = 0, + EMBER_ZCL_BARRIER_CONTROL_MOVING_STATE_CLOSING = 1, + EMBER_ZCL_BARRIER_CONTROL_MOVING_STATE_OPENING = 2, +} EmberAfBarrierControlMovingState; + +// Enum for BatterySize +typedef enum { + EMBER_ZCL_BATTERY_SIZE_NO_BATTERY = 0, + EMBER_ZCL_BATTERY_SIZE_BUILT_IN = 1, + EMBER_ZCL_BATTERY_SIZE_OTHER = 2, + EMBER_ZCL_BATTERY_SIZE_AA = 3, + EMBER_ZCL_BATTERY_SIZE_AAA = 4, + EMBER_ZCL_BATTERY_SIZE_C = 5, + EMBER_ZCL_BATTERY_SIZE_D = 6, + EMBER_ZCL_BATTERY_SIZE_UNKNOWN = 255, +} EmberAfBatterySize; + +// Enum for BillingPeriodDurationUnits +typedef enum { + EMBER_ZCL_BILLING_PERIOD_DURATION_UNITS_MINUTES = 0, + EMBER_ZCL_BILLING_PERIOD_DURATION_UNITS_DAYS = 4194304, + EMBER_ZCL_BILLING_PERIOD_DURATION_UNITS_WEEKS = 8388608, + EMBER_ZCL_BILLING_PERIOD_DURATION_UNITS_MONTHS = 12582912, +} EmberAfBillingPeriodDurationUnits; + +// Enum for Block +typedef enum { + EMBER_ZCL_BLOCK_NO_BLOCKS_IN_USE = 0, + EMBER_ZCL_BLOCK_BLOCK1 = 1, + EMBER_ZCL_BLOCK_BLOCK2 = 2, + EMBER_ZCL_BLOCK_BLOCK3 = 3, + EMBER_ZCL_BLOCK_BLOCK4 = 4, + EMBER_ZCL_BLOCK_BLOCK5 = 5, + EMBER_ZCL_BLOCK_BLOCK6 = 6, + EMBER_ZCL_BLOCK_BLOCK7 = 7, + EMBER_ZCL_BLOCK_BLOCK8 = 8, + EMBER_ZCL_BLOCK_BLOCK9 = 9, + EMBER_ZCL_BLOCK_BLOCK10 = 10, + EMBER_ZCL_BLOCK_BLOCK11 = 11, + EMBER_ZCL_BLOCK_BLOCK12 = 12, + EMBER_ZCL_BLOCK_BLOCK13 = 13, + EMBER_ZCL_BLOCK_BLOCK14 = 14, + EMBER_ZCL_BLOCK_BLOCK15 = 15, + EMBER_ZCL_BLOCK_BLOCK16 = 16, +} EmberAfBlock; + +// Enum for BlockPeriodDurationTypeControl +typedef enum { + EMBER_ZCL_BLOCK_PERIOD_DURATION_TYPE_CONTROL_START_OF_TIMEBASE = 0, + EMBER_ZCL_BLOCK_PERIOD_DURATION_TYPE_CONTROL_END_OF_TIMEBASE = 16, + EMBER_ZCL_BLOCK_PERIOD_DURATION_TYPE_CONTROL_NOT_SPECIFIED = 32, +} EmberAfBlockPeriodDurationTypeControl; + +// Enum for BlockPeriodDurationTypeTimebase +typedef enum { + EMBER_ZCL_BLOCK_PERIOD_DURATION_TYPE_TIMEBASE_MINUTES = 0, + EMBER_ZCL_BLOCK_PERIOD_DURATION_TYPE_TIMEBASE_DAYS = 1, + EMBER_ZCL_BLOCK_PERIOD_DURATION_TYPE_TIMEBASE_WEEKS = 2, + EMBER_ZCL_BLOCK_PERIOD_DURATION_TYPE_TIMEBASE_MONTHS = 3, +} EmberAfBlockPeriodDurationTypeTimebase; + +// Enum for CO2Unit +typedef enum { + EMBER_ZCL_CO2_UNIT_KILOGRAM_PER_KILOWATT_HOUR = 1, + EMBER_ZCL_CO2_UNIT_KILOGRAM_PER_GALLON_OF_GASOLINE = 2, + EMBER_ZCL_CO2_UNIT_KILOGRAM_PER_THERM_OF_NATURAL_GAS = 3, +} EmberAfCO2Unit; + +// Enum for CalendarTimeReference +typedef enum { + EMBER_ZCL_CALENDAR_TIME_REFERENCE_UTC_TIME = 0, + EMBER_ZCL_CALENDAR_TIME_REFERENCE_STANDARD_TIME = 1, + EMBER_ZCL_CALENDAR_TIME_REFERENCE_LOCAL_TIME = 2, +} EmberAfCalendarTimeReference; + +// Enum for CalendarType +typedef enum { + EMBER_ZCL_CALENDAR_TYPE_DELIVERED_CALENDAR = 0, + EMBER_ZCL_CALENDAR_TYPE_RECEIVED_CALENDAR = 1, + EMBER_ZCL_CALENDAR_TYPE_DELIVERED_AND_RECEIVED_CALENDAR = 2, + EMBER_ZCL_CALENDAR_TYPE_FRIENDLY_CREDIT_CALENDAR = 3, + EMBER_ZCL_CALENDAR_TYPE_AUXILLIARY_LOAD_SWITCH_CALENDAR = 4, +} EmberAfCalendarType; + +// Enum for CalorificValueUnit +typedef enum { + EMBER_ZCL_CALORIFIC_VALUE_UNIT_MEGAJOULE_PER_CUBIC_METER = 1, + EMBER_ZCL_CALORIFIC_VALUE_UNIT_MEGAJOULE_PER_KILOGRAM = 2, +} EmberAfCalorificValueUnit; + +// Enum for CecedSpecificationVersion +typedef enum { + EMBER_ZCL_CECED_SPECIFICATION_VERSION_COMPLIANT_WITH_V10_NOT_CERTIFIED = 16, + EMBER_ZCL_CECED_SPECIFICATION_VERSION_COMPLIANT_WITH_V10_CERTIFIED = 26, +} EmberAfCecedSpecificationVersion; + +// Enum for ColorControlOptions +typedef enum { + EMBER_ZCL_COLOR_CONTROL_OPTIONS_EXECUTE_IF_OFF = 1, +} EmberAfColorControlOptions; + +// Enum for ColorLoopAction +typedef enum { + EMBER_ZCL_COLOR_LOOP_ACTION_DEACTIVATE = 0, + EMBER_ZCL_COLOR_LOOP_ACTION_ACTIVATE_FROM_COLOR_LOOP_START_ENHANCED_HUE = 1, + EMBER_ZCL_COLOR_LOOP_ACTION_ACTIVATE_FROM_ENHANCED_CURRENT_HUE = 2, +} EmberAfColorLoopAction; + +// Enum for ColorLoopDirection +typedef enum { + EMBER_ZCL_COLOR_LOOP_DIRECTION_DECREMENT_HUE = 0, + EMBER_ZCL_COLOR_LOOP_DIRECTION_INCREMENT_HUE = 1, +} EmberAfColorLoopDirection; + +// Enum for ColorMode +typedef enum { + EMBER_ZCL_COLOR_MODE_CURRENT_HUE_AND_CURRENT_SATURATION = 0, + EMBER_ZCL_COLOR_MODE_CURRENT_X_AND_CURRENT_Y = 1, + EMBER_ZCL_COLOR_MODE_COLOR_TEMPERATURE = 2, +} EmberAfColorMode; + +// Enum for CommandIdentification +typedef enum { + EMBER_ZCL_COMMAND_IDENTIFICATION_START = 1, + EMBER_ZCL_COMMAND_IDENTIFICATION_STOP = 2, + EMBER_ZCL_COMMAND_IDENTIFICATION_PAUSE = 3, + EMBER_ZCL_COMMAND_IDENTIFICATION_START_SUPERFREEZING = 4, + EMBER_ZCL_COMMAND_IDENTIFICATION_STOP_SUPERFREEZING = 5, + EMBER_ZCL_COMMAND_IDENTIFICATION_START_SUPERCOOLING = 6, + EMBER_ZCL_COMMAND_IDENTIFICATION_STOP_SUPERCOOLING = 7, + EMBER_ZCL_COMMAND_IDENTIFICATION_DISABLE_GAS = 8, + EMBER_ZCL_COMMAND_IDENTIFICATION_ENABLE_GAS = 9, + EMBER_ZCL_COMMAND_IDENTIFICATION_ENABLE_ENERGY_CONTROL = 10, + EMBER_ZCL_COMMAND_IDENTIFICATION_DISABLE_ENERGY_CONTROL = 11, +} EmberAfCommandIdentification; + +// Enum for CommissioningStartupControl +typedef enum { + EMBER_ZCL_COMMISSIONING_STARTUP_CONTROL_NO_ACTION = 0, + EMBER_ZCL_COMMISSIONING_STARTUP_CONTROL_FORM_NETWORK = 1, + EMBER_ZCL_COMMISSIONING_STARTUP_CONTROL_REJOIN_NETWORK = 2, + EMBER_ZCL_COMMISSIONING_STARTUP_CONTROL_START_FROM_SCRATCH = 3, +} EmberAfCommissioningStartupControl; + +// Enum for CommodityType +typedef enum { + EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING = 0, + EMBER_ZCL_COMMODITY_TYPE_GAS_METERING = 1, + EMBER_ZCL_COMMODITY_TYPE_WATER_METERING = 2, + EMBER_ZCL_COMMODITY_TYPE_THERMAL_METERING = 3, + EMBER_ZCL_COMMODITY_TYPE_PRESSURE_METERING = 4, + EMBER_ZCL_COMMODITY_TYPE_HEAT_METERING = 5, + EMBER_ZCL_COMMODITY_TYPE_COOLING_METERING = 6, + EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_VEHICLE_CHARGING_METERING = 7, + EMBER_ZCL_COMMODITY_TYPE_PV_GENERATION_METERING = 8, + EMBER_ZCL_COMMODITY_TYPE_WIND_TURBINE_GENERATION_METERING = 9, + EMBER_ZCL_COMMODITY_TYPE_WATER_TURBINE_GENERATION_METERING = 10, + EMBER_ZCL_COMMODITY_TYPE_MICRO_GENERATION_METERING = 11, + EMBER_ZCL_COMMODITY_TYPE_SOLAR_HOT_WATER_GENERATION_METERING = 12, + EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING_ELEMENT1 = 13, + EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING_ELEMENT2 = 14, + EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING_ELEMENT3 = 15, +} EmberAfCommodityType; + +// Enum for CppEventResponseCppAuth +typedef enum { + EMBER_ZCL_CPP_EVENT_RESPONSE_CPP_AUTH_ACCEPTED = 1, + EMBER_ZCL_CPP_EVENT_RESPONSE_CPP_AUTH_REJECTED = 2, +} EmberAfCppEventResponseCppAuth; + +// Enum for CppPriceTier +typedef enum { + EMBER_ZCL_CPP_PRICE_TIER_CPP1 = 0, + EMBER_ZCL_CPP_PRICE_TIER_CPP2 = 1, +} EmberAfCppPriceTier; + +// Enum for CreditAdjustmentType +typedef enum { + EMBER_ZCL_CREDIT_ADJUSTMENT_TYPE_CREDIT_INCREMENTAL = 0, + EMBER_ZCL_CREDIT_ADJUSTMENT_TYPE_CREDIT_ABSOLUTE = 1, +} EmberAfCreditAdjustmentType; + +// Enum for CreditPaymentStatus +typedef enum { + EMBER_ZCL_CREDIT_PAYMENT_STATUS_PENDING = 0, + EMBER_ZCL_CREDIT_PAYMENT_STATUS_RECEIVED_PAID = 1, + EMBER_ZCL_CREDIT_PAYMENT_STATUS_OVERDUE = 2, + EMBER_ZCL_CREDIT_PAYMENT_STATUS_2_PAYMENTS_OVERDUE = 3, + EMBER_ZCL_CREDIT_PAYMENT_STATUS_3_PAYMENTS_OVERDUE = 4, +} EmberAfCreditPaymentStatus; + +// Enum for DataQualityId +typedef enum { + EMBER_ZCL_DATA_QUALITY_ID_ALL_DATA_CERTIFIED = 0, + EMBER_ZCL_DATA_QUALITY_ID_ONLY_INSTANTANEOUS_POWER_NOT_CERTIFIED = 1, + EMBER_ZCL_DATA_QUALITY_ID_ONLY_CUMULATED_CONSUMPTION_NOT_CERTIFIED = 2, + EMBER_ZCL_DATA_QUALITY_ID_NOT_CERTIFIED_DATA = 3, +} EmberAfDataQualityId; + +// Enum for DebtAmountType +typedef enum { + EMBER_ZCL_DEBT_AMOUNT_TYPE_TYPE1_ABSOLUTE = 0, + EMBER_ZCL_DEBT_AMOUNT_TYPE_TYPE1_INCREMENTAL = 1, + EMBER_ZCL_DEBT_AMOUNT_TYPE_TYPE2_ABSOLUTE = 2, + EMBER_ZCL_DEBT_AMOUNT_TYPE_TYPE2_INCREMENTAL = 3, + EMBER_ZCL_DEBT_AMOUNT_TYPE_TYPE3_ABSOLUTE = 4, + EMBER_ZCL_DEBT_AMOUNT_TYPE_TYPE3_INCREMENTAL = 5, +} EmberAfDebtAmountType; + +// Enum for DebtRecoveryFrequency +typedef enum { + EMBER_ZCL_DEBT_RECOVERY_FREQUENCY_PER_HOUR = 0, + EMBER_ZCL_DEBT_RECOVERY_FREQUENCY_PER_DAY = 1, + EMBER_ZCL_DEBT_RECOVERY_FREQUENCY_PER_WEEK = 2, + EMBER_ZCL_DEBT_RECOVERY_FREQUENCY_PER_MONTH = 3, + EMBER_ZCL_DEBT_RECOVERY_FREQUENCY_PER_QUARTER = 4, +} EmberAfDebtRecoveryFrequency; + +// Enum for DebtRecoveryMethod +typedef enum { + EMBER_ZCL_DEBT_RECOVERY_METHOD_TIME_BASED = 0, + EMBER_ZCL_DEBT_RECOVERY_METHOD_PERCENTAGE_BASED = 1, + EMBER_ZCL_DEBT_RECOVERY_METHOD_CATCH_UP_BASED = 2, +} EmberAfDebtRecoveryMethod; + +// Enum for DehumidifcationLockout +typedef enum { + EMBER_ZCL_DEHUMIDIFCATION_LOCKOUT_NOT_ALLOWED = 0, + EMBER_ZCL_DEHUMIDIFCATION_LOCKOUT_ALLOWED = 1, +} EmberAfDehumidifcationLockout; + +// Enum for DeviceInformationRecordSort +typedef enum { + EMBER_ZCL_DEVICE_INFORMATION_RECORD_SORT_NOT_SORTED = 0, + EMBER_ZCL_DEVICE_INFORMATION_RECORD_SORT_TOP_OF_THE_LIST = 1, +} EmberAfDeviceInformationRecordSort; + +// Enum for DeviceStatus2Structure +typedef enum { + EMBER_ZCL_DEVICE_STATUS2_STRUCTURE_IRIS_SYMPTOM_CODE = 32, +} EmberAfDeviceStatus2Structure; + +// Enum for DoorLockAlarmCode +typedef enum { + EMBER_ZCL_DOOR_LOCK_ALARM_CODE_DEADBOLT_JAMMED = 0, + EMBER_ZCL_DOOR_LOCK_ALARM_CODE_RESET_TO_FACTORY_DEFAULTS = 1, + EMBER_ZCL_DOOR_LOCK_ALARM_CODE_RF_MODULE_POWER_CYCLED = 3, + EMBER_ZCL_DOOR_LOCK_ALARM_CODE_TAMPER_WRONG_CODE_ENTRY_LIMIT = 4, + EMBER_ZCL_DOOR_LOCK_ALARM_CODE_TAMPER_FRONT_ESCUTCHEON = 5, + EMBER_ZCL_DOOR_LOCK_ALARM_CODE_FORCED_DOOR_OPEN = 6, + EMBER_ZCL_DOOR_LOCK_ALARM_CODE_DOOR_AJAR = 7, + EMBER_ZCL_DOOR_LOCK_ALARM_CODE_COERCED = 8, +} EmberAfDoorLockAlarmCode; + +// Enum for DoorLockEventSource +typedef enum { + EMBER_ZCL_DOOR_LOCK_EVENT_SOURCE_KEYPAD = 0, + EMBER_ZCL_DOOR_LOCK_EVENT_SOURCE_RF = 1, + EMBER_ZCL_DOOR_LOCK_EVENT_SOURCE_MANUAL = 2, + EMBER_ZCL_DOOR_LOCK_EVENT_SOURCE_RFID = 3, + EMBER_ZCL_DOOR_LOCK_EVENT_SOURCE_BIOMETRIC_CRED = 4, + EMBER_ZCL_DOOR_LOCK_EVENT_SOURCE_INDETERMINATE = 255, +} EmberAfDoorLockEventSource; + +// Enum for DoorLockEventType +typedef enum { + EMBER_ZCL_DOOR_LOCK_EVENT_TYPE_OPERATION = 0, + EMBER_ZCL_DOOR_LOCK_EVENT_TYPE_PROGRAMMING = 1, + EMBER_ZCL_DOOR_LOCK_EVENT_TYPE_ALARM = 2, +} EmberAfDoorLockEventType; + +// Enum for DoorLockOperatingMode +typedef enum { + EMBER_ZCL_DOOR_LOCK_OPERATING_MODE_NORMAL_MODE = 0, + EMBER_ZCL_DOOR_LOCK_OPERATING_MODE_VACATION_MODE = 1, + EMBER_ZCL_DOOR_LOCK_OPERATING_MODE_PRIVACY_MODE = 2, + EMBER_ZCL_DOOR_LOCK_OPERATING_MODE_NO_RF_LOCK_OR_UNLOCK = 3, + EMBER_ZCL_DOOR_LOCK_OPERATING_MODE_PASSAGE_MODE = 4, +} EmberAfDoorLockOperatingMode; + +// Enum for DoorLockOperationEventCode +typedef enum { + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_UNKNOWN_OR_MFG_SPECIFIC = 0, + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_LOCK = 1, + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_UNLOCK = 2, + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_LOCK_INVALID_PIN_OR_ID = 3, + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_LOCK_INVALID_SCHEDULE = 4, + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_UNLOCK_INVALID_PIN_OR_ID = 5, + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_UNLOCK_INVALID_SCHEDULE = 6, + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_ONE_TOUCH_LOCK = 7, + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_KEY_LOCK = 8, + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_KEY_UNLOCK = 9, + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_AUTO_LOCK = 10, + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_SCHEDULE_LOCK = 11, + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_SCHEDULE_UNLOCK = 12, + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_MANUAL_LOCK = 13, + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_MANUAL_UNLOCK = 14, + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_UNLOCK_COERCED_USER = 16, + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_FINGERPINT_UNLOCK = 17, + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_FACE_ID_UNLOCK = 18, + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_FINGERVEIN_UNLOCK = 19, + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_AUTO_UNLOCK = 20, + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_APPLICATION_UNLOCK = 21, + EMBER_ZCL_DOOR_LOCK_OPERATION_EVENT_CODE_UNLOCK_DISPOSABLE_USER = 22, +} EmberAfDoorLockOperationEventCode; + +// Enum for DoorLockProgrammingEventCode +typedef enum { + EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_UNKNOWN_OR_MFG_SPECIFIC = 0, + EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_MASTER_CODE_CHANGED = 1, + EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_PIN_ADDED = 2, + EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_PIN_DELETED = 3, + EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_PIN_CHANGED = 4, + EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_ID_ADDED = 5, + EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_ID_DELETED = 6, + EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_FINGERPRINT_ADDED = 7, + EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_FINGERPRINT_DELETED = 8, + EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_FACE_ID_ADDED = 9, + EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_FACE_ID_DELETED = 10, + EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_FINGERVEIN_ADDED = 11, + EMBER_ZCL_DOOR_LOCK_PROGRAMMING_EVENT_CODE_FINGERVEIN_DELETED = 12, +} EmberAfDoorLockProgrammingEventCode; + +// Enum for DoorLockSecurityLevel +typedef enum { + EMBER_ZCL_DOOR_LOCK_SECURITY_LEVEL_NETWORK_SECURITY = 0, + EMBER_ZCL_DOOR_LOCK_SECURITY_LEVEL_APS_SECURITY = 1, +} EmberAfDoorLockSecurityLevel; + +// Enum for DoorLockSetPinOrIdStatus +typedef enum { + EMBER_ZCL_DOOR_LOCK_SET_PIN_OR_ID_STATUS_SUCCESS = 0, + EMBER_ZCL_DOOR_LOCK_SET_PIN_OR_ID_STATUS_GENERAL_FAILURE = 1, + EMBER_ZCL_DOOR_LOCK_SET_PIN_OR_ID_STATUS_MEMORY_FULL = 2, + EMBER_ZCL_DOOR_LOCK_SET_PIN_OR_ID_STATUS_DUPLICATE_CODE_ERROR = 3, +} EmberAfDoorLockSetPinOrIdStatus; + +// Enum for DoorLockSoundVolume +typedef enum { + EMBER_ZCL_DOOR_LOCK_SOUND_VOLUME_SILENT = 0, + EMBER_ZCL_DOOR_LOCK_SOUND_VOLUME_LOW = 1, + EMBER_ZCL_DOOR_LOCK_SOUND_VOLUME_HIGH = 2, + EMBER_ZCL_DOOR_LOCK_SOUND_VOLUME_MEDIUM = 3, +} EmberAfDoorLockSoundVolume; + +// Enum for DoorLockState +typedef enum { + EMBER_ZCL_DOOR_LOCK_STATE_NOT_FULLY_LOCKED = 0, + EMBER_ZCL_DOOR_LOCK_STATE_LOCKED = 1, + EMBER_ZCL_DOOR_LOCK_STATE_UNLOCKED = 2, +} EmberAfDoorLockState; + +// Enum for DoorLockType +typedef enum { + EMBER_ZCL_DOOR_LOCK_TYPE_DEAD_BOLT = 0, + EMBER_ZCL_DOOR_LOCK_TYPE_MAGNETIC = 1, + EMBER_ZCL_DOOR_LOCK_TYPE_OTHER = 2, + EMBER_ZCL_DOOR_LOCK_TYPE_MORTISE = 3, + EMBER_ZCL_DOOR_LOCK_TYPE_RIM = 4, + EMBER_ZCL_DOOR_LOCK_TYPE_LATCH_BOLT = 5, + EMBER_ZCL_DOOR_LOCK_TYPE_CYLINDRICAL = 6, + EMBER_ZCL_DOOR_LOCK_TYPE_TUBULAR = 7, + EMBER_ZCL_DOOR_LOCK_TYPE_INTERCONNECTED = 8, + EMBER_ZCL_DOOR_LOCK_TYPE_DEAD_LATCH = 9, + EMBER_ZCL_DOOR_LOCK_TYPE_DOOR_FURNITURE = 10, +} EmberAfDoorLockType; + +// Enum for DoorLockUserStatus +typedef enum { + EMBER_ZCL_DOOR_LOCK_USER_STATUS_AVAILABLE = 0, + EMBER_ZCL_DOOR_LOCK_USER_STATUS_OCCUPIED_ENABLED = 1, + EMBER_ZCL_DOOR_LOCK_USER_STATUS_OCCUPIED_DISABLED = 3, + EMBER_ZCL_DOOR_LOCK_USER_STATUS_NOT_SUPPORTED = 255, +} EmberAfDoorLockUserStatus; + +// Enum for DoorLockUserType +typedef enum { + EMBER_ZCL_DOOR_LOCK_USER_TYPE_UNRESTRICTED = 0, + EMBER_ZCL_DOOR_LOCK_USER_TYPE_YEAR_DAY_SCHEDULE_USER = 1, + EMBER_ZCL_DOOR_LOCK_USER_TYPE_WEEK_DAY_SCHEDULE_USER = 2, + EMBER_ZCL_DOOR_LOCK_USER_TYPE_MASTER_USER = 3, + EMBER_ZCL_DOOR_LOCK_USER_TYPE_NON_ACCESS_USER = 4, + EMBER_ZCL_DOOR_LOCK_USER_TYPE_COERCED_USER = 5, + EMBER_ZCL_DOOR_LOCK_USER_TYPE_DISPOSABLE_USER = 6, + EMBER_ZCL_DOOR_LOCK_USER_TYPE_NOT_SUPPORTED = 255, +} EmberAfDoorLockUserType; + +// Enum for DoorState +typedef enum { + EMBER_ZCL_DOOR_STATE_OPEN = 0, + EMBER_ZCL_DOOR_STATE_CLOSED = 1, + EMBER_ZCL_DOOR_STATE_ERROR_JAMMED = 2, + EMBER_ZCL_DOOR_STATE_ERROR_FORCED_OPEN = 3, + EMBER_ZCL_DOOR_STATE_ERROR_UNSPECIFIED = 4, + EMBER_ZCL_DOOR_STATE_ERROR_AJAR = 5, +} EmberAfDoorState; + +// Enum for ElectricityAlarmGroups +typedef enum { + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_LOW_VOLTAGE_L1 = 16, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_HIGH_VOLTAGE_L1 = 17, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_LOW_VOLTAGE_L2 = 18, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_HIGH_VOLTAGE_L2 = 19, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_LOW_VOLTAGE_L3 = 20, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_HIGH_VOLTAGE_L3 = 21, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_OVER_CURRENT_L1 = 22, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_OVER_CURRENT_L2 = 23, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_OVER_CURRENT_L3 = 24, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_FREQUENCY_TOO_LOW_L1 = 25, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_FREQUENCY_TOO_HIGH_L1 = 26, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_FREQUENCY_TOO_LOW_L2 = 27, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_FREQUENCY_TOO_HIGH_L2 = 28, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_FREQUENCY_TOO_LOW_L3 = 29, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_FREQUENCY_TOO_HIGH_L3 = 30, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_GROUND_FAULT = 31, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_ELECTRIC_TAMPER_DETECT = 32, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_INCORRECT_POLARITY = 33, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_CURRENT_NO_VOLTAGE = 34, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_UNDER_VOLTAGE = 35, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_OVER_VOLTAGE = 36, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_NORMAL_VOLTAGE = 37, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_PF_BELOW_THRESHOLD = 38, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_PF_ABOVE_THRESHOLD = 39, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_TERMINAL_COVER_REMOVED = 40, + EMBER_ZCL_ELECTRICITY_ALARM_GROUPS_TERMINAL_COVER_CLOSED = 41, +} EmberAfElectricityAlarmGroups; + +// Enum for EnhancedColorMode +typedef enum { + EMBER_ZCL_ENHANCED_COLOR_MODE_CURRENT_HUE_AND_CURRENT_SATURATION = 0, + EMBER_ZCL_ENHANCED_COLOR_MODE_CURRENT_X_AND_CURRENT_Y = 1, + EMBER_ZCL_ENHANCED_COLOR_MODE_COLOR_TEMPERATURE = 2, + EMBER_ZCL_ENHANCED_COLOR_MODE_ENHANCED_CURRENT_HUE_AND_CURRENT_SATURATION = 3, +} EmberAfEnhancedColorMode; + +// Enum for EventConfigurationControl +typedef enum { + EMBER_ZCL_EVENT_CONFIGURATION_CONTROL_APPLY_BY_LIST = 0, + EMBER_ZCL_EVENT_CONFIGURATION_CONTROL_APPLY_BY_EVENT_GROUP = 1, + EMBER_ZCL_EVENT_CONFIGURATION_CONTROL_APPLY_BY_LOG_TYPE = 2, + EMBER_ZCL_EVENT_CONFIGURATION_CONTROL_APPLY_BY_CONFIGURATION_MATCH = 3, +} EmberAfEventConfigurationControl; + +// Enum for EventConfigurationLogAction +typedef enum { + EMBER_ZCL_EVENT_CONFIGURATION_LOG_ACTION_DO_NOT_LOG = 0, + EMBER_ZCL_EVENT_CONFIGURATION_LOG_ACTION_LOG_AS_TAMPER = 1, + EMBER_ZCL_EVENT_CONFIGURATION_LOG_ACTION_LOG_AS_FAULT = 2, + EMBER_ZCL_EVENT_CONFIGURATION_LOG_ACTION_LOG_AS_GENERAL_EVENT = 3, + EMBER_ZCL_EVENT_CONFIGURATION_LOG_ACTION_LOG_AS_SECURITY_EVENT = 4, + EMBER_ZCL_EVENT_CONFIGURATION_LOG_ACTION_LOG_AS_NETWORK_EVENT = 5, +} EmberAfEventConfigurationLogAction; + +// Enum for EventControl +typedef enum { + EMBER_ZCL_EVENT_CONTROL_RETRIEVE_MINIMAL_INFORMATION = 0, + EMBER_ZCL_EVENT_CONTROL_RETRIEVE_FULL_INFORMATION = 16, +} EmberAfEventControl; + +// Enum for EventId +typedef enum { + EMBER_ZCL_EVENT_ID_METER_COVER_REMOVED = 0, + EMBER_ZCL_EVENT_ID_METER_COVER_CLOSED = 1, + EMBER_ZCL_EVENT_ID_STRONG_MAGNETIC_FIELD = 2, + EMBER_ZCL_EVENT_ID_NO_STRONG_MAGNETIC_FIELD = 3, + EMBER_ZCL_EVENT_ID_BATTERY_FAILURE = 4, + EMBER_ZCL_EVENT_ID_LOW_BATTERY = 5, + EMBER_ZCL_EVENT_ID_PROGRAM_MEMORY_ERROR = 6, + EMBER_ZCL_EVENT_ID_RAM_ERROR = 7, + EMBER_ZCL_EVENT_ID_NV_MEMORY_ERROR = 8, + EMBER_ZCL_EVENT_ID_MEASUREMENT_SYSTEM_ERROR = 9, + EMBER_ZCL_EVENT_ID_WATCHDOG_ERROR = 10, + EMBER_ZCL_EVENT_ID_SUPPLY_DISCONNECT_FAILURE = 11, + EMBER_ZCL_EVENT_ID_SUPPLY_CONNECT_FAILURE = 12, + EMBER_ZCL_EVENT_ID_MEASURMENT_SOFTWARE_CHANGED = 13, + EMBER_ZCL_EVENT_ID_DST_ENABLED = 14, + EMBER_ZCL_EVENT_ID_DST_DISABLED = 15, + EMBER_ZCL_EVENT_ID_CLOCK_ADJ_BACKWARD = 16, + EMBER_ZCL_EVENT_ID_CLOCK_ADJ_FORWARD = 17, + EMBER_ZCL_EVENT_ID_CLOCK_INVALID = 18, + EMBER_ZCL_EVENT_ID_COMMS_ERROR_HAN = 19, + EMBER_ZCL_EVENT_ID_COMMS_OK_HAN = 20, + EMBER_ZCL_EVENT_ID_FRAUD_ATTEMPT = 21, + EMBER_ZCL_EVENT_ID_POWER_LOSS = 22, + EMBER_ZCL_EVENT_ID_INCORRECT_PROTOCOL = 23, + EMBER_ZCL_EVENT_ID_UNUSUAL_HAN_TRAFFIC = 24, + EMBER_ZCL_EVENT_ID_UNEXPECTED_CLOCK_CHANGE = 25, + EMBER_ZCL_EVENT_ID_COMMS_USING_UNAUTHENTICATED_COMPONENT = 26, + EMBER_ZCL_EVENT_ID_ERROR_REG_CLEAR = 27, + EMBER_ZCL_EVENT_ID_ALARM_REG_CLEAR = 28, + EMBER_ZCL_EVENT_ID_UNEXPECTED_HW_RESET = 29, + EMBER_ZCL_EVENT_ID_UNEXPECTED_PROGRAM_EXECUTION = 30, + EMBER_ZCL_EVENT_ID_EVENT_LOG_CLEARED = 31, + EMBER_ZCL_EVENT_ID_MANUAL_DISCONNECT = 32, + EMBER_ZCL_EVENT_ID_MANUAL_CONNECT = 33, + EMBER_ZCL_EVENT_ID_REMOTE_DISCONNECTION = 34, + EMBER_ZCL_EVENT_ID_LOCAL_DISCONNECTION = 35, + EMBER_ZCL_EVENT_ID_LIMIT_THRESHOLD_EXCEEDED = 36, + EMBER_ZCL_EVENT_ID_LIMIT_THRESHOLD_OK = 37, + EMBER_ZCL_EVENT_ID_LIMIT_THRESHOLD_CHANGED = 38, + EMBER_ZCL_EVENT_ID_MAXIMUM_DEMAND_EXCEEDED = 39, + EMBER_ZCL_EVENT_ID_PROFILE_CLEARED = 40, + EMBER_ZCL_EVENT_ID_FIRMWARE_READY_FOR_ACTIVATION = 41, + EMBER_ZCL_EVENT_ID_FIRMWARE_ACTIVATED = 42, + EMBER_ZCL_EVENT_ID_PATCH_FAILURE = 43, + EMBER_ZCL_EVENT_ID_TOU_TARIFF_ACTIVATION = 44, + EMBER_ZCL_EVENT_ID_8X8_TARIFFACTIVATED = 45, + EMBER_ZCL_EVENT_ID_SINGLE_TARIFF_RATE_ACTIVATED = 46, + EMBER_ZCL_EVENT_ID_ASYNCHRONOUS_BILLING_OCCURRED = 47, + EMBER_ZCL_EVENT_ID_SYNCHRONOUS_BILLING_OCCURRED = 48, + EMBER_ZCL_EVENT_ID_INCORRECT_POLARITY = 128, + EMBER_ZCL_EVENT_ID_CURRENT_NO_VOLTAGE = 129, + EMBER_ZCL_EVENT_ID_UNDER_VOLTAGE = 130, + EMBER_ZCL_EVENT_ID_OVER_VOLTAGE = 131, + EMBER_ZCL_EVENT_ID_NORMAL_VOLTAGE = 132, + EMBER_ZCL_EVENT_ID_PF_BELOW_THRESHOLD = 133, + EMBER_ZCL_EVENT_ID_PF_ABOVE_THRESHOLD = 134, + EMBER_ZCL_EVENT_ID_TERMINAL_COVER_REMOVED = 135, + EMBER_ZCL_EVENT_ID_TERMINAL_COVER_CLOSED = 136, + EMBER_ZCL_EVENT_ID_REVERSE_FLOW = 160, + EMBER_ZCL_EVENT_ID_TILT_TAMPER = 161, + EMBER_ZCL_EVENT_ID_BATTERY_COVER_REMOVED = 162, + EMBER_ZCL_EVENT_ID_BATTERY_COVER_CLOSED = 163, + EMBER_ZCL_EVENT_ID_EXCESS_FLOW = 164, + EMBER_ZCL_EVENT_ID_CREDIT_OK = 192, + EMBER_ZCL_EVENT_ID_LOW_CREDIT = 193, + EMBER_ZCL_EVENT_ID_EMERGENCY_CREDIT_IN_USE = 192, + EMBER_ZCL_EVENT_ID_EMERGENCY_CREDIT_EXHAUSTED = 193, + EMBER_ZCL_EVENT_ID_ZERO_CREDIT_EC_NOT_SELECTED = 194, + EMBER_ZCL_EVENT_ID_SUPPLY_ON = 195, + EMBER_ZCL_EVENT_ID_SUPPLY_OFF_AARMED = 196, + EMBER_ZCL_EVENT_ID_SUPPLY_OFF = 197, + EMBER_ZCL_EVENT_ID_DISCOUNT_APPLIED = 198, + EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_A = 224, + EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_B = 225, + EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_C = 226, + EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_D = 227, + EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_E = 228, + EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_F = 229, + EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_G = 230, + EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_H = 231, + EMBER_ZCL_EVENT_ID_MANUFACTURER_SPECIFIC_I = 232, +} EmberAfEventId; + +// Enum for EventIdentification +typedef enum { + EMBER_ZCL_EVENT_IDENTIFICATION_END_OF_CYCLE = 1, + EMBER_ZCL_EVENT_IDENTIFICATION_TEMPERATURE_REACHED = 4, + EMBER_ZCL_EVENT_IDENTIFICATION_END_OF_COOKING = 5, + EMBER_ZCL_EVENT_IDENTIFICATION_SWITCHING_OFF = 6, + EMBER_ZCL_EVENT_IDENTIFICATION_WRONG_DATA = 7, +} EmberAfEventIdentification; + +// Enum for EventLogId +typedef enum { + EMBER_ZCL_EVENT_LOG_ID_ALL_LOGS = 0, + EMBER_ZCL_EVENT_LOG_ID_TAMPER_LOG = 1, + EMBER_ZCL_EVENT_LOG_ID_FAULT_LOG = 2, + EMBER_ZCL_EVENT_LOG_ID_GENERAL_EVENT_LOG = 3, + EMBER_ZCL_EVENT_LOG_ID_SECURITY_EVENT_LOG = 4, + EMBER_ZCL_EVENT_LOG_ID_NETWORK_EVENT_LOG = 5, + EMBER_ZCL_EVENT_LOG_ID_GBCS_GENERAL_EVENT_LOG = 6, + EMBER_ZCL_EVENT_LOG_ID_GBCS_SECURITY_EVENT_LOG = 7, +} EmberAfEventLogId; + +// Enum for EventLogPayloadControl +typedef enum { + EMBER_ZCL_EVENT_LOG_PAYLOAD_CONTROL_EVENTS_DO_NOT_CROSS_FRAME_BOUNDARY = 0, + EMBER_ZCL_EVENT_LOG_PAYLOAD_CONTROL_EVENT_CROSSES_FRAME_BOUNDARY = 1, +} EmberAfEventLogPayloadControl; + +// Enum for ExtendedGenericAlarmGroups +typedef enum { + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_MEASUREMENT_SYSTEM_ERROR = 112, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_WATCHDOG_ERROR = 113, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_SUPPLY_DISCONNECT_FAILURE = 114, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_SUPPLY_CONNECT_FAILURE = 115, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_MEASURMENT_SOFTWARE_CHANGED = 116, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_DST_ENABLED = 117, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_DST_DISABLED = 118, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_CLOCK_ADJ_BACKWARD = 119, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_CLOCK_ADJ_FORWARD = 120, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_CLOCK_INVALID = 121, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_COMMUNICATION_ERROR_HAN = 122, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_COMMUNICATION_OK_H_AN = 123, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_METER_FRAUD_ATTEMPT = 124, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_POWER_LOSS = 125, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_UNUSUAL_HAN_TRAFFIC = 126, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_UNEXPECTED_CLOCK_CHANGE = 127, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_COMMS_USING_UNAUTHENTICATED_COMPONENT = 128, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_ERROR_REG_CLEAR = 129, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_ALARM_REG_CLEAR = 130, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_UNEXPECTED_HW_RESET = 131, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_UNEXPECTED_PROGRAM_EXECUTION = 132, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_EVENT_LOG_CLEARED = 133, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_LIMIT_THRESHOLD_EXCEEDED = 134, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_LIMIT_THRESHOLD_OK = 135, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_LIMIT_THRESHOLD_CHANGED = 136, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_MAXIMUM_DEMAND_EXCEEDED = 137, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_PROFILE_CLEARED = 138, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_SAMPLING_BUFFERCLEARED = 139, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_BATTERY_WARNING = 140, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_WRONG_SIGNATURE = 141, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_NO_SIGNATURE = 142, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_UNAUTHORISED_ACTIONFROM_HAN = 143, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_FAST_POLLING_START = 144, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_FAST_POLLING_END = 145, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_METER_REPORTING_INTERVAL_CHANGED = 146, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_DISCONNECT_DUETO_LOAD_LIMIT = 147, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_METER_SUPPLY_STATUS_REGISTER_CHANGED = 148, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_METER_ALARM_STATUS_REGISTER_CHANGED = 149, + EMBER_ZCL_EXTENDED_GENERIC_ALARM_GROUPS_EXTENDED_METER_ALARM_STATUS_REGISTER_CHANGED = 150, +} EmberAfExtendedGenericAlarmGroups; + +// Enum for ExtendedNumberOfPriceTiers +typedef enum { + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_REFER_TO_NUMBER_OF_PRICE_TIERS_FIELD = 0, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS16 = 1, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS17 = 2, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS18 = 3, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS19 = 4, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS20 = 5, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS21 = 6, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS22 = 7, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS23 = 8, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS24 = 9, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS25 = 10, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS26 = 11, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS27 = 12, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS28 = 13, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS29 = 14, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS30 = 15, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS31 = 16, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS32 = 17, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS33 = 18, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS34 = 19, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS35 = 20, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS36 = 21, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS37 = 22, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS38 = 23, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS39 = 24, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS40 = 25, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS41 = 26, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS42 = 27, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS43 = 28, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS44 = 29, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS45 = 30, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS46 = 31, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS47 = 32, + EMBER_ZCL_EXTENDED_NUMBER_OF_PRICE_TIERS_NUMBER_OF_PRICE_TIERS48 = 33, +} EmberAfExtendedNumberOfPriceTiers; + +// Enum for ExtendedPriceTier +typedef enum { + EMBER_ZCL_EXTENDED_PRICE_TIER_REFER_TO_PRICE_TIER_FIELD = 0, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER16_PRICE_LABEL = 1, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER17_PRICE_LABEL = 2, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER18_PRICE_LABEL = 3, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER19_PRICE_LABEL = 4, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER20_PRICE_LABEL = 5, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER21_PRICE_LABEL = 6, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER22_PRICE_LABEL = 7, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER23_PRICE_LABEL = 8, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER24_PRICE_LABEL = 9, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER25_PRICE_LABEL = 10, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER26_PRICE_LABEL = 11, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER27_PRICE_LABEL = 12, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER28_PRICE_LABEL = 13, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER29_PRICE_LABEL = 14, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER30_PRICE_LABEL = 15, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER31_PRICE_LABEL = 16, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER32_PRICE_LABEL = 17, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER33_PRICE_LABEL = 18, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER34_PRICE_LABEL = 19, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER35_PRICE_LABEL = 20, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER36_PRICE_LABEL = 21, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER37_PRICE_LABEL = 22, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER38_PRICE_LABEL = 23, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER39_PRICE_LABEL = 24, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER40_PRICE_LABEL = 25, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER41_PRICE_LABEL = 26, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER42_PRICE_LABEL = 27, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER43_PRICE_LABEL = 28, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER44_PRICE_LABEL = 29, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER45_PRICE_LABEL = 30, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER46_PRICE_LABEL = 31, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER47_PRICE_LABEL = 32, + EMBER_ZCL_EXTENDED_PRICE_TIER_TIER48_PRICE_LABEL = 33, +} EmberAfExtendedPriceTier; + +// Enum for ExtendedRegisterTier +typedef enum { + EMBER_ZCL_EXTENDED_REGISTER_TIER_REFER_TO_REGISTER_TIER_FIELD = 0, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER16_SUMMATION_DELIVERED_ATTRIBUTE = 1, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER17_SUMMATION_DELIVERED_ATTRIBUTE = 2, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER18_SUMMATION_DELIVERED_ATTRIBUTE = 3, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER19_SUMMATION_DELIVERED_ATTRIBUTE = 4, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER20_SUMMATION_DELIVERED_ATTRIBUTE = 5, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER21_SUMMATION_DELIVERED_ATTRIBUTE = 6, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER22_SUMMATION_DELIVERED_ATTRIBUTE = 7, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER23_SUMMATION_DELIVERED_ATTRIBUTE = 8, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER24_SUMMATION_DELIVERED_ATTRIBUTE = 9, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER25_SUMMATION_DELIVERED_ATTRIBUTE = 10, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER26_SUMMATION_DELIVERED_ATTRIBUTE = 11, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER27_SUMMATION_DELIVERED_ATTRIBUTE = 12, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER28_SUMMATION_DELIVERED_ATTRIBUTE = 13, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER29_SUMMATION_DELIVERED_ATTRIBUTE = 14, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER30_SUMMATION_DELIVERED_ATTRIBUTE = 15, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER31_SUMMATION_DELIVERED_ATTRIBUTE = 16, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER32_SUMMATION_DELIVERED_ATTRIBUTE = 17, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER33_SUMMATION_DELIVERED_ATTRIBUTE = 18, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER34_SUMMATION_DELIVERED_ATTRIBUTE = 19, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER35_SUMMATION_DELIVERED_ATTRIBUTE = 20, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER36_SUMMATION_DELIVERED_ATTRIBUTE = 21, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER37_SUMMATION_DELIVERED_ATTRIBUTE = 22, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER38_SUMMATION_DELIVERED_ATTRIBUTE = 23, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER39_SUMMATION_DELIVERED_ATTRIBUTE = 24, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER40_SUMMATION_DELIVERED_ATTRIBUTE = 25, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER41_SUMMATION_DELIVERED_ATTRIBUTE = 26, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER42_SUMMATION_DELIVERED_ATTRIBUTE = 27, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER43_SUMMATION_DELIVERED_ATTRIBUTE = 28, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER44_SUMMATION_DELIVERED_ATTRIBUTE = 29, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER45_SUMMATION_DELIVERED_ATTRIBUTE = 30, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER46_SUMMATION_DELIVERED_ATTRIBUTE = 31, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER47_SUMMATION_DELIVERED_ATTRIBUTE = 32, + EMBER_ZCL_EXTENDED_REGISTER_TIER_CURRENT_TIER48_SUMMATION_DELIVERED_ATTRIBUTE = 33, +} EmberAfExtendedRegisterTier; + +// Enum for EzModeCommissioningClusterType +typedef enum { + EMBER_ZCL_EZ_MODE_COMMISSIONING_CLUSTER_TYPE_SERVER = 0, + EMBER_ZCL_EZ_MODE_COMMISSIONING_CLUSTER_TYPE_CLIENT = 1, +} EmberAfEzModeCommissioningClusterType; + +// Enum for FanMode +typedef enum { + EMBER_ZCL_FAN_MODE_OFF = 0, + EMBER_ZCL_FAN_MODE_LOW = 1, + EMBER_ZCL_FAN_MODE_MEDIUM = 2, + EMBER_ZCL_FAN_MODE_HIGH = 3, + EMBER_ZCL_FAN_MODE_ON = 4, + EMBER_ZCL_FAN_MODE_AUTO = 5, + EMBER_ZCL_FAN_MODE_SMART = 6, +} EmberAfFanMode; + +// Enum for FanModeSequence +typedef enum { + EMBER_ZCL_FAN_MODE_SEQUENCE_LOW_MED_HIGH = 0, + EMBER_ZCL_FAN_MODE_SEQUENCE_LOW_HIGH = 1, + EMBER_ZCL_FAN_MODE_SEQUENCE_LOW_MED_HIGH_AUTO = 2, + EMBER_ZCL_FAN_MODE_SEQUENCE_LOW_HIGH_AUTO = 3, + EMBER_ZCL_FAN_MODE_SEQUENCE_ON_AUTO = 4, +} EmberAfFanModeSequence; + +// Enum for GasSpecificAlarmGroups +typedef enum { + EMBER_ZCL_GAS_SPECIFIC_ALARM_GROUPS_TILT_TAMPER = 96, + EMBER_ZCL_GAS_SPECIFIC_ALARM_GROUPS_BATTERY_COVER_REMOVED = 97, + EMBER_ZCL_GAS_SPECIFIC_ALARM_GROUPS_BATTERY_COVER_CLOSED = 98, + EMBER_ZCL_GAS_SPECIFIC_ALARM_GROUPS_EXCESS_FLOW = 99, + EMBER_ZCL_GAS_SPECIFIC_ALARM_GROUPS_TILT_TAMPER_ENDED = 100, +} EmberAfGasSpecificAlarmGroups; + +// Enum for GenerationTier +typedef enum { + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER1_SUMMATION_RECEIVED_ATTRIBUTE = 1, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER2_SUMMATION_RECEIVED_ATTRIBUTE = 2, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER3_SUMMATION_RECEIVED_ATTRIBUTE = 3, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER4_SUMMATION_RECEIVED_ATTRIBUTE = 4, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER5_SUMMATION_RECEIVED_ATTRIBUTE = 5, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER6_SUMMATION_RECEIVED_ATTRIBUTE = 6, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER7_SUMMATION_RECEIVED_ATTRIBUTE = 7, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER8_SUMMATION_RECEIVED_ATTRIBUTE = 8, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER9_SUMMATION_RECEIVED_ATTRIBUTE = 9, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER10_SUMMATION_RECEIVED_ATTRIBUTE = 10, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER11_SUMMATION_RECEIVED_ATTRIBUTE = 11, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER12_SUMMATION_RECEIVED_ATTRIBUTE = 12, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER13_SUMMATION_RECEIVED_ATTRIBUTE = 13, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER14_SUMMATION_RECEIVED_ATTRIBUTE = 14, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER15_SUMMATION_RECEIVED_ATTRIBUTE = 15, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER16_SUMMATION_RECEIVED_ATTRIBUTE = 16, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER17_SUMMATION_RECEIVED_ATTRIBUTE = 17, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER18_SUMMATION_RECEIVED_ATTRIBUTE = 18, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER19_SUMMATION_RECEIVED_ATTRIBUTE = 19, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER20_SUMMATION_RECEIVED_ATTRIBUTE = 20, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER21_SUMMATION_RECEIVED_ATTRIBUTE = 21, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER22_SUMMATION_RECEIVED_ATTRIBUTE = 22, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER23_SUMMATION_RECEIVED_ATTRIBUTE = 23, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER24_SUMMATION_RECEIVED_ATTRIBUTE = 24, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER25_SUMMATION_RECEIVED_ATTRIBUTE = 25, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER26_SUMMATION_RECEIVED_ATTRIBUTE = 26, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER27_SUMMATION_RECEIVED_ATTRIBUTE = 27, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER28_SUMMATION_RECEIVED_ATTRIBUTE = 28, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER29_SUMMATION_RECEIVED_ATTRIBUTE = 29, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER30_SUMMATION_RECEIVED_ATTRIBUTE = 30, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER31_SUMMATION_RECEIVED_ATTRIBUTE = 31, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER32_SUMMATION_RECEIVED_ATTRIBUTE = 32, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER33_SUMMATION_RECEIVED_ATTRIBUTE = 33, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER34_SUMMATION_RECEIVED_ATTRIBUTE = 34, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER35_SUMMATION_RECEIVED_ATTRIBUTE = 35, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER36_SUMMATION_RECEIVED_ATTRIBUTE = 36, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER37_SUMMATION_RECEIVED_ATTRIBUTE = 37, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER38_SUMMATION_RECEIVED_ATTRIBUTE = 38, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER39_SUMMATION_RECEIVED_ATTRIBUTE = 39, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER40_SUMMATION_RECEIVED_ATTRIBUTE = 40, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER41_SUMMATION_RECEIVED_ATTRIBUTE = 41, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER42_SUMMATION_RECEIVED_ATTRIBUTE = 42, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER43_SUMMATION_RECEIVED_ATTRIBUTE = 43, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER44_SUMMATION_RECEIVED_ATTRIBUTE = 44, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER45_SUMMATION_RECEIVED_ATTRIBUTE = 45, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER46_SUMMATION_RECEIVED_ATTRIBUTE = 46, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER47_SUMMATION_RECEIVED_ATTRIBUTE = 47, + EMBER_ZCL_GENERATION_TIER_CURRENT_TIER48_SUMMATION_RECEIVED_ATTRIBUTE = 48, +} EmberAfGenerationTier; + +// Enum for GenericAlarmGroups +typedef enum { + EMBER_ZCL_GENERIC_ALARM_GROUPS_CHECK_METER = 0, + EMBER_ZCL_GENERIC_ALARM_GROUPS_LOW_BATTERY = 1, + EMBER_ZCL_GENERIC_ALARM_GROUPS_TAMPER_DETECT = 2, + EMBER_ZCL_GENERIC_ALARM_GROUPS_LEAK_DETECT = 5, + EMBER_ZCL_GENERIC_ALARM_GROUPS_SERVICE_DISCONNECT = 6, + EMBER_ZCL_GENERIC_ALARM_GROUPS_METER_COVER_REMOVED = 8, + EMBER_ZCL_GENERIC_ALARM_GROUPS_METER_COVER_CLOSED = 9, + EMBER_ZCL_GENERIC_ALARM_GROUPS_STRONG_MAGNETIC_FIELD = 10, + EMBER_ZCL_GENERIC_ALARM_GROUPS_NO_STRONG_MAGNETIC_FIELD = 11, + EMBER_ZCL_GENERIC_ALARM_GROUPS_BATTERY_FAILURE = 12, + EMBER_ZCL_GENERIC_ALARM_GROUPS_PROGRAM_MEMORY_ERROR = 13, + EMBER_ZCL_GENERIC_ALARM_GROUPS_RAM_ERROR = 14, + EMBER_ZCL_GENERIC_ALARM_GROUPS_NV_MEMORY_ERROR = 15, +} EmberAfGenericAlarmGroups; + +// Enum for GenericAlarmGroupsElectricity +typedef enum { + EMBER_ZCL_GENERIC_ALARM_GROUPS_ELECTRICITY_POWER_FAILURE = 3, + EMBER_ZCL_GENERIC_ALARM_GROUPS_ELECTRICITY_POWER_QUALITY = 4, +} EmberAfGenericAlarmGroupsElectricity; + +// Enum for GenericAlarmGroupsGas +typedef enum { + EMBER_ZCL_GENERIC_ALARM_GROUPS_GAS_LOW_PRESSURE = 4, + EMBER_ZCL_GENERIC_ALARM_GROUPS_GAS_REVERSE_FLOW = 7, +} EmberAfGenericAlarmGroupsGas; + +// Enum for GenericAlarmGroupsHeatCooling +typedef enum { + EMBER_ZCL_GENERIC_ALARM_GROUPS_HEAT_COOLING_TEMPERATURE_SENSOR = 3, + EMBER_ZCL_GENERIC_ALARM_GROUPS_HEAT_COOLING_BURST_DETECT = 4, + EMBER_ZCL_GENERIC_ALARM_GROUPS_HEAT_COOLING_FLOW_SENSOR = 7, +} EmberAfGenericAlarmGroupsHeatCooling; + +// Enum for GenericAlarmGroupsWater +typedef enum { + EMBER_ZCL_GENERIC_ALARM_GROUPS_WATER_WATER_PIPE_EMPTY = 3, + EMBER_ZCL_GENERIC_ALARM_GROUPS_WATER_WATER_LOW_PRESSURE = 4, + EMBER_ZCL_GENERIC_ALARM_GROUPS_WATER_WATER_REVERSE_FLOW = 7, +} EmberAfGenericAlarmGroupsWater; + +// Enum for GenericDeviceClass +typedef enum { + EMBER_ZCL_GENERIC_DEVICE_CLASS_LIGHTING = 0, +} EmberAfGenericDeviceClass; + +// Enum for GenericDeviceType +typedef enum { + EMBER_ZCL_GENERIC_DEVICE_TYPE_INCANDESCENT = 0, + EMBER_ZCL_GENERIC_DEVICE_TYPE_SPOTLIGHT_HALOGEN = 1, + EMBER_ZCL_GENERIC_DEVICE_TYPE_HALOGEN_BULB = 2, + EMBER_ZCL_GENERIC_DEVICE_TYPE_CFL = 3, + EMBER_ZCL_GENERIC_DEVICE_TYPE_LINEAR_FLOURESCENT = 4, + EMBER_ZCL_GENERIC_DEVICE_TYPE_LED_BULB = 5, + EMBER_ZCL_GENERIC_DEVICE_TYPE_SPOTLIGHT_LED = 6, + EMBER_ZCL_GENERIC_DEVICE_TYPE_LED_STRIP = 7, + EMBER_ZCL_GENERIC_DEVICE_TYPE_LED_TUBE = 8, + EMBER_ZCL_GENERIC_DEVICE_TYPE_GENERIC_INDOOR_FIXTURE = 9, + EMBER_ZCL_GENERIC_DEVICE_TYPE_GENERIC_OUTDOOR_FIXTURE = 10, + EMBER_ZCL_GENERIC_DEVICE_TYPE_PENDANT_FIXTURE = 11, + EMBER_ZCL_GENERIC_DEVICE_TYPE_FLOOR_STANDING_FIXTURE = 12, + EMBER_ZCL_GENERIC_DEVICE_TYPE_GENERIC_CONTROLLER = 224, + EMBER_ZCL_GENERIC_DEVICE_TYPE_WALL_SWITCH = 225, + EMBER_ZCL_GENERIC_DEVICE_TYPE_PORTABLE_REMOTE_CONTROLLER = 226, + EMBER_ZCL_GENERIC_DEVICE_TYPE_MOTION_OR_LIGHT_SENSOR = 227, + EMBER_ZCL_GENERIC_DEVICE_TYPE_GENERIC_ACTUATOR = 240, + EMBER_ZCL_GENERIC_DEVICE_TYPE_PLUGIN_UNIT = 241, + EMBER_ZCL_GENERIC_DEVICE_TYPE_RETROFIT_ACTUATOR = 242, + EMBER_ZCL_GENERIC_DEVICE_TYPE_UNSPECIFIED = 255, +} EmberAfGenericDeviceType; + +// Enum for GenericFlowPressureAlarmGroups +typedef enum { + EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_BURST_DETECT = 48, + EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_PRESSURE_TOO_LOW = 49, + EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_PRESSURE_TOO_HIGH = 50, + EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_FLOW_SENSOR_COMMUNICATION_ERROR = 51, + EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_FLOW_SENSOR_MEASUREMENT_FAULT = 52, + EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_FLOW_SENSOR_REVERSE_FLOW = 53, + EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_FLOW_SENSOR_AIR_DETECT = 54, + EMBER_ZCL_GENERIC_FLOW_PRESSURE_ALARM_GROUPS_PIPE_EMPTY = 55, +} EmberAfGenericFlowPressureAlarmGroups; + +// Enum for GpDeviceId +typedef enum { + EMBER_ZCL_GP_DEVICE_ID_GP_SIMPLE_GENERIC_ONE_STATE_SWITCH = 0, + EMBER_ZCL_GP_DEVICE_ID_GP_SIMPLE_GENERIC_TWO_STATE_SWITCH = 0, + EMBER_ZCL_GP_DEVICE_ID_GP_ON_OFF_SWITCH = 8, + EMBER_ZCL_GP_DEVICE_ID_GP_LEVEL_CONTROL_SWITCH = 16, + EMBER_ZCL_GP_DEVICE_ID_GP_SIMPLE_SENSOR = 24, + EMBER_ZCL_GP_DEVICE_ID_GP_ADVANCED_GENERIC_ONE_STATE_SWITCH = 24, + EMBER_ZCL_GP_DEVICE_ID_GP_ADVANCED_GENERIC_TWO_STATE_SWITCH = 24, + EMBER_ZCL_GP_DEVICE_ID_GP_COLOR_DIMMER_SWITCH = 24, + EMBER_ZCL_GP_DEVICE_ID_GP_LIGHT_SENSOR = 24, + EMBER_ZCL_GP_DEVICE_ID_GP_OCCPANCY_SENSOR = 24, + EMBER_ZCL_GP_DEVICE_ID_GP_DOOR_LOCK_CONTROLLER = 24, + EMBER_ZCL_GP_DEVICE_ID_GP_TEMPERATURE_SENSOR = 24, + EMBER_ZCL_GP_DEVICE_ID_GP_PRESSURE_SENSOR = 24, + EMBER_ZCL_GP_DEVICE_ID_GP_FLOW_SENSOR = 24, + EMBER_ZCL_GP_DEVICE_ID_GP_INDOOR_ENVIRONMENT_SNESOR = 24, +} EmberAfGpDeviceId; + +// Enum for GpGpdf +typedef enum { + EMBER_ZCL_GP_GPDF_IDENTIFY = 0, + EMBER_ZCL_GP_GPDF_MATCH_ONLY_ON_GPD_ADDRESS = 2, + EMBER_ZCL_GP_GPDF_RECALL_SCENE0 = 16, + EMBER_ZCL_GP_GPDF_RECALL_SCENE1 = 17, + EMBER_ZCL_GP_GPDF_RECALL_SCENE2 = 18, + EMBER_ZCL_GP_GPDF_RECALL_SCENE3 = 19, + EMBER_ZCL_GP_GPDF_RECALL_SCENE4 = 20, + EMBER_ZCL_GP_GPDF_RECALL_SCENE5 = 21, + EMBER_ZCL_GP_GPDF_RECALL_SCENE6 = 22, + EMBER_ZCL_GP_GPDF_RECALL_SCENE7 = 23, + EMBER_ZCL_GP_GPDF_STORE_SCENE0 = 24, + EMBER_ZCL_GP_GPDF_STORE_SCENE1 = 25, + EMBER_ZCL_GP_GPDF_STORE_SCENE2 = 26, + EMBER_ZCL_GP_GPDF_STORE_SCENE3 = 27, + EMBER_ZCL_GP_GPDF_STORE_SCENE4 = 28, + EMBER_ZCL_GP_GPDF_STORE_SCENE5 = 29, + EMBER_ZCL_GP_GPDF_STORE_SCENE6 = 30, + EMBER_ZCL_GP_GPDF_STORE_SCENE7 = 31, + EMBER_ZCL_GP_GPDF_OFF = 32, + EMBER_ZCL_GP_GPDF_ON = 33, + EMBER_ZCL_GP_GPDF_TOGGLE = 34, + EMBER_ZCL_GP_GPDF_RELEASE = 35, + EMBER_ZCL_GP_GPDF_MOVE_UP = 48, + EMBER_ZCL_GP_GPDF_MOVE_DOWN = 49, + EMBER_ZCL_GP_GPDF_STEP_UP = 50, + EMBER_ZCL_GP_GPDF_STEP_DOWN = 51, + EMBER_ZCL_GP_GPDF_LEVEL_CONTROL_STOP = 52, + EMBER_ZCL_GP_GPDF_MOVE_UP_WITH_ON_OFF = 53, + EMBER_ZCL_GP_GPDF_MOVE_DOWN_WITH_ON_OFF = 54, + EMBER_ZCL_GP_GPDF_STEP_UP_WITH_ON_OFF = 55, + EMBER_ZCL_GP_GPDF_STEP_DOWN_WITH_ON_OFF = 56, + EMBER_ZCL_GP_GPDF_MOVE_HUE_STOP = 64, + EMBER_ZCL_GP_GPDF_MOVE_HUE_UP = 65, + EMBER_ZCL_GP_GPDF_MOVE_HUE_DOWN = 66, + EMBER_ZCL_GP_GPDF_STEP_HUE_UP = 67, + EMBER_ZCL_GP_GPDF_STEP_HUE_DOWN = 68, + EMBER_ZCL_GP_GPDF_MOVE_SATURATION_STOP = 69, + EMBER_ZCL_GP_GPDF_MOVE_SATURATION_UP = 70, + EMBER_ZCL_GP_GPDF_MOVE_SATURATION_DOWN = 71, + EMBER_ZCL_GP_GPDF_STEP_SATURATION_UP = 72, + EMBER_ZCL_GP_GPDF_STEP_SATURATION_DOWN = 73, + EMBER_ZCL_GP_GPDF_MOVE_COLOR = 74, + EMBER_ZCL_GP_GPDF_STEP_COLOR = 75, + EMBER_ZCL_GP_GPDF_LOCK_DOOR = 80, + EMBER_ZCL_GP_GPDF_UNLOCK_DOOR = 81, + EMBER_ZCL_GP_GPDF_PRESS1_OF1 = 96, + EMBER_ZCL_GP_GPDF_RELEASE1_OF1 = 97, + EMBER_ZCL_GP_GPDF_PRESS1_OF2 = 98, + EMBER_ZCL_GP_GPDF_RELEASE1_OF2 = 99, + EMBER_ZCL_GP_GPDF_PRESS2_OF2 = 100, + EMBER_ZCL_GP_GPDF_RELEASE2_OF2 = 101, + EMBER_ZCL_GP_GPDF_SHORT_PRESS1_OF1 = 102, + EMBER_ZCL_GP_GPDF_SHORT_PRESS1_OF2 = 103, + EMBER_ZCL_GP_GPDF_SHORT_PRESS2_OF2 = 104, + EMBER_ZCL_GP_GPDF_8BITS_VECTOR_PRESS = 105, + EMBER_ZCL_GP_GPDF_8BITS_VECTOR_RELEASE = 106, + EMBER_ZCL_GP_GPDF_ATTRIBUTE_REPORTING = 160, + EMBER_ZCL_GP_GPDF_MFR_SP_ATTR_RPTG = 161, + EMBER_ZCL_GP_GPDF_MULTI_CLUSTER_RPTG = 162, + EMBER_ZCL_GP_GPDF_MFR_SP_MULTI_CLUSTER_RPTG = 163, + EMBER_ZCL_GP_GPDF_REQUEST_ATTRIBUTE = 164, + EMBER_ZCL_GP_GPDF_READ_ATTR_RESPONSE = 165, + EMBER_ZCL_GP_GPDF_ZCL_TUNNELING_WITH_PAYLOAD = 166, + EMBER_ZCL_GP_GPDF_COMPACT_ATTRIBUTE_REPORTING = 168, + EMBER_ZCL_GP_GPDF_ANY_GPD_SENSOR_CMD = 175, + EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD0 = 176, + EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD1 = 177, + EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD2 = 178, + EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD3 = 179, + EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD4 = 180, + EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD5 = 181, + EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD6 = 182, + EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD7 = 183, + EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD8 = 184, + EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD9 = 185, + EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD_A = 186, + EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD_B = 187, + EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD_C = 188, + EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD_D = 189, + EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD_E = 190, + EMBER_ZCL_GP_GPDF_MFR_DEF_GPD_CMD_F = 191, + EMBER_ZCL_GP_GPDF_COMMISSIONING = 224, + EMBER_ZCL_GP_GPDF_DECOMMISSIONING = 225, + EMBER_ZCL_GP_GPDF_SUCCESS = 226, + EMBER_ZCL_GP_GPDF_CHANNEL_REQUEST = 227, + EMBER_ZCL_GP_GPDF_APPLICATION_DESCRIPTION = 228, + EMBER_ZCL_GP_GPDF_COMMISSIONING_REPLY = 240, + EMBER_ZCL_GP_GPDF_WRITE_ATTRIBUTES = 241, + EMBER_ZCL_GP_GPDF_READ_ATTRIBUTES = 242, + EMBER_ZCL_GP_GPDF_CHANNEL_CONFIGURATION = 243, + EMBER_ZCL_GP_GPDF_ZCL_TUNNELING = 246, +} EmberAfGpGpdf; + +// Enum for GpPairingConfigurationAction +typedef enum { + EMBER_ZCL_GP_PAIRING_CONFIGURATION_ACTION_NO_ACTION = 0, + EMBER_ZCL_GP_PAIRING_CONFIGURATION_ACTION_EXTEND_SINK_TABLE_ENTRY = 1, + EMBER_ZCL_GP_PAIRING_CONFIGURATION_ACTION_REPLACE_SINK_TABLE_ENTRY = 2, + EMBER_ZCL_GP_PAIRING_CONFIGURATION_ACTION_REMOVE_A_PAIRING = 3, + EMBER_ZCL_GP_PAIRING_CONFIGURATION_ACTION_REMOVE_GPD = 4, + EMBER_ZCL_GP_PAIRING_CONFIGURATION_ACTION_APPLICATION_DESCRIPTION = 5, +} EmberAfGpPairingConfigurationAction; + +// Enum for GpPairingConfigurationOptionCommunicationMode +typedef enum { + EMBER_ZCL_GP_PAIRING_CONFIGURATION_OPTION_COMMUNICATION_MODE_UNICAST_FORWARDING = 0, + EMBER_ZCL_GP_PAIRING_CONFIGURATION_OPTION_COMMUNICATION_MODE_GROUPCAST_FORWARDING_TO_D_GROUP_ID = 8, + EMBER_ZCL_GP_PAIRING_CONFIGURATION_OPTION_COMMUNICATION_MODE_GROUPCAST_FORWARDING_TO_PRE_COMMISSIONED = 16, + EMBER_ZCL_GP_PAIRING_CONFIGURATION_OPTION_COMMUNICATION_MODE_UNICAST_FORWARDING_LIGHTWEIGHT = 24, +} EmberAfGpPairingConfigurationOptionCommunicationMode; + +// Enum for GpPairingOptionsCommunicationMode +typedef enum { + EMBER_ZCL_GP_PAIRING_OPTIONS_COMMUNICATION_MODE_FULL_UNICAST_FORWARDING = 0, + EMBER_ZCL_GP_PAIRING_OPTIONS_COMMUNICATION_MODE_GROUPCAST_FORWARDING_TO_D_GROUP_ID = 1, + EMBER_ZCL_GP_PAIRING_OPTIONS_COMMUNICATION_MODE_GROUPCAST_FORWARDING_TO_PRE_COMM_UNIT = 16, + EMBER_ZCL_GP_PAIRING_OPTIONS_COMMUNICATION_MODE_UNICAST_FORWARDING_BY_PROX_SUPPORT = 17, +} EmberAfGpPairingOptionsCommunicationMode; + +// Enum for GpProxyTableRequestOptionsRequestType +typedef enum { + EMBER_ZCL_GP_PROXY_TABLE_REQUEST_OPTIONS_REQUEST_TYPE_BY_GPD_ID = 0, + EMBER_ZCL_GP_PROXY_TABLE_REQUEST_OPTIONS_REQUEST_TYPE_BY_INDEX = 1, +} EmberAfGpProxyTableRequestOptionsRequestType; + +// Enum for GpProxyTableResponseStatus +typedef enum { + EMBER_ZCL_GP_PROXY_TABLE_RESPONSE_STATUS_SUCCESS = 0, + EMBER_ZCL_GP_PROXY_TABLE_RESPONSE_STATUS_NOT_FOUND = 139, +} EmberAfGpProxyTableResponseStatus; + +// Enum for GpSecurityKeyType +typedef enum { + EMBER_ZCL_GP_SECURITY_KEY_TYPE_NONE = 0, + EMBER_ZCL_GP_SECURITY_KEY_TYPE_ZIGBEE_NETWORK_KEY = 1, + EMBER_ZCL_GP_SECURITY_KEY_TYPE_GPD_GROUP_KEY = 2, + EMBER_ZCL_GP_SECURITY_KEY_TYPE_NETWORK_DERIVED_GROUP_KEY = 3, + EMBER_ZCL_GP_SECURITY_KEY_TYPE_INDIVIDIGUAL_GPD_KEY = 4, + EMBER_ZCL_GP_SECURITY_KEY_TYPE_DERIVED_INDIVIDUAL_GPD_KEY = 7, +} EmberAfGpSecurityKeyType; + +// Enum for GpSinkTableRequestOptions +typedef enum { + EMBER_ZCL_GP_SINK_TABLE_REQUEST_OPTIONS_REQUEST_TABLE_ENTRIES_BY_GPD_ID = 0, + EMBER_ZCL_GP_SINK_TABLE_REQUEST_OPTIONS_REQUEST_TABLE_ENTRIES_BY_INDEX = 1, +} EmberAfGpSinkTableRequestOptions; + +// Enum for GpSinkTableResponseStatus +typedef enum { + EMBER_ZCL_GP_SINK_TABLE_RESPONSE_STATUS_SUCCESS = 0, + EMBER_ZCL_GP_SINK_TABLE_RESPONSE_STATUS_NOT_FOUND = 139, +} EmberAfGpSinkTableResponseStatus; + +// Enum for GpTranslationTableResponseStatus +typedef enum { + EMBER_ZCL_GP_TRANSLATION_TABLE_RESPONSE_STATUS_SUCCESS = 0, + EMBER_ZCL_GP_TRANSLATION_TABLE_RESPONSE_STATUS_NOT_FOUND = 139, +} EmberAfGpTranslationTableResponseStatus; + +// Enum for GpTranslationTableUpdateAction +typedef enum { + EMBER_ZCL_GP_TRANSLATION_TABLE_UPDATE_ACTION_ADD_TRANSLATION_TABLE_ENTRY = 0, + EMBER_ZCL_GP_TRANSLATION_TABLE_UPDATE_ACTION_REPLACE_TRANSLATION_TABLE_ENTRY = 8, + EMBER_ZCL_GP_TRANSLATION_TABLE_UPDATE_ACTION_REMOVE_TRANSLATION_TABLE_ENTRY = 16, + EMBER_ZCL_GP_TRANSLATION_TABLE_UPDATE_ACTION_RESERVED = 24, +} EmberAfGpTranslationTableUpdateAction; + +// Enum for HeatAndCoolingSpecificAlarmGroups +typedef enum { + EMBER_ZCL_HEAT_AND_COOLING_SPECIFIC_ALARM_GROUPS_INLET_TEMPERATURE_SENSOR_FAULT = 80, + EMBER_ZCL_HEAT_AND_COOLING_SPECIFIC_ALARM_GROUPS_OUTLET_TEMPERATURE_SENSOR_FAULT = 81, +} EmberAfHeatAndCoolingSpecificAlarmGroups; + +// Enum for HueDirection +typedef enum { + EMBER_ZCL_HUE_DIRECTION_SHORTEST_DISTANCE = 0, + EMBER_ZCL_HUE_DIRECTION_LONGEST_DISTANCE = 1, + EMBER_ZCL_HUE_DIRECTION_UP = 2, + EMBER_ZCL_HUE_DIRECTION_DOWN = 3, +} EmberAfHueDirection; + +// Enum for HueMoveMode +typedef enum { + EMBER_ZCL_HUE_MOVE_MODE_STOP = 0, + EMBER_ZCL_HUE_MOVE_MODE_UP = 1, + EMBER_ZCL_HUE_MOVE_MODE_DOWN = 3, +} EmberAfHueMoveMode; + +// Enum for HueStepMode +typedef enum { + EMBER_ZCL_HUE_STEP_MODE_UP = 1, + EMBER_ZCL_HUE_STEP_MODE_DOWN = 3, +} EmberAfHueStepMode; + +// Enum for IasAceAlarmStatus +typedef enum { + EMBER_ZCL_IAS_ACE_ALARM_STATUS_NO_ALARM = 0, + EMBER_ZCL_IAS_ACE_ALARM_STATUS_BURGLAR = 1, + EMBER_ZCL_IAS_ACE_ALARM_STATUS_FIRE = 2, + EMBER_ZCL_IAS_ACE_ALARM_STATUS_EMERGENCY = 3, + EMBER_ZCL_IAS_ACE_ALARM_STATUS_POLICE_PANIC = 4, + EMBER_ZCL_IAS_ACE_ALARM_STATUS_FIRE_PANIC = 5, + EMBER_ZCL_IAS_ACE_ALARM_STATUS_EMERGENCY_PANIC = 6, +} EmberAfIasAceAlarmStatus; + +// Enum for IasAceArmMode +typedef enum { + EMBER_ZCL_IAS_ACE_ARM_MODE_DISARM = 0, + EMBER_ZCL_IAS_ACE_ARM_MODE_ARM_DAY_HOME_ZONES_ONLY = 1, + EMBER_ZCL_IAS_ACE_ARM_MODE_ARM_NIGHT_SLEEP_ZONES_ONLY = 2, + EMBER_ZCL_IAS_ACE_ARM_MODE_ARM_ALL_ZONES = 3, +} EmberAfIasAceArmMode; + +// Enum for IasAceArmNotification +typedef enum { + EMBER_ZCL_IAS_ACE_ARM_NOTIFICATION_ALL_ZONES_DISARMED = 0, + EMBER_ZCL_IAS_ACE_ARM_NOTIFICATION_ONLY_DAY_HOME_ZONES_ARMED = 1, + EMBER_ZCL_IAS_ACE_ARM_NOTIFICATION_ONLY_NIGHT_SLEEP_ZONES_ARMED = 2, + EMBER_ZCL_IAS_ACE_ARM_NOTIFICATION_ALL_ZONES_ARMED = 3, + EMBER_ZCL_IAS_ACE_ARM_NOTIFICATION_INVALID_ARM_DISARM_CODE = 4, + EMBER_ZCL_IAS_ACE_ARM_NOTIFICATION_NOT_READY_TO_ARM = 5, + EMBER_ZCL_IAS_ACE_ARM_NOTIFICATION_ALREADY_DISARMED = 6, +} EmberAfIasAceArmNotification; + +// Enum for IasAceAudibleNotification +typedef enum { + EMBER_ZCL_IAS_ACE_AUDIBLE_NOTIFICATION_MUTE = 0, + EMBER_ZCL_IAS_ACE_AUDIBLE_NOTIFICATION_DEFAULT_SOUND = 1, +} EmberAfIasAceAudibleNotification; + +// Enum for IasAceBypassResult +typedef enum { + EMBER_ZCL_IAS_ACE_BYPASS_RESULT_ZONE_BYPASSED = 0, + EMBER_ZCL_IAS_ACE_BYPASS_RESULT_ZONE_NOT_BYPASSED = 1, + EMBER_ZCL_IAS_ACE_BYPASS_RESULT_NOT_ALLOWED = 2, + EMBER_ZCL_IAS_ACE_BYPASS_RESULT_INVALID_ZONE_ID = 3, + EMBER_ZCL_IAS_ACE_BYPASS_RESULT_UNKNOWN_ZONE_ID = 4, + EMBER_ZCL_IAS_ACE_BYPASS_RESULT_INVALID_ARM_DISARM_CODE = 5, +} EmberAfIasAceBypassResult; + +// Enum for IasAcePanelStatus +typedef enum { + EMBER_ZCL_IAS_ACE_PANEL_STATUS_PANEL_DISARMED = 0, + EMBER_ZCL_IAS_ACE_PANEL_STATUS_ARMED_STAY = 1, + EMBER_ZCL_IAS_ACE_PANEL_STATUS_ARMED_NIGHT = 2, + EMBER_ZCL_IAS_ACE_PANEL_STATUS_ARMED_AWAY = 3, + EMBER_ZCL_IAS_ACE_PANEL_STATUS_EXIT_DELAY = 4, + EMBER_ZCL_IAS_ACE_PANEL_STATUS_ENTRY_DELAY = 5, + EMBER_ZCL_IAS_ACE_PANEL_STATUS_NOT_READY_TO_ARM = 6, + EMBER_ZCL_IAS_ACE_PANEL_STATUS_IN_ALARM = 7, + EMBER_ZCL_IAS_ACE_PANEL_STATUS_ARMING_STAY = 8, + EMBER_ZCL_IAS_ACE_PANEL_STATUS_ARMING_NIGHT = 9, + EMBER_ZCL_IAS_ACE_PANEL_STATUS_ARMING_AWAY = 10, +} EmberAfIasAcePanelStatus; + +// Enum for IasEnrollResponseCode +typedef enum { + EMBER_ZCL_IAS_ENROLL_RESPONSE_CODE_SUCCESS = 0, + EMBER_ZCL_IAS_ENROLL_RESPONSE_CODE_NOT_SUPPORTED = 1, + EMBER_ZCL_IAS_ENROLL_RESPONSE_CODE_NO_ENROLL_PERMIT = 2, + EMBER_ZCL_IAS_ENROLL_RESPONSE_CODE_TOO_MANY_ZONES = 3, +} EmberAfIasEnrollResponseCode; + +// Enum for IasZoneState +typedef enum { + EMBER_ZCL_IAS_ZONE_STATE_NOT_ENROLLED = 0, + EMBER_ZCL_IAS_ZONE_STATE_ENROLLED = 1, +} EmberAfIasZoneState; + +// Enum for IasZoneType +typedef enum { + EMBER_ZCL_IAS_ZONE_TYPE_STANDARD_CIE = 0, + EMBER_ZCL_IAS_ZONE_TYPE_MOTION_SENSOR = 13, + EMBER_ZCL_IAS_ZONE_TYPE_CONTACT_SWITCH = 21, + EMBER_ZCL_IAS_ZONE_TYPE_FIRE_SENSOR = 40, + EMBER_ZCL_IAS_ZONE_TYPE_WATER_SENSOR = 42, + EMBER_ZCL_IAS_ZONE_TYPE_GAS_SENSOR = 43, + EMBER_ZCL_IAS_ZONE_TYPE_PERSONAL_EMERGENCY_DEVICE = 44, + EMBER_ZCL_IAS_ZONE_TYPE_VIBRATION_MOVEMENT_SENSOR = 45, + EMBER_ZCL_IAS_ZONE_TYPE_REMOTE_CONTROL = 271, + EMBER_ZCL_IAS_ZONE_TYPE_KEY_FOB = 277, + EMBER_ZCL_IAS_ZONE_TYPE_KEYPAD = 541, + EMBER_ZCL_IAS_ZONE_TYPE_STANDARD_WARNING_DEVICE = 549, + EMBER_ZCL_IAS_ZONE_TYPE_GLASS_BREAK_SENSOR = 550, + EMBER_ZCL_IAS_ZONE_TYPE_CARBON_MONOXIDE_SENSOR = 551, + EMBER_ZCL_IAS_ZONE_TYPE_SECURITY_REPEATER = 553, + EMBER_ZCL_IAS_ZONE_TYPE_INVALID_ZONE_TYPE = 65535, +} EmberAfIasZoneType; + +// Enum for IdentifyEffectIdentifier +typedef enum { + EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_BLINK = 0, + EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_BREATHE = 1, + EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_OKAY = 2, + EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_CHANNEL_CHANGE = 11, + EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_FINISH_EFFECT = 254, + EMBER_ZCL_IDENTIFY_EFFECT_IDENTIFIER_STOP_EFFECT = 255, +} EmberAfIdentifyEffectIdentifier; + +// Enum for IdentifyEffectVariant +typedef enum { + EMBER_ZCL_IDENTIFY_EFFECT_VARIANT_DEFAULT = 0, +} EmberAfIdentifyEffectVariant; + +// Enum for KeyIndex +typedef enum { + EMBER_ZCL_KEY_INDEX_DEVELOPMENT = 0, + EMBER_ZCL_KEY_INDEX_MASTER = 4, + EMBER_ZCL_KEY_INDEX_CERTIFICATION = 15, +} EmberAfKeyIndex; + +// Enum for KeypadLockout +typedef enum { + EMBER_ZCL_KEYPAD_LOCKOUT_NO_LOCKOUT = 0, + EMBER_ZCL_KEYPAD_LOCKOUT_LEVEL_ONE_LOCKOUT = 1, + EMBER_ZCL_KEYPAD_LOCKOUT_LEVEL_TWO_LOCKOUT = 2, + EMBER_ZCL_KEYPAD_LOCKOUT_LEVEL_THREE_LOCKOUT = 3, + EMBER_ZCL_KEYPAD_LOCKOUT_LEVEL_FOUR_LOCKOUT = 4, + EMBER_ZCL_KEYPAD_LOCKOUT_LEVELFIVE_LOCKOUT = 5, +} EmberAfKeypadLockout; + +// Enum for LevelControlOptions +typedef enum { + EMBER_ZCL_LEVEL_CONTROL_OPTIONS_EXECUTE_IF_OFF = 1, + EMBER_ZCL_LEVEL_CONTROL_OPTIONS_COUPLE_COLOR_TEMP_TO_LEVEL = 2, +} EmberAfLevelControlOptions; + +// Enum for LevelStatus +typedef enum { + EMBER_ZCL_LEVEL_STATUS_ON_TARGET = 0, + EMBER_ZCL_LEVEL_STATUS_BELOW_TARGET = 1, + EMBER_ZCL_LEVEL_STATUS_ABOVE_TARGET = 2, +} EmberAfLevelStatus; + +// Enum for LocationMethod +typedef enum { + EMBER_ZCL_LOCATION_METHOD_LATERATION = 0, + EMBER_ZCL_LOCATION_METHOD_SIGNPOSTING = 1, + EMBER_ZCL_LOCATION_METHOD_RF_FINGERPRINTING = 2, + EMBER_ZCL_LOCATION_METHOD_OUT_OF_BAND = 3, +} EmberAfLocationMethod; + +// Enum for ManufacturerSpecificAlarmGroups +typedef enum { + EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_A = 176, + EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_B = 177, + EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_C = 178, + EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_D = 179, + EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_E = 180, + EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_F = 181, + EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_G = 182, + EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_H = 183, + EMBER_ZCL_MANUFACTURER_SPECIFIC_ALARM_GROUPS_MANUFACTURER_SPECIFIC_I = 184, +} EmberAfManufacturerSpecificAlarmGroups; + +// Enum for MeasurementLightSensorType +typedef enum { + EMBER_ZCL_MEASUREMENT_LIGHT_SENSOR_TYPE_PHOTODIODE = 0, + EMBER_ZCL_MEASUREMENT_LIGHT_SENSOR_TYPE_CMOS = 1, +} EmberAfMeasurementLightSensorType; + +// Enum for MessagingControlConfirmation +typedef enum { + EMBER_ZCL_MESSAGING_CONTROL_CONFIRMATION_NOT_REQUIRED = 0, + EMBER_ZCL_MESSAGING_CONTROL_CONFIRMATION_REQUIRED = 128, +} EmberAfMessagingControlConfirmation; + +// Enum for MessagingControlEnhancedConfirmation +typedef enum { + EMBER_ZCL_MESSAGING_CONTROL_ENHANCED_CONFIRMATION_NOT_REQUIRED = 0, + EMBER_ZCL_MESSAGING_CONTROL_ENHANCED_CONFIRMATION_REQUIRED = 32, +} EmberAfMessagingControlEnhancedConfirmation; + +// Enum for MessagingControlImportance +typedef enum { + EMBER_ZCL_MESSAGING_CONTROL_IMPORTANCE_LOW = 0, + EMBER_ZCL_MESSAGING_CONTROL_IMPORTANCE_MEDIUM = 4, + EMBER_ZCL_MESSAGING_CONTROL_IMPORTANCE_HIGH = 8, + EMBER_ZCL_MESSAGING_CONTROL_IMPORTANCE_CRITICAL = 12, +} EmberAfMessagingControlImportance; + +// Enum for MessagingControlTransmission +typedef enum { + EMBER_ZCL_MESSAGING_CONTROL_TRANSMISSION_NORMAL = 0, + EMBER_ZCL_MESSAGING_CONTROL_TRANSMISSION_NORMAL_AND_ANONYMOUS = 1, + EMBER_ZCL_MESSAGING_CONTROL_TRANSMISSION_ANONYMOUS = 2, + EMBER_ZCL_MESSAGING_CONTROL_TRANSMISSION_RESERVED = 3, +} EmberAfMessagingControlTransmission; + +// Enum for MeterDeviceType +typedef enum { + EMBER_ZCL_METER_DEVICE_TYPE_ELECTRIC_METER = 0, + EMBER_ZCL_METER_DEVICE_TYPE_GAS_METER = 1, + EMBER_ZCL_METER_DEVICE_TYPE_WATER_METER = 2, + EMBER_ZCL_METER_DEVICE_TYPE_THERMAL_METER = 3, + EMBER_ZCL_METER_DEVICE_TYPE_PRESSURE_METER = 4, + EMBER_ZCL_METER_DEVICE_TYPE_HEAT_METER = 5, + EMBER_ZCL_METER_DEVICE_TYPE_COOLING_METER = 6, + EMBER_ZCL_METER_DEVICE_TYPE_MIRRORED_GAS_METER = 128, + EMBER_ZCL_METER_DEVICE_TYPE_MIRRORED_WATER_METER = 129, + EMBER_ZCL_METER_DEVICE_TYPE_MIRRORED_THERMAL_METER = 130, + EMBER_ZCL_METER_DEVICE_TYPE_MIRRORED_PRESSURE_METER = 131, + EMBER_ZCL_METER_DEVICE_TYPE_MIRRORED_HEAT_METER = 132, + EMBER_ZCL_METER_DEVICE_TYPE_MIRRORED_COOLING_METER = 133, + EMBER_ZCL_METER_DEVICE_TYPE_UNDEFINED_MIRROR_METER = 254, +} EmberAfMeterDeviceType; + +// Enum for MeterTypeId +typedef enum { + EMBER_ZCL_METER_TYPE_ID_UTILITY_PRIMARY_METER = 0, + EMBER_ZCL_METER_TYPE_ID_UTILITY_PRODUCTION_METER = 1, + EMBER_ZCL_METER_TYPE_ID_UTILITY_SECONDARY_METER = 2, + EMBER_ZCL_METER_TYPE_ID_PRIVATE_PRIMARY_METER = 256, + EMBER_ZCL_METER_TYPE_ID_PRIVATE_PRODUCTION_METER = 257, + EMBER_ZCL_METER_TYPE_ID_PRIVATE_SECONDARY_METERS = 258, + EMBER_ZCL_METER_TYPE_ID_GENERIC_METER = 272, +} EmberAfMeterTypeId; + +// Enum for MeteringAlarmCode +typedef enum { + EMBER_ZCL_METERING_ALARM_CODE_CHECK_METER = 0, + EMBER_ZCL_METERING_ALARM_CODE_LOW_BATTERY = 1, + EMBER_ZCL_METERING_ALARM_CODE_TAMPER_DETECT = 2, + EMBER_ZCL_METERING_ALARM_CODE_POWER_FAILURE_PIPE_EMPTY_TEMPERATURE_SENSOR = 3, + EMBER_ZCL_METERING_ALARM_CODE_POWER_QUALITY_LOW_PRESSURE_BURST_DETECT = 4, + EMBER_ZCL_METERING_ALARM_CODE_LEAK_DETECT = 5, + EMBER_ZCL_METERING_ALARM_CODE_SERVICE_DISCONNECT = 6, + EMBER_ZCL_METERING_ALARM_CODE_REVERSE_FLOW_FLOW_SENSOR = 7, + EMBER_ZCL_METERING_ALARM_CODE_METER_COVER_REMOVED = 8, + EMBER_ZCL_METERING_ALARM_CODE_METER_COVER_CLOSED = 9, + EMBER_ZCL_METERING_ALARM_CODE_STRONG_MAGNETIC_FIELD = 10, + EMBER_ZCL_METERING_ALARM_CODE_NO_STRONG_MAGNETIC_FIELD = 11, + EMBER_ZCL_METERING_ALARM_CODE_BATTERY_FAILURE = 12, + EMBER_ZCL_METERING_ALARM_CODE_PROGRAM_MEMORY_ERROR = 13, + EMBER_ZCL_METERING_ALARM_CODE_RAM_ERROR = 14, + EMBER_ZCL_METERING_ALARM_CODE_NV_MEMORY_ERROR = 15, + EMBER_ZCL_METERING_ALARM_CODE_LOW_VOLTAGE_L1 = 16, + EMBER_ZCL_METERING_ALARM_CODE_HIGH_VOLTAGE_L1 = 17, + EMBER_ZCL_METERING_ALARM_CODE_LOW_VOLTAGE_L2 = 18, + EMBER_ZCL_METERING_ALARM_CODE_HIGH_VOLTAGE_L2 = 19, + EMBER_ZCL_METERING_ALARM_CODE_LOW_VOLTAGE_L3 = 20, + EMBER_ZCL_METERING_ALARM_CODE_HIGH_VOLTAGE_L3 = 21, + EMBER_ZCL_METERING_ALARM_CODE_OVER_CURRENT_L1 = 22, + EMBER_ZCL_METERING_ALARM_CODE_OVER_CURRENT_L2 = 23, + EMBER_ZCL_METERING_ALARM_CODE_OVER_CURRENT_L3 = 24, + EMBER_ZCL_METERING_ALARM_CODE_FREQUENCY_TOO_LOW_L1 = 25, + EMBER_ZCL_METERING_ALARM_CODE_FREQUENCY_TOO_HIGH_L1 = 26, + EMBER_ZCL_METERING_ALARM_CODE_FREQUENCY_TOO_LOW_L2 = 27, + EMBER_ZCL_METERING_ALARM_CODE_FREQUENCY_TOO_HIGH_L2 = 28, + EMBER_ZCL_METERING_ALARM_CODE_FREQUENCY_TOO_LOW_L3 = 29, + EMBER_ZCL_METERING_ALARM_CODE_FREQUENCY_TOO_HIGH_L3 = 30, + EMBER_ZCL_METERING_ALARM_CODE_GROUND_FAULT = 31, + EMBER_ZCL_METERING_ALARM_CODE_ELECTRIC_TAMPER_DETECT = 32, + EMBER_ZCL_METERING_ALARM_CODE_INCORRECT_POLARITY = 33, + EMBER_ZCL_METERING_ALARM_CODE_CURRENT_NO_VOLTAGE = 34, + EMBER_ZCL_METERING_ALARM_CODE_UNDER_VOLTAGE = 35, + EMBER_ZCL_METERING_ALARM_CODE_OVER_VOLTAGE = 36, + EMBER_ZCL_METERING_ALARM_CODE_NORMAL_VOLTAGE = 37, + EMBER_ZCL_METERING_ALARM_CODE_PF_BELOW_THRESHOLD = 38, + EMBER_ZCL_METERING_ALARM_CODE_PF_ABOVE_THRESHOLD = 39, + EMBER_ZCL_METERING_ALARM_CODE_TERMINAL_COVER_REMOVED = 40, + EMBER_ZCL_METERING_ALARM_CODE_TERMINAL_COVER_CLOSED = 41, + EMBER_ZCL_METERING_ALARM_CODE_BURST_DETECT = 48, + EMBER_ZCL_METERING_ALARM_CODE_PRESSURE_TOO_LOW = 49, + EMBER_ZCL_METERING_ALARM_CODE_PRESSURE_TOO_HIGH = 50, + EMBER_ZCL_METERING_ALARM_CODE_FLOW_SENSOR_COMMUNICATION_ERROR = 51, + EMBER_ZCL_METERING_ALARM_CODE_FLOW_SENSOR_MEASUREMENT_FAULT = 52, + EMBER_ZCL_METERING_ALARM_CODE_FLOW_SENSOR_REVERSE_FLOW = 53, + EMBER_ZCL_METERING_ALARM_CODE_FLOW_SENSOR_AIR_DETECT = 54, + EMBER_ZCL_METERING_ALARM_CODE_PIPE_EMPTY = 55, + EMBER_ZCL_METERING_ALARM_CODE_INLET_TEMPERATURE_SENSOR_FAULT = 80, + EMBER_ZCL_METERING_ALARM_CODE_OUTLET_TEMPERATURE_SENSOR_FAULT = 81, + EMBER_ZCL_METERING_ALARM_CODE_TILT_TAMPER = 96, + EMBER_ZCL_METERING_ALARM_CODE_BATTERY_COVER_REMOVED = 97, + EMBER_ZCL_METERING_ALARM_CODE_BATTERY_COVER_CLOSED = 98, + EMBER_ZCL_METERING_ALARM_CODE_EXCESS_FLOW = 99, + EMBER_ZCL_METERING_ALARM_CODE_TILT_TAMPER_ENDED = 100, + EMBER_ZCL_METERING_ALARM_CODE_MEASUREMENT_SYSTEM_ERROR = 112, + EMBER_ZCL_METERING_ALARM_CODE_WATCHDOG_ERROR = 113, + EMBER_ZCL_METERING_ALARM_CODE_SUPPLY_DISCONNECT_FAILURE = 114, + EMBER_ZCL_METERING_ALARM_CODE_SUPPLY_CONNECT_FAILURE = 115, + EMBER_ZCL_METERING_ALARM_CODE_MEASURMENT_SOFTWARE_CHANGED = 116, + EMBER_ZCL_METERING_ALARM_CODE_DST_ENABLED = 117, + EMBER_ZCL_METERING_ALARM_CODE_DST_DISABLED = 118, + EMBER_ZCL_METERING_ALARM_CODE_CLOCK_ADJ_BACKWARD = 119, + EMBER_ZCL_METERING_ALARM_CODE_CLOCK_ADJ_FORWARD = 120, + EMBER_ZCL_METERING_ALARM_CODE_CLOCK_INVALID = 121, + EMBER_ZCL_METERING_ALARM_CODE_COMMUNICATION_ERROR_HAN = 122, + EMBER_ZCL_METERING_ALARM_CODE_COMMUNICATION_OK_H_AN = 123, + EMBER_ZCL_METERING_ALARM_CODE_METER_FRAUD_ATTEMPT = 124, + EMBER_ZCL_METERING_ALARM_CODE_POWER_LOSS = 125, + EMBER_ZCL_METERING_ALARM_CODE_UNUSUAL_HAN_TRAFFIC = 126, + EMBER_ZCL_METERING_ALARM_CODE_UNEXPECTED_CLOCK_CHANGE = 127, + EMBER_ZCL_METERING_ALARM_CODE_COMMS_USING_UNAUTHENTICATED_COMPONENT = 128, + EMBER_ZCL_METERING_ALARM_CODE_ERROR_REG_CLEAR = 129, + EMBER_ZCL_METERING_ALARM_CODE_ALARM_REG_CLEAR = 130, + EMBER_ZCL_METERING_ALARM_CODE_UNEXPECTED_HW_RESET = 131, + EMBER_ZCL_METERING_ALARM_CODE_UNEXPECTED_PROGRAM_EXECUTION = 132, + EMBER_ZCL_METERING_ALARM_CODE_EVENT_LOG_CLEARED = 133, + EMBER_ZCL_METERING_ALARM_CODE_LIMIT_THRESHOLD_EXCEEDED = 134, + EMBER_ZCL_METERING_ALARM_CODE_LIMIT_THRESHOLD_OK = 135, + EMBER_ZCL_METERING_ALARM_CODE_LIMIT_THRESHOLD_CHANGED = 136, + EMBER_ZCL_METERING_ALARM_CODE_MAXIMUM_DEMAND_EXCEEDED = 137, + EMBER_ZCL_METERING_ALARM_CODE_PROFILE_CLEARED = 138, + EMBER_ZCL_METERING_ALARM_CODE_SAMPLING_BUFFERCLEARED = 139, + EMBER_ZCL_METERING_ALARM_CODE_BATTERY_WARNING = 140, + EMBER_ZCL_METERING_ALARM_CODE_WRONG_SIGNATURE = 141, + EMBER_ZCL_METERING_ALARM_CODE_NO_SIGNATURE = 142, + EMBER_ZCL_METERING_ALARM_CODE_UNAUTHORISED_ACTIONFROM_HAN = 143, + EMBER_ZCL_METERING_ALARM_CODE_FAST_POLLING_START = 144, + EMBER_ZCL_METERING_ALARM_CODE_FAST_POLLING_END = 145, + EMBER_ZCL_METERING_ALARM_CODE_METER_REPORTING_INTERVAL_CHANGED = 146, + EMBER_ZCL_METERING_ALARM_CODE_DISCONNECT_DUETO_LOAD_LIMIT = 147, + EMBER_ZCL_METERING_ALARM_CODE_METER_SUPPLY_STATUS_REGISTER_CHANGED = 148, + EMBER_ZCL_METERING_ALARM_CODE_METER_ALARM_STATUS_REGISTER_CHANGED = 149, + EMBER_ZCL_METERING_ALARM_CODE_EXTENDED_METER_ALARM_STATUS_REGISTER_CHANGED = 150, + EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_A = 176, + EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_B = 177, + EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_C = 178, + EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_D = 179, + EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_E = 180, + EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_F = 181, + EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_G = 182, + EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_H = 183, + EMBER_ZCL_METERING_ALARM_CODE_MANUFACTURER_SPECIFIC_I = 184, +} EmberAfMeteringAlarmCode; + +// Enum for MeteringBlockEnumerations +typedef enum { + EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_NO_BLOCKS_IN_USE = 0, + EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK1 = 1, + EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK2 = 2, + EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK3 = 3, + EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK4 = 4, + EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK5 = 5, + EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK6 = 6, + EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK7 = 7, + EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK8 = 8, + EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK9 = 9, + EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK10 = 10, + EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK11 = 11, + EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK12 = 12, + EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK13 = 13, + EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK14 = 14, + EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK15 = 15, + EMBER_ZCL_METERING_BLOCK_ENUMERATIONS_BLOCK16 = 16, +} EmberAfMeteringBlockEnumerations; + +// Enum for MeteringConsumptionStatus +typedef enum { + EMBER_ZCL_METERING_CONSUMPTION_STATUS_LOW_ENERGY_USAGE = 0, + EMBER_ZCL_METERING_CONSUMPTION_STATUS_MEDIUM_ENERGY_USAGE = 1, + EMBER_ZCL_METERING_CONSUMPTION_STATUS_HIGH_ENERGY_USAGE = 2, +} EmberAfMeteringConsumptionStatus; + +// Enum for MeteringDeviceType +typedef enum { + EMBER_ZCL_METERING_DEVICE_TYPE_ELECTRIC_METERING = 0, + EMBER_ZCL_METERING_DEVICE_TYPE_GAS_METERING = 1, + EMBER_ZCL_METERING_DEVICE_TYPE_WATER_METERING = 2, + EMBER_ZCL_METERING_DEVICE_TYPE_THERMAL_METERING = 3, + EMBER_ZCL_METERING_DEVICE_TYPE_PRESSURE_METERING = 4, + EMBER_ZCL_METERING_DEVICE_TYPE_HEAT_METERING = 5, + EMBER_ZCL_METERING_DEVICE_TYPE_COOLING_METERING = 6, + EMBER_ZCL_METERING_DEVICE_TYPE_ELECTRIC_VEHICLE_CHARGING_METERING = 7, + EMBER_ZCL_METERING_DEVICE_TYPE_PV_GENERATION_METERING = 8, + EMBER_ZCL_METERING_DEVICE_TYPE_WIND_TURBINE_GENERATION_METERING = 9, + EMBER_ZCL_METERING_DEVICE_TYPE_WATER_TURBINE_GENERATION_METERING = 10, + EMBER_ZCL_METERING_DEVICE_TYPE_MICRO_GENERATION_METERING = 11, + EMBER_ZCL_METERING_DEVICE_TYPE_SOLAR_HOT_WATER_GENERATION_METERING = 12, + EMBER_ZCL_METERING_DEVICE_TYPE_ELECTRIC_METERING_ELEMENT1 = 13, + EMBER_ZCL_METERING_DEVICE_TYPE_ELECTRIC_METERING_ELEMENT2 = 14, + EMBER_ZCL_METERING_DEVICE_TYPE_ELECTRIC_METERING_ELEMENT3 = 15, + EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_ELECTRIC_METERING = 127, + EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_GAS_METERING = 128, + EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_WATER_METERING = 129, + EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_THERMAL_METERING = 130, + EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_PRESSURE_METERING = 131, + EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_HEAT_METERING = 132, + EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_COOLING_METERING = 133, + EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_ELECTRIC_VEHICLE_CHARGING_METERING = 134, + EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_PV_GENERATION_METERING = 135, + EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_WIND_TURBINE_GENERATION_METERING = 136, + EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_WATER_TURBINE_GENERATION_METERING = 137, + EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_MICRO_GENERATION_METERING = 138, + EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_SOLAR_HOT_WATER_GENERATION_METERING = 139, + EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_ELECTRIC_METERING_ELEMENT1 = 140, + EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_ELECTRIC_METERING_ELEMENT2 = 141, + EMBER_ZCL_METERING_DEVICE_TYPE_MIRRORED_ELECTRIC_METERING_ELEMENT3 = 142, + EMBER_ZCL_METERING_DEVICE_TYPE_UNDEFINED_MIRROR_METER = 254, +} EmberAfMeteringDeviceType; + +// Enum for MeteringSupplyStatus +typedef enum { + EMBER_ZCL_METERING_SUPPLY_STATUS_SUPPLY_OFF = 0, + EMBER_ZCL_METERING_SUPPLY_STATUS_SUPPLY_OFF_ARMED = 1, + EMBER_ZCL_METERING_SUPPLY_STATUS_SUPPLY_ON = 2, +} EmberAfMeteringSupplyStatus; + +// Enum for MeteringTemperatureUnitOfMeasure +typedef enum { + EMBER_ZCL_METERING_TEMPERATURE_UNIT_OF_MEASURE_KELVIN = 0, + EMBER_ZCL_METERING_TEMPERATURE_UNIT_OF_MEASURE_CELSIUS = 1, + EMBER_ZCL_METERING_TEMPERATURE_UNIT_OF_MEASURE_FAHRENHEIT = 2, + EMBER_ZCL_METERING_TEMPERATURE_UNIT_OF_MEASURE_KELVIN_BCD = 128, + EMBER_ZCL_METERING_TEMPERATURE_UNIT_OF_MEASURE_CELSIUS_BCD = 129, + EMBER_ZCL_METERING_TEMPERATURE_UNIT_OF_MEASURE_FAHRENHEIT_BCD = 130, +} EmberAfMeteringTemperatureUnitOfMeasure; + +// Enum for MoveMode +typedef enum { + EMBER_ZCL_MOVE_MODE_UP = 0, + EMBER_ZCL_MOVE_MODE_DOWN = 1, +} EmberAfMoveMode; + +// Enum for NotificationScheme +typedef enum { + EMBER_ZCL_NOTIFICATION_SCHEME_NO_NOTIFICATION_SCHEME_DEFINED = 0, + EMBER_ZCL_NOTIFICATION_SCHEME_PREDEFINED_NOTIFICATION_SCHEME_A = 1, + EMBER_ZCL_NOTIFICATION_SCHEME_PREDEFINED_NOTIFICATION_SCHEME_B = 2, +} EmberAfNotificationScheme; + +// Enum for OccupancySensorType +typedef enum { + EMBER_ZCL_OCCUPANCY_SENSOR_TYPE_PIR = 0, + EMBER_ZCL_OCCUPANCY_SENSOR_TYPE_ULTRASONIC = 1, + EMBER_ZCL_OCCUPANCY_SENSOR_TYPE_PIR_AND_ULTRASONIC = 2, + EMBER_ZCL_OCCUPANCY_SENSOR_TYPE_PHYSICAL_CONTACT = 3, +} EmberAfOccupancySensorType; + +// Enum for OnOffDelayedAllOffEffectVariant +typedef enum { + EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_FADE_TO_OFF_IN_0P8_SECONDS = 0, + EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_NO_FADE = 1, + EMBER_ZCL_ON_OFF_DELAYED_ALL_OFF_EFFECT_VARIANT_50_PERCENT_DIM_DOWN_IN_0P8_SECONDS_THEN_FADE_TO_OFF_IN_12_SECONDS = 2, +} EmberAfOnOffDelayedAllOffEffectVariant; + +// Enum for OnOffDyingLightEffectVariant +typedef enum { + EMBER_ZCL_ON_OFF_DYING_LIGHT_EFFECT_VARIANT_20_PERCENTER_DIM_UP_IN_0P5_SECONDS_THEN_FADE_TO_OFF_IN_1_SECOND = 0, +} EmberAfOnOffDyingLightEffectVariant; + +// Enum for OnOffEffectIdentifier +typedef enum { + EMBER_ZCL_ON_OFF_EFFECT_IDENTIFIER_DELAYED_ALL_OFF = 0, + EMBER_ZCL_ON_OFF_EFFECT_IDENTIFIER_DYING_LIGHT = 1, +} EmberAfOnOffEffectIdentifier; + +// Enum for OperatingMode +typedef enum { + EMBER_ZCL_OPERATING_MODE_NORMAL = 0, + EMBER_ZCL_OPERATING_MODE_CONFIGURE = 1, +} EmberAfOperatingMode; + +// Enum for OriginatingDevice +typedef enum { + EMBER_ZCL_ORIGINATING_DEVICE_ENERGY_SERVICE_INTERFACE = 0, + EMBER_ZCL_ORIGINATING_DEVICE_METER = 1, + EMBER_ZCL_ORIGINATING_DEVICE_IN_HOME_DISPLAY_DEVICE = 2, +} EmberAfOriginatingDevice; + +// Enum for PasswordType +typedef enum { + EMBER_ZCL_PASSWORD_TYPE_PASSWORD1_SERVICE_MENU_ACCESS = 1, + EMBER_ZCL_PASSWORD_TYPE_PASSWORD2_CONSUMER_MENU_ACCESS = 2, + EMBER_ZCL_PASSWORD_TYPE_PASSWORD3 = 3, + EMBER_ZCL_PASSWORD_TYPE_PASSWORD4 = 4, +} EmberAfPasswordType; + +// Enum for PaymentDiscountDuration +typedef enum { + EMBER_ZCL_PAYMENT_DISCOUNT_DURATION_CURRENT_BILLING_PERIOD = 0, + EMBER_ZCL_PAYMENT_DISCOUNT_DURATION_CURRENT_CONSOLIDATED_BILL = 1, + EMBER_ZCL_PAYMENT_DISCOUNT_DURATION_ONE_MONTH = 2, + EMBER_ZCL_PAYMENT_DISCOUNT_DURATION_ONE_QUARTER = 3, + EMBER_ZCL_PAYMENT_DISCOUNT_DURATION_ONE_YEAR = 4, +} EmberAfPaymentDiscountDuration; + +// Enum for PhysicalEnvironment +typedef enum { + EMBER_ZCL_PHYSICAL_ENVIRONMENT_UNSPECIFIED = 0, + EMBER_ZCL_PHYSICAL_ENVIRONMENT_FIRST_PROFILE_SPECIFIED_VALUE = 1, + EMBER_ZCL_PHYSICAL_ENVIRONMENT_LAST_PROFILE_SPECIFIED_VALUE = 127, + EMBER_ZCL_PHYSICAL_ENVIRONMENT_UNKNOWN = 255, +} EmberAfPhysicalEnvironment; + +// Enum for PowerProfileState +typedef enum { + EMBER_ZCL_POWER_PROFILE_STATE_POWER_PROFILE_WAITING_TO_START = 1, + EMBER_ZCL_POWER_PROFILE_STATE_POWER_PROFILE_STARTED = 2, + EMBER_ZCL_POWER_PROFILE_STATE_ENERGY_PHASE_RUNNING = 3, + EMBER_ZCL_POWER_PROFILE_STATE_ENERGY_PHASE_ENDED = 4, + EMBER_ZCL_POWER_PROFILE_STATE_ENERGY_PHASE_WAITING_TO_START = 5, + EMBER_ZCL_POWER_PROFILE_STATE_ENERGY_PHASE_STARTED = 6, + EMBER_ZCL_POWER_PROFILE_STATE_POWER_PROFILE_ENDED = 7, + EMBER_ZCL_POWER_PROFILE_STATE_PROFILE_READY_FOR_SCHEDULING = 8, + EMBER_ZCL_POWER_PROFILE_STATE_POWER_PROFILE_SCHEDULED = 9, +} EmberAfPowerProfileState; + +// Enum for PowerSource +typedef enum { + EMBER_ZCL_POWER_SOURCE_UNKNOWN = 0, + EMBER_ZCL_POWER_SOURCE_SINGLE_PHASE_MAINS = 1, + EMBER_ZCL_POWER_SOURCE_THREE_PHASE_MAINS = 2, + EMBER_ZCL_POWER_SOURCE_BATTERY = 3, + EMBER_ZCL_POWER_SOURCE_DC_SOURCE = 4, + EMBER_ZCL_POWER_SOURCE_EMERGENCY_MAINS_CONSTANT_POWER = 5, + EMBER_ZCL_POWER_SOURCE_EMERGENCY_MAINS_TRANSFER_SWITCH = 6, + EMBER_ZCL_POWER_SOURCE_BATTERY_BACKUP = 128, +} EmberAfPowerSource; + +// Enum for PrePayGenericAlarmGroup +typedef enum { + EMBER_ZCL_PRE_PAY_GENERIC_ALARM_GROUP_LOW_CREDIT = 0, + EMBER_ZCL_PRE_PAY_GENERIC_ALARM_GROUP_NO_CREDIT = 1, + EMBER_ZCL_PRE_PAY_GENERIC_ALARM_GROUP_CREDIT_EXHAUSTED = 2, + EMBER_ZCL_PRE_PAY_GENERIC_ALARM_GROUP_EMERGENCY_CREDIT_ENABLED = 3, + EMBER_ZCL_PRE_PAY_GENERIC_ALARM_GROUP_EMERGENCY_CREDIT_EXHAUSTED = 4, + EMBER_ZCL_PRE_PAY_GENERIC_ALARM_GROUP_IHD_LOW_CREDIT_WARNING = 5, + EMBER_ZCL_PRE_PAY_GENERIC_ALARM_GROUP_EVENT_LOG_CLEARED = 6, +} EmberAfPrePayGenericAlarmGroup; + +// Enum for PrepayEventAlarmGroup +typedef enum { + EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_PHYSICAL_ATTACK_ON_THE_PREPAY_METER = 32, + EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_ELECTRONIC_ATTACK_ON_THE_PREPAY_METER = 33, + EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_DISCOUNT_APPLIED = 34, + EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_CREDIT_ADJUSTMENT = 35, + EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_CREDIT_ADJUSTMENT_FAIL = 36, + EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_DEBT_ADJUSTMENT = 37, + EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_DEBT_ADJUSTMENT_FAIL = 38, + EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_MODE_CHANGE = 39, + EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_TOPUP_CODE_ERROR = 40, + EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_TOPUP_ALREADY_USED = 41, + EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_TOPUP_CODE_INVALID = 42, + EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_FRIENDLY_CREDIT_IN_USE = 43, + EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_FRIENDLY_CREDIT_PERIOD_END_WARNING = 44, + EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_FRIENDLY_CREDIT_PERIOD_END = 45, + EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_ERROR_REG_CLEAR = 48, + EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_ALARM_REG_CLEAR = 49, + EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_PREPAY_CLUSTER_NOT_FOUND = 50, + EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_MODE_CREDIT2_PREPAY = 65, + EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_MODE_PREPAY2_CREDIT = 66, + EMBER_ZCL_PREPAY_EVENT_ALARM_GROUP_MODE_DEFAULT = 67, +} EmberAfPrepayEventAlarmGroup; + +// Enum for PrepaySnapshotPayloadType +typedef enum { + EMBER_ZCL_PREPAY_SNAPSHOT_PAYLOAD_TYPE_DEBT_CREDIT_STATUS = 0, + EMBER_ZCL_PREPAY_SNAPSHOT_PAYLOAD_TYPE_NOT_USED = 255, +} EmberAfPrepaySnapshotPayloadType; + +// Enum for PrepaySwitchAlarmGroup +typedef enum { + EMBER_ZCL_PREPAY_SWITCH_ALARM_GROUP_SUPPLY_ON = 16, + EMBER_ZCL_PREPAY_SWITCH_ALARM_GROUP_SUPPLY_ARM = 17, + EMBER_ZCL_PREPAY_SWITCH_ALARM_GROUP_SUPPLY_OFF = 18, + EMBER_ZCL_PREPAY_SWITCH_ALARM_GROUP_DISCONNECTION_FAILURE = 19, + EMBER_ZCL_PREPAY_SWITCH_ALARM_GROUP_DISCONNECTED_DUE_TO_TAMPER_DETECTED = 20, + EMBER_ZCL_PREPAY_SWITCH_ALARM_GROUP_DISCONNECTED_DUE_TO_CUT_OFF_VALUE = 21, + EMBER_ZCL_PREPAY_SWITCH_ALARM_GROUP_REMOTE_DISCONNECTED = 22, +} EmberAfPrepaySwitchAlarmGroup; + +// Enum for PriceControlAcknowledgement +typedef enum { + EMBER_ZCL_PRICE_CONTROL_ACKNOWLEDGEMENT_NOT_REQUIRED = 0, + EMBER_ZCL_PRICE_CONTROL_ACKNOWLEDGEMENT_REQUIRED = 1, +} EmberAfPriceControlAcknowledgement; + +// Enum for PriceTier +typedef enum { + EMBER_ZCL_PRICE_TIER_NO_TIER_RELATED = 0, + EMBER_ZCL_PRICE_TIER_TIER1_PRICE_LABEL = 1, + EMBER_ZCL_PRICE_TIER_TIER2_PRICE_LABEL = 2, + EMBER_ZCL_PRICE_TIER_TIER3_PRICE_LABEL = 3, + EMBER_ZCL_PRICE_TIER_TIER4_PRICE_LABEL = 4, + EMBER_ZCL_PRICE_TIER_TIER5_PRICE_LABEL = 5, + EMBER_ZCL_PRICE_TIER_TIER6_PRICE_LABEL = 6, + EMBER_ZCL_PRICE_TIER_TIER7_PRICE_LABEL = 7, + EMBER_ZCL_PRICE_TIER_TIER8_PRICE_LABEL = 8, + EMBER_ZCL_PRICE_TIER_TIER9_PRICE_LABEL = 9, + EMBER_ZCL_PRICE_TIER_TIER10_PRICE_LABEL = 10, + EMBER_ZCL_PRICE_TIER_TIER11_PRICE_LABEL = 11, + EMBER_ZCL_PRICE_TIER_TIER12_PRICE_LABEL = 12, + EMBER_ZCL_PRICE_TIER_TIER13_PRICE_LABEL = 13, + EMBER_ZCL_PRICE_TIER_TIER14_PRICE_LABEL = 14, + EMBER_ZCL_PRICE_TIER_REFER_TO_EXTENDED_PRICE_TIER_FIELD = 15, + EMBER_ZCL_PRICE_TIER_TIER15_PRICE_LABEL = 15, +} EmberAfPriceTier; + +// Enum for ProductCode +typedef enum { + EMBER_ZCL_PRODUCT_CODE_MANUFACTURER_DEFINED = 0, + EMBER_ZCL_PRODUCT_CODE_ITERNATIONAL_ARTICLE_NUMBER = 1, + EMBER_ZCL_PRODUCT_CODE_GLOBAL_TRADE_ITEM_NUMBER = 2, + EMBER_ZCL_PRODUCT_CODE_UNIVERSAL_PRODUCT_CODE = 3, + EMBER_ZCL_PRODUCT_CODE_STOCK_KEEPING_UNIT = 4, +} EmberAfProductCode; + +// Enum for ProductTypeId +typedef enum { + EMBER_ZCL_PRODUCT_TYPE_ID_WHITE_GOODS = 0, + EMBER_ZCL_PRODUCT_TYPE_ID_DISHWASHER = 22017, + EMBER_ZCL_PRODUCT_TYPE_ID_TUMBLE_DRYER = 22018, + EMBER_ZCL_PRODUCT_TYPE_ID_WASHER_DRYER = 22019, + EMBER_ZCL_PRODUCT_TYPE_ID_WASHING_MACHINE = 22020, + EMBER_ZCL_PRODUCT_TYPE_ID_HOBS = 24067, + EMBER_ZCL_PRODUCT_TYPE_ID_INDUCTION_HOBS = 24073, + EMBER_ZCL_PRODUCT_TYPE_ID_OVEN = 24065, + EMBER_ZCL_PRODUCT_TYPE_ID_ELECTRICAL_OVEN = 24070, + EMBER_ZCL_PRODUCT_TYPE_ID_REFRIGERATOR_FREEZER = 26113, +} EmberAfProductTypeId; + +// Enum for ProposedSupplyStatus +typedef enum { + EMBER_ZCL_PROPOSED_SUPPLY_STATUS_RESERVED = 0, + EMBER_ZCL_PROPOSED_SUPPLY_STATUS_SUPPLY_OFF_ARMED = 1, + EMBER_ZCL_PROPOSED_SUPPLY_STATUS_SUPPLY_ON = 2, +} EmberAfProposedSupplyStatus; + +// Enum for PublishCppEventCppAuth +typedef enum { + EMBER_ZCL_PUBLISH_CPP_EVENT_CPP_AUTH_PENDING = 0, + EMBER_ZCL_PUBLISH_CPP_EVENT_CPP_AUTH_ACCEPTED = 1, + EMBER_ZCL_PUBLISH_CPP_EVENT_CPP_AUTH_REJECTED = 2, + EMBER_ZCL_PUBLISH_CPP_EVENT_CPP_AUTH_FORCED = 3, +} EmberAfPublishCppEventCppAuth; + +// Enum for PumpControlMode +typedef enum { + EMBER_ZCL_PUMP_CONTROL_MODE_CONSTANT_SPEED = 0, + EMBER_ZCL_PUMP_CONTROL_MODE_CONSTANT_PRESSURE = 1, + EMBER_ZCL_PUMP_CONTROL_MODE_PROPORTIONAL_PRESSURE = 2, + EMBER_ZCL_PUMP_CONTROL_MODE_CONSTANT_FLOW = 3, + EMBER_ZCL_PUMP_CONTROL_MODE_CONSTANT_TEMPERATURE = 5, + EMBER_ZCL_PUMP_CONTROL_MODE_AUTOMATIC = 7, +} EmberAfPumpControlMode; + +// Enum for PumpOperationMode +typedef enum { + EMBER_ZCL_PUMP_OPERATION_MODE_NORMAL = 0, + EMBER_ZCL_PUMP_OPERATION_MODE_MINIMUM = 1, + EMBER_ZCL_PUMP_OPERATION_MODE_MAXIMUM = 2, + EMBER_ZCL_PUMP_OPERATION_MODE_LOCAL = 3, +} EmberAfPumpOperationMode; + +// Enum for PushHistoricalMeteringData +typedef enum { + EMBER_ZCL_PUSH_HISTORICAL_METERING_DATA_DAY = 64, + EMBER_ZCL_PUSH_HISTORICAL_METERING_DATA_WEEK = 128, + EMBER_ZCL_PUSH_HISTORICAL_METERING_DATA_MONTH = 384, + EMBER_ZCL_PUSH_HISTORICAL_METERING_DATA_YEAR = 448, +} EmberAfPushHistoricalMeteringData; + +// Enum for PushHistoricalPaymentData +typedef enum { + EMBER_ZCL_PUSH_HISTORICAL_PAYMENT_DATA_DAY = 512, + EMBER_ZCL_PUSH_HISTORICAL_PAYMENT_DATA_WEEK = 1024, + EMBER_ZCL_PUSH_HISTORICAL_PAYMENT_DATA_MONTH = 3072, + EMBER_ZCL_PUSH_HISTORICAL_PAYMENT_DATA_YEAR = 3584, +} EmberAfPushHistoricalPaymentData; + +// Enum for RegisterTier +typedef enum { + EMBER_ZCL_REGISTER_TIER_NO_TIER_RELATED = 0, + EMBER_ZCL_REGISTER_TIER_CURRENT_TIER1_SUMMATION_DELIVERED_ATTRIBUTE = 1, + EMBER_ZCL_REGISTER_TIER_CURRENT_TIER2_SUMMATION_DELIVERED_ATTRIBUTE = 2, + EMBER_ZCL_REGISTER_TIER_CURRENT_TIER3_SUMMATION_DELIVERED_ATTRIBUTE = 3, + EMBER_ZCL_REGISTER_TIER_CURRENT_TIER4_SUMMATION_DELIVERED_ATTRIBUTE = 4, + EMBER_ZCL_REGISTER_TIER_CURRENT_TIER5_SUMMATION_DELIVERED_ATTRIBUTE = 5, + EMBER_ZCL_REGISTER_TIER_CURRENT_TIER6_SUMMATION_DELIVERED_ATTRIBUTE = 6, + EMBER_ZCL_REGISTER_TIER_CURRENT_TIER7_SUMMATION_DELIVERED_ATTRIBUTE = 7, + EMBER_ZCL_REGISTER_TIER_CURRENT_TIER8_SUMMATION_DELIVERED_ATTRIBUTE = 8, + EMBER_ZCL_REGISTER_TIER_CURRENT_TIER9_SUMMATION_DELIVERED_ATTRIBUTE = 9, + EMBER_ZCL_REGISTER_TIER_CURRENT_TIER10_SUMMATION_DELIVERED_ATTRIBUTE = 10, + EMBER_ZCL_REGISTER_TIER_CURRENT_TIER11_SUMMATION_DELIVERED_ATTRIBUTE = 11, + EMBER_ZCL_REGISTER_TIER_CURRENT_TIER12_SUMMATION_DELIVERED_ATTRIBUTE = 12, + EMBER_ZCL_REGISTER_TIER_CURRENT_TIER13_SUMMATION_DELIVERED_ATTRIBUTE = 13, + EMBER_ZCL_REGISTER_TIER_CURRENT_TIER14_SUMMATION_DELIVERED_ATTRIBUTE = 14, + EMBER_ZCL_REGISTER_TIER_REFER_TO_EXTENDED_REGISTER_TIER_FIELD = 15, + EMBER_ZCL_REGISTER_TIER_CURRENT_TIER15_SUMMATION_DELIVERED_ATTRIBUTE = 15, +} EmberAfRegisterTier; + +// Enum for RelativeHumidityDisplay +typedef enum { + EMBER_ZCL_RELATIVE_HUMIDITY_DISPLAY_NOT_DISPLAYED = 0, + EMBER_ZCL_RELATIVE_HUMIDITY_DISPLAY_DISPLAYED = 1, +} EmberAfRelativeHumidityDisplay; + +// Enum for RelativeHumidityMode +typedef enum { + EMBER_ZCL_RELATIVE_HUMIDITY_MODE_MEASURE_LOCALLY = 0, + EMBER_ZCL_RELATIVE_HUMIDITY_MODE_UPDATED_OVER_THE_NETWORK = 1, +} EmberAfRelativeHumidityMode; + +// Enum for RemoteEnableFlags +typedef enum { + EMBER_ZCL_REMOTE_ENABLE_FLAGS_DISABLED = 0, + EMBER_ZCL_REMOTE_ENABLE_FLAGS_TEMPORARILY_LOCKED_DISABLED = 7, + EMBER_ZCL_REMOTE_ENABLE_FLAGS_ENABLED_REMOTE_CONTROL = 15, + EMBER_ZCL_REMOTE_ENABLE_FLAGS_ENABLED_REMOTE_AND_ENERGY_CONTROL = 1, +} EmberAfRemoteEnableFlags; + +// Enum for RepaymentDebtType +typedef enum { + EMBER_ZCL_REPAYMENT_DEBT_TYPE_DEBT1 = 0, + EMBER_ZCL_REPAYMENT_DEBT_TYPE_DEBT2 = 1, + EMBER_ZCL_REPAYMENT_DEBT_TYPE_DEBT3 = 2, + EMBER_ZCL_REPAYMENT_DEBT_TYPE_ALL_DEBTS = 255, +} EmberAfRepaymentDebtType; + +// Enum for ReportingDirection +typedef enum { + EMBER_ZCL_REPORTING_DIRECTION_REPORTED = 0, + EMBER_ZCL_REPORTING_DIRECTION_RECEIVED = 1, +} EmberAfReportingDirection; + +// Enum for ResultType +typedef enum { + EMBER_ZCL_RESULT_TYPE_ACCEPTED = 0, + EMBER_ZCL_RESULT_TYPE_REJECTED_INVALID_TOP_UP = 1, + EMBER_ZCL_RESULT_TYPE_REJECTED_DUPLICATE_TOP_UP = 2, + EMBER_ZCL_RESULT_TYPE_REJECTED_ERROR = 3, + EMBER_ZCL_RESULT_TYPE_REJECTED_MAX_CREDIT_REACHED = 4, + EMBER_ZCL_RESULT_TYPE_REJECTED_KEYPAD_LOCK = 5, + EMBER_ZCL_RESULT_TYPE_REJECTED_TOP_UP_VALUE_TOO_LARGE = 6, + EMBER_ZCL_RESULT_TYPE_ACCEPTED_SUPPLY_ENABLED = 16, + EMBER_ZCL_RESULT_TYPE_ACCEPTED_SUPPLY_DISABLED = 17, + EMBER_ZCL_RESULT_TYPE_ACCEPTED_SUPPLY_ARMED = 18, +} EmberAfResultType; + +// Enum for SampleType +typedef enum { + EMBER_ZCL_SAMPLE_TYPE_CONSUMPTION_DELIVERED = 0, +} EmberAfSampleType; + +// Enum for SaturationMoveMode +typedef enum { + EMBER_ZCL_SATURATION_MOVE_MODE_STOP = 0, + EMBER_ZCL_SATURATION_MOVE_MODE_UP = 1, + EMBER_ZCL_SATURATION_MOVE_MODE_DOWN = 3, +} EmberAfSaturationMoveMode; + +// Enum for SaturationStepMode +typedef enum { + EMBER_ZCL_SATURATION_STEP_MODE_UP = 1, + EMBER_ZCL_SATURATION_STEP_MODE_DOWN = 3, +} EmberAfSaturationStepMode; + +// Enum for SensingLightSensorType +typedef enum { + EMBER_ZCL_SENSING_LIGHT_SENSOR_TYPE_PHOTODIODE = 0, + EMBER_ZCL_SENSING_LIGHT_SENSOR_TYPE_CMOS = 1, +} EmberAfSensingLightSensorType; + +// Enum for SetpointAdjustMode +typedef enum { + EMBER_ZCL_SETPOINT_ADJUST_MODE_HEAT_SETPOINT = 0, + EMBER_ZCL_SETPOINT_ADJUST_MODE_COOL_SETPOINT = 1, + EMBER_ZCL_SETPOINT_ADJUST_MODE_HEAT_AND_COOL_SETPOINTS = 2, +} EmberAfSetpointAdjustMode; + +// Enum for SignatureType +typedef enum { + EMBER_ZCL_SIGNATURE_TYPE_RESERVED = 0, + EMBER_ZCL_SIGNATURE_TYPE_ECDSA = 1, +} EmberAfSignatureType; + +// Enum for SnapshotConfirmation +typedef enum { + EMBER_ZCL_SNAPSHOT_CONFIRMATION_ACCEPTED = 0, + EMBER_ZCL_SNAPSHOT_CONFIRMATION_SNAPSHOT_CAUSE_NOT_SUPPORTED = 1, +} EmberAfSnapshotConfirmation; + +// Enum for SnapshotPayloadType +typedef enum { + EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFORMATION_SET_DELIVERED_REGISTERS = 0, + EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFORMATION_SET_RECEIVED_REGISTERS = 1, + EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFORMATION_SET_DELIVERED = 2, + EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFORMATION_SET_RECEIVED = 3, + EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFORMATION_SET_DELIVERED_REGISTERS_NO_BILLING = 4, + EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_TOU_INFORMATION_SET_RECEIVED_REGISTER_NO_BILLINGS = 5, + EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFORMATION_SET_DELIVERED_NO_BILLING = 6, + EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_BLOCK_TIER_INFORMATION_SET_RECEIVED_NO_BILLING = 7, + EMBER_ZCL_SNAPSHOT_PAYLOAD_TYPE_DATA_UNAVAILABLE = 128, +} EmberAfSnapshotPayloadType; + +// Enum for SnapshotScheduleConfirmation +typedef enum { + EMBER_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_ACCEPTED = 0, + EMBER_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_SNAPSHOT_TYPE_NOT_SUPPORTED = 1, + EMBER_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_SNAPSHOT_CAUSE_NOT_SUPPORTED = 2, + EMBER_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_SNAPSHOT_SCHEDULE_NOT_CURRENTLY_AVAILABLE = 3, + EMBER_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_SNAPSHOT_SCHEDULES_NOT_SUPPORTED_BY_DEVICE = 4, + EMBER_ZCL_SNAPSHOT_SCHEDULE_CONFIRMATION_INSUFFICIENT_SPACE_FOR_SNAPSHOT_SCHEDULE = 5, +} EmberAfSnapshotScheduleConfirmation; + +// Enum for SquawkLevel +typedef enum { + EMBER_ZCL_SQUAWK_LEVEL_LOW_LEVEL = 0, + EMBER_ZCL_SQUAWK_LEVEL_MEDIUM_LEVEL = 1, + EMBER_ZCL_SQUAWK_LEVEL_HIGH_LEVEL = 2, + EMBER_ZCL_SQUAWK_LEVEL_VERY_HIGH_LEVEL = 2, +} EmberAfSquawkLevel; + +// Enum for SquawkMode +typedef enum { + EMBER_ZCL_SQUAWK_MODE_SYSTEM_IS_ARMED = 0, + EMBER_ZCL_SQUAWK_MODE_SYSTEM_IS_DISARMED = 1, +} EmberAfSquawkMode; + +// Enum for SquawkStobe +typedef enum { + EMBER_ZCL_SQUAWK_STOBE_NO_STROBE = 0, + EMBER_ZCL_SQUAWK_STOBE_USE_STROBE = 1, +} EmberAfSquawkStobe; + +// Enum for StartOfWeek +typedef enum { + EMBER_ZCL_START_OF_WEEK_SUNDAY = 0, + EMBER_ZCL_START_OF_WEEK_MONDAY = 1, + EMBER_ZCL_START_OF_WEEK_TUESDAY = 2, + EMBER_ZCL_START_OF_WEEK_WEDNESDAY = 3, + EMBER_ZCL_START_OF_WEEK_THURSDAY = 4, + EMBER_ZCL_START_OF_WEEK_FRIDAY = 5, + EMBER_ZCL_START_OF_WEEK_SATURDAY = 6, +} EmberAfStartOfWeek; + +// Enum for StartUpOnOffValue +typedef enum { + EMBER_ZCL_START_UP_ON_OFF_VALUE_SET_TO_OFF = 0, + EMBER_ZCL_START_UP_ON_OFF_VALUE_SET_TO_ON = 1, + EMBER_ZCL_START_UP_ON_OFF_VALUE_SET_TO_TOGGLE = 2, + EMBER_ZCL_START_UP_ON_OFF_VALUE_SET_TO_PREVIOUS = 255, +} EmberAfStartUpOnOffValue; + +// Enum for Status +typedef enum { + EMBER_ZCL_STATUS_SUCCESS = 0, + EMBER_ZCL_STATUS_FAILURE = 1, + EMBER_ZCL_STATUS_NOT_AUTHORIZED = 126, + EMBER_ZCL_STATUS_MALFORMED_COMMAND = 128, + EMBER_ZCL_STATUS_UNSUP_COMMAND = 129, + EMBER_ZCL_STATUS_UNSUP_GENERAL_COMMAND = 130, + EMBER_ZCL_STATUS_UNSUP_MANUF_CLUSTER_COMMAND = 131, + EMBER_ZCL_STATUS_UNSUP_MANUF_GENERAL_COMMAND = 132, + EMBER_ZCL_STATUS_INVALID_FIELD = 133, + EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE = 134, + EMBER_ZCL_STATUS_INVALID_VALUE = 135, + EMBER_ZCL_STATUS_READ_ONLY = 136, + EMBER_ZCL_STATUS_INSUFFICIENT_SPACE = 137, + EMBER_ZCL_STATUS_DUPLICATE_EXISTS = 138, + EMBER_ZCL_STATUS_NOT_FOUND = 139, + EMBER_ZCL_STATUS_UNREPORTABLE_ATTRIBUTE = 140, + EMBER_ZCL_STATUS_INVALID_DATA_TYPE = 141, + EMBER_ZCL_STATUS_INVALID_SELECTOR = 142, + EMBER_ZCL_STATUS_WRITE_ONLY = 143, + EMBER_ZCL_STATUS_INCONSISTENT_STARTUP_STATE = 144, + EMBER_ZCL_STATUS_DEFINED_OUT_OF_BAND = 145, + EMBER_ZCL_STATUS_ACTION_DENIED = 147, + EMBER_ZCL_STATUS_TIMEOUT = 148, + EMBER_ZCL_STATUS_ABORT = 149, + EMBER_ZCL_STATUS_INVALID_IMAGE = 150, + EMBER_ZCL_STATUS_WAIT_FOR_DATA = 151, + EMBER_ZCL_STATUS_NO_IMAGE_AVAILABLE = 152, + EMBER_ZCL_STATUS_REQUIRE_MORE_IMAGE = 153, + EMBER_ZCL_STATUS_NOTIFICATION_PENDING = 154, + EMBER_ZCL_STATUS_HARDWARE_FAILURE = 192, + EMBER_ZCL_STATUS_SOFTWARE_FAILURE = 193, + EMBER_ZCL_STATUS_UNSUPPORTED_CLUSTER = 195, + EMBER_ZCL_STATUS_LIMIT_REACHED = 196, +} EmberAfStatus; + +// Enum for StepMode +typedef enum { + EMBER_ZCL_STEP_MODE_UP = 0, + EMBER_ZCL_STEP_MODE_DOWN = 1, +} EmberAfStepMode; + +// Enum for SupplyStatus +typedef enum { + EMBER_ZCL_SUPPLY_STATUS_SUPPLY_OFF = 0, + EMBER_ZCL_SUPPLY_STATUS_SUPPLY_OFF_ARMED = 1, + EMBER_ZCL_SUPPLY_STATUS_SUPPLY_ON = 2, + EMBER_ZCL_SUPPLY_STATUS_SUPPLY_UNCHANGED = 3, +} EmberAfSupplyStatus; + +// Enum for SwitchActions +typedef enum { + EMBER_ZCL_SWITCH_ACTIONS_ON = 0, + EMBER_ZCL_SWITCH_ACTIONS_OFF = 1, + EMBER_ZCL_SWITCH_ACTIONS_TOGGLE = 2, +} EmberAfSwitchActions; + +// Enum for SwitchType +typedef enum { + EMBER_ZCL_SWITCH_TYPE_TOGGLE = 0, + EMBER_ZCL_SWITCH_TYPE_MOMENTARY = 1, + EMBER_ZCL_SWITCH_TYPE_MULTI_FUNCTION = 2, +} EmberAfSwitchType; + +// Enum for TariffChargingScheme +typedef enum { + EMBER_ZCL_TARIFF_CHARGING_SCHEME_TOU_TARIFF = 0, + EMBER_ZCL_TARIFF_CHARGING_SCHEME_BLOCK_TARIFF = 16, + EMBER_ZCL_TARIFF_CHARGING_SCHEME_BLOCK_TOU_TARIFF_WITH_COMMON_THRESHOLDS = 32, + EMBER_ZCL_TARIFF_CHARGING_SCHEME_BLOCK_TOU_TARIFF_WITH_INDIVIDUAL_THRESHOLDS_PER_TIER = 48, +} EmberAfTariffChargingScheme; + +// Enum for TariffResolutionPeriod +typedef enum { + EMBER_ZCL_TARIFF_RESOLUTION_PERIOD_NOT_DEFINED = 0, + EMBER_ZCL_TARIFF_RESOLUTION_PERIOD_BLOCK_PERIOD = 1, + EMBER_ZCL_TARIFF_RESOLUTION_PERIOD_ONE_DAY = 2, +} EmberAfTariffResolutionPeriod; + +// Enum for TariffType +typedef enum { + EMBER_ZCL_TARIFF_TYPE_DELIVERED_TARIFF = 0, + EMBER_ZCL_TARIFF_TYPE_RECEIVED_TARIFF = 1, + EMBER_ZCL_TARIFF_TYPE_DELIVERED_AND_RECEIVED_TARIFF = 2, +} EmberAfTariffType; + +// Enum for TemperatureDisplayMode +typedef enum { + EMBER_ZCL_TEMPERATURE_DISPLAY_MODE_CELSIUS = 0, + EMBER_ZCL_TEMPERATURE_DISPLAY_MODE_FAHRENHEIT = 1, +} EmberAfTemperatureDisplayMode; + +// Enum for TemperatureSetpointHold +typedef enum { + EMBER_ZCL_TEMPERATURE_SETPOINT_HOLD_SETPOINT_HOLD_OFF = 0, + EMBER_ZCL_TEMPERATURE_SETPOINT_HOLD_SETPOINT_HOLD_ON = 1, +} EmberAfTemperatureSetpointHold; + +// Enum for ThermostatControlSequence +typedef enum { + EMBER_ZCL_THERMOSTAT_CONTROL_SEQUENCE_COOLING_ONLY = 0, + EMBER_ZCL_THERMOSTAT_CONTROL_SEQUENCE_COOLING_WITH_REHEAT = 1, + EMBER_ZCL_THERMOSTAT_CONTROL_SEQUENCE_HEATING_ONLY = 2, + EMBER_ZCL_THERMOSTAT_CONTROL_SEQUENCE_HEATING_WITH_REHEAT = 3, + EMBER_ZCL_THERMOSTAT_CONTROL_SEQUENCE_COOLING_AND_HEATING = 4, + EMBER_ZCL_THERMOSTAT_CONTROL_SEQUENCE_COOLING_AND_HEATING_WITH_REHEAT = 5, +} EmberAfThermostatControlSequence; + +// Enum for ThermostatRunningMode +typedef enum { + EMBER_ZCL_THERMOSTAT_RUNNING_MODE_OFF = 0, + EMBER_ZCL_THERMOSTAT_RUNNING_MODE_COOL = 3, + EMBER_ZCL_THERMOSTAT_RUNNING_MODE_HEAT = 4, +} EmberAfThermostatRunningMode; + +// Enum for ThermostatSystemMode +typedef enum { + EMBER_ZCL_THERMOSTAT_SYSTEM_MODE_OFF = 0, + EMBER_ZCL_THERMOSTAT_SYSTEM_MODE_AUTO = 1, + EMBER_ZCL_THERMOSTAT_SYSTEM_MODE_COOL = 3, + EMBER_ZCL_THERMOSTAT_SYSTEM_MODE_HEAT = 4, + EMBER_ZCL_THERMOSTAT_SYSTEM_MODE_EMERGENCY_HEATING = 5, + EMBER_ZCL_THERMOSTAT_SYSTEM_MODE_PRECOOLING = 6, + EMBER_ZCL_THERMOSTAT_SYSTEM_MODE_FAN_ONLY = 7, +} EmberAfThermostatSystemMode; + +// Enum for TierBlockMode +typedef enum { + EMBER_ZCL_TIER_BLOCK_MODE_ACTIVE_BLOCK = 0, + EMBER_ZCL_TIER_BLOCK_MODE_ACTIVE_BLOCK_PRICE_TIER = 1, + EMBER_ZCL_TIER_BLOCK_MODE_ACTIVE_BLOCK_PRICE_TIER_THRESHOLD = 2, + EMBER_ZCL_TIER_BLOCK_MODE_NOT_USED = 255, +} EmberAfTierBlockMode; + +// Enum for TimeEncoding +typedef enum { + EMBER_ZCL_TIME_ENCODING_RELATIVE = 0, + EMBER_ZCL_TIME_ENCODING_ABSOLUTE = 64, +} EmberAfTimeEncoding; + +// Enum for TunnelingProtocolId +typedef enum { + EMBER_ZCL_TUNNELING_PROTOCOL_ID_DLMS_COSEM = 0, + EMBER_ZCL_TUNNELING_PROTOCOL_ID_IEC_61107 = 1, + EMBER_ZCL_TUNNELING_PROTOCOL_ID_ANSI_C12 = 2, + EMBER_ZCL_TUNNELING_PROTOCOL_ID_M_BUS = 3, + EMBER_ZCL_TUNNELING_PROTOCOL_ID_SML = 4, + EMBER_ZCL_TUNNELING_PROTOCOL_ID_CLIMATE_TALK = 5, + EMBER_ZCL_TUNNELING_PROTOCOL_ID_GB_HRGP = 6, + EMBER_ZCL_TUNNELING_PROTOCOL_ID_IP_V4 = 7, + EMBER_ZCL_TUNNELING_PROTOCOL_ID_IP_V6 = 8, + EMBER_ZCL_TUNNELING_PROTOCOL_ID_TEST = 199, +} EmberAfTunnelingProtocolId; + +// Enum for TunnelingTransferDataStatus +typedef enum { + EMBER_ZCL_TUNNELING_TRANSFER_DATA_STATUS_NO_SUCH_TUNNEL = 0, + EMBER_ZCL_TUNNELING_TRANSFER_DATA_STATUS_WRONG_DEVICE = 1, + EMBER_ZCL_TUNNELING_TRANSFER_DATA_STATUS_DATA_OVERFLOW = 2, +} EmberAfTunnelingTransferDataStatus; + +// Enum for TunnelingTunnelStatus +typedef enum { + EMBER_ZCL_TUNNELING_TUNNEL_STATUS_SUCCESS = 0, + EMBER_ZCL_TUNNELING_TUNNEL_STATUS_BUSY = 1, + EMBER_ZCL_TUNNELING_TUNNEL_STATUS_NO_MORE_TUNNEL_IDS = 2, + EMBER_ZCL_TUNNELING_TUNNEL_STATUS_PROTOCOL_NOT_SUPPORTED = 3, + EMBER_ZCL_TUNNELING_TUNNEL_STATUS_FLOW_CONTROL_NOT_SUPPORTED = 4, +} EmberAfTunnelingTunnelStatus; + +// Enum for WanStatus +typedef enum { + EMBER_ZCL_WAN_STATUS_CONNECTION_TO_WAN_IS_NOT_AVAILABLE = 0, + EMBER_ZCL_WAN_STATUS_CONNECTION_TO_WAN_IS_AVAILABLE = 1, +} EmberAfWanStatus; + +// Enum for WarningEvent +typedef enum { + EMBER_ZCL_WARNING_EVENT_WARNING1_OVERALL_POWER_ABOVE_AVAILABLE_POWER_LEVEL = 0, + EMBER_ZCL_WARNING_EVENT_WARNING2_OVERALL_POWER_ABOVE_POWER_THRESHOLD_LEVEL = 1, + EMBER_ZCL_WARNING_EVENT_WARNING3_OVERALL_POWER_BACK_BELOW_THE_AVAILABLE_POWER_LEVEL = 2, + EMBER_ZCL_WARNING_EVENT_WARNING4_OVERALL_POWER_BACK_BELOW_THE_POWER_THRESHOLD_LEVEL = 3, + EMBER_ZCL_WARNING_EVENT_WARNING5_OVERALL_POWER_WILL_BE_POTENTIALLY_ABOVE_AVAILABLE_POWER_LEVEL_IF_THE_APPLIANCE_STARTS = 4, +} EmberAfWarningEvent; + +// Enum for WarningMode +typedef enum { + EMBER_ZCL_WARNING_MODE_STOP = 0, + EMBER_ZCL_WARNING_MODE_BURGLAR = 1, + EMBER_ZCL_WARNING_MODE_FIRE = 2, + EMBER_ZCL_WARNING_MODE_EMERGENCY = 3, + EMBER_ZCL_WARNING_MODE_POLICE_PANIC = 4, + EMBER_ZCL_WARNING_MODE_FIRE_PANIC = 5, + EMBER_ZCL_WARNING_MODE_EMERGENCY_PANIC = 6, +} EmberAfWarningMode; + +// Enum for WarningStobe +typedef enum { + EMBER_ZCL_WARNING_STOBE_NO_STROBE = 0, + EMBER_ZCL_WARNING_STOBE_USE_STROBE = 1, +} EmberAfWarningStobe; + +// Enum for WwahIasZoneEnrollmentMode +typedef enum { + EMBER_ZCL_WWAH_IAS_ZONE_ENROLLMENT_MODE_TRIP_TO_PAIR = 0, + EMBER_ZCL_WWAH_IAS_ZONE_ENROLLMENT_MODE_AUTO_ENROLLMENT_RESPONSE = 1, + EMBER_ZCL_WWAH_IAS_ZONE_ENROLLMENT_MODE_REQUEST = 2, +} EmberAfWwahIasZoneEnrollmentMode; + +// Enum for WwahPowerNotificationReason +typedef enum { + EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_UNKNOWN = 0, + EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_BATTERY = 1, + EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_BROWNOUT = 2, + EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_WATCHDOG = 3, + EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_RESET_PIN = 4, + EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_MEMORY_HARDWARE_FAULT = 5, + EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_SOFWARE_EXCEPTION = 6, + EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_OTA_BOOTLOAD_SUCCESS = 7, + EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_SOFTWARE_RESET = 8, + EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_POWER_BUTTON = 9, + EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_TEMPERATURE = 10, + EMBER_ZCL_WWAH_POWER_NOTIFICATION_REASON_BOOTLOAD_FAILURE = 11, +} EmberAfWwahPowerNotificationReason; + +// Enum for ZigbeeInformationLogicalType +typedef enum { + EMBER_ZCL_ZIGBEE_INFORMATION_LOGICAL_TYPE_COORDINATOR = 0, + EMBER_ZCL_ZIGBEE_INFORMATION_LOGICAL_TYPE_ROUTER = 1, + EMBER_ZCL_ZIGBEE_INFORMATION_LOGICAL_TYPE_END_DEVICE = 2, +} EmberAfZigbeeInformationLogicalType; + +// Enum for ZllStatus +typedef enum { + EMBER_ZCL_ZLL_STATUS_SUCCESS = 0, + EMBER_ZCL_ZLL_STATUS_FAILURE = 1, +} EmberAfZllStatus; + +// ZCL bitmaps + +#define EMBER_AF_ALARM_MASK_GENERAL_HW_FAULT (1) +#define EMBER_AF_ALARM_MASK_GENERAL_HW_FAULT_OFFSET (0) +#define EMBER_AF_ALARM_MASK_GENERAL_SW_FAULT (2) +#define EMBER_AF_ALARM_MASK_GENERAL_SW_FAULT_OFFSET (1) +#define EMBER_AF_ALERT_COUNT_NUMBER_OF_ALERTS (15) +#define EMBER_AF_ALERT_COUNT_NUMBER_OF_ALERTS_OFFSET (0) +#define EMBER_AF_ALERT_COUNT_TYPE_OF_ALERT (240) +#define EMBER_AF_ALERT_COUNT_TYPE_OF_ALERT_OFFSET (4) +#define EMBER_AF_ALERT_STRUCTURE_ALERT_ID (255) +#define EMBER_AF_ALERT_STRUCTURE_ALERT_ID_OFFSET (0) +#define EMBER_AF_ALERT_STRUCTURE_CATEGORY (3840) +#define EMBER_AF_ALERT_STRUCTURE_CATEGORY_OFFSET (8) +#define EMBER_AF_ALERT_STRUCTURE_PRESENCE_RECOVERY (12288) +#define EMBER_AF_ALERT_STRUCTURE_PRESENCE_RECOVERY_OFFSET (12) +#define EMBER_AF_ALTERNATE_COST_TRAILING_DIGIT_TRAILING_DIGIT (240) +#define EMBER_AF_ALTERNATE_COST_TRAILING_DIGIT_TRAILING_DIGIT_OFFSET (4) +#define EMBER_AF_AMI_CANCEL_CONTROL_TERMINATE_WITH_RANDOMIZATION (1) +#define EMBER_AF_AMI_CANCEL_CONTROL_TERMINATE_WITH_RANDOMIZATION_OFFSET (0) +#define EMBER_AF_AMI_COMMAND_OPTIONS_REQUEST_RX_ON_WHEN_IDLE (1) +#define EMBER_AF_AMI_COMMAND_OPTIONS_REQUEST_RX_ON_WHEN_IDLE_OFFSET (0) +#define EMBER_AF_AMI_DEVICE_CLASS_HVAC_COMPRESSOR_OR_FURNACE (1) +#define EMBER_AF_AMI_DEVICE_CLASS_HVAC_COMPRESSOR_OR_FURNACE_OFFSET (0) +#define EMBER_AF_AMI_DEVICE_CLASS_STRIP_HEAT_BASEBOARD_HEAT (2) +#define EMBER_AF_AMI_DEVICE_CLASS_STRIP_HEAT_BASEBOARD_HEAT_OFFSET (1) +#define EMBER_AF_AMI_DEVICE_CLASS_WATER_HEATER (4) +#define EMBER_AF_AMI_DEVICE_CLASS_WATER_HEATER_OFFSET (2) +#define EMBER_AF_AMI_DEVICE_CLASS_POOL_PUMP_SPA_JACUZZI (8) +#define EMBER_AF_AMI_DEVICE_CLASS_POOL_PUMP_SPA_JACUZZI_OFFSET (3) +#define EMBER_AF_AMI_DEVICE_CLASS_SMART_APPLIANCES (16) +#define EMBER_AF_AMI_DEVICE_CLASS_SMART_APPLIANCES_OFFSET (4) +#define EMBER_AF_AMI_DEVICE_CLASS_IRRIGATION_PUMP (32) +#define EMBER_AF_AMI_DEVICE_CLASS_IRRIGATION_PUMP_OFFSET (5) +#define EMBER_AF_AMI_DEVICE_CLASS_MANAGED_C_AND_I_LOADS (64) +#define EMBER_AF_AMI_DEVICE_CLASS_MANAGED_C_AND_I_LOADS_OFFSET (6) +#define EMBER_AF_AMI_DEVICE_CLASS_SIMPLE_MISC_LOADS (128) +#define EMBER_AF_AMI_DEVICE_CLASS_SIMPLE_MISC_LOADS_OFFSET (7) +#define EMBER_AF_AMI_DEVICE_CLASS_EXTERIOR_LIGHTING (256) +#define EMBER_AF_AMI_DEVICE_CLASS_EXTERIOR_LIGHTING_OFFSET (8) +#define EMBER_AF_AMI_DEVICE_CLASS_INTERIOR_LIGHTING (512) +#define EMBER_AF_AMI_DEVICE_CLASS_INTERIOR_LIGHTING_OFFSET (9) +#define EMBER_AF_AMI_DEVICE_CLASS_ELECTRIC_VEHICLE (1024) +#define EMBER_AF_AMI_DEVICE_CLASS_ELECTRIC_VEHICLE_OFFSET (10) +#define EMBER_AF_AMI_DEVICE_CLASS_GENERATION_SYSTEMS (2048) +#define EMBER_AF_AMI_DEVICE_CLASS_GENERATION_SYSTEMS_OFFSET (11) +#define EMBER_AF_AMI_EVENT_CONTROL_RANDOMIZED_START_TIME (1) +#define EMBER_AF_AMI_EVENT_CONTROL_RANDOMIZED_START_TIME_OFFSET (0) +#define EMBER_AF_AMI_EVENT_CONTROL_RANDOMIZED_END_TIME (2) +#define EMBER_AF_AMI_EVENT_CONTROL_RANDOMIZED_END_TIME_OFFSET (1) +#define EMBER_AF_AMI_METER_STATUS_CHECK_METER (1) +#define EMBER_AF_AMI_METER_STATUS_CHECK_METER_OFFSET (0) +#define EMBER_AF_AMI_METER_STATUS_LOW_BATTERY (2) +#define EMBER_AF_AMI_METER_STATUS_LOW_BATTERY_OFFSET (1) +#define EMBER_AF_AMI_METER_STATUS_TAMPER_DETECT (4) +#define EMBER_AF_AMI_METER_STATUS_TAMPER_DETECT_OFFSET (2) +#define EMBER_AF_AMI_METER_STATUS_POWER_FAILURE (8) +#define EMBER_AF_AMI_METER_STATUS_POWER_FAILURE_OFFSET (3) +#define EMBER_AF_AMI_METER_STATUS_POWER_QUALITY (16) +#define EMBER_AF_AMI_METER_STATUS_POWER_QUALITY_OFFSET (4) +#define EMBER_AF_AMI_METER_STATUS_LEAK_DETECT (32) +#define EMBER_AF_AMI_METER_STATUS_LEAK_DETECT_OFFSET (5) +#define EMBER_AF_AMI_METER_STATUS_SERVICE_DISCONNECT_OPEN (64) +#define EMBER_AF_AMI_METER_STATUS_SERVICE_DISCONNECT_OPEN_OFFSET (6) +#define EMBER_AF_AMI_METER_STATUS_RESERVED (128) +#define EMBER_AF_AMI_METER_STATUS_RESERVED_OFFSET (7) +#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH1 (1) +#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH1_OFFSET (0) +#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH2 (2) +#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH2_OFFSET (1) +#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH3 (4) +#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH3_OFFSET (2) +#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH4 (8) +#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH4_OFFSET (3) +#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH5 (16) +#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH5_OFFSET (4) +#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH6 (32) +#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH6_OFFSET (5) +#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH7 (64) +#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH7_OFFSET (6) +#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH8 (128) +#define EMBER_AF_AUXILIARY_LOAD_SWITCH_STATE_AUXILIARY_SWITCH8_OFFSET (7) +#define EMBER_AF_BALLAST_STATUS_NON_OPERATIONAL (1) +#define EMBER_AF_BALLAST_STATUS_NON_OPERATIONAL_OFFSET (0) +#define EMBER_AF_BALLAST_STATUS_LAMP_NOT_IN_SOCKET (2) +#define EMBER_AF_BALLAST_STATUS_LAMP_NOT_IN_SOCKET_OFFSET (1) +#define EMBER_AF_BARRIER_CONTROL_CAPABILITIES_PARTIAL_BARRIER (1) +#define EMBER_AF_BARRIER_CONTROL_CAPABILITIES_PARTIAL_BARRIER_OFFSET (0) +#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_REMOTE_LOCKOUT (1) +#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_REMOTE_LOCKOUT_OFFSET (0) +#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_TEMPER_DETECTED (2) +#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_TEMPER_DETECTED_OFFSET (1) +#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_FAILED_COMMUNICATION (4) +#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_FAILED_COMMUNICATION_OFFSET (2) +#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_POSITION_FAILURE (8) +#define EMBER_AF_BARRIER_CONTROL_SAFETY_STATUS_POSITION_FAILURE_OFFSET (3) +#define EMBER_AF_BATTERY_ALARM_MASK_VOLTAGE_TOO_LOW (1) +#define EMBER_AF_BATTERY_ALARM_MASK_VOLTAGE_TOO_LOW_OFFSET (0) +#define EMBER_AF_BILL_TRAILING_DIGIT_TRAILING_DIGIT (240) +#define EMBER_AF_BILL_TRAILING_DIGIT_TRAILING_DIGIT_OFFSET (4) +#define EMBER_AF_BILLING_PERIOD_DURATION_DURATION (4194303) +#define EMBER_AF_BILLING_PERIOD_DURATION_DURATION_OFFSET (0) +#define EMBER_AF_BILLING_PERIOD_DURATION_UNITS (12582912) +#define EMBER_AF_BILLING_PERIOD_DURATION_UNITS_OFFSET (22) +#define EMBER_AF_BILLING_PERIOD_DURATION_TYPE_TIMEBASE (15) +#define EMBER_AF_BILLING_PERIOD_DURATION_TYPE_TIMEBASE_OFFSET (0) +#define EMBER_AF_BILLING_PERIOD_DURATION_TYPE_CONTROL (240) +#define EMBER_AF_BILLING_PERIOD_DURATION_TYPE_CONTROL_OFFSET (4) +#define EMBER_AF_BLOCK_PERIOD_CONTROL_PRICE_ACKNOWLEDGEMENT_REQUIREMENT (1) +#define EMBER_AF_BLOCK_PERIOD_CONTROL_PRICE_ACKNOWLEDGEMENT_REQUIREMENT_OFFSET (0) +#define EMBER_AF_BLOCK_PERIOD_CONTROL_REPEATING_BLOCK (2) +#define EMBER_AF_BLOCK_PERIOD_CONTROL_REPEATING_BLOCK_OFFSET (1) +#define EMBER_AF_BLOCK_PERIOD_DURATION_TYPE_TIMEBASE (15) +#define EMBER_AF_BLOCK_PERIOD_DURATION_TYPE_TIMEBASE_OFFSET (0) +#define EMBER_AF_BLOCK_PERIOD_DURATION_TYPE_CONTROL (240) +#define EMBER_AF_BLOCK_PERIOD_DURATION_TYPE_CONTROL_OFFSET (4) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER1 (2) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER1_OFFSET (1) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER2 (4) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER2_OFFSET (2) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER3 (8) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER3_OFFSET (3) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER4 (16) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER4_OFFSET (4) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER5 (32) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER5_OFFSET (5) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER6 (64) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER6_OFFSET (6) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER7 (128) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER7_OFFSET (7) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER8 (256) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER8_OFFSET (8) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER9 (512) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER9_OFFSET (9) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER10 (1024) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER10_OFFSET (10) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER11 (2048) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER11_OFFSET (11) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER12 (4096) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER12_OFFSET (12) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER13 (8192) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER13_OFFSET (13) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER14 (16384) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER14_OFFSET (14) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER15 (32768) +#define EMBER_AF_BLOCK_THRESHOLD_MASK_TIER15_OFFSET (15) +#define EMBER_AF_BLOCK_THRESHOLD_SUB_PAYLOAD_CONTROL_APPLY_TO_ALL_TOU_TIERS_OR_WHEN_BLOCK_ONLY_CHARGING (1) +#define EMBER_AF_BLOCK_THRESHOLD_SUB_PAYLOAD_CONTROL_APPLY_TO_ALL_TOU_TIERS_OR_WHEN_BLOCK_ONLY_CHARGING_OFFSET (0) +#define EMBER_AF_CO2_TRAILING_DIGIT_TRAILING_DIGIT (240) +#define EMBER_AF_CO2_TRAILING_DIGIT_TRAILING_DIGIT_OFFSET (4) +#define EMBER_AF_CALORIFIC_VALUE_TRAILING_DIGIT_TRAILING_DIGIT (240) +#define EMBER_AF_CALORIFIC_VALUE_TRAILING_DIGIT_TRAILING_DIGIT_OFFSET (4) +#define EMBER_AF_CHANNEL_MASK_CHANNEL0 (1) +#define EMBER_AF_CHANNEL_MASK_CHANNEL0_OFFSET (0) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL0 (1) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL0_OFFSET (0) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL27 (1) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL27_OFFSET (0) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL35 (1) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL35_OFFSET (0) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL0 (1) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL0_OFFSET (0) +#define EMBER_AF_CHANNEL_MASK_CHANNEL1 (2) +#define EMBER_AF_CHANNEL_MASK_CHANNEL1_OFFSET (1) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL1 (2) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL1_OFFSET (1) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL28 (2) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL28_OFFSET (1) +#define EMBER_AF_CHANNEL_MASK_853_CHANNEL36 (2) +#define EMBER_AF_CHANNEL_MASK_853_CHANNEL36_OFFSET (1) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL1 (2) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL1_OFFSET (1) +#define EMBER_AF_CHANNEL_MASK_CHANNEL2 (4) +#define EMBER_AF_CHANNEL_MASK_CHANNEL2_OFFSET (2) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL2 (4) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL2_OFFSET (2) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL29 (4) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL29_OFFSET (2) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL37 (4) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL37_OFFSET (2) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL2 (4) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL2_OFFSET (2) +#define EMBER_AF_CHANNEL_MASK_CHANNEL3 (8) +#define EMBER_AF_CHANNEL_MASK_CHANNEL3_OFFSET (3) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL3 (8) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL3_OFFSET (3) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL30 (8) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL30_OFFSET (3) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL38 (8) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL38_OFFSET (3) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL3 (8) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL3_OFFSET (3) +#define EMBER_AF_CHANNEL_MASK_CHANNEL4 (16) +#define EMBER_AF_CHANNEL_MASK_CHANNEL4_OFFSET (4) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL4 (16) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL4_OFFSET (4) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL31 (16) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL31_OFFSET (4) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL39 (16) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL39_OFFSET (4) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL4 (16) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL4_OFFSET (4) +#define EMBER_AF_CHANNEL_MASK_CHANNEL5 (32) +#define EMBER_AF_CHANNEL_MASK_CHANNEL5_OFFSET (5) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL5 (32) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL5_OFFSET (5) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL32 (32) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL32_OFFSET (5) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL40 (32) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL40_OFFSET (5) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL5 (32) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL5_OFFSET (5) +#define EMBER_AF_CHANNEL_MASK_CHANNEL6 (64) +#define EMBER_AF_CHANNEL_MASK_CHANNEL6_OFFSET (6) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL6 (64) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL6_OFFSET (6) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL33 (64) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL33_OFFSET (6) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL41 (64) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL41_OFFSET (6) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL6 (64) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL6_OFFSET (6) +#define EMBER_AF_CHANNEL_MASK_CHANNEL7 (128) +#define EMBER_AF_CHANNEL_MASK_CHANNEL7_OFFSET (7) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL7 (128) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL7_OFFSET (7) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL34 (128) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL34_OFFSET (7) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL42 (128) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL42_OFFSET (7) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL7 (128) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL7_OFFSET (7) +#define EMBER_AF_CHANNEL_MASK_CHANNEL8 (256) +#define EMBER_AF_CHANNEL_MASK_CHANNEL8_OFFSET (8) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL8 (256) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL8_OFFSET (8) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL62 (256) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL62_OFFSET (8) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL43 (256) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL43_OFFSET (8) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL8 (256) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL8_OFFSET (8) +#define EMBER_AF_CHANNEL_MASK_CHANNEL9 (512) +#define EMBER_AF_CHANNEL_MASK_CHANNEL9_OFFSET (9) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL9 (512) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL9_OFFSET (9) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL44 (512) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL44_OFFSET (9) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL9 (512) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL9_OFFSET (9) +#define EMBER_AF_CHANNEL_MASK_CHANNEL10 (1024) +#define EMBER_AF_CHANNEL_MASK_CHANNEL10_OFFSET (10) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL10 (1024) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL10_OFFSET (10) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL45 (1024) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL45_OFFSET (10) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL10 (1024) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL10_OFFSET (10) +#define EMBER_AF_CHANNEL_MASK_CHANNEL11 (2048) +#define EMBER_AF_CHANNEL_MASK_CHANNEL11_OFFSET (11) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL11 (2048) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL11_OFFSET (11) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL46 (2048) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL46_OFFSET (11) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL11 (2048) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL11_OFFSET (11) +#define EMBER_AF_CHANNEL_MASK_CHANNEL12 (4096) +#define EMBER_AF_CHANNEL_MASK_CHANNEL12_OFFSET (12) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL12 (4096) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL12_OFFSET (12) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL47 (4096) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL47_OFFSET (12) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL12 (4096) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL12_OFFSET (12) +#define EMBER_AF_CHANNEL_MASK_CHANNEL13 (8192) +#define EMBER_AF_CHANNEL_MASK_CHANNEL13_OFFSET (13) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL13 (8192) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL13_OFFSET (13) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL48 (8192) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL48_OFFSET (13) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL13 (8192) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL13_OFFSET (13) +#define EMBER_AF_CHANNEL_MASK_CHANNEL14 (16384) +#define EMBER_AF_CHANNEL_MASK_CHANNEL14_OFFSET (14) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL14 (16384) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL14_OFFSET (14) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL49 (16384) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL49_OFFSET (14) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL14 (16384) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL14_OFFSET (14) +#define EMBER_AF_CHANNEL_MASK_CHANNEL15 (32768) +#define EMBER_AF_CHANNEL_MASK_CHANNEL15_OFFSET (15) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL15 (32768) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL15_OFFSET (15) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL50 (32768) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL50_OFFSET (15) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL15 (32768) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL15_OFFSET (15) +#define EMBER_AF_CHANNEL_MASK_CHANNEL16 (65536) +#define EMBER_AF_CHANNEL_MASK_CHANNEL16_OFFSET (16) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL16 (65536) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL16_OFFSET (16) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL51 (65536) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL51_OFFSET (16) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL16 (65536) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL16_OFFSET (16) +#define EMBER_AF_CHANNEL_MASK_CHANNEL17 (131072) +#define EMBER_AF_CHANNEL_MASK_CHANNEL17_OFFSET (17) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL17 (131072) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL17_OFFSET (17) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL52 (131072) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL52_OFFSET (17) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL17 (131072) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL17_OFFSET (17) +#define EMBER_AF_CHANNEL_MASK_CHANNEL18 (262144) +#define EMBER_AF_CHANNEL_MASK_CHANNEL18_OFFSET (18) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL18 (262144) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL18_OFFSET (18) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL53 (262144) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL53_OFFSET (18) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL18 (262144) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL18_OFFSET (18) +#define EMBER_AF_CHANNEL_MASK_CHANNEL19 (524288) +#define EMBER_AF_CHANNEL_MASK_CHANNEL19_OFFSET (19) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL19 (524288) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL19_OFFSET (19) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL54 (524288) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL54_OFFSET (19) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL19 (524288) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL19_OFFSET (19) +#define EMBER_AF_CHANNEL_MASK_CHANNEL20 (1048576) +#define EMBER_AF_CHANNEL_MASK_CHANNEL20_OFFSET (20) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL20 (1048576) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL20_OFFSET (20) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL55 (1048576) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL55_OFFSET (20) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL20 (1048576) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL20_OFFSET (20) +#define EMBER_AF_CHANNEL_MASK_CHANNEL21 (2097152) +#define EMBER_AF_CHANNEL_MASK_CHANNEL21_OFFSET (21) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL21 (2097152) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL21_OFFSET (21) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL56 (2097152) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL56_OFFSET (21) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL21 (2097152) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL21_OFFSET (21) +#define EMBER_AF_CHANNEL_MASK_CHANNEL22 (4194304) +#define EMBER_AF_CHANNEL_MASK_CHANNEL22_OFFSET (22) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL22 (4194304) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL22_OFFSET (22) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL57 (4194304) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL57_OFFSET (22) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL22 (4194304) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL22_OFFSET (22) +#define EMBER_AF_CHANNEL_MASK_CHANNEL23 (8388608) +#define EMBER_AF_CHANNEL_MASK_CHANNEL23_OFFSET (23) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL23 (8388608) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL23_OFFSET (23) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL58 (8388608) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL58_OFFSET (23) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL23 (8388608) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL23_OFFSET (23) +#define EMBER_AF_CHANNEL_MASK_CHANNEL24 (16777216) +#define EMBER_AF_CHANNEL_MASK_CHANNEL24_OFFSET (24) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL24 (16777216) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL24_OFFSET (24) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL59 (16777216) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL59_OFFSET (24) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL24 (16777216) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL24_OFFSET (24) +#define EMBER_AF_CHANNEL_MASK_CHANNEL25 (33554432) +#define EMBER_AF_CHANNEL_MASK_CHANNEL25_OFFSET (25) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL25 (33554432) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL25_OFFSET (25) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL60 (33554432) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL60_OFFSET (25) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL25 (33554432) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL25_OFFSET (25) +#define EMBER_AF_CHANNEL_MASK_CHANNEL26 (67108864) +#define EMBER_AF_CHANNEL_MASK_CHANNEL26_OFFSET (26) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL26 (67108864) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL26_OFFSET (26) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL61 (67108864) +#define EMBER_AF_CHANNEL_MASK_863_CHANNEL61_OFFSET (26) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL26 (67108864) +#define EMBER_AF_CHANNEL_MASK_915_CHANNEL26_OFFSET (26) +#define EMBER_AF_CHANNEL_MASK_PAGE (4160749568) +#define EMBER_AF_CHANNEL_MASK_PAGE_OFFSET (27) +#define EMBER_AF_CLEARED_EVENTS_LOGS_ALL_LOGS_CLEARED (1) +#define EMBER_AF_CLEARED_EVENTS_LOGS_ALL_LOGS_CLEARED_OFFSET (0) +#define EMBER_AF_CLEARED_EVENTS_LOGS_TAMPER_LOG_CLEARED (2) +#define EMBER_AF_CLEARED_EVENTS_LOGS_TAMPER_LOG_CLEARED_OFFSET (1) +#define EMBER_AF_CLEARED_EVENTS_LOGS_FAULT_LOG_CLEARED (4) +#define EMBER_AF_CLEARED_EVENTS_LOGS_FAULT_LOG_CLEARED_OFFSET (2) +#define EMBER_AF_CLEARED_EVENTS_LOGS_GENERAL_EVENT_LOG_CLEARED (8) +#define EMBER_AF_CLEARED_EVENTS_LOGS_GENERAL_EVENT_LOG_CLEARED_OFFSET (3) +#define EMBER_AF_CLEARED_EVENTS_LOGS_SECURITY_EVENT_LOG_CLEARED (16) +#define EMBER_AF_CLEARED_EVENTS_LOGS_SECURITY_EVENT_LOG_CLEARED_OFFSET (4) +#define EMBER_AF_CLEARED_EVENTS_LOGS_NETWORK_EVENT_LOG_CLEARED (32) +#define EMBER_AF_CLEARED_EVENTS_LOGS_NETWORK_EVENT_LOG_CLEARED_OFFSET (5) +#define EMBER_AF_COLOR_CAPABILITIES_HUE_SATURATION_SUPPORTED (1) +#define EMBER_AF_COLOR_CAPABILITIES_HUE_SATURATION_SUPPORTED_OFFSET (0) +#define EMBER_AF_COLOR_CAPABILITIES_ENHANCED_HUE_SUPPORTED (2) +#define EMBER_AF_COLOR_CAPABILITIES_ENHANCED_HUE_SUPPORTED_OFFSET (1) +#define EMBER_AF_COLOR_CAPABILITIES_COLOR_LOOP_SUPPORTED (4) +#define EMBER_AF_COLOR_CAPABILITIES_COLOR_LOOP_SUPPORTED_OFFSET (2) +#define EMBER_AF_COLOR_CAPABILITIES_XY_ATTRIBUTES_SUPPORTED (8) +#define EMBER_AF_COLOR_CAPABILITIES_XY_ATTRIBUTES_SUPPORTED_OFFSET (3) +#define EMBER_AF_COLOR_CAPABILITIES_COLOR_TEMPERATURE_SUPPORTED (16) +#define EMBER_AF_COLOR_CAPABILITIES_COLOR_TEMPERATURE_SUPPORTED_OFFSET (4) +#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_ACTION (1) +#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_ACTION_OFFSET (0) +#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_DIRECTION (2) +#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_DIRECTION_OFFSET (1) +#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_TIME (4) +#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_TIME_OFFSET (2) +#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_START_HUE (8) +#define EMBER_AF_COLOR_LOOP_UPDATE_FLAGS_UPDATE_START_HUE_OFFSET (3) +#define EMBER_AF_CONVERSION_FACTOR_TRAILING_DIGIT_TRAILING_DIGIT (240) +#define EMBER_AF_CONVERSION_FACTOR_TRAILING_DIGIT_TRAILING_DIGIT_OFFSET (4) +#define EMBER_AF_CREDIT_STATUS_CREDIT_OK (1) +#define EMBER_AF_CREDIT_STATUS_CREDIT_OK_OFFSET (0) +#define EMBER_AF_CREDIT_STATUS_LOW_CREDIT (2) +#define EMBER_AF_CREDIT_STATUS_LOW_CREDIT_OFFSET (1) +#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_ENABLED (4) +#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_ENABLED_OFFSET (2) +#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_AVAILABLE (8) +#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_AVAILABLE_OFFSET (3) +#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_SELECTED (16) +#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_SELECTED_OFFSET (4) +#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_IN_USE (32) +#define EMBER_AF_CREDIT_STATUS_EMERGENCY_CREDIT_IN_USE_OFFSET (5) +#define EMBER_AF_CREDIT_STATUS_CREDIT_EXHAUSTED (64) +#define EMBER_AF_CREDIT_STATUS_CREDIT_EXHAUSTED_OFFSET (6) +#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CLEAR_BILLING_INFO (1) +#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CLEAR_BILLING_INFO_OFFSET (0) +#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CONVERT_BILLING_INFO_USING_NEW_CURRENCY (2) +#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CONVERT_BILLING_INFO_USING_NEW_CURRENCY_OFFSET (1) +#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CLEAR_OLD_CONSUMPTION_DATA (4) +#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CLEAR_OLD_CONSUMPTION_DATA_OFFSET (2) +#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CONVERT_OLD_CONSUMPTION_DATA_USING_NEW_CURRENCY (8) +#define EMBER_AF_CURRENCY_CHANGE_CONTROL_CONVERT_OLD_CONSUMPTION_DATA_USING_NEW_CURRENCY_OFFSET (3) +#define EMBER_AF_CURRENT_EVENT_STATUS_RANDOMIZED_START_TIME (1) +#define EMBER_AF_CURRENT_EVENT_STATUS_RANDOMIZED_START_TIME_OFFSET (0) +#define EMBER_AF_CURRENT_EVENT_STATUS_RANDOMIZED_DURATION (2) +#define EMBER_AF_CURRENT_EVENT_STATUS_RANDOMIZED_DURATION_OFFSET (1) +#define EMBER_AF_CURRENT_EVENT_STATUS_EXTENDED_BITS_PRESENT (4) +#define EMBER_AF_CURRENT_EVENT_STATUS_EXTENDED_BITS_PRESENT_OFFSET (2) +#define EMBER_AF_CURRENT_EVENT_STATUS_EVENT_ACTIVE (8) +#define EMBER_AF_CURRENT_EVENT_STATUS_EVENT_ACTIVE_OFFSET (3) +#define EMBER_AF_CURRENT_EVENT_STATUS_DEVICE_PARTICIPATING_IN_EVENT (16) +#define EMBER_AF_CURRENT_EVENT_STATUS_DEVICE_PARTICIPATING_IN_EVENT_OFFSET (4) +#define EMBER_AF_CURRENT_EVENT_STATUS_REDUCING_LOAD (32) +#define EMBER_AF_CURRENT_EVENT_STATUS_REDUCING_LOAD_OFFSET (5) +#define EMBER_AF_CURRENT_EVENT_STATUS_ON_AT_END_OF_EVENT (64) +#define EMBER_AF_CURRENT_EVENT_STATUS_ON_AT_END_OF_EVENT_OFFSET (6) +#define EMBER_AF_DAY_OF_WEEK_SUNDAY (1) +#define EMBER_AF_DAY_OF_WEEK_SUNDAY_OFFSET (0) +#define EMBER_AF_DAY_OF_WEEK_MONDAY (2) +#define EMBER_AF_DAY_OF_WEEK_MONDAY_OFFSET (1) +#define EMBER_AF_DAY_OF_WEEK_TUESDAY (4) +#define EMBER_AF_DAY_OF_WEEK_TUESDAY_OFFSET (2) +#define EMBER_AF_DAY_OF_WEEK_WEDNESDAY (8) +#define EMBER_AF_DAY_OF_WEEK_WEDNESDAY_OFFSET (3) +#define EMBER_AF_DAY_OF_WEEK_THURSDAY (16) +#define EMBER_AF_DAY_OF_WEEK_THURSDAY_OFFSET (4) +#define EMBER_AF_DAY_OF_WEEK_FRIDAY (32) +#define EMBER_AF_DAY_OF_WEEK_FRIDAY_OFFSET (5) +#define EMBER_AF_DAY_OF_WEEK_SATURDAY (64) +#define EMBER_AF_DAY_OF_WEEK_SATURDAY_OFFSET (6) +#define EMBER_AF_DAY_OF_WEEK_AWAY_OR_VACATION (128) +#define EMBER_AF_DAY_OF_WEEK_AWAY_OR_VACATION_OFFSET (7) +#define EMBER_AF_DEVICE_TEMP_ALARM_MASK_TOO_LOW (1) +#define EMBER_AF_DEVICE_TEMP_ALARM_MASK_TOO_LOW_OFFSET (0) +#define EMBER_AF_DEVICE_TEMP_ALARM_MASK_TOO_HIGH (2) +#define EMBER_AF_DEVICE_TEMP_ALARM_MASK_TOO_HIGH_OFFSET (1) +#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_SUNDAY (1) +#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_SUNDAY_OFFSET (0) +#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_MONDAY (2) +#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_MONDAY_OFFSET (1) +#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_TUESDAY (4) +#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_TUESDAY_OFFSET (2) +#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_WEDNESDAY (8) +#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_WEDNESDAY_OFFSET (3) +#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_THURSDAY (16) +#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_THURSDAY_OFFSET (4) +#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_FRIDAY (32) +#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_FRIDAY_OFFSET (5) +#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_SATURDAY (64) +#define EMBER_AF_DOOR_LOCK_DAY_OF_WEEK_SATURDAY_OFFSET (6) +#define EMBER_AF_ENERGY_FORMATTING_NUMBER_OF_DIGITS_TO_THE_RIGHT_OF_THE_DECIMAL_POINT (7) +#define EMBER_AF_ENERGY_FORMATTING_NUMBER_OF_DIGITS_TO_THE_RIGHT_OF_THE_DECIMAL_POINT_OFFSET (0) +#define EMBER_AF_ENERGY_FORMATTING_NUMBER_OF_DIGITS_TO_THE_LEFT_OF_THE_DECIMAL_POINT (120) +#define EMBER_AF_ENERGY_FORMATTING_NUMBER_OF_DIGITS_TO_THE_LEFT_OF_THE_DECIMAL_POINT_OFFSET (3) +#define EMBER_AF_ENERGY_FORMATTING_SUPPRESS_LEADING_ZEROS (128) +#define EMBER_AF_ENERGY_FORMATTING_SUPPRESS_LEADING_ZEROS_OFFSET (7) +#define EMBER_AF_EVENT_ACTION_CONTROL_REPORT_EVENT_TO_HAN_DEVICES (1) +#define EMBER_AF_EVENT_ACTION_CONTROL_REPORT_EVENT_TO_HAN_DEVICES_OFFSET (0) +#define EMBER_AF_EVENT_ACTION_CONTROL_REPORT_EVENT_TO_WAN (2) +#define EMBER_AF_EVENT_ACTION_CONTROL_REPORT_EVENT_TO_WAN_OFFSET (1) +#define EMBER_AF_EVENT_CONFIGURATION_LOG_ACTION (7) +#define EMBER_AF_EVENT_CONFIGURATION_LOG_ACTION_OFFSET (0) +#define EMBER_AF_EVENT_CONFIGURATION_PUSH_EVENT_TO_WAN (8) +#define EMBER_AF_EVENT_CONFIGURATION_PUSH_EVENT_TO_WAN_OFFSET (3) +#define EMBER_AF_EVENT_CONFIGURATION_PUSH_EVENT_TO_HAN (16) +#define EMBER_AF_EVENT_CONFIGURATION_PUSH_EVENT_TO_HAN_OFFSET (4) +#define EMBER_AF_EVENT_CONFIGURATION_RAISE_ALARM_ZIG_BEE (32) +#define EMBER_AF_EVENT_CONFIGURATION_RAISE_ALARM_ZIG_BEE_OFFSET (5) +#define EMBER_AF_EVENT_CONFIGURATION_RAISE_ALARM_PHYSICAL (64) +#define EMBER_AF_EVENT_CONFIGURATION_RAISE_ALARM_PHYSICAL_OFFSET (6) +#define EMBER_AF_EVENT_CONTROL_LOG_ID_LOG_ID (15) +#define EMBER_AF_EVENT_CONTROL_LOG_ID_LOG_ID_OFFSET (0) +#define EMBER_AF_EVENT_CONTROL_LOG_ID_EVENT_CONTROL (240) +#define EMBER_AF_EVENT_CONTROL_LOG_ID_EVENT_CONTROL_OFFSET (4) +#define EMBER_AF_FRIENDLY_CREDIT_FRIENDLY_CREDIT_ENABLED (1) +#define EMBER_AF_FRIENDLY_CREDIT_FRIENDLY_CREDIT_ENABLED_OFFSET (0) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_NEW_OTA_FIRMWARE (1) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_NEW_OTA_FIRMWARE_OFFSET (0) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CBKE_UPDATE_REQUEST (2) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CBKE_UPDATE_REQUEST_OFFSET (1) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_TIME_SYNC (4) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_TIME_SYNC_OFFSET (2) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_STAY_AWAKE_REQUEST_HAN (16) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_STAY_AWAKE_REQUEST_HAN_OFFSET (4) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_STAY_AWAKE_REQUEST_WAN (32) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_STAY_AWAKE_REQUEST_WAN_OFFSET (5) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_HISTORICAL_METERING_DATA_ATTRIBUTE_SET (448) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_HISTORICAL_METERING_DATA_ATTRIBUTE_SET_OFFSET (6) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_HISTORICAL_PREPAYMENT_DATA_ATTRIBUTE_SET (3584) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_HISTORICAL_PREPAYMENT_DATA_ATTRIBUTE_SET_OFFSET (9) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_ALL_STATIC_DATA_BASIC_CLUSTER (4096) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_ALL_STATIC_DATA_BASIC_CLUSTER_OFFSET (12) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_ALL_STATIC_DATA_METERING_CLUSTER (8192) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_ALL_STATIC_DATA_METERING_CLUSTER_OFFSET (13) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_ALL_STATIC_DATA_PREPAYMENT_CLUSTER (16384) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_PUSH_ALL_STATIC_DATA_PREPAYMENT_CLUSTER_OFFSET (14) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_NETWORK_KEY_ACTIVE (32768) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_NETWORK_KEY_ACTIVE_OFFSET (15) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_DISPLAY_MESSAGE (65536) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_DISPLAY_MESSAGE_OFFSET (16) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CANCEL_ALL_MESSAGES (131072) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CANCEL_ALL_MESSAGES_OFFSET (17) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CHANGE_SUPPLY (262144) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CHANGE_SUPPLY_OFFSET (18) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_LOCAL_CHANGE_SUPPLY (524288) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_LOCAL_CHANGE_SUPPLY_OFFSET (19) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_SET_UNCONTROLLED_FLOW_THRESHOLD (1048576) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_SET_UNCONTROLLED_FLOW_THRESHOLD_OFFSET (20) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_TUNNEL_MESSAGE_PENDING (2097152) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_TUNNEL_MESSAGE_PENDING_OFFSET (21) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_GET_SNAPSHOT (4194304) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_GET_SNAPSHOT_OFFSET (22) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_GET_SAMPLED_DATA (8388608) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_GET_SAMPLED_DATA_OFFSET (23) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_NEW_SUB_GHZ_CHANNEL_MASKS_AVAILABLE (16777216) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_NEW_SUB_GHZ_CHANNEL_MASKS_AVAILABLE_OFFSET (24) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_ENERGY_SCAN_PENDING (33554432) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_ENERGY_SCAN_PENDING_OFFSET (25) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CHANNEL_CHANGE_PENDING (67108864) +#define EMBER_AF_FUNCTIONAL_NOTIFICATION_FLAGS_CHANNEL_CHANGE_PENDING_OFFSET (26) +#define EMBER_AF_GET_LOCATION_DATA_FLAGS_ABSOLUTE_ONLY (1) +#define EMBER_AF_GET_LOCATION_DATA_FLAGS_ABSOLUTE_ONLY_OFFSET (0) +#define EMBER_AF_GET_LOCATION_DATA_FLAGS_RECALCULATE (2) +#define EMBER_AF_GET_LOCATION_DATA_FLAGS_RECALCULATE_OFFSET (1) +#define EMBER_AF_GET_LOCATION_DATA_FLAGS_BROADCAST (4) +#define EMBER_AF_GET_LOCATION_DATA_FLAGS_BROADCAST_OFFSET (2) +#define EMBER_AF_GET_LOCATION_DATA_FLAGS_BROADCAST_RESPONSE (8) +#define EMBER_AF_GET_LOCATION_DATA_FLAGS_BROADCAST_RESPONSE_OFFSET (3) +#define EMBER_AF_GET_LOCATION_DATA_FLAGS_COMPACT_RESPONSE (16) +#define EMBER_AF_GET_LOCATION_DATA_FLAGS_COMPACT_RESPONSE_OFFSET (4) +#define EMBER_AF_GP_APPLICATION_INFORMATION_MANUFACTURE_ID_PRESENT (1) +#define EMBER_AF_GP_APPLICATION_INFORMATION_MANUFACTURE_ID_PRESENT_OFFSET (0) +#define EMBER_AF_GP_APPLICATION_INFORMATION_MODEL_ID_PRESENT (2) +#define EMBER_AF_GP_APPLICATION_INFORMATION_MODEL_ID_PRESENT_OFFSET (1) +#define EMBER_AF_GP_APPLICATION_INFORMATION_GPD_COMMANDS_PRESENT (4) +#define EMBER_AF_GP_APPLICATION_INFORMATION_GPD_COMMANDS_PRESENT_OFFSET (2) +#define EMBER_AF_GP_APPLICATION_INFORMATION_CLUSTER_LIST_PRESENT (8) +#define EMBER_AF_GP_APPLICATION_INFORMATION_CLUSTER_LIST_PRESENT_OFFSET (3) +#define EMBER_AF_GP_APPLICATION_INFORMATION_SWITCH_INFORMATION_PRESENT (16) +#define EMBER_AF_GP_APPLICATION_INFORMATION_SWITCH_INFORMATION_PRESENT_OFFSET (4) +#define EMBER_AF_GP_APPLICATION_INFORMATION_APPLICATION_DESCRIPTION_PRESENT (32) +#define EMBER_AF_GP_APPLICATION_INFORMATION_APPLICATION_DESCRIPTION_PRESENT_OFFSET (5) +#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_APPLICATION_ID (7) +#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_APPLICATION_ID_OFFSET (0) +#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_RX_AFTER_TX (8) +#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_RX_AFTER_TX_OFFSET (3) +#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_SECURITY_LEVEL (48) +#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_SECURITY_LEVEL_OFFSET (4) +#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_SECURITY_KEY_TYPE (448) +#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_SECURITY_KEY_TYPE_OFFSET (6) +#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_SECURITY_PROCESSING_FAILED (512) +#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_SECURITY_PROCESSING_FAILED_OFFSET (9) +#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_BIDIRECTIONAL_CAPABILITY (1024) +#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_BIDIRECTIONAL_CAPABILITY_OFFSET (10) +#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_PROXY_INFO_PRESENT (2048) +#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_PROXY_INFO_PRESENT_OFFSET (11) +#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_RESERVED (61440) +#define EMBER_AF_GP_COMMISSIONING_NOTIFICATION_OPTION_RESERVED_OFFSET (12) +#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_MASK (31) +#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_MASK_OFFSET (0) +#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_OPERATIONAL_CHANNEL (15) +#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_OPERATIONAL_CHANNEL_OFFSET (0) +#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_BASIC (16) +#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_BASIC_OFFSET (4) +#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_RESERVED (224) +#define EMBER_AF_GP_GPD_CHANNEL_CONFIGURATION_CHANNEL_RESERVED_OFFSET (5) +#define EMBER_AF_GP_GPD_CHANNEL_REQUEST_CHANNEL_TOGGLING_BEHAVIOUR_RX_CHANNEL_NEXT_ATTEMPT (15) +#define EMBER_AF_GP_GPD_CHANNEL_REQUEST_CHANNEL_TOGGLING_BEHAVIOUR_RX_CHANNEL_NEXT_ATTEMPT_OFFSET (0) +#define EMBER_AF_GP_GPD_CHANNEL_REQUEST_CHANNEL_TOGGLING_BEHAVIOUR_RX_CHANNEL_SECOND_NEXT_ATTEMPT (240) +#define EMBER_AF_GP_GPD_CHANNEL_REQUEST_CHANNEL_TOGGLING_BEHAVIOUR_RX_CHANNEL_SECOND_NEXT_ATTEMPT_OFFSET (4) +#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_SECURITY_LEVEL_CAPABILITIES (3) +#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_SECURITY_LEVEL_CAPABILITIES_OFFSET (0) +#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_KEY_TYPE (28) +#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_KEY_TYPE_OFFSET (2) +#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_GPD_KEY_PRESENT (32) +#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_GPD_KEY_PRESENT_OFFSET (5) +#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_GPD_KEY_ENCRYPTION (64) +#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_GPD_KEY_ENCRYPTION_OFFSET (6) +#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_GPD_OUTGOING_COUNTER_PRESENT (128) +#define EMBER_AF_GP_GPD_COMMISSIONING_EXTENDED_OPTIONS_GPD_OUTGOING_COUNTER_PRESENT_OFFSET (7) +#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_MAC_SEQ_NUM_CAP (1) +#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_MAC_SEQ_NUM_CAP_OFFSET (0) +#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_RX_ON_CAP (2) +#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_RX_ON_CAP_OFFSET (1) +#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_APPLICATION_INFORMATION_PRESENT (4) +#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_APPLICATION_INFORMATION_PRESENT_OFFSET (2) +#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_RESERVED (8) +#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_RESERVED_OFFSET (3) +#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_PAN_ID_REQUEST (16) +#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_PAN_ID_REQUEST_OFFSET (4) +#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_GP_SECURITY_KEY_REQUEST (32) +#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_GP_SECURITY_KEY_REQUEST_OFFSET (5) +#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_FIXED_LOCATION (64) +#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_FIXED_LOCATION_OFFSET (6) +#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_EXTENDED_OPTIONS_FIELD (128) +#define EMBER_AF_GP_GPD_COMMISSIONING_OPTIONS_EXTENDED_OPTIONS_FIELD_OFFSET (7) +#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_PAN_ID_PRESENT (1) +#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_PAN_ID_PRESENT_OFFSET (0) +#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_GPD_SECURITY_KEY_PRESENT (2) +#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_GPD_SECURITY_KEY_PRESENT_OFFSET (1) +#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_GPDKEY_ENCRYPTION (4) +#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_GPDKEY_ENCRYPTION_OFFSET (2) +#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_SECURITY_LEVEL (24) +#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_SECURITY_LEVEL_OFFSET (3) +#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_KEY_TYPE (224) +#define EMBER_AF_GP_GPD_COMMISSIONING_REPLY_OPTIONS_KEY_TYPE_OFFSET (5) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_GP_FEATURE (1) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_GP_FEATURE_OFFSET (0) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_DIRECT_COMMUNICATION (2) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_DIRECT_COMMUNICATION_OFFSET (1) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_DERIVED_GROUPCAST_COMMUNICATION (4) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_DERIVED_GROUPCAST_COMMUNICATION_OFFSET (2) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_PRE_COMMISSIONED_GROUPCAST_COMMUNICATION (8) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_PRE_COMMISSIONED_GROUPCAST_COMMUNICATION_OFFSET (3) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_FULL_UNICAST_COMMUNICATION (16) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_FULL_UNICAST_COMMUNICATION_OFFSET (4) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_LIGHTWEIGHT_UNICAST_COMMUNICATION (32) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_LIGHTWEIGHT_UNICAST_COMMUNICATION_OFFSET (5) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_PROXIMITY_BIDIRECTIONAL_COMMUNICATION (64) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_PROXIMITY_BIDIRECTIONAL_COMMUNICATION_OFFSET (6) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_MULTIHOP_BIDIRECTIONAL_COMMUNICATION (128) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_MULTIHOP_BIDIRECTIONAL_COMMUNICATION_OFFSET (7) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_PROXY_TABLE_MAINTAINANCE (256) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_PROXY_TABLE_MAINTAINANCE_OFFSET (8) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_PROXIMITY_COMMUNICATION (512) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_PROXIMITY_COMMUNICATION_OFFSET (9) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_MULTIHOP_COMMUNICATION (1024) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_MULTIHOP_COMMUNICATION_OFFSET (10) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_CT_BASED_COMMISSIONING (2048) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_CT_BASED_COMMISSIONING_OFFSET (11) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_MAINTAINANCE_GPDF (4096) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_MAINTAINANCE_GPDF_OFFSET (12) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL0_IN_OPERATION (8192) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL0_IN_OPERATION_OFFSET (13) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL1_IN_OPERATION (16384) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL1_IN_OPERATION_OFFSET (14) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL2_IN_OPERATION (32768) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL2_IN_OPERATION_OFFSET (15) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL3_IN_OPERATION (65536) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_SECURITY_LEVEL3_IN_OPERATION_OFFSET (16) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_SINK_TABLE_BASED_GROUPCAST_FORWARDING (131072) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_SINK_TABLE_BASED_GROUPCAST_FORWARDING_OFFSET (17) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_TRANSLATION_TABLE (262144) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_TRANSLATION_TABLE_OFFSET (18) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_IEEE_ADDRESS (524288) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_GPD_IEEE_ADDRESS_OFFSET (19) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_COMPACT_ATTRIBUTE_REPORTING (1048576) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_COMPACT_ATTRIBUTE_REPORTING_OFFSET (20) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_RESERVED (14680064) +#define EMBER_AF_GP_GPS_FUNCTIONALITY_RESERVED_OFFSET (21) +#define EMBER_AF_GP_NOTIFICATION_OPTION_APPLICATION_ID (7) +#define EMBER_AF_GP_NOTIFICATION_OPTION_APPLICATION_ID_OFFSET (0) +#define EMBER_AF_GP_NOTIFICATION_OPTION_ALSO_UNICAST (8) +#define EMBER_AF_GP_NOTIFICATION_OPTION_ALSO_UNICAST_OFFSET (3) +#define EMBER_AF_GP_NOTIFICATION_OPTION_ALSO_DERIVED_GROUP (16) +#define EMBER_AF_GP_NOTIFICATION_OPTION_ALSO_DERIVED_GROUP_OFFSET (4) +#define EMBER_AF_GP_NOTIFICATION_OPTION_ALSO_COMMISSIONED_GROUP (32) +#define EMBER_AF_GP_NOTIFICATION_OPTION_ALSO_COMMISSIONED_GROUP_OFFSET (5) +#define EMBER_AF_GP_NOTIFICATION_OPTION_SECURITY_LEVEL (192) +#define EMBER_AF_GP_NOTIFICATION_OPTION_SECURITY_LEVEL_OFFSET (6) +#define EMBER_AF_GP_NOTIFICATION_OPTION_SECURITY_KEY_TYPE (1792) +#define EMBER_AF_GP_NOTIFICATION_OPTION_SECURITY_KEY_TYPE_OFFSET (8) +#define EMBER_AF_GP_NOTIFICATION_OPTION_RX_AFTER_TX (2048) +#define EMBER_AF_GP_NOTIFICATION_OPTION_RX_AFTER_TX_OFFSET (11) +#define EMBER_AF_GP_NOTIFICATION_OPTION_GP_TX_QUEUE_FULL (4096) +#define EMBER_AF_GP_NOTIFICATION_OPTION_GP_TX_QUEUE_FULL_OFFSET (12) +#define EMBER_AF_GP_NOTIFICATION_OPTION_BIDIRECTIONAL_CAPABILITY (8192) +#define EMBER_AF_GP_NOTIFICATION_OPTION_BIDIRECTIONAL_CAPABILITY_OFFSET (13) +#define EMBER_AF_GP_NOTIFICATION_OPTION_PROXY_INFO_PRESENT (16384) +#define EMBER_AF_GP_NOTIFICATION_OPTION_PROXY_INFO_PRESENT_OFFSET (14) +#define EMBER_AF_GP_NOTIFICATION_OPTION_RESERVED (32768) +#define EMBER_AF_GP_NOTIFICATION_OPTION_RESERVED_OFFSET (15) +#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_APPLICATION_ID (7) +#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_APPLICATION_ID_OFFSET (0) +#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_FIRST_TO_FORWARD (8) +#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_FIRST_TO_FORWARD_OFFSET (3) +#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_NO_PAIRING (16) +#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_NO_PAIRING_OFFSET (4) +#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_RESERVED (224) +#define EMBER_AF_GP_NOTIFICATION_RESPONSE_OPTION_RESERVED_OFFSET (5) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_ACTIONS_ACTION (7) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_ACTIONS_ACTION_OFFSET (0) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_ACTIONS_SEND_GP_PAIRING (8) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_ACTIONS_SEND_GP_PAIRING_OFFSET (3) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_ACTIONS_RESERVED (240) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_ACTIONS_RESERVED_OFFSET (4) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_APPLICATION_ID (7) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_APPLICATION_ID_OFFSET (0) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_COMMUNICATION_MODE (24) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_COMMUNICATION_MODE_OFFSET (3) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_SEQUENCE_NUMBER_CAPABILITIES (32) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_SEQUENCE_NUMBER_CAPABILITIES_OFFSET (5) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_RX_ON_CAPABILITY (64) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_RX_ON_CAPABILITY_OFFSET (6) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_FIXED_LOCATION (128) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_FIXED_LOCATION_OFFSET (7) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_ASSIGNED_ALIAS (256) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_ASSIGNED_ALIAS_OFFSET (8) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_SECURITY_USE (512) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_SECURITY_USE_OFFSET (9) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_APPLICATION_INFORMATION_PRESENT (1024) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_APPLICATION_INFORMATION_PRESENT_OFFSET (10) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_RESERVED (63488) +#define EMBER_AF_GP_PAIRING_CONFIGURATION_OPTION_RESERVED_OFFSET (11) +#define EMBER_AF_GP_PAIRING_OPTION_APPLICATION_ID (7) +#define EMBER_AF_GP_PAIRING_OPTION_APPLICATION_ID_OFFSET (0) +#define EMBER_AF_GP_PAIRING_OPTION_ADD_SINK (8) +#define EMBER_AF_GP_PAIRING_OPTION_ADD_SINK_OFFSET (3) +#define EMBER_AF_GP_PAIRING_OPTION_REMOVE_GPD (16) +#define EMBER_AF_GP_PAIRING_OPTION_REMOVE_GPD_OFFSET (4) +#define EMBER_AF_GP_PAIRING_OPTION_COMMUNICATION_MODE (96) +#define EMBER_AF_GP_PAIRING_OPTION_COMMUNICATION_MODE_OFFSET (5) +#define EMBER_AF_GP_PAIRING_OPTION_GPD_FIXED (128) +#define EMBER_AF_GP_PAIRING_OPTION_GPD_FIXED_OFFSET (7) +#define EMBER_AF_GP_PAIRING_OPTION_GPD_MAC_SEQUENCE_NUMBER_CAPABILITIES (256) +#define EMBER_AF_GP_PAIRING_OPTION_GPD_MAC_SEQUENCE_NUMBER_CAPABILITIES_OFFSET (8) +#define EMBER_AF_GP_PAIRING_OPTION_SECURITY_LEVEL (1536) +#define EMBER_AF_GP_PAIRING_OPTION_SECURITY_LEVEL_OFFSET (9) +#define EMBER_AF_GP_PAIRING_OPTION_SECURITY_KEY_TYPE (14336) +#define EMBER_AF_GP_PAIRING_OPTION_SECURITY_KEY_TYPE_OFFSET (11) +#define EMBER_AF_GP_PAIRING_OPTION_GPD_SECURITY_FRAME_COUNTER_PRESENT (16384) +#define EMBER_AF_GP_PAIRING_OPTION_GPD_SECURITY_FRAME_COUNTER_PRESENT_OFFSET (14) +#define EMBER_AF_GP_PAIRING_OPTION_GPD_SECURITY_KEY_PRESENT (32768) +#define EMBER_AF_GP_PAIRING_OPTION_GPD_SECURITY_KEY_PRESENT_OFFSET (15) +#define EMBER_AF_GP_PAIRING_OPTION_ASSIGNED_ALIAS_PRESENT (65536) +#define EMBER_AF_GP_PAIRING_OPTION_ASSIGNED_ALIAS_PRESENT_OFFSET (16) +#define EMBER_AF_GP_PAIRING_OPTION_GROUPCAST_RADIUS_PRESENT (131072) +#define EMBER_AF_GP_PAIRING_OPTION_GROUPCAST_RADIUS_PRESENT_OFFSET (17) +#define EMBER_AF_GP_PAIRING_OPTION_RESERVED (16515072) +#define EMBER_AF_GP_PAIRING_OPTION_RESERVED_OFFSET (18) +#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_APPLICATION_ID (7) +#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_APPLICATION_ID_OFFSET (0) +#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_UNICAST_SINKS (8) +#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_UNICAST_SINKS_OFFSET (3) +#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_DERIVED_GROUPCAST_SINKS (16) +#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_DERIVED_GROUPCAST_SINKS_OFFSET (4) +#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_COMMISSIONED_GROUPCAST_SINKS (32) +#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_COMMISSIONED_GROUPCAST_SINKS_OFFSET (5) +#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_GPD_SECURITY_FRAME_COUNTER (64) +#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_GPD_SECURITY_FRAME_COUNTER_OFFSET (6) +#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_GPD_SECURITY_KEY (128) +#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_REQUEST_GPD_SECURITY_KEY_OFFSET (7) +#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_RESERVED (65280) +#define EMBER_AF_GP_PAIRING_SEARCH_OPTION_RESERVED_OFFSET (8) +#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_EXIT_MODE_ON_COMMISSIONING_WINDOW_EXPIRATION (2) +#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_EXIT_MODE_ON_COMMISSIONING_WINDOW_EXPIRATION_OFFSET (1) +#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_EXIT_MODE_ON_FIRST_PAIRING_SUCCESS (4) +#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_EXIT_MODE_ON_FIRST_PAIRING_SUCCESS_OFFSET (2) +#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_EXIT_MODE_ON_GP_PROXY_COMMISSIONING_MODE_EXIT (8) +#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_EXIT_MODE_ON_GP_PROXY_COMMISSIONING_MODE_EXIT_OFFSET (3) +#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_ACTION (1) +#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_ACTION_OFFSET (0) +#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_COMMISSIONING_WINDOW_PRESENT (2) +#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_COMMISSIONING_WINDOW_PRESENT_OFFSET (1) +#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_EXIT_MODE (12) +#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_EXIT_MODE_OFFSET (2) +#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_CHANNEL_PRESENT (16) +#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_CHANNEL_PRESENT_OFFSET (4) +#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_UNICAST_COMMUNICATION (32) +#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_UNICAST_COMMUNICATION_OFFSET (5) +#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_RESERVED (192) +#define EMBER_AF_GP_PROXY_COMMISSIONING_MODE_OPTION_RESERVED_OFFSET (6) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_APPLICATION_ID (7) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_APPLICATION_ID_OFFSET (0) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_ENTRY_ACTIVE (8) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_ENTRY_ACTIVE_OFFSET (3) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_ENTRY_VALID (16) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_ENTRY_VALID_OFFSET (4) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_SEQUENCE_NUMBER_CAP (32) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_SEQUENCE_NUMBER_CAP_OFFSET (5) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_LIGHTWEIGHT_UNICAST_GPS (64) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_LIGHTWEIGHT_UNICAST_GPS_OFFSET (6) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_DERIVED_GROUP_GPS (128) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_DERIVED_GROUP_GPS_OFFSET (7) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_COMMISIONED_GROUP_GPS (256) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_COMMISIONED_GROUP_GPS_OFFSET (8) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_FIRST_TO_FORWARD (512) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_FIRST_TO_FORWARD_OFFSET (9) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_IN_RANGE (1024) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_IN_RANGE_OFFSET (10) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_GPD_FIXED (2048) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_GPD_FIXED_OFFSET (11) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_HAS_ALL_UNICAST_ROUTES (4096) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_HAS_ALL_UNICAST_ROUTES_OFFSET (12) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_ASSIGNED_ALIAS (8192) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_ASSIGNED_ALIAS_OFFSET (13) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_SECURITY_USE (16384) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_SECURITY_USE_OFFSET (14) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_EXTENSION (32768) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_EXTENSION_OFFSET (15) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_FULL_UNICAST_GPS (65536) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_OPTIONS_FULL_UNICAST_GPS_OFFSET (16) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_LEVEL (3) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_LEVEL_OFFSET (0) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_KEY_TYPE (28) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_KEY_TYPE_OFFSET (2) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_SECURITY_OPTIONS_RESERVED (224) +#define EMBER_AF_GP_PROXY_TABLE_ENTRY_SECURITY_OPTIONS_RESERVED_OFFSET (5) +#define EMBER_AF_GP_PROXY_TABLE_REQUEST_OPTIONS_APPLICATION_ID (7) +#define EMBER_AF_GP_PROXY_TABLE_REQUEST_OPTIONS_APPLICATION_ID_OFFSET (0) +#define EMBER_AF_GP_PROXY_TABLE_REQUEST_OPTIONS_REQUEST_TYPE (24) +#define EMBER_AF_GP_PROXY_TABLE_REQUEST_OPTIONS_REQUEST_TYPE_OFFSET (3) +#define EMBER_AF_GP_PROXY_TABLE_REQUEST_OPTIONS_RESERVED (224) +#define EMBER_AF_GP_PROXY_TABLE_REQUEST_OPTIONS_RESERVED_OFFSET (5) +#define EMBER_AF_GP_RESPONSE_OPTION_APPLICATION_ID (7) +#define EMBER_AF_GP_RESPONSE_OPTION_APPLICATION_ID_OFFSET (0) +#define EMBER_AF_GP_RESPONSE_OPTION_TRANSMIT_ON_END_POINT_MATCH (8) +#define EMBER_AF_GP_RESPONSE_OPTION_TRANSMIT_ON_END_POINT_MATCH_OFFSET (3) +#define EMBER_AF_GP_RESPONSE_OPTION_RESERVED (240) +#define EMBER_AF_GP_RESPONSE_OPTION_RESERVED_OFFSET (4) +#define EMBER_AF_GP_RESPONSE_TEMP_MASTER_TX_CHANNEL_TRANSMIT_CHANNEL (15) +#define EMBER_AF_GP_RESPONSE_TEMP_MASTER_TX_CHANNEL_TRANSMIT_CHANNEL_OFFSET (0) +#define EMBER_AF_GP_RESPONSE_TEMP_MASTER_TX_CHANNEL_RESERVED (240) +#define EMBER_AF_GP_RESPONSE_TEMP_MASTER_TX_CHANNEL_RESERVED_OFFSET (4) +#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_ON_COMMISSIONING_WINDOW_EXPIRATION (1) +#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_ON_COMMISSIONING_WINDOW_EXPIRATION_OFFSET (0) +#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_ON_FIRST_PAIRING_SUCCESS (2) +#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_ON_FIRST_PAIRING_SUCCESS_OFFSET (1) +#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_ON_GP_PROXY_COMMISSIONING_MODE_EXIT (4) +#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_ON_GP_PROXY_COMMISSIONING_MODE_EXIT_OFFSET (2) +#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_RESERVED (248) +#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_EXIT_MODE_RESERVED_OFFSET (3) +#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_ACTION (1) +#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_ACTION_OFFSET (0) +#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_INVOLVE_GPM_IN_SECURITY (2) +#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_INVOLVE_GPM_IN_SECURITY_OFFSET (1) +#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_INVOLVE_GPM_IN_PAIRING (4) +#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_INVOLVE_GPM_IN_PAIRING_OFFSET (2) +#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_INVOLVE_PROXIES (8) +#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_INVOLVE_PROXIES_OFFSET (3) +#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_RESERVED (240) +#define EMBER_AF_GP_SINK_COMMISSIONING_MODE_OPTIONS_RESERVED_OFFSET (4) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_APPLICATION_ID (7) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_APPLICATION_ID_OFFSET (0) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_COMMUNICATION_MODE (24) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_COMMUNICATION_MODE_OFFSET (3) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_SEQUENCE_NUM_CAPABILITIES (32) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_SEQUENCE_NUM_CAPABILITIES_OFFSET (5) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_RX_ON_CAPABILITY (64) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_RX_ON_CAPABILITY_OFFSET (6) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_FIXED_LOCATION (128) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_FIXED_LOCATION_OFFSET (7) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_ASSIGNED_ALIAS (256) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_ASSIGNED_ALIAS_OFFSET (8) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_SECURITY_USE (512) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_SECURITY_USE_OFFSET (9) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_RESERVED (64512) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_OPTIONS_RESERVED_OFFSET (10) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_LEVEL (3) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_LEVEL_OFFSET (0) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_KEY_TYPE (28) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_SECURITY_OPTIONS_SECURITY_KEY_TYPE_OFFSET (2) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_SECURITY_OPTIONS_RESERVED (224) +#define EMBER_AF_GP_SINK_TABLE_ENTRY_SECURITY_OPTIONS_RESERVED_OFFSET (5) +#define EMBER_AF_GP_SINK_TABLE_REQUEST_OPTIONS_APPLICATION_ID (7) +#define EMBER_AF_GP_SINK_TABLE_REQUEST_OPTIONS_APPLICATION_ID_OFFSET (0) +#define EMBER_AF_GP_SINK_TABLE_REQUEST_OPTIONS_REQUEST_TYPE (24) +#define EMBER_AF_GP_SINK_TABLE_REQUEST_OPTIONS_REQUEST_TYPE_OFFSET (3) +#define EMBER_AF_GP_SINK_TABLE_REQUEST_OPTIONS_RESERVED (224) +#define EMBER_AF_GP_SINK_TABLE_REQUEST_OPTIONS_RESERVED_OFFSET (5) +#define EMBER_AF_GP_TRANSLATION_TABLE_RESPONSE_OPTION_APPLICATION_ID (7) +#define EMBER_AF_GP_TRANSLATION_TABLE_RESPONSE_OPTION_APPLICATION_ID_OFFSET (0) +#define EMBER_AF_GP_TRANSLATION_TABLE_RESPONSE_OPTION_ADDITIONAL_INFORMATION_BLOCK_PRESENT (8) +#define EMBER_AF_GP_TRANSLATION_TABLE_RESPONSE_OPTION_ADDITIONAL_INFORMATION_BLOCK_PRESENT_OFFSET (3) +#define EMBER_AF_GP_TRANSLATION_TABLE_RESPONSE_OPTION_RESERVED (240) +#define EMBER_AF_GP_TRANSLATION_TABLE_RESPONSE_OPTION_RESERVED_OFFSET (4) +#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_GPD_ID (1) +#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_GPD_ID_OFFSET (0) +#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_CMD_ID (2) +#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_CMD_ID_OFFSET (1) +#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_PAYLOAD (4) +#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_PAYLOAD_OFFSET (2) +#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_ZB_ENDPOINT (8) +#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_ZB_ENDPOINT_OFFSET (3) +#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_ADDITIONAL_INFO_BLOCK (16) +#define EMBER_AF_GP_TRANSLATION_TABLE_SCAN_LEVEL_ADDITIONAL_INFO_BLOCK_OFFSET (4) +#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_APPLICATION_ID (7) +#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_APPLICATION_ID_OFFSET (0) +#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_ACTION (24) +#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_ACTION_OFFSET (3) +#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_NUMBER_OF_TRANSLATIONS (224) +#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_NUMBER_OF_TRANSLATIONS_OFFSET (5) +#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_ADDITIONAL_INFORMATION_BLOCK_PRESENT (256) +#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_ADDITIONAL_INFORMATION_BLOCK_PRESENT_OFFSET (8) +#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_RESERVED (65024) +#define EMBER_AF_GP_TRANSLATION_TABLE_UPDATE_OPTION_RESERVED_OFFSET (9) +#define EMBER_AF_GP_TUNNELING_STOP_OPTION_APPLICATION_ID (7) +#define EMBER_AF_GP_TUNNELING_STOP_OPTION_APPLICATION_ID_OFFSET (0) +#define EMBER_AF_GP_TUNNELING_STOP_OPTION_ALSO_DERIVED_GROUP (8) +#define EMBER_AF_GP_TUNNELING_STOP_OPTION_ALSO_DERIVED_GROUP_OFFSET (3) +#define EMBER_AF_GP_TUNNELING_STOP_OPTION_ALSO_COMMISSIONED_GROUP (16) +#define EMBER_AF_GP_TUNNELING_STOP_OPTION_ALSO_COMMISSIONED_GROUP_OFFSET (4) +#define EMBER_AF_GP_TUNNELING_STOP_OPTION_RESERVED (224) +#define EMBER_AF_GP_TUNNELING_STOP_OPTION_RESERVED_OFFSET (5) +#define EMBER_AF_IAS_ZONE_STATUS_ALARM1 (1) +#define EMBER_AF_IAS_ZONE_STATUS_ALARM1_OFFSET (0) +#define EMBER_AF_IAS_ZONE_STATUS_ALARM2 (2) +#define EMBER_AF_IAS_ZONE_STATUS_ALARM2_OFFSET (1) +#define EMBER_AF_IAS_ZONE_STATUS_TAMPER (4) +#define EMBER_AF_IAS_ZONE_STATUS_TAMPER_OFFSET (2) +#define EMBER_AF_IAS_ZONE_STATUS_BATTERY (8) +#define EMBER_AF_IAS_ZONE_STATUS_BATTERY_OFFSET (3) +#define EMBER_AF_IAS_ZONE_STATUS_SUPERVISION_REPORTS (16) +#define EMBER_AF_IAS_ZONE_STATUS_SUPERVISION_REPORTS_OFFSET (4) +#define EMBER_AF_IAS_ZONE_STATUS_RESTORE_REPORTS (32) +#define EMBER_AF_IAS_ZONE_STATUS_RESTORE_REPORTS_OFFSET (5) +#define EMBER_AF_IAS_ZONE_STATUS_TROUBLE (64) +#define EMBER_AF_IAS_ZONE_STATUS_TROUBLE_OFFSET (6) +#define EMBER_AF_IAS_ZONE_STATUS_AC (128) +#define EMBER_AF_IAS_ZONE_STATUS_AC_OFFSET (7) +#define EMBER_AF_IAS_ZONE_STATUS_TEST (256) +#define EMBER_AF_IAS_ZONE_STATUS_TEST_OFFSET (8) +#define EMBER_AF_IAS_ZONE_STATUS_BATTERY_DEFECT (512) +#define EMBER_AF_IAS_ZONE_STATUS_BATTERY_DEFECT_OFFSET (9) +#define EMBER_AF_KEY_BITMASK_DEVELOPMENT (1) +#define EMBER_AF_KEY_BITMASK_DEVELOPMENT_OFFSET (0) +#define EMBER_AF_KEY_BITMASK_MASTER (16) +#define EMBER_AF_KEY_BITMASK_MASTER_OFFSET (4) +#define EMBER_AF_KEY_BITMASK_CERTIFICATION (32768) +#define EMBER_AF_KEY_BITMASK_CERTIFICATION_OFFSET (15) +#define EMBER_AF_LAMP_ALARM_MODE_LAMP_BURN_HOURS (1) +#define EMBER_AF_LAMP_ALARM_MODE_LAMP_BURN_HOURS_OFFSET (0) +#define EMBER_AF_LOAD_CONTROL_STATE_RELAY_OPEN_OR_CONSUMPTION_INTERUPTED (1) +#define EMBER_AF_LOAD_CONTROL_STATE_RELAY_OPEN_OR_CONSUMPTION_INTERUPTED_OFFSET (0) +#define EMBER_AF_LOAD_CONTROL_STATE_EVENT_IN_PROGRESS (2) +#define EMBER_AF_LOAD_CONTROL_STATE_EVENT_IN_PROGRESS_OFFSET (1) +#define EMBER_AF_LOAD_CONTROL_STATE_POWER_STABILIZING (4) +#define EMBER_AF_LOAD_CONTROL_STATE_POWER_STABILIZING_OFFSET (2) +#define EMBER_AF_LOAD_CONTROL_STATE_OTHER_LOAD_REDUCTION (8) +#define EMBER_AF_LOAD_CONTROL_STATE_OTHER_LOAD_REDUCTION_OFFSET (3) +#define EMBER_AF_LOAD_CONTROL_STATE_CURRENT_FLOW_OR_CONSUMING_COMMODITY (16) +#define EMBER_AF_LOAD_CONTROL_STATE_CURRENT_FLOW_OR_CONSUMING_COMMODITY_OFFSET (4) +#define EMBER_AF_LOAD_CONTROL_STATE_LOAD_CALL (32) +#define EMBER_AF_LOAD_CONTROL_STATE_LOAD_CALL_OFFSET (5) +#define EMBER_AF_LOCATION_TYPE_ABSOLUTE (1) +#define EMBER_AF_LOCATION_TYPE_ABSOLUTE_OFFSET (0) +#define EMBER_AF_LOCATION_TYPE_2_D (2) +#define EMBER_AF_LOCATION_TYPE_2_D_OFFSET (1) +#define EMBER_AF_LOCATION_TYPE_COORDINATE_SYSTEM (12) +#define EMBER_AF_LOCATION_TYPE_COORDINATE_SYSTEM_OFFSET (2) +#define EMBER_AF_MAINS_ALARM_MASK_VOLTAGE_TOO_LOW (1) +#define EMBER_AF_MAINS_ALARM_MASK_VOLTAGE_TOO_LOW_OFFSET (0) +#define EMBER_AF_MAINS_ALARM_MASK_VOLTAGE_TOO_HIGH (2) +#define EMBER_AF_MAINS_ALARM_MASK_VOLTAGE_TOO_HIGH_OFFSET (1) +#define EMBER_AF_MAINS_ALARM_MASK_MAINS_POWER_SUPPLY_LOST (4) +#define EMBER_AF_MAINS_ALARM_MASK_MAINS_POWER_SUPPLY_LOST_OFFSET (2) +#define EMBER_AF_MESSAGING_CONFIRMATION_CONTROL_NO_RETURNED (1) +#define EMBER_AF_MESSAGING_CONFIRMATION_CONTROL_NO_RETURNED_OFFSET (0) +#define EMBER_AF_MESSAGING_CONFIRMATION_CONTROL_YES_RETURNED (2) +#define EMBER_AF_MESSAGING_CONFIRMATION_CONTROL_YES_RETURNED_OFFSET (1) +#define EMBER_AF_MESSAGING_CONTROL_MASK_TRANS_MECHANISM (3) +#define EMBER_AF_MESSAGING_CONTROL_MASK_TRANS_MECHANISM_OFFSET (0) +#define EMBER_AF_MESSAGING_CONTROL_MASK_MESSAGE_URGENCY (12) +#define EMBER_AF_MESSAGING_CONTROL_MASK_MESSAGE_URGENCY_OFFSET (2) +#define EMBER_AF_MESSAGING_CONTROL_MASK_ENHANCED_CONFIRMATION_REQUEST (32) +#define EMBER_AF_MESSAGING_CONTROL_MASK_ENHANCED_CONFIRMATION_REQUEST_OFFSET (5) +#define EMBER_AF_MESSAGING_CONTROL_MASK_MESSAGE_CONFIRMATION (128) +#define EMBER_AF_MESSAGING_CONTROL_MASK_MESSAGE_CONFIRMATION_OFFSET (7) +#define EMBER_AF_MESSAGING_EXTENDED_CONTROL_MASK_MESSAGE_CONFIRMATION_STATUS (1) +#define EMBER_AF_MESSAGING_EXTENDED_CONTROL_MASK_MESSAGE_CONFIRMATION_STATUS_OFFSET (0) +#define EMBER_AF_METERING_EXTENDED_STATUS_METER_COVER_REMOVED (1) +#define EMBER_AF_METERING_EXTENDED_STATUS_METER_COVER_REMOVED_OFFSET (0) +#define EMBER_AF_METERING_EXTENDED_STATUS_STRONG_MAGNETIC_FIELD_DETECTED (2) +#define EMBER_AF_METERING_EXTENDED_STATUS_STRONG_MAGNETIC_FIELD_DETECTED_OFFSET (1) +#define EMBER_AF_METERING_EXTENDED_STATUS_BATTERY_FAILURE (4) +#define EMBER_AF_METERING_EXTENDED_STATUS_BATTERY_FAILURE_OFFSET (2) +#define EMBER_AF_METERING_EXTENDED_STATUS_PROGRAM_MEMORY_ERROR (8) +#define EMBER_AF_METERING_EXTENDED_STATUS_PROGRAM_MEMORY_ERROR_OFFSET (3) +#define EMBER_AF_METERING_EXTENDED_STATUS_RAM_ERROR (16) +#define EMBER_AF_METERING_EXTENDED_STATUS_RAM_ERROR_OFFSET (4) +#define EMBER_AF_METERING_EXTENDED_STATUS_NV_MEMORY_ERROR (32) +#define EMBER_AF_METERING_EXTENDED_STATUS_NV_MEMORY_ERROR_OFFSET (5) +#define EMBER_AF_METERING_EXTENDED_STATUS_MEASUREMENT_SYSTEM_ERROR (64) +#define EMBER_AF_METERING_EXTENDED_STATUS_MEASUREMENT_SYSTEM_ERROR_OFFSET (6) +#define EMBER_AF_METERING_EXTENDED_STATUS_WATCHDOG_ERROR (128) +#define EMBER_AF_METERING_EXTENDED_STATUS_WATCHDOG_ERROR_OFFSET (7) +#define EMBER_AF_METERING_EXTENDED_STATUS_SUPPLY_DISCONNECT_FAILURE (256) +#define EMBER_AF_METERING_EXTENDED_STATUS_SUPPLY_DISCONNECT_FAILURE_OFFSET (8) +#define EMBER_AF_METERING_EXTENDED_STATUS_SUPPLY_CONNECT_FAILURE (512) +#define EMBER_AF_METERING_EXTENDED_STATUS_SUPPLY_CONNECT_FAILURE_OFFSET (9) +#define EMBER_AF_METERING_EXTENDED_STATUS_MEASUREMENT_SW_CHANGED_TAMPERED (1024) +#define EMBER_AF_METERING_EXTENDED_STATUS_MEASUREMENT_SW_CHANGED_TAMPERED_OFFSET (10) +#define EMBER_AF_METERING_EXTENDED_STATUS_CLOCK_INVALID (2048) +#define EMBER_AF_METERING_EXTENDED_STATUS_CLOCK_INVALID_OFFSET (11) +#define EMBER_AF_METERING_EXTENDED_STATUS_TEMPERATURE_EXCEEDED (4096) +#define EMBER_AF_METERING_EXTENDED_STATUS_TEMPERATURE_EXCEEDED_OFFSET (12) +#define EMBER_AF_METERING_EXTENDED_STATUS_MOISTURE_DETECTED (8192) +#define EMBER_AF_METERING_EXTENDED_STATUS_MOISTURE_DETECTED_OFFSET (13) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_TERMINAL_COVER_REMOVED (16777216) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_TERMINAL_COVER_REMOVED_OFFSET (24) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_INCORRECT_POLARITY (33554432) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_INCORRECT_POLARITY_OFFSET (25) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_CURRENT_WITH_NO_VOLTAGE (67108864) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_CURRENT_WITH_NO_VOLTAGE_OFFSET (26) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_LIMIT_THRESHOLD_EXCEEDED (134217728) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_LIMIT_THRESHOLD_EXCEEDED_OFFSET (27) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_UNDER_VOLTAGE (268435456) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_UNDER_VOLTAGE_OFFSET (28) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_OVER_VOLTAGE (536870912) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_OVER_VOLTAGE_OFFSET (29) +#define EMBER_AF_METERING_EXTENDED_STATUS_GAS_METER_BATTERY_COVER_REMOVED (16777216) +#define EMBER_AF_METERING_EXTENDED_STATUS_GAS_METER_BATTERY_COVER_REMOVED_OFFSET (24) +#define EMBER_AF_METERING_EXTENDED_STATUS_GAS_METER_TILT_TAMPER (33554432) +#define EMBER_AF_METERING_EXTENDED_STATUS_GAS_METER_TILT_TAMPER_OFFSET (25) +#define EMBER_AF_METERING_EXTENDED_STATUS_GAS_METER_EXCESS_FLOW (67108864) +#define EMBER_AF_METERING_EXTENDED_STATUS_GAS_METER_EXCESS_FLOW_OFFSET (26) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVER_POWER (1073741824) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVER_POWER_OFFSET (30) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVER_VOLTAGE (2147483648) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVER_VOLTAGE_OFFSET (31) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_REMOTE_LOAD_CONTROL (3221225472) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_REMOTE_LOAD_CONTROL_OFFSET (30) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_BY_OTHER_REMOTE_COMMAND (4294967296) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_BY_OTHER_REMOTE_COMMAND_OFFSET (32) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVERHEATING_SHORT_CIRCUIT (5368709120) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVERHEATING_SHORT_CIRCUIT_OFFSET (30) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVERHEATING_OTHER (6442450944) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_SERVICE_DISCONNECTION_REASON_OFF_DUE_TO_OVERHEATING_OTHER_OFFSET (31) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_BI_DIRECTIONAL_OPERATION (17179869184) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_BI_DIRECTIONAL_OPERATION_OFFSET (34) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_ACTIVE_POWER_RECEIVED (34359738368) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_ACTIVE_POWER_RECEIVED_OFFSET (35) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_MODE_OF_OPERATION (68719476736) +#define EMBER_AF_METERING_EXTENDED_STATUS_ELECTRICITY_METER_MODE_OF_OPERATION_OFFSET (36) +#define EMBER_AF_METERING_STATUS_ELECTRICITY_CHECK_METER (1) +#define EMBER_AF_METERING_STATUS_ELECTRICITY_CHECK_METER_OFFSET (0) +#define EMBER_AF_METERING_STATUS_ELECTRICITY_LOW_BATTERY (2) +#define EMBER_AF_METERING_STATUS_ELECTRICITY_LOW_BATTERY_OFFSET (1) +#define EMBER_AF_METERING_STATUS_ELECTRICITY_TAMPER_DETECT (4) +#define EMBER_AF_METERING_STATUS_ELECTRICITY_TAMPER_DETECT_OFFSET (2) +#define EMBER_AF_METERING_STATUS_ELECTRICITY_POWER_FAILURE (8) +#define EMBER_AF_METERING_STATUS_ELECTRICITY_POWER_FAILURE_OFFSET (3) +#define EMBER_AF_METERING_STATUS_ELECTRICITY_POWER_QUALITY (16) +#define EMBER_AF_METERING_STATUS_ELECTRICITY_POWER_QUALITY_OFFSET (4) +#define EMBER_AF_METERING_STATUS_ELECTRICITY_LEAK_DETECT (32) +#define EMBER_AF_METERING_STATUS_ELECTRICITY_LEAK_DETECT_OFFSET (5) +#define EMBER_AF_METERING_STATUS_ELECTRICITY_SERVICE_DISCONNECT_OPEN (64) +#define EMBER_AF_METERING_STATUS_ELECTRICITY_SERVICE_DISCONNECT_OPEN_OFFSET (6) +#define EMBER_AF_METERING_STATUS_ELECTRICITY_RESERVED (128) +#define EMBER_AF_METERING_STATUS_ELECTRICITY_RESERVED_OFFSET (7) +#define EMBER_AF_METERING_STATUS_GAS_CHECK_METER (1) +#define EMBER_AF_METERING_STATUS_GAS_CHECK_METER_OFFSET (0) +#define EMBER_AF_METERING_STATUS_GAS_LOW_BATTERY (2) +#define EMBER_AF_METERING_STATUS_GAS_LOW_BATTERY_OFFSET (1) +#define EMBER_AF_METERING_STATUS_GAS_TAMPER_DETECT (4) +#define EMBER_AF_METERING_STATUS_GAS_TAMPER_DETECT_OFFSET (2) +#define EMBER_AF_METERING_STATUS_GAS_NOT_DEFINED (8) +#define EMBER_AF_METERING_STATUS_GAS_NOT_DEFINED_OFFSET (3) +#define EMBER_AF_METERING_STATUS_GAS_LOW_PRESSURE (16) +#define EMBER_AF_METERING_STATUS_GAS_LOW_PRESSURE_OFFSET (4) +#define EMBER_AF_METERING_STATUS_GAS_LEAK_DETECT (32) +#define EMBER_AF_METERING_STATUS_GAS_LEAK_DETECT_OFFSET (5) +#define EMBER_AF_METERING_STATUS_GAS_SERVICE_DISCONNECT (64) +#define EMBER_AF_METERING_STATUS_GAS_SERVICE_DISCONNECT_OFFSET (6) +#define EMBER_AF_METERING_STATUS_GAS_REVERSE_FLOW (128) +#define EMBER_AF_METERING_STATUS_GAS_REVERSE_FLOW_OFFSET (7) +#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_CHECK_METER (1) +#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_CHECK_METER_OFFSET (0) +#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_LOW_BATTERY (2) +#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_LOW_BATTERY_OFFSET (1) +#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_TAMPER_DETECT (4) +#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_TAMPER_DETECT_OFFSET (2) +#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_TEMPERATURE_SENSOR (8) +#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_TEMPERATURE_SENSOR_OFFSET (3) +#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_BURST_DETECT (16) +#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_BURST_DETECT_OFFSET (4) +#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_LEAK_DETECT (32) +#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_LEAK_DETECT_OFFSET (5) +#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_SERVICE_DISCONNECT (64) +#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_SERVICE_DISCONNECT_OFFSET (6) +#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_FLOW_SENSOR (128) +#define EMBER_AF_METERING_STATUS_HEAT_AND_COOLING_FLOW_SENSOR_OFFSET (7) +#define EMBER_AF_METERING_STATUS_WATER_CHECK_METER (1) +#define EMBER_AF_METERING_STATUS_WATER_CHECK_METER_OFFSET (0) +#define EMBER_AF_METERING_STATUS_WATER_LOW_BATTERY (2) +#define EMBER_AF_METERING_STATUS_WATER_LOW_BATTERY_OFFSET (1) +#define EMBER_AF_METERING_STATUS_WATER_TAMPER_DETECT (4) +#define EMBER_AF_METERING_STATUS_WATER_TAMPER_DETECT_OFFSET (2) +#define EMBER_AF_METERING_STATUS_WATER_PIPE_EMPTY (8) +#define EMBER_AF_METERING_STATUS_WATER_PIPE_EMPTY_OFFSET (3) +#define EMBER_AF_METERING_STATUS_WATER_LOW_PRESSURE (16) +#define EMBER_AF_METERING_STATUS_WATER_LOW_PRESSURE_OFFSET (4) +#define EMBER_AF_METERING_STATUS_WATER_LEAK_DETECT (32) +#define EMBER_AF_METERING_STATUS_WATER_LEAK_DETECT_OFFSET (5) +#define EMBER_AF_METERING_STATUS_WATER_SERVICE_DISCONNECT (64) +#define EMBER_AF_METERING_STATUS_WATER_SERVICE_DISCONNECT_OFFSET (6) +#define EMBER_AF_METERING_STATUS_WATER_REVERSE_FLOW (128) +#define EMBER_AF_METERING_STATUS_WATER_REVERSE_FLOW_OFFSET (7) +#define EMBER_AF_MODE_FOR_SEQUENCE_HEAT_SETPOINT_FIELD_PRESENT (1) +#define EMBER_AF_MODE_FOR_SEQUENCE_HEAT_SETPOINT_FIELD_PRESENT_OFFSET (0) +#define EMBER_AF_MODE_FOR_SEQUENCE_COOL_SETPOINT_FIELD_PRESENT (2) +#define EMBER_AF_MODE_FOR_SEQUENCE_COOL_SETPOINT_FIELD_PRESENT_OFFSET (1) +#define EMBER_AF_NUMBER_OF_EVENTS_LOG_PAYLOAD_CONTROL_LOG_PAYLOAD_CONTROL (15) +#define EMBER_AF_NUMBER_OF_EVENTS_LOG_PAYLOAD_CONTROL_LOG_PAYLOAD_CONTROL_OFFSET (0) +#define EMBER_AF_NUMBER_OF_EVENTS_LOG_PAYLOAD_CONTROL_NUMBER_OF_EVENTS (240) +#define EMBER_AF_NUMBER_OF_EVENTS_LOG_PAYLOAD_CONTROL_NUMBER_OF_EVENTS_OFFSET (4) +#define EMBER_AF_OCCUPANCY_OCCUPIED (1) +#define EMBER_AF_OCCUPANCY_OCCUPIED_OFFSET (0) +#define EMBER_AF_OCCUPANCY_SENSOR_TYPE_BITMAP_PIR (1) +#define EMBER_AF_OCCUPANCY_SENSOR_TYPE_BITMAP_PIR_OFFSET (0) +#define EMBER_AF_OCCUPANCY_SENSOR_TYPE_BITMAP_ULTRASONIC (2) +#define EMBER_AF_OCCUPANCY_SENSOR_TYPE_BITMAP_ULTRASONIC_OFFSET (1) +#define EMBER_AF_OCCUPANCY_SENSOR_TYPE_BITMAP_PHYSICAL_CONTACT (4) +#define EMBER_AF_OCCUPANCY_SENSOR_TYPE_BITMAP_PHYSICAL_CONTACT_OFFSET (2) +#define EMBER_AF_ON_OFF_CONTROL_ACCEPT_ONLY_WHEN_ON (1) +#define EMBER_AF_ON_OFF_CONTROL_ACCEPT_ONLY_WHEN_ON_OFFSET (0) +#define EMBER_AF_ORIGINATOR_ID_SUPPLY_CONTROL_BITS_ACKNOWLEDGE_REQUIRED (1) +#define EMBER_AF_ORIGINATOR_ID_SUPPLY_CONTROL_BITS_ACKNOWLEDGE_REQUIRED_OFFSET (0) +#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_DISCONNECTION_ENABLED (1) +#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_DISCONNECTION_ENABLED_OFFSET (0) +#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_PREPAYMENT_ENABLED (2) +#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_PREPAYMENT_ENABLED_OFFSET (1) +#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_CREDIT_MANAGEMENT_ENABLED (4) +#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_CREDIT_MANAGEMENT_ENABLED_OFFSET (2) +#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_CREDIT_DISPLAY_ENABLED (16) +#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_CREDIT_DISPLAY_ENABLED_OFFSET (4) +#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_ACCOUNT_BASE (64) +#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_ACCOUNT_BASE_OFFSET (6) +#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_CONTACTOR_FITTED (128) +#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_CONTACTOR_FITTED_OFFSET (7) +#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_STANDING_CHARGE_CONFIGURATION (256) +#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_STANDING_CHARGE_CONFIGURATION_OFFSET (8) +#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_EMERGENCY_STANDING_CHARGE_CONFIGURATION (512) +#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_EMERGENCY_STANDING_CHARGE_CONFIGURATION_OFFSET (9) +#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_DEBT_CONFIGURATION (1024) +#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_DEBT_CONFIGURATION_OFFSET (10) +#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_EMERGENCY_DEBT_CONFIGURATION (2048) +#define EMBER_AF_PAYMENT_CONTROL_CONFIGURATION_EMERGENCY_DEBT_CONFIGURATION_OFFSET (11) +#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_GENERAL (1) +#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_GENERAL_OFFSET (0) +#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_TARIFF_INFORMATION (8) +#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_TARIFF_INFORMATION_OFFSET (3) +#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_PRICE_MATRIX (16) +#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_PRICE_MATRIX_OFFSET (4) +#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_MANUALLY_TRIGGERED_FROM_CLIENT (1024) +#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_MANUALLY_TRIGGERED_FROM_CLIENT_OFFSET (10) +#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_TENANCY (4096) +#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_TENANCY_OFFSET (12) +#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_SUPPLIER (8192) +#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_SUPPLIER_OFFSET (13) +#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_METER_MODE (16384) +#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_CHANGE_OF_METER_MODE_OFFSET (14) +#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_TOP_UP_ADDITION (262144) +#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_TOP_UP_ADDITION_OFFSET (18) +#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_DEBT_CREDIT_ADDITION (524288) +#define EMBER_AF_PREPAY_SNAPSHOT_PAYLOAD_CAUSE_DEBT_CREDIT_ADDITION_OFFSET (19) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_LOW_CREDIT_WARNING (1) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_LOW_CREDIT_WARNING_OFFSET (0) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_TOP_UP_CODE_ERROR (2) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_TOP_UP_CODE_ERROR_OFFSET (1) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_TOP_UP_CODE_ALREADY_USED (4) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_TOP_UP_CODE_ALREADY_USED_OFFSET (2) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_TOP_UP_CODE_INVALID (8) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_TOP_UP_CODE_INVALID_OFFSET (3) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_FRIENDLY_CREDIT_IN_USE (16) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_FRIENDLY_CREDIT_IN_USE_OFFSET (4) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_FRIENDLY_CREDIT_PERIOD_END_WARNING (32) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_FRIENDLY_CREDIT_PERIOD_END_WARNING_OFFSET (5) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_EC_AVAILABLE (64) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_EC_AVAILABLE_OFFSET (6) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_UNAUTHORISED_ENERGY_USE (128) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_UNAUTHORISED_ENERGY_USE_OFFSET (7) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_DISCONNECTED_SUPPLY_DUE_TO_CREDIT (256) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_DISCONNECTED_SUPPLY_DUE_TO_CREDIT_OFFSET (8) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_DISCONNECTED_SUPPLY_DUE_TO_TAMPER (512) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_DISCONNECTED_SUPPLY_DUE_TO_TAMPER_OFFSET (9) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_DISCONNECTED_SUPPLY_DUE_TO_HES (1024) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_DISCONNECTED_SUPPLY_DUE_TO_HES_OFFSET (10) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_PHYSICAL_ATTACK (2048) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_PHYSICAL_ATTACK_OFFSET (11) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_ELECTRONIC_ATTACK (4096) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_ELECTRONIC_ATTACK_OFFSET (12) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_MANUFACTURE_ALARM_CODE_A (8192) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_MANUFACTURE_ALARM_CODE_A_OFFSET (13) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_MANUFACTURE_ALARM_CODE_B (16384) +#define EMBER_AF_PREPAYMENT_ALARM_STATUS_MANUFACTURE_ALARM_CODE_B_OFFSET (14) +#define EMBER_AF_PRICE_CONTROL_MASK_PRICE_ACKNOWLEDGEMENT_REQUIRED (1) +#define EMBER_AF_PRICE_CONTROL_MASK_PRICE_ACKNOWLEDGEMENT_REQUIRED_OFFSET (0) +#define EMBER_AF_PRICE_CONTROL_MASK_TOTAL_TIERS_EXCEEDS15 (2) +#define EMBER_AF_PRICE_CONTROL_MASK_TOTAL_TIERS_EXCEEDS15_OFFSET (1) +#define EMBER_AF_PRICE_MATRIX_SUB_PAYLOAD_CONTROL_TOU_BASED (1) +#define EMBER_AF_PRICE_MATRIX_SUB_PAYLOAD_CONTROL_TOU_BASED_OFFSET (0) +#define EMBER_AF_PRICE_NUMBER_OF_PRICE_TIERS_AND_REGISTER_TIER_REGISTER_TIER (15) +#define EMBER_AF_PRICE_NUMBER_OF_PRICE_TIERS_AND_REGISTER_TIER_REGISTER_TIER_OFFSET (0) +#define EMBER_AF_PRICE_NUMBER_OF_PRICE_TIERS_AND_REGISTER_TIER_NUMBER_OF_PRICE_TIERS (240) +#define EMBER_AF_PRICE_NUMBER_OF_PRICE_TIERS_AND_REGISTER_TIER_NUMBER_OF_PRICE_TIERS_OFFSET (4) +#define EMBER_AF_PRICE_TRAILING_DIGIT_TRAILING_DIGIT (240) +#define EMBER_AF_PRICE_TRAILING_DIGIT_TRAILING_DIGIT_OFFSET (4) +#define EMBER_AF_PRICE_TRAILING_DIGIT_AND_PRICE_TIER_PRICE_TIER (15) +#define EMBER_AF_PRICE_TRAILING_DIGIT_AND_PRICE_TIER_PRICE_TIER_OFFSET (0) +#define EMBER_AF_PRICE_TRAILING_DIGIT_AND_PRICE_TIER_TRAILING_DIGIT (240) +#define EMBER_AF_PRICE_TRAILING_DIGIT_AND_PRICE_TIER_TRAILING_DIGIT_OFFSET (4) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_PRE_SNAPSHOTS (1) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_PRE_SNAPSHOTS_OFFSET (0) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_POST_SNAPSHOTS (2) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_POST_SNAPSHOTS_OFFSET (1) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_RESET_CREDIT_REGISTER (4) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_RESET_CREDIT_REGISTER_OFFSET (2) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_RESET_DEBIT_REGISTER (8) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_RESET_DEBIT_REGISTER_OFFSET (3) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_RESET_BILLING_PERIOD (16) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_RESET_BILLING_PERIOD_OFFSET (4) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_TARIFF_PLAN (32) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_TARIFF_PLAN_OFFSET (5) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_STANDING_CHARGE (64) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_STANDING_CHARGE_OFFSET (6) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_BLOCK_HISTORICAL_LOAD_PROFILE_INFORMATION (128) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_BLOCK_HISTORICAL_LOAD_PROFILE_INFORMATION_OFFSET (7) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_HISTORICAL_LOAD_PROFILE_INFORMATION (256) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_HISTORICAL_LOAD_PROFILE_INFORMATION_OFFSET (8) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_IHD_DATA_CONSUMER (512) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_IHD_DATA_CONSUMER_OFFSET (9) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_IHD_DATA_SUPPLIER (1024) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_IHD_DATA_SUPPLIER_OFFSET (10) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_METER_CONNECTOR_STATE_ON_OFF_ARMED (6144) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_METER_CONNECTOR_STATE_ON_OFF_ARMED_OFFSET (11) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_TRANSACTION_LOG (8192) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_TRANSACTION_LOG_OFFSET (13) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_PREPAYMENT_LOG (16384) +#define EMBER_AF_PROPOSED_CHANGE_CONTROL_CLEAR_PREPAYMENT_LOG_OFFSET (14) +#define EMBER_AF_PUMP_ALARM_MASK_SUPPLY_VOLTAGE_TOO_LOW (1) +#define EMBER_AF_PUMP_ALARM_MASK_SUPPLY_VOLTAGE_TOO_LOW_OFFSET (0) +#define EMBER_AF_PUMP_ALARM_MASK_SUPPLY_VOLTAGE_TOO_HIGH (2) +#define EMBER_AF_PUMP_ALARM_MASK_SUPPLY_VOLTAGE_TOO_HIGH_OFFSET (1) +#define EMBER_AF_PUMP_ALARM_MASK_POWER_MISSING_PHASE (4) +#define EMBER_AF_PUMP_ALARM_MASK_POWER_MISSING_PHASE_OFFSET (2) +#define EMBER_AF_PUMP_ALARM_MASK_SYSTEM_PRESSURE_TOO_LOW (8) +#define EMBER_AF_PUMP_ALARM_MASK_SYSTEM_PRESSURE_TOO_LOW_OFFSET (3) +#define EMBER_AF_PUMP_ALARM_MASK_SYSTEM_PRESSURE_TOO_HIGH (16) +#define EMBER_AF_PUMP_ALARM_MASK_SYSTEM_PRESSURE_TOO_HIGH_OFFSET (4) +#define EMBER_AF_PUMP_ALARM_MASK_DRY_RUNNING (32) +#define EMBER_AF_PUMP_ALARM_MASK_DRY_RUNNING_OFFSET (5) +#define EMBER_AF_PUMP_ALARM_MASK_MOTOR_TEMPERATURE_TOO_HIGH (64) +#define EMBER_AF_PUMP_ALARM_MASK_MOTOR_TEMPERATURE_TOO_HIGH_OFFSET (6) +#define EMBER_AF_PUMP_ALARM_MASK_PUMP_MOTOR_HAS_FATAL_FAILURE (128) +#define EMBER_AF_PUMP_ALARM_MASK_PUMP_MOTOR_HAS_FATAL_FAILURE_OFFSET (7) +#define EMBER_AF_PUMP_ALARM_MASK_ELECTRONIC_TEMPERATURE_TOO_HIGH (256) +#define EMBER_AF_PUMP_ALARM_MASK_ELECTRONIC_TEMPERATURE_TOO_HIGH_OFFSET (8) +#define EMBER_AF_PUMP_ALARM_MASK_PUMP_BLOCKED (512) +#define EMBER_AF_PUMP_ALARM_MASK_PUMP_BLOCKED_OFFSET (9) +#define EMBER_AF_PUMP_ALARM_MASK_SENSOR_FAILURE (1024) +#define EMBER_AF_PUMP_ALARM_MASK_SENSOR_FAILURE_OFFSET (10) +#define EMBER_AF_PUMP_ALARM_MASK_ELECTRONIC_NON_FATAL_FAILURE (2048) +#define EMBER_AF_PUMP_ALARM_MASK_ELECTRONIC_NON_FATAL_FAILURE_OFFSET (11) +#define EMBER_AF_PUMP_ALARM_MASK_ELECTRONIC_FATAL_FAILURE (4096) +#define EMBER_AF_PUMP_ALARM_MASK_ELECTRONIC_FATAL_FAILURE_OFFSET (12) +#define EMBER_AF_PUMP_ALARM_MASK_GENERAL_FAULT (8192) +#define EMBER_AF_PUMP_ALARM_MASK_GENERAL_FAULT_OFFSET (13) +#define EMBER_AF_PUMP_STATUS_DEVICE_FAULT (1) +#define EMBER_AF_PUMP_STATUS_DEVICE_FAULT_OFFSET (0) +#define EMBER_AF_PUMP_STATUS_SUPPLYFAULT (2) +#define EMBER_AF_PUMP_STATUS_SUPPLYFAULT_OFFSET (1) +#define EMBER_AF_PUMP_STATUS_SPEED_LOW (4) +#define EMBER_AF_PUMP_STATUS_SPEED_LOW_OFFSET (2) +#define EMBER_AF_PUMP_STATUS_SPEED_HIGH (8) +#define EMBER_AF_PUMP_STATUS_SPEED_HIGH_OFFSET (3) +#define EMBER_AF_PUMP_STATUS_LOCAL_OVERRIDE (16) +#define EMBER_AF_PUMP_STATUS_LOCAL_OVERRIDE_OFFSET (4) +#define EMBER_AF_PUMP_STATUS_RUNNING (32) +#define EMBER_AF_PUMP_STATUS_RUNNING_OFFSET (5) +#define EMBER_AF_PUMP_STATUS_REMOTE_PRESSURE (64) +#define EMBER_AF_PUMP_STATUS_REMOTE_PRESSURE_OFFSET (6) +#define EMBER_AF_PUMP_STATUS_REMOTE_FLOW (128) +#define EMBER_AF_PUMP_STATUS_REMOTE_FLOW_OFFSET (7) +#define EMBER_AF_PUMP_STATUS_REMOTE_TEMPERATURE (256) +#define EMBER_AF_PUMP_STATUS_REMOTE_TEMPERATURE_OFFSET (8) +#define EMBER_AF_REMOTE_ENABLE_FLAGS_AND_DEVICE_STATUS2_REMOTE_ENABLE_FLAGS (15) +#define EMBER_AF_REMOTE_ENABLE_FLAGS_AND_DEVICE_STATUS2_REMOTE_ENABLE_FLAGS_OFFSET (0) +#define EMBER_AF_REMOTE_ENABLE_FLAGS_AND_DEVICE_STATUS2_DEVICE_STATUS2_STRUCTURE (240) +#define EMBER_AF_REMOTE_ENABLE_FLAGS_AND_DEVICE_STATUS2_DEVICE_STATUS2_STRUCTURE_OFFSET (4) +#define EMBER_AF_RESET_OPTIONS_RESET_CURRENT (1) +#define EMBER_AF_RESET_OPTIONS_RESET_CURRENT_OFFSET (0) +#define EMBER_AF_RESET_OPTIONS_RESET_ALL (2) +#define EMBER_AF_RESET_OPTIONS_RESET_ALL_OFFSET (1) +#define EMBER_AF_RESET_OPTIONS_ERASE_INDEX (4) +#define EMBER_AF_RESET_OPTIONS_ERASE_INDEX_OFFSET (2) +#define EMBER_AF_RESTART_OPTIONS_START_MODE1 (1) +#define EMBER_AF_RESTART_OPTIONS_START_MODE1_OFFSET (0) +#define EMBER_AF_RESTART_OPTIONS_STARTUP_MODE2 (2) +#define EMBER_AF_RESTART_OPTIONS_STARTUP_MODE2_OFFSET (1) +#define EMBER_AF_RESTART_OPTIONS_STARTUP_MODE3 (4) +#define EMBER_AF_RESTART_OPTIONS_STARTUP_MODE3_OFFSET (2) +#define EMBER_AF_RESTART_OPTIONS_IMMEDIATE (8) +#define EMBER_AF_RESTART_OPTIONS_IMMEDIATE_OFFSET (3) +#define EMBER_AF_SCENES_COPY_MODE_COPY_ALL_SCENES (1) +#define EMBER_AF_SCENES_COPY_MODE_COPY_ALL_SCENES_OFFSET (0) +#define EMBER_AF_SHADE_CLOSURE_STATUS_OPERATIONAL (1) +#define EMBER_AF_SHADE_CLOSURE_STATUS_OPERATIONAL_OFFSET (0) +#define EMBER_AF_SHADE_CLOSURE_STATUS_ADJUSTING (2) +#define EMBER_AF_SHADE_CLOSURE_STATUS_ADJUSTING_OFFSET (1) +#define EMBER_AF_SHADE_CLOSURE_STATUS_OPENING (4) +#define EMBER_AF_SHADE_CLOSURE_STATUS_OPENING_OFFSET (2) +#define EMBER_AF_SHADE_CLOSURE_STATUS_MOTOR_OPENING (8) +#define EMBER_AF_SHADE_CLOSURE_STATUS_MOTOR_OPENING_OFFSET (3) +#define EMBER_AF_SNAPSHOT_CAUSE_GENERAL (1) +#define EMBER_AF_SNAPSHOT_CAUSE_GENERAL_OFFSET (0) +#define EMBER_AF_SNAPSHOT_CAUSE_END_OF_BILLING_PERIOD (2) +#define EMBER_AF_SNAPSHOT_CAUSE_END_OF_BILLING_PERIOD_OFFSET (1) +#define EMBER_AF_SNAPSHOT_CAUSE_END_OF_BLOCK_PERIOD (4) +#define EMBER_AF_SNAPSHOT_CAUSE_END_OF_BLOCK_PERIOD_OFFSET (2) +#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_TARIFF_INFORMATION (8) +#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_TARIFF_INFORMATION_OFFSET (3) +#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_PRICE_MATRIX (16) +#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_PRICE_MATRIX_OFFSET (4) +#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_BLOCK_THRESHOLDS (32) +#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_BLOCK_THRESHOLDS_OFFSET (5) +#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_CV (64) +#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_CV_OFFSET (6) +#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_CF (128) +#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_CF_OFFSET (7) +#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_CALENDAR (256) +#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_CALENDAR_OFFSET (8) +#define EMBER_AF_SNAPSHOT_CAUSE_CRITICAL_PEAK_PRICING (512) +#define EMBER_AF_SNAPSHOT_CAUSE_CRITICAL_PEAK_PRICING_OFFSET (9) +#define EMBER_AF_SNAPSHOT_CAUSE_MANUALLY_TRIGGERED_FROM_CLIENT (1024) +#define EMBER_AF_SNAPSHOT_CAUSE_MANUALLY_TRIGGERED_FROM_CLIENT_OFFSET (10) +#define EMBER_AF_SNAPSHOT_CAUSE_END_OF_RESOLVE_PERIOD (2048) +#define EMBER_AF_SNAPSHOT_CAUSE_END_OF_RESOLVE_PERIOD_OFFSET (11) +#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_TENANCY (4096) +#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_TENANCY_OFFSET (12) +#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_SUPPLIER (8192) +#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_SUPPLIER_OFFSET (13) +#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_MODE (16384) +#define EMBER_AF_SNAPSHOT_CAUSE_CHANGE_OF_MODE_OFFSET (14) +#define EMBER_AF_SNAPSHOT_CAUSE_DEBT_PAYMENT (32768) +#define EMBER_AF_SNAPSHOT_CAUSE_DEBT_PAYMENT_OFFSET (15) +#define EMBER_AF_SNAPSHOT_CAUSE_SCHEDULED_SNAPSHOT (65536) +#define EMBER_AF_SNAPSHOT_CAUSE_SCHEDULED_SNAPSHOT_OFFSET (16) +#define EMBER_AF_SNAPSHOT_CAUSE_OTA_FIRMWARE_DOWNLOAD (131072) +#define EMBER_AF_SNAPSHOT_CAUSE_OTA_FIRMWARE_DOWNLOAD_OFFSET (17) +#define EMBER_AF_SQUAWK_INFO_MODE (240) +#define EMBER_AF_SQUAWK_INFO_MODE_OFFSET (4) +#define EMBER_AF_SQUAWK_INFO_STROBE (8) +#define EMBER_AF_SQUAWK_INFO_STROBE_OFFSET (3) +#define EMBER_AF_SQUAWK_INFO_LEVEL (3) +#define EMBER_AF_SQUAWK_INFO_LEVEL_OFFSET (0) +#define EMBER_AF_START_TIME_MINUTES (63) +#define EMBER_AF_START_TIME_MINUTES_OFFSET (0) +#define EMBER_AF_START_TIME_TIME_ENCODING (192) +#define EMBER_AF_START_TIME_TIME_ENCODING_OFFSET (6) +#define EMBER_AF_START_TIME_HOURS (65280) +#define EMBER_AF_START_TIME_HOURS_OFFSET (8) +#define EMBER_AF_SUPPLY_CONTROL_BITS_ACKNOWLEDGE_REQUIRED (1) +#define EMBER_AF_SUPPLY_CONTROL_BITS_ACKNOWLEDGE_REQUIRED_OFFSET (0) +#define EMBER_AF_TARIFF_TYPE_CHARGING_SCHEME_TARIFF_TYPE (15) +#define EMBER_AF_TARIFF_TYPE_CHARGING_SCHEME_TARIFF_TYPE_OFFSET (0) +#define EMBER_AF_TARIFF_TYPE_CHARGING_SCHEME_TARIFF_CHARGING_SCHEME (240) +#define EMBER_AF_TARIFF_TYPE_CHARGING_SCHEME_TARIFF_CHARGING_SCHEME_OFFSET (4) +#define EMBER_AF_THERMOSTAT_ALARM_MASK_INITIALIZATION_FAILURE (1) +#define EMBER_AF_THERMOSTAT_ALARM_MASK_INITIALIZATION_FAILURE_OFFSET (0) +#define EMBER_AF_THERMOSTAT_ALARM_MASK_HARDWARE_FAILURE (2) +#define EMBER_AF_THERMOSTAT_ALARM_MASK_HARDWARE_FAILURE_OFFSET (1) +#define EMBER_AF_THERMOSTAT_ALARM_MASK_SELFCALIBRATION_FAILURE (4) +#define EMBER_AF_THERMOSTAT_ALARM_MASK_SELFCALIBRATION_FAILURE_OFFSET (2) +#define EMBER_AF_THERMOSTAT_OCCUPANCY_OCCUPIED (1) +#define EMBER_AF_THERMOSTAT_OCCUPANCY_OCCUPIED_OFFSET (0) +#define EMBER_AF_THERMOSTAT_RUNNING_STATE_HEAT_STATE_ON (1) +#define EMBER_AF_THERMOSTAT_RUNNING_STATE_HEAT_STATE_ON_OFFSET (0) +#define EMBER_AF_THERMOSTAT_RUNNING_STATE_COOL_STATE_ON (2) +#define EMBER_AF_THERMOSTAT_RUNNING_STATE_COOL_STATE_ON_OFFSET (1) +#define EMBER_AF_THERMOSTAT_RUNNING_STATE_FAN_STATE_ON (4) +#define EMBER_AF_THERMOSTAT_RUNNING_STATE_FAN_STATE_ON_OFFSET (2) +#define EMBER_AF_THERMOSTAT_RUNNING_STATE_HEAT_SECOND_STAGE_STATE_ON (8) +#define EMBER_AF_THERMOSTAT_RUNNING_STATE_HEAT_SECOND_STAGE_STATE_ON_OFFSET (3) +#define EMBER_AF_THERMOSTAT_RUNNING_STATE_COOL_SECOND_STAGE_STATE_ON (16) +#define EMBER_AF_THERMOSTAT_RUNNING_STATE_COOL_SECOND_STAGE_STATE_ON_OFFSET (4) +#define EMBER_AF_THERMOSTAT_RUNNING_STATE_FAN_SECOND_STAGE_STATE_ON (32) +#define EMBER_AF_THERMOSTAT_RUNNING_STATE_FAN_SECOND_STAGE_STATE_ON_OFFSET (5) +#define EMBER_AF_THERMOSTAT_RUNNING_STATE_FAN_THIRD_STAGE_STATE_ON (64) +#define EMBER_AF_THERMOSTAT_RUNNING_STATE_FAN_THIRD_STAGE_STATE_ON_OFFSET (6) +#define EMBER_AF_THERMOSTAT_SENSING_LOCAL_TEMP_SENSED_REMOTELY (1) +#define EMBER_AF_THERMOSTAT_SENSING_LOCAL_TEMP_SENSED_REMOTELY_OFFSET (0) +#define EMBER_AF_THERMOSTAT_SENSING_OUTDOOR_TEMP_SENSED_REMOTELY (2) +#define EMBER_AF_THERMOSTAT_SENSING_OUTDOOR_TEMP_SENSED_REMOTELY_OFFSET (1) +#define EMBER_AF_THERMOSTAT_SENSING_OCCUPANCY_SENSED_REMOTELY (4) +#define EMBER_AF_THERMOSTAT_SENSING_OCCUPANCY_SENSED_REMOTELY_OFFSET (2) +#define EMBER_AF_TIME_STATUS_MASK_MASTER_CLOCK (1) +#define EMBER_AF_TIME_STATUS_MASK_MASTER_CLOCK_OFFSET (0) +#define EMBER_AF_TIME_STATUS_MASK_SYNCHRONIZED (2) +#define EMBER_AF_TIME_STATUS_MASK_SYNCHRONIZED_OFFSET (1) +#define EMBER_AF_TIME_STATUS_MASK_MASTER_ZONE_DST (4) +#define EMBER_AF_TIME_STATUS_MASK_MASTER_ZONE_DST_OFFSET (2) +#define EMBER_AF_TIME_STATUS_MASK_SUPERSEDING (8) +#define EMBER_AF_TIME_STATUS_MASK_SUPERSEDING_OFFSET (3) +#define EMBER_AF_WARNING_INFO_MODE (240) +#define EMBER_AF_WARNING_INFO_MODE_OFFSET (4) +#define EMBER_AF_WARNING_INFO_STROBE (12) +#define EMBER_AF_WARNING_INFO_STROBE_OFFSET (2) +#define EMBER_AF_WARNING_INFO_SIREN_LEVEL (3) +#define EMBER_AF_WARNING_INFO_SIREN_LEVEL_OFFSET (0) +#define EMBER_AF_ZIGBEE_INFORMATION_LOGICAL_TYPE (3) +#define EMBER_AF_ZIGBEE_INFORMATION_LOGICAL_TYPE_OFFSET (0) +#define EMBER_AF_ZIGBEE_INFORMATION_RX_ON_WHEN_IDLE (4) +#define EMBER_AF_ZIGBEE_INFORMATION_RX_ON_WHEN_IDLE_OFFSET (2) +#define EMBER_AF_ZLL_INFORMATION_FACTORY_NEW (1) +#define EMBER_AF_ZLL_INFORMATION_FACTORY_NEW_OFFSET (0) +#define EMBER_AF_ZLL_INFORMATION_ADDRESS_ASSIGNMENT (2) +#define EMBER_AF_ZLL_INFORMATION_ADDRESS_ASSIGNMENT_OFFSET (1) +#define EMBER_AF_ZLL_INFORMATION_TOUCH_LINK_INITIATOR (16) +#define EMBER_AF_ZLL_INFORMATION_TOUCH_LINK_INITIATOR_OFFSET (4) +#define EMBER_AF_ZLL_INFORMATION_TOUCH_LINK_PRIORITY_REQUEST (32) +#define EMBER_AF_ZLL_INFORMATION_TOUCH_LINK_PRIORITY_REQUEST_OFFSET (5) +#define EMBER_AF_ZLL_INFORMATION_PROFILE_INTEROP (128) +#define EMBER_AF_ZLL_INFORMATION_PROFILE_INTEROP_OFFSET (7) + +// ZCL Structs + +// Struct for BlockThreshold +typedef struct _BlockThreshold { + uint8_t blockThreshold; + uint8_t priceControl; + uint32_t blockPeriodStartTime; + uint32_t blockPeriodDurationMinutes; + uint8_t fuelType; + uint32_t standingCharge; +} BlockThreshold; + +// Struct for BlockThresholdSubPayload +typedef struct _BlockThresholdSubPayload { + uint8_t tierNumberOfBlockThresholds; + uint8_t * blockThreshold; +} BlockThresholdSubPayload; + +// Struct for ChatParticipant +typedef struct _ChatParticipant { + uint16_t uid; + uint8_t * nickname; +} ChatParticipant; + +// Struct for ChatRoom +typedef struct _ChatRoom { + uint16_t cid; + uint8_t * name; +} ChatRoom; + +// Struct for ConfigureReportingRecord +typedef struct _ConfigureReportingRecord { + uint8_t direction; + uint16_t attributeId; + uint8_t attributeType; + uint16_t minimumReportingInterval; + uint16_t maximumReportingInterval; + uint8_t * reportableChangeLocation; + uint16_t timeoutPeriod; +} ConfigureReportingRecord; + +// Struct for ConfigureReportingStatusRecord +typedef struct _ConfigureReportingStatusRecord { + EmberAfStatus status; + uint8_t direction; + uint16_t attributeId; +} ConfigureReportingStatusRecord; + +// Struct for DebtPayload +typedef struct _DebtPayload { + uint32_t collectionTime; + uint32_t amountCollected; + EmberAfRepaymentDebtType debtType; + uint32_t outstandingDebt; +} DebtPayload; + +// Struct for DeviceInformationRecord +typedef struct _DeviceInformationRecord { + uint8_t * ieeeAddress; + uint8_t endpointId; + uint16_t profileId; + uint16_t deviceId; + uint8_t version; + uint8_t groupIdCount; + EmberAfDeviceInformationRecordSort sort; +} DeviceInformationRecord; + +// Struct for DiscoverAttributesInfoRecord +typedef struct _DiscoverAttributesInfoRecord { + uint16_t attributeId; + uint8_t attributeType; +} DiscoverAttributesInfoRecord; + +// Struct for EndpointInformationRecord +typedef struct _EndpointInformationRecord { + uint16_t networkAddress; + uint8_t endpointId; + uint16_t profileId; + uint16_t deviceId; + uint8_t version; +} EndpointInformationRecord; + +// Void typedef for EphemeralData which is empty. +// this will result in all the references to the data being as uint8_t * +typedef uint8_t EphemeralData; + +// Struct for EventConfigurationPayload +typedef struct _EventConfigurationPayload { + uint16_t eventId; + uint8_t eventConfiguration; +} EventConfigurationPayload; + +// Struct for EventLogPayload +typedef struct _EventLogPayload { + EmberAfEventLogId logId; + uint16_t eventId; + uint32_t eventTime; + uint8_t * eventData; +} EventLogPayload; + +// Struct for ExtendedDiscoverAttributesInfoRecord +typedef struct _ExtendedDiscoverAttributesInfoRecord { + uint16_t attributeId; + uint8_t attributeType; + uint8_t attributeAccessControl; +} ExtendedDiscoverAttributesInfoRecord; + +// Struct for GpPairingConfigurationGroupList +typedef struct _GpPairingConfigurationGroupList { + uint16_t SinkGroup; + uint16_t Alias; +} GpPairingConfigurationGroupList; + +// Struct for GpTranslationTableUpdateTranslation +typedef struct _GpTranslationTableUpdateTranslation { + uint8_t index; + uint8_t gpdCommandId; + uint8_t endpoint; + uint16_t profile; + uint16_t cluster; + uint8_t zigbeeCommandId; + uint8_t * zigbeeCommandPayload; + uint8_t * additionalInfoBlock; +} GpTranslationTableUpdateTranslation; + +// Struct for GroupInformationRecord +typedef struct _GroupInformationRecord { + uint16_t groupId; + uint8_t groupType; +} GroupInformationRecord; + +// Struct for IasAceZoneStatusResult +typedef struct _IasAceZoneStatusResult { + uint8_t zoneId; + uint16_t zoneStatus; +} IasAceZoneStatusResult; + +// Void typedef for Identity which is empty. +// this will result in all the references to the data being as uint8_t * +typedef uint8_t Identity; + +// Struct for NeighborInfo +typedef struct _NeighborInfo { + uint8_t * neighbor; + int16_t x; + int16_t y; + int16_t z; + int8_t rssi; + uint8_t numberRssiMeasurements; +} NeighborInfo; + +// Struct for NodeInformation +typedef struct _NodeInformation { + uint16_t uid; + uint16_t address; + uint8_t endpoint; + uint8_t * nickname; +} NodeInformation; + +// Struct for Notification +typedef struct _Notification { + uint16_t contentId; + EmberAfStatus statusFeedback; +} Notification; + +// Struct for PowerProfileRecord +typedef struct _PowerProfileRecord { + uint8_t powerProfileId; + uint8_t energyPhaseId; + uint8_t powerProfileRemoteControl; + uint8_t powerProfileState; +} PowerProfileRecord; + +// Struct for PriceMatrixSubPayload +typedef struct _PriceMatrixSubPayload { + uint8_t tierBlockId; + uint32_t price; +} PriceMatrixSubPayload; + +// Struct for Protocol +typedef struct _Protocol { + uint16_t manufacturerCode; + uint8_t protocolId; +} Protocol; + +// Struct for ReadAttributeStatusRecord +typedef struct _ReadAttributeStatusRecord { + uint16_t attributeId; + EmberAfStatus status; + uint8_t attributeType; + uint8_t * attributeLocation; +} ReadAttributeStatusRecord; + +// Struct for ReadReportingConfigurationAttributeRecord +typedef struct _ReadReportingConfigurationAttributeRecord { + uint8_t direction; + uint16_t attributeId; +} ReadReportingConfigurationAttributeRecord; + +// Struct for ReadReportingConfigurationRecord +typedef struct _ReadReportingConfigurationRecord { + EmberAfStatus status; + uint8_t direction; + uint16_t attributeId; + uint8_t attributeType; + uint16_t minimumReportingInterval; + uint16_t maximumReportingInterval; + uint8_t * reportableChangeLocation; + uint16_t timeoutPeriod; +} ReadReportingConfigurationRecord; + +// Struct for ReadStructuredAttributeRecord +typedef struct _ReadStructuredAttributeRecord { + uint16_t attributeId; + uint8_t indicator; + uint16_t indicies; +} ReadStructuredAttributeRecord; + +// Struct for ReportAttributeRecord +typedef struct _ReportAttributeRecord { + uint16_t attributeId; + uint8_t attributeType; + uint8_t * attributeLocation; +} ReportAttributeRecord; + +// Struct for SceneExtensionAttributeInfo +typedef struct _SceneExtensionAttributeInfo { + uint8_t attributeType; + uint8_t * attributeLocation; +} SceneExtensionAttributeInfo; + +// Struct for SceneExtensionFieldSet +typedef struct _SceneExtensionFieldSet { + uint16_t clusterId; + uint8_t length; + uint8_t value; +} SceneExtensionFieldSet; + +// Struct for ScheduleEntry +typedef struct _ScheduleEntry { + uint16_t startTime; + uint8_t activePriceTierOrFriendlyCreditEnable; +} ScheduleEntry; + +// Struct for ScheduleEntryAuxilliaryLoadSwitchTimes +typedef struct _ScheduleEntryAuxilliaryLoadSwitchTimes { + uint16_t startTime; + uint8_t auxiliaryLoadSwitchState; +} ScheduleEntryAuxilliaryLoadSwitchTimes; + +// Struct for ScheduleEntryFriendlyCreditSwitchTimes +typedef struct _ScheduleEntryFriendlyCreditSwitchTimes { + uint16_t startTime; + uint8_t friendlyCreditEnable; +} ScheduleEntryFriendlyCreditSwitchTimes; + +// Struct for ScheduleEntryRateSwitchTimes +typedef struct _ScheduleEntryRateSwitchTimes { + uint16_t startTime; + EmberAfPriceTier priceTier; +} ScheduleEntryRateSwitchTimes; + +// Struct for ScheduledPhase +typedef struct _ScheduledPhase { + uint8_t energyPhaseId; + uint16_t scheduledTime; +} ScheduledPhase; + +// Struct for SeasonEntry +typedef struct _SeasonEntry { + uint32_t seasonStartDate; + uint8_t weekIdRef; +} SeasonEntry; + +// Void typedef for Signature which is empty. +// this will result in all the references to the data being as uint8_t * +typedef uint8_t Signature; + +// Void typedef for Smac which is empty. +// this will result in all the references to the data being as uint8_t * +typedef uint8_t Smac; + +// Struct for SnapshotResponsePayload +typedef struct _SnapshotResponsePayload { + uint8_t snapshotScheduleId; + EmberAfSnapshotScheduleConfirmation snapshotScheduleConfirmation; +} SnapshotResponsePayload; + +// Struct for SnapshotSchedulePayload +typedef struct _SnapshotSchedulePayload { + uint8_t snapshotScheduleId; + uint32_t snapshotStartTime; + uint32_t snapshotSchedule; + EmberAfSnapshotPayloadType snapshotPayloadType; + uint32_t snapshotCause; +} SnapshotSchedulePayload; + +// Struct for SpecialDay +typedef struct _SpecialDay { + uint32_t specialDayDate; + uint8_t dayIdRef; +} SpecialDay; + +// Struct for TierLabelsPayload +typedef struct _TierLabelsPayload { + uint8_t tierId; + uint8_t * tierLabel; +} TierLabelsPayload; + +// Struct for TopUpPayload +typedef struct _TopUpPayload { + uint8_t * topUpCode; + int32_t topUpAmount; + uint32_t topUpTime; +} TopUpPayload; + +// Struct for TransferredPhase +typedef struct _TransferredPhase { + uint8_t energyPhaseId; + uint8_t macroPhaseId; + uint16_t expectedDuration; + uint16_t peakPower; + uint16_t energy; + uint16_t maxActivationDelay; +} TransferredPhase; + +// Struct for WriteAttributeRecord +typedef struct _WriteAttributeRecord { + uint16_t attributeId; + uint8_t attributeType; + uint8_t * attributeLocation; +} WriteAttributeRecord; + +// Struct for WriteAttributeStatusRecord +typedef struct _WriteAttributeStatusRecord { + EmberAfStatus status; + uint16_t attributeId; +} WriteAttributeStatusRecord; + +// Struct for WriteStructuredAttributeRecord +typedef struct _WriteStructuredAttributeRecord { + uint16_t attributeId; + uint8_t indicator; + uint16_t indicies; + uint8_t attributeType; + uint8_t * attributeLocation; +} WriteStructuredAttributeRecord; + +// Struct for WriteStructuredAttributeStatusRecord +typedef struct _WriteStructuredAttributeStatusRecord { + EmberAfStatus status; + uint16_t attributeId; + uint8_t indicator; + uint16_t indicies; +} WriteStructuredAttributeStatusRecord; + +// Struct for WwahBeaconSurvey +typedef struct _WwahBeaconSurvey { + uint16_t deviceShort; + uint8_t rssi; + uint8_t classificationMask; +} WwahBeaconSurvey; + +// Struct for WwahClusterStatusToUseTC +typedef struct _WwahClusterStatusToUseTC { + uint16_t clusterId; + EmberAfStatus status; +} WwahClusterStatusToUseTC; + + +#endif