From 50ef19254346847287fb078e7dcaa092256b478f Mon Sep 17 00:00:00 2001 From: Tomasz Chyrowicz Date: Thu, 22 Oct 2020 11:38:49 +0200 Subject: [PATCH] zboss: version v3_3_0_5+10_06_2020 - ZBOSS sources: 4c971a7c222064f81641184c25a0b7d70c739802 Signed-off-by: Tomasz Chyrowicz --- zboss/CHANGELOG.rst | 1 + zboss/include/osif/build_info.h | 38 +- zboss/include/osif/libzboss_config.ed.h | 5 + zboss/include/osif/libzboss_config.h | 5 + zboss/include/osif/mac_platform.h | 4 +- zboss/include/osif/zb_macll.h | 2 + zboss/include/osif/zb_revision_r22.h | 2 +- zboss/include/osif/zb_transceiver.h | 3 + zboss/include/osif/zb_vendor.h | 12 + zboss/include/zcl/zb_zcl_daily_schedule.h | 720 ------------------- zboss/lib/cortex-m4/hard-float/libzboss.a | Bin 1254538 -> 1255518 bytes zboss/lib/cortex-m4/hard-float/libzboss.ed.a | Bin 1076612 -> 1077590 bytes 12 files changed, 50 insertions(+), 742 deletions(-) delete mode 100644 zboss/include/zcl/zb_zcl_daily_schedule.h diff --git a/zboss/CHANGELOG.rst b/zboss/CHANGELOG.rst index d7df570478..4d2a081847 100644 --- a/zboss/CHANGELOG.rst +++ b/zboss/CHANGELOG.rst @@ -24,3 +24,4 @@ Changes * Unified OSIF layer for LEDs and buttons. * Updated the ZBOSS release naming convention for nrfxlib commit. * Changed MAC LL API. +* ZBOSS IO buffer size reconfigured to allow for sending 802.15.4 MAC frame with maximum payload. diff --git a/zboss/include/osif/build_info.h b/zboss/include/osif/build_info.h index a521e09c4d..1559f2842a 100644 --- a/zboss/include/osif/build_info.h +++ b/zboss/include/osif/build_info.h @@ -11,39 +11,39 @@ * Please use release scripts to update it's contents. * * Repositories: - * platform_ncs 090fb637f0a62ccbe651d5a3307c0ea31d97dacb https://bitbucket-zoi.dsr-corporation.com/scm/ZOI/platform_ncs.git - * zboss-stack-src 4c971a7c222064f81641184c25a0b7d70c739802 https://bitbucket-zoi.dsr-corporation.com/scm/zoi/zboss_stable - * zboss-stack-doc 639a0cda809df2ac8289828239c267fc4d4feae4 https://bitbucket-zoi.dsr-corporation.com/scm/zoi/zboss_doc - * nrf 14ee6d1f52124fd1538421ef09e780af735d0234 https://github.com/nrfconnect/sdk-nrf - * zephyr 247f9af846a29c4ffcefccb24b2a2348a2e9257f https://github.com/nrfconnect/sdk-zephyr - * mcuboot 50eec26a462d8cbc171dbbdca623979294a6227b https://github.com/nrfconnect/sdk-mcuboot - * mcumgr cfe5eb98a9493017448846fd1a44a9340bd0a22f https://github.com/nrfconnect/sdk-mcumgr - * nrfxlib 721f19da2be9e2848e507b9a12b6a504e227f2b7 https://github.com/nrfconnect/sdk-nrfxlib + * platform_ncs 9289c5a9e3aaec964f46fff7636d089ca152f55e https://bitbucket.dsr-corporation.com/scm/ZOI/platform_ncs.git + * zboss-stack-src 4c971a7c222064f81641184c25a0b7d70c739802 https://bitbucket.dsr-corporation.com/scm/zoi/zboss_stable + * zboss-stack-doc e535c07286d1c0c93b6139d0929f289a12ab819a https://bitbucket.dsr-corporation.com/scm/zoi/zboss_doc + * nrf af141a27d757dabf66e8d7ec1853e326ff66ca6b https://github.com/nrfconnect/sdk-nrf + * zephyr 41ce8e165a9af4171ef52a73aede89da6ce60920 https://github.com/nrfconnect/sdk-zephyr + * mcuboot c74627b65540fdb4105216361688199b6eceff4d https://github.com/nrfconnect/sdk-mcuboot + * mcumgr b3716c64bde95ea5911a36001fd8f8d4b46eb310 https://github.com/nrfconnect/sdk-mcumgr + * nrfxlib 9dbc0e786924ea1e42e6f732d0d19a58265f4559 https://github.com/nrfconnect/sdk-nrfxlib * cmock c243b9a7a7b3c471023193992b46cf1bd1910450 https://github.com/ThrowTheSwitch/cmock * unity 031f3bbe45f8adf504ca3d13e6f093869920b091 https://github.com/ThrowTheSwitch/unity - * mbedtls-nrf 2a1d9332d55d1270084232e42df08fdb08129f1b https://github.com/ARMmbed/mbedtls + * mbedtls-nrf 3ede1737dc471199bf8d5d3824ee2545c11a497e https://github.com/ARMmbed/mbedtls * nanopb df0e92f474f9cca704fe2b31483f0b4d1b1715a4 https://github.com/nanopb/nanopb * Alexa-Gadgets-Embedded-Sample-Code face92d8c62184832793f518bb1f19379538c5c1 https://github.com/alexa/Alexa-Gadgets-Embedded-Sample-Code * cmsis 542b2296e6d515b265e25c6b7208e8fea3014f90 https://github.com/zephyrproject-rtos/cmsis - * canopennode 5c6b0566d56264efd4bf23ed58bc7cb8b32fe063 https://github.com/zephyrproject-rtos/canopennode + * canopennode 468d350028a975b96563e58344de48281a0ab371 https://github.com/zephyrproject-rtos/canopennode * ci-tools da9a2df574094f52d87a03f6393928bdc7dce17c https://github.com/zephyrproject-rtos/ci-tools * civetweb 99129c5efc907ea613c4b73ccff07581feb58a7a https://github.com/zephyrproject-rtos/civetweb * fatfs 13697783bf653dfdf17c57129ce8e181634e5970 https://github.com/zephyrproject-rtos/fatfs - * hal_nordic b69c5a7c25007fbc111a0cbda6e2a6a945a6ae9a https://github.com/zephyrproject-rtos/hal_nordic + * hal_nordic 8c45524fb7b0742f46b41b0c9e65a46a8e0eae29 https://github.com/zephyrproject-rtos/hal_nordic * hal_st 5b3ec3e182d4310e8943cc34c6c70ae57d9711da https://github.com/zephyrproject-rtos/hal_st - * libmetal 87e9e7f2c5b4e238236fe703db61ba23e48dc2ef https://github.com/zephyrproject-rtos/libmetal + * libmetal 0b23894a041bd00a0d3a2288bb34751bbbef790d https://github.com/zephyrproject-rtos/libmetal * lvgl 928b61c7c8ef5f770f10e6fd36d4fea0cf375b5e https://github.com/zephyrproject-rtos/lvgl - * mbedtls 4bf099f1254332d16dcd931ccea0a88d24a7d3c7 https://github.com/zephyrproject-rtos/mbedtls + * mbedtls aef137b1af8aa7a0f43345c82459254b8832262e https://github.com/zephyrproject-rtos/mbedtls * net-tools 1c4fdba512b268033a4cf926bddd323866c3261a https://github.com/zephyrproject-rtos/net-tools * open-amp 724f7e2a4519d7e1d40ef330042682dea950c991 https://github.com/zephyrproject-rtos/open-amp - * loramac-node 170a2579dd890f78f5056f0959cdb9c9bea259a1 https://github.com/zephyrproject-rtos/loramac-node - * openthread f23165fde96ae8bd710b08c6d77879465ed92cac https://github.com/zephyrproject-rtos/openthread - * segger 6fcf61606d6012d2c44129edc033f59331e268bc https://github.com/zephyrproject-rtos/segger + * loramac-node 3f545d76a2e6d1db83a470ccdb5bebd1f484e137 https://github.com/zephyrproject-rtos/loramac-node + * openthread 07f430dac6c400abdd358ba1173c0f94b94a5a80 https://github.com/zephyrproject-rtos/openthread + * segger 874d9e9696b00c09f9eeefe839028dc25fe44983 https://github.com/zephyrproject-rtos/segger * tinycbor 40daca97b478989884bffb5226e9ab73ca54b8c4 https://github.com/zephyrproject-rtos/tinycbor * tinycrypt 3e9a49d2672ec01435ffbf0d788db6d95ef28de0 https://github.com/zephyrproject-rtos/tinycrypt * littlefs 9e4498d1c73009acd84bb36036ee5e2869112a6c https://github.com/zephyrproject-rtos/littlefs * mipi-sys-t 957d46bc3ce0d5f628f0d525196bb4db207672ee https://github.com/zephyrproject-rtos/mipi-sys-t - * nrf_hw_models 9e594dace1af29252903938064b8ecb1b8b77678 https://github.com/zephyrproject-rtos/nrf_hw_models + * nrf_hw_models f86079a7333968f0ba71fe1266e241295a4e9943 https://github.com/zephyrproject-rtos/nrf_hw_models * edtt c39888ff74acf421eeff9a7514fa9b172c3373f7 https://github.com/zephyrproject-rtos/edtt */ @@ -52,10 +52,10 @@ #define ZBOSS_BUILD_TAG "10_06_2020" /** ZBOSS build date (UTC) */ -#define ZBOSS_BUILD_DATE 20201007 +#define ZBOSS_BUILD_DATE 20201022 /** ZBOSS build time (UTC) */ -#define ZBOSS_BUILD_TIME 104209 +#define ZBOSS_BUILD_TIME 093334 #endif /* ZBOSS_BUILD_INFO_H__ */ diff --git a/zboss/include/osif/libzboss_config.ed.h b/zboss/include/osif/libzboss_config.ed.h index b6f4542422..d064e5e86c 100644 --- a/zboss/include/osif/libzboss_config.ed.h +++ b/zboss/include/osif/libzboss_config.ed.h @@ -61,12 +61,17 @@ * * Available modules are: * + * - 0x8000 SPI platform implementation * - 0x4000 Zigbee Green Power + * - 0x2000 Custom components + * - 0x1000 UART and NCP transport * - 0x0800 Application + * - 0x0400 MAC Lower Layer * - 0x0200 Zigbee Light Link * - 0x0100 Zigbee Cluster Library * - 0x0080 Security * - 0x0040 Zigbee Device Object + * - 0x0020 Zigbee Smart Energy * - 0x0010 Application Support layer * - 0x0008 Network layer * - 0x0004 MAC layer diff --git a/zboss/include/osif/libzboss_config.h b/zboss/include/osif/libzboss_config.h index c666600e56..009230468e 100644 --- a/zboss/include/osif/libzboss_config.h +++ b/zboss/include/osif/libzboss_config.h @@ -61,12 +61,17 @@ * * Available modules are: * + * - 0x8000 SPI platform implementation * - 0x4000 Zigbee Green Power + * - 0x2000 Custom components + * - 0x1000 UART and NCP transport * - 0x0800 Application + * - 0x0400 MAC Lower Layer * - 0x0200 Zigbee Light Link * - 0x0100 Zigbee Cluster Library * - 0x0080 Security * - 0x0040 Zigbee Device Object + * - 0x0020 Zigbee Smart Energy * - 0x0010 Application Support layer * - 0x0008 Network layer * - 0x0004 MAC layer diff --git a/zboss/include/osif/mac_platform.h b/zboss/include/osif/mac_platform.h index dd57231883..b673ddaa6b 100644 --- a/zboss/include/osif/mac_platform.h +++ b/zboss/include/osif/mac_platform.h @@ -207,8 +207,8 @@ zb_transceiver_ctx_t; /*PHY tests specific API. Implement for PHY tests only.*/ -#define ZB_TRANSCEIVER_PERFORM_CCA() (0) /*Perform single CCA attempt. Used in TP_154_PHY24_RECEIVER_07 test*/ -#define ZB_TRANS_TX_CARRIER_DATA(channel, timeout_bi) (0) /*Start continuous transmission. Used in TP_154_PHY24_TRANSMIT_02 test.*/ +#define ZB_TRANSCEIVER_PERFORM_CCA() zb_macll_cca() +#define ZB_TRANS_TX_CARRIER_DATA(channel, timeout_bi) zb_macll_tx_carrier(channel, timeout_bi) #define ZB_TRANSCEIVER_SET_TX_POWER(new_power) zb_macll_set_tx_power(new_power) #define ZB_TRANSCEIVER_GET_TX_POWER(power) zb_macll_get_tx_power(power) diff --git a/zboss/include/osif/zb_macll.h b/zboss/include/osif/zb_macll.h index bd05326a5a..5d92a99856 100644 --- a/zboss/include/osif/zb_macll.h +++ b/zboss/include/osif/zb_macll.h @@ -96,4 +96,6 @@ uint8_t zb_macll_metadata_get_lqi(zb_bufid_t bufid); void zb_macll_metadata_set_lqi(zb_bufid_t bufid, uint8_t lqi); void zb_macll_set_received_data_status(zb_bufid_t bufid, zb_bool_t pending_bit); +zb_ret_t zb_macll_tx_carrier(zb_uint8_t channel, zb_time_t timeout_bi); + #endif /* ZB_MACLL_H__ */ diff --git a/zboss/include/osif/zb_revision_r22.h b/zboss/include/osif/zb_revision_r22.h index 2db5ee792f..a1b71e6bb6 100644 --- a/zboss/include/osif/zb_revision_r22.h +++ b/zboss/include/osif/zb_revision_r22.h @@ -7,4 +7,4 @@ */ /* Revision number of ZBOSS platform for NCS. */ -#define ZBOSS_SDK_REVISION 4 +#define ZBOSS_SDK_REVISION 5 diff --git a/zboss/include/osif/zb_transceiver.h b/zboss/include/osif/zb_transceiver.h index aebaaadf32..f7eef34d66 100644 --- a/zboss/include/osif/zb_transceiver.h +++ b/zboss/include/osif/zb_transceiver.h @@ -30,5 +30,8 @@ void zb_trans_src_match_tbl_drop(void); zb_time_t osif_sub_trans_timer(zb_time_t t2, zb_time_t t1); zb_bool_t zb_trans_rx_pending(void); zb_uint8_t zb_trans_get_next_packet(zb_bufid_t buf); +zb_ret_t zb_trans_cca(void); +zb_ret_t zb_trans_continuous_carrier(void); +void zb_trans_set_crcpoly(zb_uint32_t iv, zb_uint32_t polynomial); #endif /* ZB_TRANSCEIVER_H__ */ diff --git a/zboss/include/osif/zb_vendor.h b/zboss/include/osif/zb_vendor.h index 1739025d63..c7d20964cb 100644 --- a/zboss/include/osif/zb_vendor.h +++ b/zboss/include/osif/zb_vendor.h @@ -284,6 +284,11 @@ /* Include Zigbee BDB implementation (always defined, except macsplit). */ #define ZB_BDB_MODE +#if defined NCP_MODE && !defined NCP_MODE_HOST +/* Enable NCP SoC -specific BDB signal generation and handler. */ +#define ZB_NCP_SOC_BDB +#endif /* NCP_MODE && !NCP_MODE_HOST */ + /* Include Zigbee HA clusters implementation (always defined, except macsplit). */ #define ZB_ENABLE_HA @@ -311,4 +316,11 @@ /* Include all test cases in the certification firmware builds. */ #define ZB_TEST_GROUP_ALL +/* Set the ZBOSS buffer size according to the set of enabled MAC features. */ +#ifdef ZB_MAC_SECURITY +#define ZB_IO_BUF_SIZE 164 +#else /* ZB_MAC_SECURITY */ +#define ZB_IO_BUF_SIZE 152 +#endif /* ZB_MAC_SECURITY */ + #endif /* ZB_VENDOR_H__ */ diff --git a/zboss/include/zcl/zb_zcl_daily_schedule.h b/zboss/include/zcl/zb_zcl_daily_schedule.h deleted file mode 100644 index 9e6e512ec4..0000000000 --- a/zboss/include/zcl/zb_zcl_daily_schedule.h +++ /dev/null @@ -1,720 +0,0 @@ -/* - * ZBOSS Zigbee 3.0 - * - * Copyright (c) 2012-2020 DSR Corporation, Denver CO, USA. - * http://www.dsr-zboss.com - * http://www.dsr-corporation.com - * All rights reserved. - * - * - * Use in source and binary forms, redistribution in binary form only, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce the above copyright notice, this list of - * conditions and the following disclaimer in the documentation and/or other - * materials provided with the distribution. - * - * 2. Neither the name of Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 3. This software, with or without modification, must only be used with a Nordic - * Semiconductor ASA integrated circuit. - * - * 4. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS 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. - */ -/* PURPOSE: Daily Schedule cluster defintions -*/ - -#ifndef ZB_ZCL_DAILY_SCHEDULE_H_ -#define ZB_ZCL_DAILY_SCHEDULE_H_ -/******************************************************************************/ -/******************************************************************************/ -#include "zboss_api_core.h" -#include "zboss_api_aps.h" -#include "zb_zcl_common.h" - -/** @cond (DOXYGEN_ZCL_SECTION && DOXYGEN_DAILY_SCHEDULE_CLUSTER) */ - -/** @addtogroup ZB_ZCL_DAILY_SCHEDULE - * @{ - * @details - * The Daily Schedule cluster allows information that can be scheduled for an entire day - * to be transferred within the premises. The information is distributed by an ESI - * or similar server device. - */ - -/* Cluster ZB_ZCL_CLUSTER_ID_DAILY_SCHEDULE */ - -/** @defgroup ZB_ZCL_DAILY_SCHEDULE_ATTRS Daily Schedule cluster attributes - * @{ - */ - - -/** The attributes defined in this cluster are arranged into sets of related attributes; - * each set can contain up to 256 attributes. Attribute identifiers are encoded - * such that the most significant Octet specifies the attribute set and the least - * significant Octet specifies the attribute within the set. - * @see Zigbee-17-05035-004 Table D-3 - */ -typedef enum zb_zcl_daily_schedule_srv_attr_sets_e -{ - ZB_ZCL_DAILY_SCHEDULE_AUXILIARY_SWITCH_LABEL_SET = 0x00, /**< Auxiliary Switch Label - Attribute Set */ - - ZB_ZCL_DAILY_SCHEDULE_SCHEDULE_ATTRIBUTES_SET = 0x01, /**< Schedule Attribute Set */ - - /* 0x02-0xFF – reserved */ -} zb_zcl_daily_schedule_srv_attr_sets_t; - - -/** @see Zigbee-17-05035-004 Table D-4 – Auxiliary Switch Label Attribute Set */ -typedef enum zb_zcl_daily_schedule_srv_auxiliary_switch_attr_set_e -{ - /* (O) */ - ZB_ZCL_ATTR_DAILY_SCHEDULE_AUX_SWITCH_1_LABEL = 0x0000, /**< The @e AuxSwitchNLabel attributes provide - a method for assigning a label to - * an Auxiliary Switch. - */ - /* (O) */ - ZB_ZCL_ATTR_DAILY_SCHEDULE_AUX_SWITCH_2_LABEL, - /* (O) */ - ZB_ZCL_ATTR_DAILY_SCHEDULE_AUX_SWITCH_3_LABEL, - /* (O) */ - ZB_ZCL_ATTR_DAILY_SCHEDULE_AUX_SWITCH_4_LABEL, - /* (O) */ - ZB_ZCL_ATTR_DAILY_SCHEDULE_AUX_SWITCH_5_LABEL, - /* (O) */ - ZB_ZCL_ATTR_DAILY_SCHEDULE_AUX_SWITCH_6_LABEL, - /* (O) */ - ZB_ZCL_ATTR_DAILY_SCHEDULE_AUX_SWITCH_7_LABEL, - /* (O) */ - ZB_ZCL_ATTR_DAILY_SCHEDULE_AUX_SWITCH_8_LABEL -} zb_zcl_daily_schedule_srv_auxiliary_switch_attr_set_t; - - -/** @see Zigbee-17-05035-004 Table D-5 – Schedule Attribute Set */ -typedef enum zb_zcl_daily_schedule_srv_schedule_attr_set_e -{ - /* (O) */ - ZB_ZCL_ATTR_DAILY_SCHEDULE_CURR_AUX_LOAD_SWITCH_STATE = 0x0100, /**< The @e - CurrentAuxiliaryLoadSwitchState - attribute */ - /* (O) */ - ZB_ZCL_ATTR_DAILY_SCHEDULE_CURR_DELIVERED_TIER = 0x0101, /**< The @e CurrentDeliveredTier - attribute */ - /* (O) */ - ZB_ZCL_ATTR_DAILY_SCHEDULE_CURR_TIER_LABEL = 0x0102, /**< The @e CurrentTierLabel attribute*/ - /* (O) */ - ZB_ZCL_ATTR_DAILY_SCHEDULE_LINKY_PEAK_PERIOD_STATUS = 0x0103, /**< The @e LinkyPeakPeriodStatus - attribute */ - /* (O) */ - ZB_ZCL_ATTR_DAILY_SCHEDULE_PEAK_START_TIME = 0x0104, /**< The @e PeakStartTime attribute */ - /* (O) */ - ZB_ZCL_ATTR_DAILY_SCHEDULE_PEAK_END_TIME = 0x0105, /**< The @e PeakEndTime attribute */ - /* (O) */ - ZB_ZCL_ATTR_DAILY_SCHEDULE_CURR_TARIFF_LABEL = 0x0106, /**< The @e CurrentTariffLabel attrubute */ -} zb_zcl_daily_schedule_srv_schedule_attr_set_t; - - -/** The @e LinkyPeakPeriodStatus attribute subfields */ -typedef ZB_PACKED_PRE struct zb_zcl_daily_schedule_attr_linky_peak_period_status_s -{ - zb_bitfield_t on_peak:2; - zb_bitfield_t peak_period_prior_notice:2; - zb_bitfield_t next_day_color:2; - zb_bitfield_t current_day_color:2; -} zb_zcl_daily_schedule_attr_linky_peak_period_status_t; - -/* Constants for Current Day Color and Next Day Color subfields */ -#define ZB_ZCL_ATTR_LINKY_PEAK_PERIOD_STATUS_COLOR_UNUSED 0b00 -#define ZB_ZCL_ATTR_LINKY_PEAK_PERIOD_STATUS_COLOR_LOW_BLUE 0b01 -#define ZB_ZCL_ATTR_LINKY_PEAK_PERIOD_STATUS_COLOR_MEDIUM_WHITE 0b10 -#define ZB_ZCL_ATTR_LINKY_PEAK_PERIOD_STATUS_COLOR_HIGH_RED 0b11 - -#define ZB_ZCL_ATTR_LINKY_PEAK_PERIOD_STATUS_PRIOR_NOTICE_NONE 0b00 -#define ZB_ZCL_ATTR_LINKY_PEAK_PERIOD_STATUS_PRIOR_NOTICE_PP1 0b01 -#define ZB_ZCL_ATTR_LINKY_PEAK_PERIOD_STATUS_PRIOR_NOTICE_PP2 0b10 -#define ZB_ZCL_ATTR_LINKY_PEAK_PERIOD_STATUS_PRIOR_NOTICE_PP3 0b11 - -#define ZB_ZCL_ATTR_LINKY_PEAK_PERIOD_STATUS_ON_PEAK_NONE 0b00 -#define ZB_ZCL_ATTR_LINKY_PEAK_PERIOD_STATUS_ON_PEAK_PERIOD_1 0b01 -#define ZB_ZCL_ATTR_LINKY_PEAK_PERIOD_STATUS_ON_PEAK_PERIOD_2 0b10 -#define ZB_ZCL_ATTR_LINKY_PEAK_PERIOD_STATUS_ON_PEAK_PERIOD_3 0b11 - -/** @} */ /* ZB_ZCL_DAILY_SCHEDULE_ATTRS */ - - -/** @defgroup ZB_ZCL_DAILY_SCHEDULE_COMMANDS Daily Schedule cluster commands - * @{ - */ - -/** Daily Schedule cluster client command identifiers. - * @see Zigbee-17-05035-004 Table D-14 Commands Received by the Daily Schedule Cluster Server - */ -typedef enum zb_zcl_daily_schedule_cli_cmd_e -{ - /* (O) */ - ZB_ZCL_DAILY_SCHEDULE_CLI_CMD_GET_SCHEDULE = 0x00, /**< This command initiates - PublishSchedule command(s) for - specified Schedule updates. */ - /* (O) */ - ZB_ZCL_DAILY_SCHEDULE_CLI_CMD_GET_DAY_PROFILE = 0x01, /**< This command initiates one or more - PublishDayProfile commands for the - referenced Schedule. */ - /* (O) */ - ZB_ZCL_DAILY_SCHEDULE_CLI_CMD_GET_SCHEDULE_CANCELLATION = 0x05, /**< This command initiates - the return of the last - CancelSchedule command held - on the associated server. */ -} zb_zcl_daily_schedule_cli_cmd_t; - - -/** @see Zigbee-17-05035-004 Table D-3 Daily Schedule Cluster Attribute Sets */ -typedef enum zb_zcl_daily_schedule_srv_cmd_e -{ - /* (O) */ - ZB_ZCL_DAILY_SCHEDULE_SRV_CMD_PUBLISH_SCHEDULE = 0x00, /**< The PublishSchedule command is - published in response to a GetSchedule - command or if new schedule information - is available. */ - /* (O) */ - ZB_ZCL_DAILY_SCHEDULE_SRV_CMD_PUBLISH_DAY_PROFILE = 0x01, /**< The PublishDayProfile command is - published in response to - a GetDayProfile command. */ - /* (O) */ - ZB_ZCL_DAILY_SCHEDULE_SRV_CMD_CANCEL_SCHEDULE = 0x05, /**< The CancelSchedule command indicates - that all data associated with - a particular schedule instance - should be discarded. */ -} zb_zcl_daily_schedule_srv_cmd_t; - -/* Daily schedule cluster commands list : only for information - do not modify */ -#define ZB_ZCL_CLUSTER_ID_DAILY_SCHEDULE_SERVER_ROLE_GENERATED_CMD_LIST \ - ZB_ZCL_DAILY_SCHEDULE_SRV_CMD_PUBLISH_SCHEDULE, \ - ZB_ZCL_DAILY_SCHEDULE_SRV_CMD_PUBLISH_DAY_PROFILE, \ - ZB_ZCL_DAILY_SCHEDULE_SRV_CMD_CANCEL_SCHEDULE - -#define ZB_ZCL_CLUSTER_ID_DAILY_SCHEDULE_CLIENT_ROLE_RECEIVED_CMD_LIST ZB_ZCL_CLUSTER_ID_DAILY_SCHEDULE_SERVER_ROLE_GENERATED_CMD_LIST - -#define ZB_ZCL_CLUSTER_ID_DAILY_SCHEDULE_CLIENT_ROLE_GENERATED_CMD_LIST \ - ZB_ZCL_DAILY_SCHEDULE_CLI_CMD_GET_SCHEDULE, \ - ZB_ZCL_DAILY_SCHEDULE_CLI_CMD_GET_DAY_PROFILE, \ - ZB_ZCL_DAILY_SCHEDULE_CLI_CMD_GET_SCHEDULE_CANCELLATION - -#define ZB_ZCL_CLUSTER_ID_DAILY_SCHEDULE_SERVER_ROLE_RECEIVED_CMD_LIST ZB_ZCL_CLUSTER_ID_DAILY_SCHEDULE_CLIENT_ROLE_GENERATED_CMD_LIST - - -/** Schedule type enumeration. - * @see Zigbee-17-05035-004 Table D-12 Schedule Type Enumeration - */ -typedef enum zb_zcl_daily_schedule_type_e -{ - ZB_ZCL_DAILY_SCHEDULE_TYPE_LINKY_SCHEDULE = 0x00, /**< Linky Schedule */ - /* reserved 0x01 - 0xFF */ -} zb_zcl_daily_schedule_type_t; - - -/** Check if schedule type is valid - * @param _t - @ref zb_zcl_daily_schedule_get_schedule_payload_t::schedule_type field - * @see @ref zb_zcl_daily_schedule_get_schedule_payload_t - */ -#define ZB_ZCL_DAILY_SCHEDULE_TYPE_IS_VALID(_t) \ - (_t <= ZB_ZCL_DAILY_SCHEDULE_TYPE_LINKY_SCHEDULE) - - -/** @ref ZB_ZCL_DAILY_SCHEDULE_CLI_CMD_GET_SCHEDULE "GetSchedule" command payload - * @see Zigbee-17-05035-004, D.9.2.4.1.1 - */ -typedef ZB_PACKED_PRE struct zb_zcl_daily_schedule_get_schedule_payload_s -{ - /** An unsigned 32-bit field containing a unique identifier for the commodity provider. - * This field allows differentiation in deregulated markets where multiple commodity - * providers may be available. - */ - zb_uint32_t provider_id; - - /** UTC Timestamp indicating the earliest start time of schedules to be - * returned by the corresponding PublishSchedule command. - */ - zb_uint32_t earliest_start_time; - - /** A 32-bit integer representing the minimum Issuer Event ID of schedules - * to be returned by the corresponding PublishSchedule command - */ - zb_uint32_t min_issuer_event_id; - - /** An 8-bit integer which represents the maximum number of PublishSchedule commands - * that the client is willing to receive in response to this command. - */ - zb_uint8_t number_of_schedules; - - /** An 8-bit enumeration identifying the type of the requested schedule. - * @see zb_zcl_daily_schedule_type_t - */ - zb_uint8_t schedule_type; -} ZB_PACKED_STRUCT zb_zcl_daily_schedule_get_schedule_payload_t; - - -/** Macro for initialization @ref ZB_ZCL_DAILY_SCHEDULE_CLI_CMD_GET_SCHEDULE "GetSchedule" command payload - */ -#define ZB_ZCL_DAILY_SCHEDULE_GET_SCHEDULE_PL_INIT \ - (zb_zcl_daily_schedule_get_schedule_payload_t) {0} - - -/** Macro for initialization @ref ZB_ZCL_DAILY_SCHEDULE_CLI_CMD_GET_DAY_PROFILE "GetDayProfile" command payload - */ -#define ZB_ZCL_DAILY_SCHEDULE_GET_DAY_PROFILE_PL_INIT \ - (zb_zcl_daily_schedule_get_day_profile_payload_t) {0} - - -/** Check if @ref ZB_ZCL_DAILY_SCHEDULE_CLI_CMD_GET_SCHEDULE "GetSchedule" command payload size is valid - * @param size - size of received data payload - */ -#define ZB_ZCL_DAILY_SCHEDULE_GET_SCHEDULE_PL_SIZE_IS_VALID(size) \ - ((size == sizeof(zb_zcl_daily_schedule_get_schedule_payload_t) ? ZB_TRUE : ZB_FALSE)) - - -/** Check if @ref ZB_ZCL_DAILY_SCHEDULE_CLI_CMD_GET_DAY_PROFILE "GetDayProfile" command payload size is valid - * @param size - size of received data payload - */ -#define ZB_ZCL_DAILY_SCHEDULE_GET_DAY_PROFILE_PL_SIZE_IS_VALID(size) \ - ((size == sizeof(zb_zcl_daily_schedule_get_day_profile_payload_t) ? ZB_TRUE : ZB_FALSE)) - - -/** This enumeration presents possible values of Schedule Time Reference field - * @see Zigbee-17-05035-004, Table D-13 – Schedule Time Reference Enumeration - */ -typedef enum zb_zcl_daily_schedule_time_reference_e -{ - ZB_ZCL_DAILY_SCHEDULE_TIME_REFERENCE_UTC_TIME = 0x00, /**< UTC time */ - ZB_ZCL_DAILY_SCHEDULE_TIME_REFERENCE_STANDARD_TIME, /**< Standard time */ - ZB_ZCL_DAILY_SCHEDULE_TIME_REFERENCE_LOCAL_TIME /**< Local time */ - /* 0x03 - 0xFF is reserved */ -} zb_zcl_daily_schedule_time_reference_t; - - -/** @ref ZB_ZCL_DAILY_SCHEDULE_SRV_CMD_PUBLISH_SCHEDULE "PublishSchedule" command - * @see Zigbee-17-05035-004, subclause D.9.2.3.1 - */ -typedef ZB_PACKED_PRE struct zb_zcl_daily_schedule_publish_schedule_payload_s -{ - - /** An unsigned 32-bit field containing a unique identifier for the commodity - * provider. - */ - zb_uint32_t provider_id; /* (M) */ - - /** Unique identifier generated by the commodity provider. When new information - * is provided that replaces older information for the same time period, this - * field allows devices to determine which information is newer. - */ - zb_uint32_t issuer_event_id; /* (M) */ - - /** Unique identifier generated by the commodity Supplier to identify a particular schedule. - */ - zb_uint32_t schedule_id; /* (M) */ - - /** A UTC Time field to denote the time at which the published schedule becomes - * valid. A start date/time of 0x00000000 shall indicate that the command - * should be executed immediately. - */ - zb_uint32_t start_time; /* (M) */ - - /** An 8-bit enumeration identifying the type of schedule published in this - * command. - * @see zb_zcl_daily_schedule_type_t - */ - zb_uint8_t schedule_type; /* (M) */ - - /** This field indicates how the Start Times contained in the schedule are to be interpreted. - * @see zb_zcl_daily_schedule_time_reference_t - */ - zb_uint8_t schedule_time_reference; /* (M) */ - - /** The ScheduleName provides a method for utilities to assign a name to a schedule. - */ - zb_uint8_t schedule_name[1 + 12]; /* (M) */ -} ZB_PACKED_STRUCT zb_zcl_daily_schedule_publish_schedule_payload_t; - - -/** Macro for initialization @ref ZB_ZCL_DAILY_SCHEDULE_SRV_CMD_PUBLISH_SCHEDULE "PublishSchedule" command payload - */ -#define ZB_ZCL_DAILY_SCHEDULE_PUBLISH_SCHEDULE_PL_INIT \ - (zb_zcl_daily_schedule_publish_schedule_payload_t) {0} - - -/** Macro for initialization @ref ZB_ZCL_DAILY_SCHEDULE_SRV_CMD_PUBLISH_DAY_PROFILE "PublishDayProfile" command payload - */ -#define ZB_ZCL_DAILY_SCHEDULE_PUBLISH_DAY_PROFILE_PL_INIT \ - (zb_zcl_daily_schedule_publish_day_profile_payload_t) {0} - - -/** Macro for initialization @ref ZB_ZCL_DAILY_SCHEDULE_SRV_CMD_CANCEL_SCHEDULE "CancelSchedule" command payload - */ -#define ZB_ZCL_DAILY_SCHEDULE_CANCEL_SCHEDULE_PL_INIT \ - (zb_zcl_daily_schedule_cancel_schedule_payload_t) {0} - - -/** Compute expected size of received @ref zb_zcl_daily_schedule_publish_schedule_payload_t - * data payload - * @param pl - pointer to @ref zb_zcl_daily_schedule_publish_schedule_payload_t payload - */ -#define ZB_ZCL_DAILY_SCHEDULE_PUBLISH_SCHEDULE_PL_EXPECTED_SIZE(pl) \ - (sizeof(zb_zcl_daily_schedule_publish_schedule_payload_t)-sizeof((pl)->schedule_name)+1+ZB_ZCL_GET_STRING_LENGTH((pl)->schedule_name)) - - -/** Check if @ref ZB_ZCL_DAILY_SCHEDULE_SRV_CMD_PUBLISH_SCHEDULE "PublishSchedule" command payload size is valid - * @param pl - pointer to @ref zb_zcl_daily_schedule_publish_schedule_payload_t payload (pointer - * to buffer beginning that contains @ref zb_zcl_daily_schedule_publish_schedule_payload_t data payload) - * @param size - size of received data payload - */ -#define ZB_ZCL_DAILY_SCHEDULE_PUBLISH_SCHEDULE_PL_SIZE_IS_VALID(pl, size) \ - ((size == ZB_ZCL_DAILY_SCHEDULE_PUBLISH_SCHEDULE_PL_EXPECTED_SIZE((zb_zcl_daily_schedule_publish_schedule_payload_t *)pl)) ? ZB_TRUE : ZB_FALSE) - - -/** Check if @ref ZB_ZCL_DAILY_SCHEDULE_SRV_CMD_PUBLISH_DAY_PROFILE "PublishDayProfile" command payload size is valid - * @param size - size of received data payload - */ -#define ZB_ZCL_DAILY_SCHEDULE_PUBLISH_DAY_PROFILE_PL_SIZE_IS_VALID(size) \ - ((size >= (sizeof(zb_zcl_daily_schedule_publish_day_profile_payload_t)-sizeof(void *)-sizeof(zb_uint8_t)) ? ZB_TRUE : ZB_FALSE)) - - -/** Check if @ref ZB_ZCL_DAILY_SCHEDULE_SRV_CMD_CANCEL_SCHEDULE "CancelSchedule" command payload size is valid - * @param size - size of received data payload - */ -#define ZB_ZCL_DAILY_SCHEDULE_CANCEL_SCHEDULE_PL_SIZE_IS_VALID(size) \ - ((size == sizeof(zb_zcl_daily_schedule_cancel_schedule_payload_t) ? ZB_TRUE : ZB_FALSE)) - - -/** Linky Schedules Command Sub-Payload structure - * See Zigbee-17-05035-004, D.9.2.3.2.3.1 - */ -typedef ZB_PACKED_PRE struct zb_zcl_daily_schedule_linky_schedule_entry_s -{ - /** The Start Time is represented in minutes from midnight. - */ - zb_uint16_t start_time; /* (M) */ - - /** This is the current price tier that is valid until - * the start time of the next Schedule Entry. - */ - zb_uint8_t price_tier; /* (M) */ - - /** The required status of the auxiliary switches is indicated by the state of the bits. - * Bit0 correspond to Auxiliary Switch 1 and bit7 corresponds to Auxiliary Switch 8. - */ - zb_uint8_t auxiliary_load_switch_state; /* (M) */ -} ZB_PACKED_STRUCT zb_zcl_daily_schedule_linky_schedule_entry_t; - - -/** The format of schedule entry is dependent on schedule type. - */ -typedef ZB_PACKED_PRE union zb_zcl_daily_schedule_entry_u -{ - zb_zcl_daily_schedule_linky_schedule_entry_t linky_schedule_entry; -} ZB_PACKED_STRUCT zb_zcl_daily_schedule_entry_t; - - -/** @ref ZB_ZCL_DAILY_SCHEDULE_SRV_CMD_PUBLISH_DAY_PROFILE "PublishDayProfile" command payload. - * @see Zigbee-17-05035-004, subclause D.9.2.3.2 - */ -typedef ZB_PACKED_PRE struct zb_zcl_daily_schedule_publish_day_profile_payload_s -{ - /** An unsigned 32-bit field containing a unique identifier for the commodity - * provider. - */ - zb_uint32_t provider_id; /* (M) */ - - /** Unique identifier generated by the commodity provider. When new information - * is provided that replaces older information for the same time period, this - * field allows devices to determine which information is newer. - */ - zb_uint32_t issuer_event_id; /* (M) */ - - /** Unique identifier generated by the commodity Supplier to identify a particular schedule. - */ - zb_uint32_t schedule_id; /* (M) */ - - /** An 8-bit integer representing the total number of ScheduleEntries in this Day Profile. - */ - zb_uint8_t total_number_of_schedule_entries; /* (M) */ - - /** The CommandIndex is used to count the payload fragments in the case where the entire payload - * does not fit into one message. The CommandIndex starts at 0 and is incremented for each fragment - * belonging to the same command - */ - zb_uint8_t command_index; /* (M) */ - - /** In the case where the entire payload does not fit into one message, the - * Total Number of Commands field indicates the total number of sub-commands - * in the message. - */ - zb_uint8_t total_number_of_commands; /* (M) */ - - /** An 8-bit enumeration identifying the type of schedule published in this - * command. - * @see zb_zcl_daily_schedule_type_t - */ - zb_uint8_t schedule_type; /* (M) */ - - /** - * day_schedule_entries pointer is considered as a beginning of array (of day schedule entries), - * number_of_entries_in_this_command - as a number of entries. Please also take into account - * overall ZCL payload size (should be less than @ref ZB_ZCL_MAX_PAYLOAD_SIZE bytes to fit into - * one packet without fragmentation). - * @see zb_zcl_daily_schedule_entry_t - */ - zb_zcl_daily_schedule_entry_t *day_schedule_entries; /* (M) */ - - /** An 8-bit integer representing the number of Day Schedule entries in - * this command - */ - zb_uint8_t number_of_entries_in_this_command; /* (ZBOSS) */ -} ZB_PACKED_STRUCT zb_zcl_daily_schedule_publish_day_profile_payload_t; - - -/** @ref ZB_ZCL_DAILY_SCHEDULE_SRV_CMD_CANCEL_SCHEDULE "CancelSchedule" command payload. - * @see Zigbee-17-05035-004, D.9.2.3.3 - */ -typedef ZB_PACKED_PRE struct zb_zcl_daily_schedule_cancel_schedule_payload_s -{ - /** An unsigned 32-bit field containing a unique identifier for the commodity - * provider. - */ - zb_uint32_t provider_id; /* (M) */ - - /** Unique identifier generated by the commodity Supplier to identify a particular schedule. - */ - zb_uint32_t schedule_id; /* (M) */ - - /** An 8-bit enumeration identifying the type of schedule published in this - * command. - * @see zb_zcl_daily_schedule_type_t - */ - zb_uint8_t schedule_type; /* (M) */ -} ZB_PACKED_STRUCT zb_zcl_daily_schedule_cancel_schedule_payload_t; - - -/** @ref ZB_ZCL_DAILY_SCHEDULE_CLI_CMD_GET_DAY_PROFILE "GetDayProfile" command payload - * @see Zigbee-17-05035-004, D.9.2.4.2 - */ -typedef ZB_PACKED_PRE struct zb_zcl_daily_schedule_get_day_profile_payload_s -{ - /** An unsigned 32-bit field containing a unique identifier for the commodity - * provider. - */ - zb_uint32_t provider_id; /* (M) */ - - /** - * ScheduleID of the schedule to which the requested Day Profile belongs. - */ - zb_uint32_t schedule_id; -} ZB_PACKED_STRUCT zb_zcl_daily_schedule_get_day_profile_payload_t; - - -/** Function for sending @ref ZB_ZCL_DAILY_SCHEDULE_SRV_CMD_PUBLISH_SCHEDULE "PublishSchedule" command. - * On sender's side callback @ref ZB_ZCL_DEVICE_CB will be called with @ref ZB_ZCL_DAILY_SCHEDULE_GET_SCHEDULE_CB_ID - * callback id on reception of @ref ZB_ZCL_DAILY_SCHEDULE_CLI_CMD_GET_SCHEDULE "GetSchedule" command. - * @n On receiver's side callback @ref ZB_ZCL_DEVICE_CB will be called with - * @ref ZB_ZCL_DAILY_SCHEDULE_PUBLISH_SCHEDULE_CB_ID. - * @param param - Reference to buffer. - * @param dst_addr - Address of the device to send command to. - * @param dst_addr_mode - Address mode for dst_addr. - * @param dst_ep - Destination endpoint. - * @param src_ep - Current endpoint. - * @param pl - Packet payload (ref to @ref zb_zcl_daily_schedule_publish_schedule_payload_t). - * @param cb - Callback which should be called when the ZCL stack receives - * APS ack. - */ -void zb_zcl_daily_schedule_send_cmd_publish_schedule(zb_uint8_t param, const zb_addr_u *dst_addr, - enum zb_aps_addr_mode_e dst_addr_mode, - zb_uint8_t dst_ep, zb_uint8_t src_ep, - const zb_zcl_daily_schedule_publish_schedule_payload_t *pl, - zb_callback_t cb); - - -/** Function for send @ref ZB_ZCL_DAILY_SCHEDULE_SRV_CMD_PUBLISH_DAY_PROFILE "PublishDayProfile" command. - * On sender's side callback @ref ZB_ZCL_DEVICE_CB will be called with @ref ZB_ZCL_DAILY_SCHEDULE_GET_DAY_PROFILE_CB_ID - * callback id on reception of @ref ZB_ZCL_DAILY_SCHEDULE_CLI_CMD_GET_DAY_PROFILE "GetDayProfile" command. - * @n On receiver's side callback @ref ZB_ZCL_DEVICE_CB will be called with - * @ref ZB_ZCL_DAILY_SCHEDULE_PUBLISH_DAY_PROFILE_CB_ID - * @param param - Reference to buffer. - * @param dst_addr - Address of the device to send command to. - * @param dst_addr_mode - Address mode for dst_addr. - * @param dst_ep - Destination endpoint. - * @param src_ep - Current endpoint. - * @param pl - Packet payload (ref to @ref zb_zcl_daily_schedule_publish_day_profile_payload_t). - * @param cb - Callback which should be called when the ZCL stack receives - * APS ack. - */ -void zb_zcl_daily_schedule_send_cmd_publish_day_profile(zb_uint8_t param, - const zb_addr_u *dst_addr, enum zb_aps_addr_mode_e dst_addr_mode, - zb_uint8_t dst_ep, zb_uint8_t src_ep, - const zb_zcl_daily_schedule_publish_day_profile_payload_t *pl, - zb_callback_t cb -); - - -/** Function for sending @ref ZB_ZCL_DAILY_SCHEDULE_CLI_CMD_GET_SCHEDULE "GetSchedule" command. - * On receiver's side callback @ref ZB_ZCL_DEVICE_CB will be called with - * @ref ZB_ZCL_DAILY_SCHEDULE_GET_SCHEDULE_CB_ID - * @param param - Reference to buffer. - * @param dst_addr - Address of the device to send command to. - * @param dst_addr_mode - Address mode for dst_addr. - * @param dst_ep - Destination endpoint. - * @param src_ep - Current endpoint. - * @param pl - Packet payload (ref to @ref zb_zcl_daily_schedule_get_schedule_payload_t). - * @param cb - Callback which should be called when the ZCL stack receives - * APS ack. - */ -void zb_zcl_daily_schedule_send_cmd_get_schedule(zb_uint8_t param, - const zb_addr_u *dst_addr, enum zb_aps_addr_mode_e dst_addr_mode, - zb_uint8_t dst_ep, zb_uint8_t src_ep, - const zb_zcl_daily_schedule_get_schedule_payload_t *pl, - zb_callback_t cb -); - - -/** Function for sending @ref ZB_ZCL_DAILY_SCHEDULE_CLI_CMD_GET_DAY_PROFILE "GetDayProfile" command. - * On receiver's side callback @ref ZB_ZCL_DEVICE_CB will be called with - * @ref ZB_ZCL_DAILY_SCHEDULE_GET_DAY_PROFILE_CB_ID - * @param param - Reference to buffer. - * @param dst_addr - Address of the device to send command to. - * @param dst_addr_mode - Address mode for dst_addr. - * @param dst_ep - Destination endpoint. - * @param src_ep - Current endpoint. - * @param pl - Packet payload (ref to @ref zb_zcl_daily_schedule_get_day_profile_payload_t). - * @param cb - Callback which should be called when the ZCL stack receives - * APS ack. - */ -void zb_zcl_daily_schedule_send_cmd_get_day_profile(zb_uint8_t param, - const zb_addr_u *dst_addr, enum zb_aps_addr_mode_e dst_addr_mode, - zb_uint8_t dst_ep, zb_uint8_t src_ep, - const zb_zcl_daily_schedule_get_day_profile_payload_t *pl, - zb_callback_t cb -); - -/** Function for send @ref ZB_ZCL_DAILY_SCHEDULE_CLI_CMD_GET_SCHEDULE_CANCELLATION "GetScheduleCancellation" command. - * On receiver's side callback @ref ZB_ZCL_DEVICE_CB will be called with - * @ref ZB_ZCL_DAILY_SCHEDULE_GET_SCHEDULE_CANCELLATION_CB_ID - * @param param - Reference to buffer. - * @param dst_addr - Address of the device to send command to. - * @param dst_addr_mode - Address mode for dst_addr. - * @param dst_ep - Destination endpoint. - * @param src_ep - Current endpoint. - * @param cb - Callback which should be called when the ZCL stack receives - * APS ack. - */ -void zb_zcl_daily_schedule_send_cmd_get_schedule_cancellation(zb_uint8_t param, - const zb_addr_u *dst_addr, enum zb_aps_addr_mode_e dst_addr_mode, - zb_uint8_t dst_ep, zb_uint8_t src_ep, - zb_callback_t cb -); - - -/** Function for send @ref ZB_ZCL_DAILY_SCHEDULE_SRV_CMD_CANCEL_SCHEDULE "CancelSchedule" command. - * On receiver's side callback @ref ZB_ZCL_DEVICE_CB will be called with - * @ref ZB_ZCL_DAILY_SCHEDULE_CANCEL_SCHEDULE_CB_ID - * @param param - Reference to buffer. - * @param dst_addr - Address of the device to send command to. - * @param dst_addr_mode - Address mode for dst_addr. - * @param dst_ep - Destination endpoint. - * @param src_ep - Current endpoint. - * @param pl - Packet payload (ref to @ref zb_zcl_daily_schedule_cancel_schedule_payload_t). - * @param cb - Callback which should be called when the ZCL stack receives - * APS ack. - */ -void zb_zcl_daily_schedule_send_cmd_cancel_schedule(zb_uint8_t param, - const zb_addr_u *dst_addr, enum zb_aps_addr_mode_e dst_addr_mode, - zb_uint8_t dst_ep, zb_uint8_t src_ep, - const zb_zcl_daily_schedule_cancel_schedule_payload_t *pl, - zb_callback_t cb -); - - -/** Macro for calling @ref zb_zcl_daily_schedule_send_cmd_publish_schedule function - */ -#define ZB_ZCL_DAILY_SCHEDULE_SEND_CMD_PUBLISH_SCHEDULE(_param, _dst_addr, _addr_mode, \ - _dst_ep, _src_ep, _payload) \ - zb_zcl_daily_schedule_send_cmd_publish_schedule(_param, _dst_addr, _addr_mode, \ - _dst_ep, _src_ep, _payload, NULL) - - -/** Macro for calling @ref zb_zcl_daily_schedule_send_cmd_publish_day_profile function - */ -#define ZB_ZCL_DAILY_SCHEDULE_SEND_CMD_PUBLISH_DAY_PROFILE(_param, _dst_addr, _addr_mode, \ - _dst_ep, _src_ep, _payload) \ - zb_zcl_daily_schedule_send_cmd_publish_day_profile(_param, _dst_addr, _addr_mode, \ - _dst_ep, _src_ep, _payload, NULL) - - -/** Macro for call @ref zb_zcl_daily_schedule_send_cmd_cancel_schedule function - */ -#define ZB_ZCL_DAILY_SCHEDULE_SEND_CMD_CANCEL_SCHEDULE(_param, _dst_addr, _addr_mode, \ - _dst_ep, _src_ep, _payload) \ - zb_zcl_daily_schedule_send_cmd_cancel_schedule(_param, _dst_addr, _addr_mode, \ - _dst_ep, _src_ep, _payload, NULL) - - -/** Macro for call @ref zb_zcl_daily_schedule_send_cmd_get_schedule function - */ -#define ZB_ZCL_DAILY_SCHEDULE_SEND_CMD_GET_SCHEDULE(_param, _dst_addr, _addr_mode, \ - _dst_ep, _src_ep, _payload) \ - zb_zcl_daily_schedule_send_cmd_get_schedule(_param, _dst_addr, _addr_mode, \ - _dst_ep, _src_ep, _payload, NULL) - - -/** Macro for call @ref zb_zcl_daily_schedule_send_cmd_get_day_profile function - */ -#define ZB_ZCL_DAILY_SCHEDULE_SEND_CMD_GET_DAY_PROFILE(_param, _dst_addr, _addr_mode, \ - _dst_ep, _src_ep, _payload) \ - zb_zcl_daily_schedule_send_cmd_get_day_profile(_param, _dst_addr, _addr_mode, \ - _dst_ep, _src_ep, _payload, NULL) - - -/** Macro for call @ref zb_zcl_daily_schedule_send_cmd_get_schedule_cancellation function - */ -#define ZB_ZCL_DAILY_SCHEDULE_SEND_CMD_GET_SCHEDULE_CANCELLATION(_param, _dst_addr, _addr_mode, \ - _dst_ep, _src_ep) \ - zb_zcl_daily_schedule_send_cmd_get_schedule_cancellation(_param, _dst_addr, _addr_mode, \ - _dst_ep, _src_ep, NULL) - - -/** @} */ /* ZB_ZCL_DAILY_SCHEDULE_COMMANDS */ - -/** @} */ /* ZCL Daily Schedule cluster definitions */ - -/** @endcond */ /* DOXYGEN_ZCL_SECTION */ - -/******************************************************************************/ -/* Server */ -/******************************************************************************/ -/* Client */ -/******************************************************************************/ -/* Common */ - -/******************************************************************************/ - -void zb_zcl_daily_schedule_init_server(); -void zb_zcl_daily_schedule_init_client(); -#define ZB_ZCL_CLUSTER_ID_DAILY_SCHEDULE_SERVER_ROLE_INIT zb_zcl_daily_schedule_init_server -#define ZB_ZCL_CLUSTER_ID_DAILY_SCHEDULE_CLIENT_ROLE_INIT zb_zcl_daily_schedule_init_client - -/******************************************************************************/ -#endif /* ZB_ZCL_DAILY_SCHEDULE_H_ */ diff --git a/zboss/lib/cortex-m4/hard-float/libzboss.a b/zboss/lib/cortex-m4/hard-float/libzboss.a index ee9351ed2bf7a2ee46150645d8593a4e73802640..bce152a09af26721b82868b9538ee3d4a5a837c5 100644 GIT binary patch delta 15505 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 So#UdLMd|G%^AehsTmA=vM1;fu diff --git a/zboss/lib/cortex-m4/hard-float/libzboss.ed.a b/zboss/lib/cortex-m4/hard-float/libzboss.ed.a index 4027e577f095d236dd3aa9916f483e5e36b12489..8cf582e28775dcf8d6dc032c9464c670dd563f73 100644 GIT binary patch delta 14474 zcmc&)3w##EwLkm(cK3S{A_?T3U>Z^hd5{;67+w+41mc62LLLwmngE8B0xc|H)#61f zrZ9rS1ut5qtwj;1Sb#oHu!F0H9&U69J^xogZ_}xmFbG;9buEb3 z1GmM4h|t+jr|K-`qtKDO6`_)W0)DG)n^-dSb1?r;Q%*9&?l zh9%_?TyN;z(!r2EAa#UWc#t}V-dSbGb<^Jf$->N6LAqw>-=uLjwAHWK^KR%I`_{V> zI$78Wti+0cpj-n~B^hi4 z&V$Mj*$(2Cff~0=XFnZdz)nyZa@Ti`TV4g#Lg{KyyA0h$UKRlLN_Zw6)XuQ$9H?Ez zp*^7L?5DeMekQ0_37s|2LVX;>)Pr`l7%GEyZP2gWu;M&u3^grX$2=U6g&z$9twZST zRKE2bXl?QKc+eP{)7!_{J)m`jmd8Nr2zo~qF13H*K;E<@a8@LNb(27U(Jy7{)t z@u$I$(Am#rn3e(l?!=0C@V5^g{Lc<=jbGM-zq@ec1o%4ze*bk&xV%0fltH&aXU0Yp znJ9Y-0#}Rs>ml$BpxccfT?T=x#dC`x;KnbXgFr|4?RW@W4!u2PYu%A^5V&s8J2oEF zGzdlxa*%Wyg53>$^a~JlW87v4x^eFT2zCb=$3UpZGS~#^whv2C_ z|3cvVzpVqIlt-XL6rO-kXQ)nxP)Dep3Lz5us*b#%{>Z+#I)>cfL zRs~pN3Jvosrd8F~�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 aLj9aYVhnWo)KD*Hpx99~-T6RhkNE$z*-DB4 delta 13914 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 QFG?S(>gtuVeS56`2m9rJfdBvi