/* * Copyright (c) 2012-2022 DSR Corporation, Denver CO, USA * Copyright (c) 2021-2022 Espressif Systems (Shanghai) PTE LTD * All rights reserved. * * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form, except as embedded into a Espressif Systems * 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. * * 3. Neither the name of the copyright holder nor the names of its contributors * may be used to endorse or promote products derived from this software without * specific prior written permission. * * 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 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 THE COPYRIGHT HOLDER 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: Price cluster definitions */ #ifndef ZB_ZCL_PRICE_H #define ZB_ZCL_PRICE_H 1 #include "zcl/zb_zcl_common.h" #include "zcl/zb_zcl_commands.h" /** @cond DOXYGEN_ZCL_SECTION */ /** @addtogroup ZB_ZCL_PRICE * @{ * @details * The Price Cluster provides the mechanism for communicating Gas, Energy, or * Water pricing information within the premises. */ /* Cluster ZB_ZCL_CLUSTER_ID_PRICE */ /** @defgroup ZB_ZCL_PRICE_ATTRS Price cluster attributes * @{ */ /** @defgroup ZB_ZCL_PRICE_SRV_ATTRIBUTES_GROUP Price cluster server attributes * @{ * @details * For convenience, 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. */ /** @brief Price Cluster General server attributes * @see SE spec, Table D-73 */ enum zb_zcl_price_srv_attr_set_e { ZB_ZCL_PRICE_SET_TIER_LABEL = 0x00, /**< Provides a method for utilities to assign a label to the Price Tier. */ ZB_ZCL_PRICE_SET_BLOCK_THRESHOLD = 0x01, /**< Provides remote access to the Price server Block Thresholds. */ ZB_ZCL_PRICE_SET_BLOCK_PERIOD = 0x02, /**< Provides remote access to the Price server Block Threshold period. */ ZB_ZCL_PRICE_SET_COMMODITY = 0x03, /**< Represents items that are associated with a particular commodity. */ ZB_ZCL_PRICE_SET_BLOCK_PRICE_INFORMATION = 0x04, /**< Provides remote access to the block prices. */ ZB_ZCL_PRICE_SET_EXTENDED_PRICE_INFORMATION = 0x05, /**< Represents extended price information. */ ZB_ZCL_PRICE_SET_TARIFF_INFORMATION = 0x06, /**< Represents items that are associated with a particular Price Tariff. */ ZB_ZCL_PRICE_SET_BILLING_INFORMATION = 0x07, /**< Provides remote access to the Price server Billing information. */ ZB_ZCL_PRICE_SET_CREDIT_PAYMENT = 0x08, /**< Provides a method for the HAN (IHD) to understand the current status * of the credit-only payment made to the energy supplier. */ /* reserved 0x09 - 0x7F */ ZB_ZCL_PRICE_SET_RECEIVED_TIER_LABEL = 0x80, /**< Provides a method for utilities to assign a label to Received Price Tiers. */ ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_THRESHOLD = 0x81, /**< Provides remote access to the Price server ReceivedBlockThresholds. */ ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_PERIOD = 0x82, /**< Provides remote access to the Price server Received Block Threshold period. */ /* reserved 0x83 */ ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_PRICE_INFORMATION = 0x84, /**< @copydetails ZB_ZCL_PRICE_SET_BLOCK_PRICE_INFORMATION_GROUP */ ZB_ZCL_PRICE_SET_RECEIVED_EXTENDED_PRICE_INFORMATION = 0x85, /**< @copydetails ZB_ZCL_PRICE_SET_EXTENDED_PRICE_INFORMATION_GROUP */ ZB_ZCL_PRICE_SET_RECEIVED_TARIFF_INFORMATION = 0x86, /**< @copydetails ZB_ZCL_PRICE_SET_TARIFF_INFORMATION_GROUP */ ZB_ZCL_PRICE_SET_RECEIVED_BILLING_INFORMATION = 0x87, /**< @copydetails ZB_ZCL_PRICE_SET_BILLING_INFORMATION_GROUP */ /* reserved 0x88 - 0xFF */ }; /******************************************************************************/ /** @defgroup ZB_ZCL_PRICE_SET_TIER_LABEL_GROUP Tier Label * @{ */ /** @brief Tier Label (Delivered) Attributes Set * @see SE spec, D.4.2.2.1 */ enum zb_zcl_price_set_tier_label_e { /** The TierNPriceLabel attributes provide a method for utilities to assign a * label to the Price Tier declared within the Publish Price command. */ ZB_ZCL_ATTR_PRICE_SRV_TIER1_PRICE_LABEL = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_TIER_LABEL, 0x00), ZB_ZCL_ATTR_PRICE_SRV_TIER2_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER3_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER4_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER5_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER6_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER7_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER8_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER9_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER10_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER11_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER12_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER13_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER14_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER15_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER16_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER17_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER18_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER19_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER20_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER21_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER22_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER23_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER24_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER25_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER26_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER27_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER28_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER29_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER30_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER31_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER32_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER33_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER34_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER35_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER36_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER37_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER38_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER39_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER40_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER41_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER42_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER43_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER44_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER45_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER46_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER47_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_TIER48_PRICE_LABEL, }; /** @cond internals_doc */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_TIERN_PRICE_LABEL_GNR(tierN, data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_TIER ## tierN ## _PRICE_LABEL, \ ZB_ZCL_ATTR_TYPE_OCTET_STRING, \ ZB_ZCL_ATTR_ACCESS_READ_WRITE, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @endcond */ /* internals_doc */ /** @} */ /* end of ZB_ZCL_PRICE_SET_TIER_LABEL_GROUP */ /******************************************************************************/ /** @defgroup ZB_ZCL_PRICE_SET_BLOCK_THRESHOLD_GROUP Block Threshold * @{ * @details * The following set of attributes provides remote access to the Price server * Block Thresholds. Block Threshold values are crossed when the * CurrentBlockPeriodConsumptionDelivered attribute value is greater than a * BlockNThreshold attribute. The number of block thresholds is indicated by * the Number of Block Thresholds field in the associated Publish Price command. * The number of blocks is one greater than the number of thresholds. */ /** @brief Block Threshold (Delivered) Attributes Set * @see SE spec, D.4.2.2.2 */ enum zb_zcl_set_block_threshold_e { /** Attributes Block1Threshold through Block15Threshold represent the block * threshold values for a given period (typically the billing cycle). */ ZB_ZCL_ATTR_PRICE_SRV_BLOCK1_THRESHOLD = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_BLOCK_THRESHOLD, 0x00), ZB_ZCL_ATTR_PRICE_SRV_BLOCK2_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_BLOCK3_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_BLOCK4_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_BLOCK5_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_BLOCK6_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_BLOCK7_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_BLOCK8_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_BLOCK9_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_BLOCK10_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_BLOCK11_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_BLOCK12_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_BLOCK13_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_BLOCK14_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_BLOCK15_THRESHOLD, /** Where a single set of thresholds is used, the BlockThresholdCount * attribute indicates the number of applicable BlockNThresholds. Where more * than one set of thresholds is used, each set will be accompanied by an * appropriate TierNBlockThresholdCount attribute */ ZB_ZCL_ATTR_PRICE_SRV_BLOCK_THRESHOLD_COUNT, /** Attributes Tier1Block1Threshold through Tier15Block15Threshold represent * the block threshold values applicable to a specific TOU tier for a given * period (typically the billing cycle). */ ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK1_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK2_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK3_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK4_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK5_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK6_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK7_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK8_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK9_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK10_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK11_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK12_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK13_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK14_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK15_THRESHOLD, /** The TierNBlockThresholdCount attributes hold the number of block * thresholds applicable to a given tier. */ ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK_THRESHOLD_COUNT, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK1_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK2_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK3_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK4_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK5_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK6_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK7_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK8_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK9_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK10_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK11_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK12_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK13_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK14_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK15_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK_THRESHOLD_COUNT, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK1_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK2_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK3_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK4_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK5_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK6_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK7_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK8_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK9_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK10_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK11_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK12_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK13_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK14_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK15_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK_THRESHOLD_COUNT, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK1_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK2_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK3_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK4_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK5_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK6_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK7_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK8_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK9_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK10_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK11_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK12_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK13_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK14_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK15_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK_THRESHOLD_COUNT, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK1_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK2_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK3_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK4_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK5_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK6_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK7_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK8_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK9_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK10_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK11_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK12_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK13_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK14_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK15_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK_THRESHOLD_COUNT, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK1_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK2_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK3_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK4_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK5_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK6_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK7_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK8_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK9_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK10_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK11_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK12_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK13_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK14_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK15_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK_THRESHOLD_COUNT, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK1_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK2_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK3_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK4_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK5_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK6_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK7_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK8_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK9_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK10_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK11_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK12_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK13_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK14_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK15_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK_THRESHOLD_COUNT, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK1_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK2_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK3_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK4_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK5_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK6_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK7_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK8_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK9_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK10_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK11_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK12_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK13_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK14_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK15_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK_THRESHOLD_COUNT, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK1_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK2_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK3_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK4_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK5_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK6_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK7_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK8_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK9_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK10_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK11_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK12_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK13_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK14_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK15_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK_THRESHOLD_COUNT, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK1_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK2_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK3_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK4_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK5_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK6_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK7_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK8_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK9_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK10_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK11_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK12_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK13_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK14_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK15_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK_THRESHOLD_COUNT, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK1_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK2_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK3_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK4_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK5_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK6_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK7_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK8_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK9_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK10_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK11_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK12_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK13_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK14_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK15_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK_THRESHOLD_COUNT, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK1_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK2_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK3_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK4_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK5_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK6_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK7_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK8_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK9_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK10_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK11_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK12_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK13_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK14_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK15_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK_THRESHOLD_COUNT, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK1_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK2_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK3_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK4_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK5_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK6_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK7_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK8_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK9_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK10_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK11_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK12_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK13_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK14_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK15_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK_THRESHOLD_COUNT, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK1_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK2_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK3_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK4_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK5_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK6_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK7_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK8_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK9_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK10_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK11_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK12_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK13_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK14_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK15_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK_THRESHOLD_COUNT, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK1_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK2_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK3_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK4_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK5_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK6_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK7_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK8_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK9_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK10_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK11_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK12_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK13_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK14_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK15_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK_THRESHOLD_COUNT, }; /** @cond internals_doc */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_BLOCKN_THRESHOLD_GNR(blockN, data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_BLOCK ## blockN ## _THRESHOLD, \ ZB_ZCL_ATTR_TYPE_48BIT, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) data_ptr \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_BLOCK_THRESHOLD_COUNT_GNR(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_BLOCK_THRESHOLD_COUNT, \ ZB_ZCL_ATTR_TYPE_U8, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) data_ptr \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_TIERN_BLOCKM_THRESHOLD_GNR(blockN, tierN, data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_TIER ## tierN ## _BLOCK ## blockN ## _THRESHOLD, \ ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_TIERN_BLOCK_THRESHOLD_COUNT_GNR(tierN, data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_TIER ## tierN ## _BLOCK_THRESHOLD_COUNT, \ ZB_ZCL_ATTR_TYPE_U8, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) data_ptr \ } /** @endcond */ /* internals_doc */ /** @} */ /* end of ZB_ZCL_PRICE_SET_BLOCK_THRESHOLD_GROUP */ /******************************************************************************/ /** @defgroup ZB_ZCL_PRICE_SET_BLOCK_PERIOD_GROUP Block Period * @{ * @details * This set of attributes provides remote access to the Price server * Block Threshold period (typically the billing cycle) information. */ /** @brief Block Period (Delivered) Attributes Set * @see SE spec, D.4.2.2.3 */ enum zb_zcl_price_set_block_period_e { /** The StartOfBlockPeriod attribute represents the start time of the current * block tariff period. */ ZB_ZCL_ATTR_PRICE_SRV_START_OF_BLOCK_PERIOD = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_BLOCK_PERIOD, 0x00), /** The BlockPeriodDuration attribute represents the current block tariff * period duration in units defined by the BlockPeriodDurationType attribute. */ ZB_ZCL_ATTR_PRICE_SRV_BLOCK_PERIOD_DURATION, /** ThresholdMultiplier provides a value to be multiplied against Threshold * attributes. */ ZB_ZCL_ATTR_PRICE_SRV_THRESHOLD_MULTIPLIER, /** ThresholdDivisor provides a value to divide the result of applying * the ThresholdMultiplier attribute to Block Threshold values to derive * values That can be compared against the CurrentBlockPeriodConsumptionDelivered * attribute within the Metering cluster. */ ZB_ZCL_ATTR_PRICE_SRV_THRESHOLD_DIVISOR, /** The BlockPeriodDurationType attribute indicates the timebase used for the * BlockPeriodDuration attribute. */ ZB_ZCL_ATTR_PRICE_SRV_BLOCK_PERIOD_DURATION_TYPE, /* reserved 0x0205 - 0x02FF */ }; /** @cond internals_doc */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_START_OF_BLOCK_PERIOD(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_START_OF_BLOCK_PERIOD, \ ZB_ZCL_ATTR_TYPE_UTC_TIME, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_BLOCK_PERIOD_DURATION(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_BLOCK_PERIOD_DURATION, \ ZB_ZCL_ATTR_TYPE_U24, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_THRESHOLD_MULTIPLIER(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_THRESHOLD_MULTIPLIER, \ ZB_ZCL_ATTR_TYPE_U24, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_THRESHOLD_DIVISOR(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_THRESHOLD_DIVISOR, \ ZB_ZCL_ATTR_TYPE_U24, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_BLOCK_PERIOD_DURATION_TYPE(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_BLOCK_PERIOD_DURATION_TYPE, \ ZB_ZCL_ATTR_TYPE_8BITMAP, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @endcond */ /* internals_doc */ /** @brief @e BlockPeriodDurationType attribute values * @see SE spec, table D-105. * @see ZB_ZCL_ATTR_PRICE_SRV_BLOCK_PERIOD_DURATION_TYPE */ typedef enum zb_zcl_price_block_period_duration_type_e { ZB_ZCL_PRICE_BLOCK_PERIOD_DURATION_TYPE_MINUTES = 0x00, /**< minutes (default) */ ZB_ZCL_PRICE_BLOCK_PERIOD_DURATION_TYPE_DAYS = 0x01, /**< days */ ZB_ZCL_PRICE_BLOCK_PERIOD_DURATION_TYPE_WEEKS = 0x02, /**< weeks */ ZB_ZCL_PRICE_BLOCK_PERIOD_DURATION_TYPE_MONTHS = 0x03, /**< months */ } zb_zcl_price_block_period_duration_type_t; /** @} */ /* end of ZB_ZCL_PRICE_SET_BLOCK_PERIOD_GROUP */ /******************************************************************************/ /** @defgroup ZB_ZCL_PRICE_SET_COMMODITY_GROUP Commodity * @{ * @details * This set of attributes represents items that are associated with a * particular commodity. */ /** Values and Descriptions for the CalorificValueUnit Attribute * @see SE spec, subclause D.4.2.2.4.6 */ typedef enum zb_zcl_price_calorific_value_unit_values_e { ZB_ZCL_PRICE_CALORIFIC_VALUE_UNIT_MJ_M3 = 0x01, /**< MJ/m3 */ ZB_ZCL_PRICE_CALORIFIC_VALUE_UNIT_MJ_KG, /**< MJ/kg */ } zb_zcl_price_calorific_value_unit_values_t; /** @brief Commodity Attributes Set * @see SE spec, D.4.2.2.4 */ enum zb_zcl_price_set_commodity_e { /** CommodityType provides a label for identifying the type of pricing server * present. */ ZB_ZCL_ATTR_PRICE_SRV_COMMODITY_TYPE = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_COMMODITY, 0x00), /** The value of the Standing Charge is a daily fixed charge associated with * supplying the commodity, measured in base unit of Currency with the decimal * point located as indicated by the Trailing Digits field of a Publish Price * command or PriceTrailingDigit attribute. */ ZB_ZCL_ATTR_PRICE_SRV_STANDING_CHARGE, /** The conversion factor is used for gas meter and takes into account changes * in the volume of gas based on temperature and pressure. */ ZB_ZCL_ATTR_PRICE_SRV_CONVERSION_FACTOR, /** An 8-bit BitMap used to determine where the decimal point is located in * the ConversionFactor attribute. */ ZB_ZCL_ATTR_PRICE_SRV_CONVERSION_FACTOR_TRAILING_DIGIT, /** The amount of heat generated when a given mass of fuel is completely burned. */ ZB_ZCL_ATTR_PRICE_SRV_CALORIFIC_VALUE, /** This attribute defines the unit for the CalorificValue. */ ZB_ZCL_ATTR_PRICE_SRV_CALORIFIC_VALUE_UNIT, /** An 8-bit BitMap used to determine where the decimal point is located in * the CalorificValue attribute. */ ZB_ZCL_ATTR_PRICE_SRV_CALORIFIC_VALUE_TRAILING_DIGIT, }; /** @cond internals_doc */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_COMMODITY_TYPE(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_COMMODITY_TYPE, \ ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) data_ptr \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_STANDING_CHARGE(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_STANDING_CHARGE, \ ZB_ZCL_ATTR_TYPE_U32, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CONVERSION_FACTOR(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_CONVERSION_FACTOR, \ ZB_ZCL_ATTR_TYPE_U32, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CONVERSION_FACTOR_TRAILING_DIGIT(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_CONVERSION_FACTOR_TRAILING_DIGIT, \ ZB_ZCL_ATTR_TYPE_8BITMAP, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CALORIFIC_VALUE(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_CALORIFIC_VALUE, \ ZB_ZCL_ATTR_TYPE_U32, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CALORIFIC_VALUE_UNIT(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_CALORIFIC_VALUE_UNIT, \ ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CALORIFIC_VALUE_TRAILING_DIGIT(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_CALORIFIC_VALUE_TRAILING_DIGIT, \ ZB_ZCL_ATTR_TYPE_8BITMAP, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @endcond */ /* internals_doc */ /** @} */ /* end of ZB_ZCL_PRICE_SET_COMMODITY_GROUP */ /******************************************************************************/ /** @defgroup ZB_ZCL_PRICE_SET_BLOCK_PRICE_INFORMATION_GROUP Block Price Information * @{ * @details * This attributes set provide remote access to the block prices. * The Block Price Information attribute set supports Block and combined * Tier-Block pricing, the number of blocks is one greater than the number of * block thresholds defined in the Pricing cluster */ /** @brief Block Price Information (Delivered) Attributes Set * @see SE spec, D.4.2.2.5 */ enum zb_zcl_price_set_block_price_information_e { /** Attributes PriceNoTierBlock1 through PriceTier15Block16 represent the * price of Energy, Gas, or Water delivered to the premises (i.e. delivered * to the customer from the utility) at a specific price tier as defined by * a TOU schedule, Block Threshold or a real time pricing period. */ ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK1_PRICE = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_BLOCK_PRICE_INFORMATION, 0x00), ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER1_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER2_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER3_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER4_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER5_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER6_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER7_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER8_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER9_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER10_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER11_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER12_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER13_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER14_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_TIER15_BLOCK16_PRICE, }; /** @cond internals_doc */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCKN_PRICE_GNR(blockN, data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_NO_TIER_BLOCK ## blockN ## _PRICE, \ ZB_ZCL_ATTR_TYPE_U32, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_TIERN_BLOCKM_PRICE_GNR(tierN, blockM, data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_TIER ## tierN ## _BLOCK ## blockM ## _PRICE, \ ZB_ZCL_ATTR_TYPE_U32, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @endcond */ /* internals_doc */ /** @} */ /* end of ZB_ZCL_PRICE_SET_BLOCK_PRICE_INFORMATION_GROUP */ /******************************************************************************/ /** @defgroup ZB_ZCL_PRICE_SET_EXTENDED_PRICE_INFORMATION_GROUP Extended Price Information * @{ * @details * In case of TOU charging only, the price server allows support for up to 48 * TOU rates. To reduce the number of attributes, Tier1Block1Price through * Tier15Block1Price attributes are reused to represent rates for tiers 1 to 15. * Rates for tiers 16 to 48 are provided in the extended price information set. */ /** @brief Extended Price Information (Delivered) Attributes Set * @see SE spec, D.4.2.2.6 */ enum zb_zcl_price_set_extended_price_information_e { /* reserved 0x0500 - 0x050E */ /** Attributes PriceTier16 through PriceTier48 represent the price of Energy, * Gas, or Water delivered to the premises (i.e. delivered to the customer * from the utility) at a specific price tier. */ ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER16 = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_EXTENDED_PRICE_INFORMATION, 0x0F), ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER17, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER18, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER19, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER20, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER21, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER22, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER23, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER24, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER25, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER26, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER27, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER28, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER29, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER30, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER31, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER32, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER33, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER34, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER35, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER36, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER37, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER38, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER39, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER40, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER41, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER42, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER43, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER44, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER45, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER46, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER47, ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER48, /* reserved 0x0530 - 0x05FD */ /** Attribute CPP1 Price represents the price of Energy, Gas, or Water * delivered to the premises (i.e. delivered to the customer from the utility) * while Critical Peak Pricing 'CPP1' is being applied. */ ZB_ZCL_ATTR_PRICE_SRV_CPP1_PRICE = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_EXTENDED_PRICE_INFORMATION, 0x0FE), /** Attribute CPP2 Price represents the price of Energy, Gas, or Water * delivered to the premises (i.e. delivered to the customer from the utility) * while Critical Peak Pricing 'CPP2' is being applied. */ ZB_ZCL_ATTR_PRICE_SRV_CPP2_PRICE, }; /** @cond internals_doc */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIERN_GNR(tierN, data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_PRICE_TIER ## tierN, \ ZB_ZCL_ATTR_TYPE_U32, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CPPN_PRICE_GNR(cppN, data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_CPP ## cppN ## _PRICE, \ ZB_ZCL_ATTR_TYPE_U32, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @endcond */ /* internals_doc */ /** @} */ /* end of ZB_ZCL_PRICE_SET_EXTENDED_PRICE_INFORMATION_GROUP */ /******************************************************************************/ /** @defgroup ZB_ZCL_PRICE_SET_TARIFF_INFORMATION_GROUP Tariff Information * @{ * @details * This set of attributes represents items that are associated with a * particular Price Tariff. * @note The terms tier and rate are used * interchangeably here, but do define the same thing. */ /** @brief Tariff Information (Delivered) Attributes Set * @see SE spec, D.4.2.2.7 */ enum zb_zcl_price_set_tariff_information_e { /* reserved 0x0600 - 0x060F */ /** The TariffLabel attribute provides a method for utilities to assign a * label to an entire set of tariff information. */ ZB_ZCL_ATTR_PRICE_SRV_TARIFF_LABEL = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_TARIFF_INFORMATION, 0x10), /** An 8-bit integer which indicates the number of price tiers used while this * tariff is active. */ ZB_ZCL_ATTR_PRICE_SRV_NUMBER_OF_PRICE_TIERS_IN_USE, /** An 8-bit integer which indicates the total number of block thresholds used * in the currently active tariff. */ ZB_ZCL_ATTR_PRICE_SRV_NUMBER_OF_BLOCK_THRESHOLDS_IN_USE, /** An 8-bit enumeration indicating how the mixed TOU / Block charging is to * be applied. */ ZB_ZCL_ATTR_PRICE_SRV_TIER_BLOCK_MODE, /* reserved 0x0614 */ /** An 8-bit enumeration identifying the base unit of measure. */ ZB_ZCL_ATTR_PRICE_SRV_UNIT_OF_MEASURE = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_TARIFF_INFORMATION, 0x15), /** An unsigned 16-bit integer containing identifying information concerning * the local unit of currency used in the Price cluster. */ ZB_ZCL_ATTR_PRICE_SRV_CURRENCY, /** An 8-bit BitMap used to determine where the decimal point is located for * prices provided in the Standing Charge attribute and the Price Matrix command. */ ZB_ZCL_ATTR_PRICE_SRV_PRICE_TRAILING_DIGIT, /* reserved 0x0618 */ /** An 8-bit enumeration identifying the resolution period for Block Tariff. */ ZB_ZCL_ATTR_PRICE_SRV_TARIFF_RESOLUTION_PERIOD = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_TARIFF_INFORMATION, 0x19), /* reserved 0x061A - 0x061F */ /** Used to calculate the amount of carbon dioxide (CO2) produced from energy use. */ ZB_ZCL_ATTR_PRICE_SRV_CO2 = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_TARIFF_INFORMATION, 0x20), /** This attribute is an 8-bit enumeration which defines the unit for the CO2 attribute. */ ZB_ZCL_ATTR_PRICE_SRV_CO2_UNIT, /** An 8-bit Bit-Map used to determine where the decimal point is located in * the CO2 attribute. */ ZB_ZCL_ATTR_PRICE_SRV_CO2_TRAILING_DIGIT, /* reserved 0x628 - 0x06FF */ }; /** @cond internals_doc */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_TARIFF_LABEL(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_TARIFF_LABEL, \ ZB_ZCL_ATTR_TYPE_OCTET_STRING, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_NUMBER_OF_PRICE_TIERS_IN_USE(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_NUMBER_OF_PRICE_TIERS_IN_USE, \ ZB_ZCL_ATTR_TYPE_U8, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_NUMBER_OF_BLOCK_THRESHOLDS_IN_USE(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_NUMBER_OF_BLOCK_THRESHOLDS_IN_USE, \ ZB_ZCL_ATTR_TYPE_U8, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_TIER_BLOCK_MODE(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_TIER_BLOCK_MODE, \ ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @see SE spec, table D-82. */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_TIER_BLOCK_MODE(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_TIER_BLOCK_MODE, \ ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @see @ref zb_zcl_metering_unit_of_measure_e */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_UNIT_OF_MEASURE(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_UNIT_OF_MEASURE, \ ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CURRENCY(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_CURRENCY, \ ZB_ZCL_ATTR_TYPE_U16, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_PRICE_TRAILING_DIGIT(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_PRICE_TRAILING_DIGIT, \ ZB_ZCL_ATTR_TYPE_8BITMAP, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @endcond */ /* internals_doc */ /** @brief @e TariffResolutionPeriod attribute values * @see SE spec, Table D-107 * @see @ref ZB_ZCL_ATTR_PRICE_SRV_TARIFF_RESOLUTION_PERIOD */ typedef enum zb_zcl_price_tariff_resolution_period_e { ZB_ZCL_ATTR_PRICE_TARIFF_RESOLUTION_PERIOD_NOT_DEFINED = 0x00, /**< Not defined */ ZB_ZCL_ATTR_PRICE_TARIFF_RESOLUTION_PERIOD_BLOCK_PERIOD, /**< Block Period */ ZB_ZCL_ATTR_PRICE_TARIFF_RESOLUTION_PERIOD_1DAY, /**< 1 Day */ } zb_zcl_price_tariff_resolution_period_t; /** @cond internals_doc */ /** @see @ref zb_zcl_price_tariff_resolution_period_t. */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_TARIFF_RESOLUTION_PERIOD(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_TARIFF_RESOLUTION_PERIOD, \ ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CO2(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_CO2, \ ZB_ZCL_ATTR_TYPE_U32, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @endcond */ /* internals_doc */ /** @brief @e CO2Unit attribute values * @see SE spec, Table D-83. * @see ZB_ZCL_ATTR_PRICE_SRV_CO2_UNIT */ typedef enum zb_zcl_price_co2_unit_e { ZB_ZCL_ATTR_PRICE_CO2_UNIT_KG_PER_KWH = 0x01, /**< kg per kWh */ ZB_ZCL_ATTR_PRICE_CO2_UNIT_KG_PER_GALLON_OF_GASOLINE = 0x02, /**< kg per Gallon of Gasoline */ ZB_ZCL_ATTR_PRICE_CO2_UNIT_KG_PER_THERM_OF_NATURAL_GAS = 0x03, /**< kg per Therm of Natural Gas */ } zb_zcl_price_co2_unit_t; /** @cond internals_doc */ /** @see @ref zb_zcl_price_co2_unit_t */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CO2_UNIT(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_CO2_UNIT, \ ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CO2_TRAILING_DIGIT(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_CO2_TRAILING_DIGIT, \ ZB_ZCL_ATTR_TYPE_8BITMAP, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @endcond */ /* internals_doc */ /** @} */ /* end of ZB_ZCL_PRICE_SET_TARIFF_INFORMATION_GROUP */ /******************************************************************************/ /** @defgroup ZB_ZCL_PRICE_SET_BILLING_INFORMATION_GROUP Billing Information * @{ * @details * This set of attributes provides remote access to the Price server * Billing information. */ /** @brief Billing Information (Delivered) Attributes Set * @see SE spec, D.4.2.2.8 */ enum zb_zcl_price_set_billing_information_e { /** The CurrentBillingPeriodStart attribute represents the start time of the * current billing period. */ ZB_ZCL_ATTR_PRICE_SRV_CURRENT_BILLING_PERIOD_START = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_BILLING_INFORMATION, 0x00), /** The CurrentBillingPeriodDuration attribute represents the current billing * period duration in minutes. */ ZB_ZCL_ATTR_PRICE_SRV_CURRENT_BILLING_PERIOD_DURATION, /** The LastBillingPeriodStart attribute represents the start time of the last * billing period. */ ZB_ZCL_ATTR_PRICE_SRV_LAST_BILLING_PERIOD_START, /** The LastBillingPeriodDuration attribute is the duration of the last * billing period in minutes (start to end of last billing period). */ ZB_ZCL_ATTR_PRICE_SRV_LAST_BILLING_PERIOD_DURATION, /** The LastBillingPeriodConsolidatedBill attribute is an amount for the cost * of the energy supplied from the date of the LastBillingPeriodStart * attribute and until the duration of the LastBillingPeriodDuration attribute * expires, measured in base unit of Currency with the decimal point located * as indicated by the Trailing Digits attribute. */ ZB_ZCL_ATTR_PRICE_SRV_LAST_BILLING_PERIOD_CONSOLIDATED_BILL, /* reserved 0x0705 - 0x07FF */ }; /** @cond internals_doc */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CURRENT_BILLING_PERIOD_START(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_CURRENT_BILLING_PERIOD_START, \ ZB_ZCL_ATTR_TYPE_UTC_TIME, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CURRENT_BILLING_PERIOD_DURATION(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_CURRENT_BILLING_PERIOD_DURATION, \ ZB_ZCL_ATTR_TYPE_U24, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_LAST_BILLING_PERIOD_START(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_LAST_BILLING_PERIOD_START, \ ZB_ZCL_ATTR_TYPE_UTC_TIME, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_LAST_BILLING_PERIOD_DURATION(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_LAST_BILLING_PERIOD_DURATION, \ ZB_ZCL_ATTR_TYPE_U24, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_LAST_BILLING_PERIOD_CONSOLIDATED_BILL(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_LAST_BILLING_PERIOD_CONSOLIDATED_BILL, \ ZB_ZCL_ATTR_TYPE_U32, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @endcond */ /* internals_doc */ /** @} */ /* end of ZB_ZCL_PRICE_SET_BILLING_INFORMATION_GROUP */ /******************************************************************************/ /** @defgroup ZB_ZCL_PRICE_SET_CREDIT_PAYMENT_GROUP Credit Payment * @{ * @details * The Credit Payments Attribute set provides a method for the HAN (IHD) to * understand the current status of the credit-only payment made to the energy * supplier. These payments are for a credit meter only and do not cover any * Prepayment Top up or payment. This attribute set is used to display the bill * on the IHD should this service be required. Devices that require this information * should use standard ZCL commands to read this information. */ /** @brief Credit Payment Attributes Set * @see SE spec, D.2.2.9 */ enum zb_zcl_price_set_credit_payment_e { /** The CreditPaymentDueDate attribute indicates the date and time when the * next credit payment is due to be paid by the consumer to the supplier. */ ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_DUE_DATE = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_CREDIT_PAYMENT, 0x00), /** The CreditPaymentStatus attribute indicates the current status of the last payment. */ ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_STATUS, /** This is the total of the consolidated bill amounts accumulated since the * last payment. */ ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_OVER_DUE_AMOUNT, /* reserved 0x0803 - 0x0809 */ /** The PaymentDiscount attribute indicates the discount that the energy * supplier has applied to the consolidated bill. */ ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_CREDIT_PAYMENT, 0x0A), /** The PaymentDiscountPeriod attribute indicates the period for which this * discount shall be applied for. */ ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_PERIOD, /* reserved 0x080C - 0x080F */ /** The CreditPayment attributes indicate the amount paid by the consumer to * the energy supplier. */ ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_1 = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_CREDIT_PAYMENT, 0x10), /** The CreditPaymentDate attributes indicate the last time the consumer made * a payment to the energy supplier. */ ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_DATE_1, /** The CreditPaymentRef attributes indicate the reference number given to the * payment by the energy supplier. */ ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_REF_1, /* reserved 0x0813 - 0x081F */ ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_2 = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_CREDIT_PAYMENT, 0x20), ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_DATE_2, ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_REF_2, /* reserved 0x0823 - 0x082F */ ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_3 = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_CREDIT_PAYMENT, 0x30), ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_DATE_3, ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_REF_3, /* reserved 0x0833 - 0x083F */ ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_4 = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_CREDIT_PAYMENT, 0x40), ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_DATE_4, ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_REF_4, /* reserved 0x0843 - 0x084F */ ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_5 = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_CREDIT_PAYMENT, 0x50), ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_DATE_5, ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_REF_5, /* reserved 0x0853 - 0x08FF */ }; /** @cond internals_doc */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_DUE_DATE(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_DUE_DATE, \ ZB_ZCL_ATTR_TYPE_U32, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @endcond */ /* internals_doc */ /** @brief @e CreditPaymentStatus attribute values * @see SE spec, Table D-86. * @see ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_STATUS */ typedef enum zb_zcl_price_credit_payment_status_e { ZB_ZCL_PRICE_CREDIT_PAYMENT_PENDING = 0x00, /**< Pending */ ZB_ZCL_PRICE_CREDIT_PAYMENT_RECEIVED = 0x01, /**< Received/Paid */ ZB_ZCL_PRICE_CREDIT_PAYMENT_PAID = ZB_ZCL_PRICE_CREDIT_PAYMENT_RECEIVED, /**< @copydoc ZB_ZCL_PRICE_CREDIT_PAYMENT_RECEIVED */ ZB_ZCL_PRICE_CREDIT_PAYMENT_OVERDUE = 0x02, /**< Overdue */ ZB_ZCL_PRICE_CREDIT_PAYMENT_2PAYMENTS_OVERDUE = 0x03, /**< 2 Payments overdue */ ZB_ZCL_PRICE_CREDIT_PAYMENT_3PAYMENTS_OVERDUE = 0x04, /**< 3 Payments overdue */ /* reserved 0x05 - 0xFF */ } zb_zcl_price_credit_payment_status_t; /** @cond internals_doc */ /** @see @ref zb_zcl_price_credit_payment_status_t */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_STATUS(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_STATUS, \ ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_OVER_DUE_AMOUNT(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_OVER_DUE_AMOUNT, \ ZB_ZCL_ATTR_TYPE_S32, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT, \ ZB_ZCL_ATTR_TYPE_S32, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_PERIOD(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_PERIOD, \ ZB_ZCL_ATTR_TYPE_S32, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_N(paymentN, data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_ ## paymentN, \ ZB_ZCL_ATTR_TYPE_U32, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_DATE_N(paymentN, data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_DATE_ ## paymentN, \ ZB_ZCL_ATTR_TYPE_UTC_TIME, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_REF_N(paymentN, data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_CREDIT_PAYMENT_REF_ ## paymentN, \ ZB_ZCL_ATTR_TYPE_UTC_TIME, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @endcond */ /* internals_doc */ /** @} */ /* end of ZB_ZCL_PRICE_SET_CREDIT_PAYMENT_GROUP */ /******************************************************************************/ /** @defgroup ZB_ZCL_PRICE_SET_RECEIVED_TIER_LABEL_GROUP Tier Label * @{ */ /** @brief Received Tier Label Attributes Set * @see SE spec, D.4.2.2.10 */ enum zb_zcl_price_set_received_tier_label { /** The ReceivedTierNPriceLabel attributes provide a method for utilities to * assign a label to Received Price Tiers. */ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER1_PRICE_LABEL = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_RECEIVED_TIER_LABEL, 0x00), ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER2_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER3_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER4_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER5_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER6_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER7_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER8_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER9_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER10_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER11_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER12_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER13_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER14_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER15_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER16_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER17_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER18_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER19_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER20_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER21_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER22_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER23_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER24_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER25_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER26_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER27_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER28_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER29_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER30_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER31_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER32_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER33_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER34_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER35_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER36_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER37_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER38_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER39_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER40_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER41_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER42_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER43_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER44_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER45_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER46_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER47_PRICE_LABEL, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER48_PRICE_LABEL, /* reserved 0x8030 - 0x80FF */ }; /** @cond internals_doc */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIERN_PRICE_LABEL_GNR(tierN, data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER ## tierN ## _PRICE_LABEL, \ ZB_ZCL_ATTR_TYPE_OCTET_STRING, \ ZB_ZCL_ATTR_ACCESS_READ_WRITE, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @endcond */ /** @} */ /* end of ZB_ZCL_PRICE_SET_RECEIVED_TIER_LABEL_GROUP */ /******************************************************************************/ /** @defgroup ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_THRESHOLD_GROUP Received Block Threshold * @{ * @details * This set of attributes provides remote access to the Price server * ReceivedBlockThresholds. The number of block thresholds is indicated by the * NumberOfBlockThresholds field in the associated PublishTariffInformation * command. The number of blocks is one greater than the number of thresholds. */ /** @brief Received Block Threshold Attributes Set * @see SE spec, D.4.2.2.11 */ enum zb_zcl_price_set_received_block_threshold_e { /** The format of these attributes is the same as for the 'Delivered' Block Thresholds */ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK1_THRESHOLD = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_THRESHOLD, 0x00), ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK2_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK3_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK4_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK5_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK6_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK7_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK8_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK9_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK10_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK11_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK12_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK13_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK14_THRESHOLD, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK15_THRESHOLD, /* reserved 0x810F - 0x81FF */ }; /** @cond internals_doc */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCKN_THRESHOLD_GNR(blockN, data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK ## blockN ## _THRESHOLD, \ ZB_ZCL_ATTR_TYPE_48BIT, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @endcond */ /** @} */ /* end of ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_THRESHOLD_GROUP */ /******************************************************************************/ /** @defgroup ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_PERIOD_GROUP Received Block Period * @{ * @details * This set of attributes provides remote access to the Price server * Received Block Threshold period (typically the billing cycle) information. */ /** @brief Received Block Period Attributes Set * @see SE spec, D.4.2.2.12 */ enum zb_zcl_price_set_received_block_period_e { /** The format of this attribute is the same as for the 'Delivered' * StartOfBlockPeriod attribute. */ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_START_OF_BLOCK_PERIOD = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_PERIOD, 0x00), /** The format of this attribute is the same as for the 'Delivered' * BlockPeriodDuration attribute. */ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK_PERIOD_DURATION, /** The format of this attribute is the same as for the 'Delivered' * ThresholdMultiplier attribute. */ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_THRESHOLD_MULTIPLIER, /** The format of this attribute is the same as for the 'Delivered' * ThresholdDivisor attribute */ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_THRESHOLD_DIVISOR, /* reserved 0x8204 - 0x82FF */ }; /** @cond internals_doc */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_START_OF_BLOCK_PERIOD(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_START_OF_BLOCK_PERIOD, \ ZB_ZCL_ATTR_TYPE_UTC_TIME, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK_PERIOD_DURATION(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_BLOCK_PERIOD_DURATION, \ ZB_ZCL_ATTR_TYPE_U24, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_THRESHOLD_MULTIPLIER(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_THRESHOLD_MULTIPLIER, \ ZB_ZCL_ATTR_TYPE_U24, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_THRESHOLD_DIVISOR(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_THRESHOLD_DIVISOR, \ ZB_ZCL_ATTR_TYPE_U24, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @endcond */ /* internals_doc */ /** @} */ /* end of ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_PERIOD_GROUP */ /******************************************************************************/ /** @defgroup ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_PRICE_INFORMATION_GROUP Received Block Price Information * @{ */ /** @brief Received Block Price Information Attributes Set * @see SE spec, D.4.2.2.13 */ enum zb_zcl_price_set_received_block_price_information_e { /** The format and use of these attributes is the same as for the * 'Delivered' TierNBlockNPrice attributes. */ ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK1_PRICE = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_PRICE_INFORMATION, 0x00), ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER1_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER2_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER3_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER4_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER5_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER6_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER7_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER8_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER9_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER10_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER11_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER12_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER13_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER14_BLOCK16_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK1_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK2_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK3_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK4_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK5_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK6_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK7_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK8_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK9_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK10_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK11_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK12_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK13_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK14_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK15_PRICE, ZB_ZCL_ATTR_PRICE_SRV_RX_TIER15_BLOCK16_PRICE, }; /** @cond internals_doc */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCKN_PRICE_GNR(blockN, data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RX_NO_TIER_BLOCK ## blockN ## _PRICE, \ ZB_ZCL_ATTR_TYPE_U32, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RX_TIERN_BLOCKM_PRICE_GNR(tierN, blockM, data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RX_TIER ## tierN ## _BLOCK ## blockM ## _PRICE, \ ZB_ZCL_ATTR_TYPE_U32, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @endcond */ /* internals_doc */ /** @} */ /* end of ZB_ZCL_PRICE_SET_RECEIVED_BLOCK_PRICE_INFORMATION_GROUP */ /******************************************************************************/ /** @defgroup ZB_ZCL_PRICE_SET_RECEIVED_EXTENDED_PRICE_INFORMATION_GROUP Received Extended Price Information * @{ * @details * In case of TOU charging only, the price server shall support up to 48 TOU * rates. To reduce the number of attributes, RxTierNBlock1Price attributes * are reused to represent rates for tiers 1 to 15. Rates for tiers 16 to 48 * are provided in the Received Extended Price Information Set. */ /** @brief Received Extended Price Information Attributes Set * @see SE spec, D.4.2.2.14 */ enum zb_zcl_price_set_received_extended_price_information_e { /* reserved 0x8500 - 0x850E */ /** The format and use of these attributes is the same as for the * 'Delivered' PriceTierN attributes. */ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER16 = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_RECEIVED_EXTENDED_PRICE_INFORMATION, 0x0F), ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER17, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER18, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER19, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER20, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER21, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER22, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER23, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER24, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER25, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER26, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER27, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER28, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER29, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER30, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER31, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER32, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER33, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER34, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER35, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER36, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER37, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER38, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER39, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER40, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER41, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER42, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER43, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER44, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER45, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER46, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER47, ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER48, /* reserved 0x8530 - 0x85FF */ }; /** @brief Default value for Price cluster revision global attribute */ #define ZB_ZCL_PRICE_CLUSTER_REVISION_DEFAULT ((zb_uint16_t)0x0002u) /** @brief Default value for Tier1_PriceLabel attribute */ #define ZB_ZCL_PRICE_SRV_TIER1_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x31 ,0x00} /** @brief Default value for Tier2_PriceLabel attribute */ #define ZB_ZCL_PRICE_SRV_TIER2_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x32 ,0x00} /** @brief Default value for Tier3_PriceLabel attribute */ #define ZB_ZCL_PRICE_SRV_TIER3_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x33 ,0x00} /** @brief Default value for Tier4_PriceLabel attribute */ #define ZB_ZCL_PRICE_SRV_TIER4_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x34 ,0x00} /** @brief Default value for Tier5_PriceLabel attribute */ #define ZB_ZCL_PRICE_SRV_TIER5_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x35 ,0x00} /** @brief Default value for Tier6_PriceLabel attribute */ #define ZB_ZCL_PRICE_SRV_TIER6_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x36 ,0x00} /** @brief Default value for Tier7_PriceLabel attribute */ #define ZB_ZCL_PRICE_SRV_TIER7_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x37 ,0x00} /** @brief Default value for Tier8_PriceLabel attribute */ #define ZB_ZCL_PRICE_SRV_TIER8_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x38 ,0x00} /** @brief Default value for Tier9_PriceLabel attribute */ #define ZB_ZCL_PRICE_SRV_TIER9_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x39 ,0x00} /** @brief Default value for Tier10_PriceLabel attribute */ #define ZB_ZCL_PRICE_SRV_TIER10_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x31 ,0x30, 0x00} /** @brief Default value for Tier11_PriceLabel attribute */ #define ZB_ZCL_PRICE_SRV_TIER11_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x31 ,0x31, 0x00} /** @brief Default value for Tier12_PriceLabel attribute */ #define ZB_ZCL_PRICE_SRV_TIER12_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x31 ,0x32, 0x00} /** @brief Default value for Tier13_PriceLabel attribute */ #define ZB_ZCL_PRICE_SRV_TIER13_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x31 ,0x33, 0x00} /** @brief Default value for Tier14_PriceLabel attribute */ #define ZB_ZCL_PRICE_SRV_TIER14_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x31 ,0x34, 0x00} /** @brief Default value for Tier15_PriceLabel attribute */ #define ZB_ZCL_PRICE_SRV_TIER15_PRICE_LABEL_DEFAULT_VALUE {0x54, 0x49, 0x45, 0x52, 0x20, 0x31 ,0x35, 0x00} /** @brief Default value for ConversionFactor attribute */ #define ZB_ZCL_PRICE_SRV_CONVERSION_FACTOR_DEFAULT_VALUE ((zb_uint32_t)0x10000000) /** @brief Default value for ConversionFactorTrailingDigit attribute */ #define ZB_ZCL_PRICE_SRV_CONVERSION_FACTOR_TRAILING_DIGIT_DEFAULT_VALUE ((zb_uint8_t)0x70) /** @brief Default value for CalorificValue attribute */ #define ZB_ZCL_PRICE_SRV_CALORIFIC_VALUE_DEFAULT_VALUE ((zb_uint32_t)0x2625A00) /** @brief Default value for CalorificValueUnit attribute */ #define ZB_ZCL_PRICE_SRV_CALORIFIC_VALUE_UNIT_DEFAULT_VALUE ((zb_uint8_t)0x1) /** @brief Default value for CalorificValueTrailingDigit attribute */ #define ZB_ZCL_PRICE_SRV_CALORIFIC_VALUE_TRAILING_DIGIT_DEFAULT_VALUE ((zb_uint8_t)0x60) /** @cond internals_doc */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIERN_GNR(tierN, data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_PRICE_TIER ## tierN, \ ZB_ZCL_ATTR_TYPE_U32, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @endcond */ /* internals_doc */ /** @} */ /* end of ZB_ZCL_PRICE_SET_RECEIVED_EXTENDED_PRICE_INFORMATION_GROUP */ /******************************************************************************/ /** @defgroup ZB_ZCL_PRICE_SET_RECEIVED_TARIFF_INFORMATION_GROUP Received Tariff Information * @{ * @details * The following set of attributes represents items that are associated with a * particular Received Price Tariff. */ /** @brief Received Tariff Information Attributes Set * @see SE spec, D.4.2.2.15 */ enum zb_zcl_price_set_received_tariff_information_e { /* reserved 0x8600 - 0x860F */ /** The format and use of this attribute is the same as for the * 'Delivered' TariffLabel attribute. */ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TARIFF_LABEL = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_RECEIVED_TARIFF_INFORMATION, 0x10), /** The format and use of this attribute is the same as for the * 'Delivered' NumberOfPriceTiersInUse attribute. */ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_NUMBER_OF_PRICE_TIERS_IN_USE, /** The format and use of this attribute is the same as for the * 'Delivered' NumberOfBlockThresholdsInUse attribute. */ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_NUMBER_OF_BLOCK_THRESHOLDS_IN_USE, /** The format and use of this attribute is the same as for the * 'Delivered' TierBlockMode attribute. */ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER_BLOCK_MODE, /* reserved 0x8614 */ /** An 8-bit enumeration identifying the resolution period for Block Tariff. */ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TARIFF_RESOLUTION_PERIOD = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_RECEIVED_TARIFF_INFORMATION, 0x15), /* reserved 0x8616 - 0x8624 */ /** The format and use of this attribute is the same as for the * 'Delivered' CO2 attribute. */ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CO2 = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_RECEIVED_TARIFF_INFORMATION, 0x25), /** The format and use of this attribute is the same as for the * 'Delivered' CO2Unit attribute. */ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CO2_UNIT, /** The format and use of this attribute is the same as for the * 'Delivered' CO2TrailingDigit attribute. */ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CO2_TRAILING_DIGIT, /* reserved 0x8528 - 0x85FF */ }; /** @cond internals_doc */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TARIFF_LABEL(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TARIFF_LABEL, \ ZB_ZCL_ATTR_TYPE_OCTET_STRING, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_NUMBER_OF_PRICE_TIERS_IN_USE(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_NUMBER_OF_PRICE_TIERS_IN_USE, \ ZB_ZCL_ATTR_TYPE_U8, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_NUMBER_OF_BLOCK_THRESHOLDS_IN_USE(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_NUMBER_OF_BLOCK_THRESHOLDS_IN_USE, \ ZB_ZCL_ATTR_TYPE_U8, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @see SE spec, table D-82. */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER_BLOCK_MODE(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TIER_BLOCK_MODE, \ ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @see @ref zb_zcl_price_tariff_resolution_period_t. */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TARIFF_RESOLUTION_PERIOD(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_TARIFF_RESOLUTION_PERIOD, \ ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CO2(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CO2, \ ZB_ZCL_ATTR_TYPE_U32, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @see @ref zb_zcl_price_co2_unit_t */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CO2_UNIT(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CO2_UNIT, \ ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CO2_TRAILING_DIGIT(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CO2_TRAILING_DIGIT, \ ZB_ZCL_ATTR_TYPE_8BITMAP, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @endcond */ /* internals_doc */ /** @} */ /* end of ZB_ZCL_PRICE_SET_RECEIVED_TARIFF_INFORMATION_GROUP */ /******************************************************************************/ /** @defgroup ZB_ZCL_PRICE_SET_RECEIVED_BILLING_INFORMATION_GROUP Received Billing Information * @{ * @details * The following set of attributes represents items that are associated with * particular Received Billing information. */ /** @brief Received Billing Information Attributes Set * @see SE spec, D.4.2.2.16 */ enum zb_zcl_price_set_received_billing_information { /** The format and use of this attribute is the same as for the * 'Delivered' CurrentBillingPeriodStart attribute. */ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CURRENT_BILLING_PERIOD_START = ZB_ZCL_ATTR_SET_WITH_ATTR_ID(ZB_ZCL_PRICE_SET_RECEIVED_BILLING_INFORMATION, 0x00), /** The format and use of this attribute is the same as for the * 'Delivered' CurrentBillingPeriodDuration attribute. */ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CURRENT_BILLING_PERIOD_DURATION, /** The format and use of this attribute is the same as for the * 'Delivered' LastBillingPeriodStart attribute. */ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_LAST_BILLING_PERIOD_START, /** The format and use of this attribute is the same as for the * 'Delivered' LastBillingPeriodDuration attribute. */ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_LAST_BILLING_PERIOD_DURATION, /** The format and use of this attribute is the same as for the * 'Delivered' LastBillingPeriodConsolidatedBill attribute. */ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_LAST_BILLING_PERIOD_CONSOLIDATED_BILL, /* reserved 0x8705 - 0x87FF */ }; /** @cond internals_doc */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CURRENT_BILLING_PERIOD_START(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CURRENT_BILLING_PERIOD_START, \ ZB_ZCL_ATTR_TYPE_UTC_TIME, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CURRENT_BILLING_PERIOD_DURATION(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_CURRENT_BILLING_PERIOD_DURATION, \ ZB_ZCL_ATTR_TYPE_U24, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_LAST_BILLING_PERIOD_START(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_LAST_BILLING_PERIOD_START, \ ZB_ZCL_ATTR_TYPE_UTC_TIME, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_LAST_BILLING_PERIOD_DURATION(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_LAST_BILLING_PERIOD_DURATION, \ ZB_ZCL_ATTR_TYPE_U24, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_LAST_BILLING_PERIOD_CONSOLIDATED_BILL(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_SRV_RECEIVED_LAST_BILLING_PERIOD_CONSOLIDATED_BILL, \ ZB_ZCL_ATTR_TYPE_U32, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @endcond */ /* internals_doc */ /** @} */ /* end of ZB_ZCL_PRICE_SET_RECEIVED_BILLING_INFORMATION_GROUP */ /******************************************************************************/ /** @def ZB_ZCL_DECLARE_PRICE_SRV_ATTRIB_LIST * @brief Declare server-side Price cluster attributes * @param attr_list - Attribute list name. * @param commodity_type - pointer to variable to store @ref ZB_ZCL_ATTR_PRICE_SRV_COMMODITY_TYPE "CommodityType" attribute value. */ #define ZB_ZCL_DECLARE_PRICE_SRV_ATTRIB_LIST(attr_list, commodity_type) \ ZB_ZCL_START_DECLARE_ATTRIB_LIST_CLUSTER_REVISION(attr_list, ZB_ZCL_PRICE) \ ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_PRICE_SRV_COMMODITY_TYPE, (commodity_type)) \ ZB_ZCL_FINISH_DECLARE_ATTRIB_LIST /** @} */ /* end of ZB_ZCL_PRICE_SRV_ATTRIBUTES_GROUP */ /******************************************************************************/ /** @defgroup ZB_ZCL_PRICE_CLIENT_ATTRIBUTES_GROUP Price cluster client attributes * @{ */ /** @brief Price Cluster client attributes */ typedef enum zb_zcl_price_cli_attr_e { /** @e PriceIncreaseRandomizeMinutes attribute represents the maximum amount * of time to be used when randomizing the response to a price increase. */ ZB_ZCL_ATTR_PRICE_CLI_PRICE_INCREASE_RANDOMIZE_MINUTES = 0x0000, /** @e PriceDecreaseRandomizeMinutes attribute represents the maximum number * of minutes to be used when randomizing the response to a price decrease. */ ZB_ZCL_ATTR_PRICE_CLI_PRICE_DECREASE_RANDOMIZE_MINUTES = 0x0001, /** @e CommodityType attribute provides a label for identifying the type of pricing client present. */ ZB_ZCL_ATTR_PRICE_CLI_COMMODITY_TYPE = 0x0002, } zb_zcl_price_cli_attr_t; /** @cond internals_doc */ #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_CLI_PRICE_INCREASE_RANDOMIZE_MINUTES(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_CLI_PRICE_INCREASE_RANDOMIZE_MINUTES, \ ZB_ZCL_ATTR_TYPE_U8, \ ZB_ZCL_ATTR_ACCESS_READ_WRITE, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_CLI_PRICE_DECREASE_RANDOMIZE_MINUTES(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_CLI_PRICE_DECREASE_RANDOMIZE_MINUTES, \ ZB_ZCL_ATTR_TYPE_U8, \ ZB_ZCL_ATTR_ACCESS_READ_WRITE, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PRICE_CLI_COMMODITY_TYPE(data_ptr) \ { \ ZB_ZCL_ATTR_PRICE_CLI_COMMODITY_TYPE, \ ZB_ZCL_ATTR_TYPE_8BIT_ENUM, \ ZB_ZCL_ATTR_ACCESS_READ_ONLY, \ (ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \ (void*) (data_ptr) \ } /** @endcond */ /* internals_doc */ /** @def ZB_ZCL_DECLARE_PRICE_CLI_ATTRIB_LIST * @brief Declare client-side Price cluster attributes * @param attr_list - Attribute list name * @param inc_rand_min - pointer to variable to store @ref ZB_ZCL_ATTR_PRICE_CLI_PRICE_INCREASE_RANDOMIZE_MINUTES "PriceIncreaseRandomizeMinutes" attribute value. * @param dec_rand_min - pointer to variable to store @ref ZB_ZCL_ATTR_PRICE_CLI_PRICE_DECREASE_RANDOMIZE_MINUTES "PriceDecreaseRandomizeMinutes" attribute value. * @param commodity_type - pointer to variable to store "CommodityType" attribute value. */ #define ZB_ZCL_DECLARE_PRICE_CLI_ATTRIB_LIST(attr_list, inc_rand_min, dec_rand_min, commodity_type) \ ZB_ZCL_START_DECLARE_ATTRIB_LIST_CLUSTER_REVISION(attr_list, ZB_ZCL_PRICE) \ ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_PRICE_CLI_PRICE_INCREASE_RANDOMIZE_MINUTES, (inc_rand_min)) \ ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_PRICE_CLI_PRICE_DECREASE_RANDOMIZE_MINUTES, (dec_rand_min)) \ ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_PRICE_CLI_COMMODITY_TYPE, (commodity_type)) \ ZB_ZCL_FINISH_DECLARE_ATTRIB_LIST /** @} */ /* end of ZB_ZCL_PRICE_CLIENT_ATTRIBUTES_GROUP */ /** @} */ /* end of ZB_ZCL_PRICE_ATTRS */ /******************************************************************************/ /** @defgroup ZB_ZCL_PRICE_CLUSTER_COMMANDS Price cluster commands * @{ */ /** @brief Price cluster client command identifiers. * @see SE spec, subclause D.4.2.3. */ typedef enum zb_zcl_price_client_cmd_e { /** GetCurrentPrice command initiates a PublishPrice command for the current time. * @see SE spec, subclause D.4.2.3.2. * @see zb_zcl_price_get_current_price_payload_s */ ZB_ZCL_PRICE_CLI_CMD_GET_CURRENT_PRICE = 0x00, /** GetScheduledPrices command initiates a PublishPrice command for available * price events. * @see zb_zcl_price_get_scheduled_prices_payload_s * @see SE spec, subclause D.4.2.3.3. */ ZB_ZCL_PRICE_CLI_CMD_GET_SCHEDULED_PRICES = 0x01, /** PriceAcknowledgement command provides the ability to acknowledge a * previously sent PublishPrice command. * @see SE spec, subclause D.4.2.3.4. * @see zb_zcl_price_ack_payload_s */ ZB_ZCL_PRICE_CLI_CMD_PRICE_ACK = 0x02, /** GetBlockPeriod(s) command. * This command initiates a PublishBlockPeriod command for the currently * scheduled block periods. * @see SE spec, subclause D.4.2.3.5. * @see zb_zcl_price_get_block_period_payload_s */ ZB_ZCL_PRICE_CLI_CMD_GET_BLOCK_PERIOD = 0x03, /** GetConversionFactor command. * This command initiates a PublishConversionFactor command(s) for scheduled * conversion factor updates. * @see SE spec, subclause D.4.2.3.6 * @see zb_zcl_price_get_conversion_factor_payload_s */ ZB_ZCL_PRICE_CLI_CMD_GET_CONVERSION_FACTOR = 0x04, /** GetCalorificValue command. * This command initiates a PublishCalorificValue command(s) for scheduled * calorific value updates. * @see SE spec, subclause D.4.2.3.7. * @see zb_zcl_price_client_get_calorific_value_payload_s */ ZB_ZCL_PRICE_CLI_CMD_GET_CALORIFIC_VALUE = 0x05, /** GetTariffInformation command. * This command initiates PublishTariffInformation command(s) for scheduled * tariff updates. * @see SE spec, subclause D.4.2.3.8. * @see zb_zcl_price_get_tariff_information_payload_s */ ZB_ZCL_PRICE_CLI_CMD_GET_TARIFF_INFORMATION = 0x06, /** GetPriceMatrix command. * This command initiates a PublishPriceMatrix command for the scheduled Price * Matrix updates. * @see SE spec, subclause D.4.2.3.9. * @see zb_zcl_price_get_price_matrix_payload_s */ ZB_ZCL_PRICE_CLI_CMD_GET_PRICE_MATRIX = 0x07, /** GetBlockThresholds command. * This command initiates a PublishBlockThreshold command for the scheduled * Block Threshold updates. * @see SE spec, subclause D.4.2.3.10. * @see zb_zcl_price_get_block_thresholds_payload_s */ ZB_ZCL_PRICE_CLI_CMD_GET_BLOCK_THRESHOLDS = 0x08, /** GetCO2Value command. * This command initiates PublishCO2Value command(s) for scheduled CO2 * conversion factor updates. * @see SE spec, subclause D.4.2.3.11. * @see zb_zcl_price_get_co2_value_payload_s */ ZB_ZCL_PRICE_CLI_CMD_GET_CO2_VALUE = 0x09, /** GetTierLabels command. * This command allows a client to retrieve the tier labels associated with a * given tariff; this command initiates a PublishTierLabels command from * the server. * @see SE spec, subclause D.4.2.3.12. * @see zb_zcl_price_get_tier_labels_payload_s */ ZB_ZCL_PRICE_CLI_CMD_GET_TIER_LABELS = 0x0A, /** GetBillingPeriod command. * This command initiates one or more PublishBillingPeriod commands for * currently scheduled billing periods. * @see SE spec, subclause D.4.2.3.13. * @see zb_zcl_price_get_billing_period_payload_s */ ZB_ZCL_PRICE_CLI_CMD_GET_BILLING_PERIOD = 0x0B, /** GetConsolidatedBill command. * This command initiates one or more PublishConsolidatedBill commands with * the requested billing information. * @see SE spec, subclause D.4.2.3.14. * @see zb_zcl_price_get_consolidated_bill_payload_s */ ZB_ZCL_PRICE_CLI_CMD_GET_CONSOLIDATED_BILL = 0x0C, /** CPPEventResponse command. * The CPPEventResponse command is sent from a Client (IHD) to the ESI to * notify it of a Critical Peak Pricing event authorization. * * @note The CPPEventResponse command in current revision of SE specification * is provisional and not certifiable. This feature may change before reaching * certifiable status in a future revision of SE specification. * * @see SE spec, subclause D.4.2.3.15. * @see zb_zcl_price_cpp_event_response_payload_s */ ZB_ZCL_PRICE_CLI_CMD_CPP_EVENT_RESPONSE = 0x0D, /** GetCreditPayment command. * This command initiates PublishCreditPayment commands for the requested * credit payment information. * @see SE spec, subclause D.4.2.3.16. * @see zb_zcl_price_get_credit_payment_payload_s */ ZB_ZCL_PRICE_CLI_CMD_GET_CREDIT_PAYMENT = 0x0E, /** GetCurrencyConversion command. * This command initiates a PublishCurrencyConversion command for the currency * conversion factor updates. * @see SE spec, subclause D.4.2.3.17. * @see zb_zcl_price_publish_currency_conversion_payload_s */ ZB_ZCL_PRICE_CLI_CMD_GET_CURRENCY_CONVERSION = 0x0F, /** GetTariffCancellation command. * This command initiates the return of the last CancelTariff command held on * the associated server. * @see SE spec, subclauseD.4.2.3.18. * @note This command has no payload. */ ZB_ZCL_PRICE_CLI_CMD_GET_TARIFF_CANCELLATION = 0x10, /* reserved 0x11 - 0xFF */ } zb_zcl_price_client_cmd_t; /** @brief Price cluster server command identifiers * @see SE spec, subclause D.4.2.4. */ typedef enum zb_zcl_price_server_cmd_e { /** PublishPrice command. * The Publish Price command is generated in response to receiving a * GetCurrentPrice command, in response to a GetScheduledPrices command, * and when an update to the pricing information is available from the * commodity provider. * @see SE spec, subclause D.4.2.4.1. * @see zb_zcl_price_publish_price_payload_s */ ZB_ZCL_PRICE_SRV_CMD_PUBLISH_PRICE = 0x00, /** PublishBlockPeriod command. * The Publish Block Period command is generated in response to receiving a * GetBlockPeriod(s) command (see sub-clause D.4.2.3.5) or when an update * to the block tariff schedule is available from the commodity provider. * @see SE spec, subclause D.4.2.4.2. * @see zb_zcl_price_publish_block_period_payload_s */ ZB_ZCL_PRICE_SRV_CMD_PUBLISH_BLOCK_PERIOD = 0x01, /** PublishConversionFactor command. * The PublishConversionFactor command is sent in response to a * GetConversionFactor command or if a new conversion factor is available. * @see SE spec, subclause D.4.2.4.3. * @see zb_zcl_price_publish_conversion_factor_payload_s */ ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CONVERSION_FACTOR = 0x02, /** PublishCalorificValue command. * The PublishCalorificValue command is sent in response to a * GetCalorificValue command or if a new calorific value is available. * @see SE spec, subclause D.4.2.4.4. * @see zb_zcl_price_publish_calorific_value_s */ ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CALORIFIC_VALUE = 0x03, /** PublishTariffInformation command. * The PublishTariffInformation command is sent in response to a * GetTariffInformation command or if new tariff information is available * (including Price Matrix and Block Thresholds). * @see SE spec, subclause D.4.2.4.5. * @see zb_zcl_price_publish_tariff_information_payload_s */ ZB_ZCL_PRICE_SRV_CMD_PUBLISH_TARIFF_INFORMATION = 0x04, /** PublishPriceMatrix command. * The 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. * @see SE spec, subclause D.4.2.4.6. * @see zb_zcl_price_publish_price_matrix_payload_s */ ZB_ZCL_PRICE_SRV_CMD_PUBLISH_PRICE_MATRIX = 0x05, /** PublishBlockThresholds command. * The PublishBlockThresholds command is sent in response to * a GetBlockThresholds command. * @see SE spec, subclause D.4.2.4.7. * @see zb_zcl_price_publish_block_thresholds_payload_s */ ZB_ZCL_PRICE_SRV_CMD_PUBLISH_BLOCK_THRESHOLDS = 0x06, /** PublishCO2Value command. * The PublishCO2Value command is sent in response to a GetCO2Value command or * if a new CO2 conversion factor is available. * @see SE spec, subclause D.4.2.4.8. * @see zb_zcl_price_publish_co2_value_payload_s */ ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CO2_VALUE = 0x07, /** PublishTierLabels command. * The PublishTierLabels command is generated in response to receiving a * GetTierLabels command or when there is a tier label change. * @see SE spec, subclause D.4.2.4.9. * @see zb_zcl_price_publish_tier_labels_payload_s */ ZB_ZCL_PRICE_SRV_CMD_PUBLISH_TIER_LABELS = 0x08, /** PublishBillingPeriod command. * 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. * @see SE spec, subclause D.4.2.4.10. * @see zb_zcl_price_publish_billing_period_payload_s */ ZB_ZCL_PRICE_SRV_CMD_PUBLISH_BILLING_PERIOD = 0x09, /** PublishConsolidatedBill command. * The PublishConsolidatedBill command is used to make consolidated billing * information from 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. * @see SE spec, subclause D.4.2.4.11. * @see zb_zcl_price_publish_consolidated_bill_payload_s */ ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CONSOLIDATED_BILL = 0x0A, /** PublishCPPEvent command. * The PublishCPPEvent command is sent from an ESI to its Price clients to * notify them of a Critical Peak Pricing (CPP) event. * * @note The CPPEventResponse command in current revision of SE specification * is provisional and not certifiable. This feature may change before reaching * certifiable status in a future revision of SE specification. * * @see SE spec, subclause D.4.2.4.12. * @see zb_zcl_price_publish_cpp_event_payload_s */ ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CPP_EVENT = 0x0B, /** PublishCreditPayment command. * The PublishCreditPayment command is used to update the credit payment * information when available. * @see SE spec, subclause D.4.2.4.13. * @see zb_zcl_price_publish_credit_payment_payload_s */ ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CREDIT_PAYMENT = 0x0C, /** PublishCurrencyConversion command. * The PublishCurrencyConversion command is sent in response to a * GetCurrencyConversion command or when a new currency becomes available. * @see SE spec, subclause D.4.2.4.14. * @see zb_zcl_price_publish_currency_conversion_payload_s */ ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CURRENCY_CONVERSION = 0x0D, /** CancelTariff command. * The CancelTariff command indicates that all data associated with a * particular tariff instance should be discarded. * @see SE spec, subclause D.4.2.4.15. * @see zb_zcl_price_cancel_tariff_payload_s */ ZB_ZCL_PRICE_SRV_CMD_CANCEL_TARIFF = 0x0E, /* reserved 0x0F - 0xFF */ } zb_zcl_price_server_cmd_t; /* PRICE cluster commands list : only for information - do not modify */ #define ZB_ZCL_CLUSTER_ID_PRICE_SERVER_ROLE_GENERATED_CMD_LIST \ ZB_ZCL_PRICE_SRV_CMD_PUBLISH_PRICE, \ ZB_ZCL_PRICE_SRV_CMD_PUBLISH_TIER_LABELS #define ZB_ZCL_CLUSTER_ID_PRICE_CLIENT_ROLE_RECEIVED_CMD_LIST ZB_ZCL_CLUSTER_ID_PRICE_SERVER_ROLE_GENERATED_CMD_LIST #define ZB_ZCL_CLUSTER_ID_PRICE_CLIENT_ROLE_GENERATED_CMD_LIST \ ZB_ZCL_PRICE_CLI_CMD_GET_CURRENT_PRICE, \ ZB_ZCL_PRICE_CLI_CMD_GET_SCHEDULED_PRICES, \ ZB_ZCL_PRICE_CLI_CMD_PRICE_ACK, \ ZB_ZCL_PRICE_CLI_CMD_GET_TIER_LABELS #define ZB_ZCL_CLUSTER_ID_PRICE_SERVER_ROLE_RECEIVED_CMD_LIST ZB_ZCL_CLUSTER_ID_PRICE_CLIENT_ROLE_GENERATED_CMD_LIST /** @brief @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_PRICE "PublishPrice" command payload. * @see SE spec, subclause D.4.2.3.1.1. */ typedef ZB_PACKED_PRE struct zb_zcl_price_publish_price_payload_s { /** Unique identifier for the commodity provider. */ zb_uint32_t provider_id; /* (M) */ /** Commodity provider-specific information regarding * the current billing rate. */ zb_uint8_t rate_label[13]; /* (M) */ /** Unique identifier generated by the commodity provider * allows devices to determine which pricing information is newer. */ zb_uint32_t issuer_event_id; /* (M) */ /** UTC Time field containing the current time as determined * by the device. */ zb_uint32_t current_time; /* (M) */ /** Field identifying the commodity as well as this base units of measure. * @see enum zb_zcl_metering_unit_of_measure_e */ zb_uint8_t unit_of_measure; /* (M) */ /** Field identifying information concerning the local unit of * currency used in the price field. * @see ISO-4217 */ zb_uint16_t currency; /* (M) */ /** Determines where the decimal point is located in the price field */ zb_bitfield_t price_trailing_digit:4; /* (M) */ /** Indicates the current price tier as chosen by the commodity provider */ zb_bitfield_t price_tier:4; /* (M) */ /** Represents the maximum number of price tiers available. */ zb_bitfield_t number_of_price_tiers:4; /* (M) */ /** Indicates the register tier used with the * current Price Tier (@ref price_tier). */ zb_bitfield_t register_tier:4; /* (M) */ /** Denotes the time at which the signal becomes valid. * Value 0x00000000 is a special time denoting "now". */ zb_uint32_t start_time; /* (M) */ /** Denotes amount of time in minutes after Start Time (@ref start_time) * during which the price signal is valid. */ zb_uint16_t duration_in_minutes; /* (M) */ /** Contains the price of the commodity measured in base unit of * Currency per Unit of Measure (@ref currency per @ref unit_of_measure) * with the decimal point located as indicated by * the Price Trailing Digit field (@ref price_trailing_digit) when * the commodity is delivered to premises. */ zb_uint32_t price; /* (M) */ /* Optional fields. */ /** Gives the ratio of the price denoted in the Price field (@ref price) * to the "normal" price, chosen by the commodity provider. */ zb_uint8_t price_ratio; /* (O) */ /** Contains the price of the commodity measured in base unit of * Currency per Unit of Measure (@ref currency per @ref unit_of_measure) * with the decimal point located as indicated by * the Price Trailing Digit field (@ref price_trailing_digit) when * the commodity is received from premises. */ zb_uint32_t generation_price; /* (O) */ /** Gives the ratio of the price denoted in the Generation Price * field (@ref price) to the "normal" price, * chosen by the commodity provider. */ zb_uint8_t generation_price_ratio; /* (O) */ /** Provides mechanism to describe an alternative measure of the cost * of the energy consumed. */ zb_uint32_t alternate_cost_delivered; /* (O) */ /** Identifies the unit for Alternate Cost Delivered field * (@ref alternate_cost_delivered) */ zb_uint8_t alternate_cost_unit; /* (O) */ /** Determines where the decimal point is located in * the alternate cost field. */ zb_uint8_t alternate_cost_trailing_digit; /* (O) */ /** Indicates the number of block thresholds available. */ zb_uint8_t number_of_block_thresholds; /* (O) */ /** Identifies additional control options (PriceAcknowledgement policy and * total number of tier flag). */ zb_uint8_t price_control; /* (O) */ /** Specifies the total number of generation tiers applicable in the * current tariff. */ zb_uint8_t number_of_generation_tiers; /* (O) */ /** Specifies the current generation tier. */ zb_uint8_t generation_tier; /* (O) */ /** Indicates a maximum number of tier available. * @see number_of_generation_tiers */ zb_uint8_t extended_number_of_price_tiers; /* (O) */ /** Indicates the current price tier. * @see price_tier */ zb_uint8_t extended_price_tier; /* (O) */ /** Indicates the register tier used with the * current Price Tier (@ref register_tier). */ zb_uint8_t extended_register_tier; /* (O) */ } ZB_PACKED_STRUCT zb_zcl_price_publish_price_payload_t; /** @def ZB_ZCL_PRICE_PUBLISH_PRICE_PAYLOAD_SIZE_IS_VALID */ #define ZB_ZCL_PRICE_PUBLISH_PRICE_PAYLOAD_SIZE_IS_VALID(size) \ (size > (sizeof(zb_zcl_price_publish_price_payload_t) \ - ZB_SIZEOF_FIELD(zb_zcl_price_publish_price_payload_t, rate_label))) /** @def ZB_ZCL_PRICE_PUBLISH_PRICE_PAYLOAD_EXPECTED_SIZE * @brief Returns actual size of payload. * @details PublishPrice packet payload doesn't have fixed length because of 'rate_label' * field. This macro can be used to check payload size of incoming packet. */ #define ZB_ZCL_PRICE_PUBLISH_PRICE_PAYLOAD_EXPECTED_SIZE(pl) \ (sizeof(*(pl)) \ - (ZB_ZCL_STRING_CONST_SIZE((pl)->rate_label) - ZB_ZCL_GET_STRING_LENGTH((pl)->rate_label))) /** @def ZB_ZCL_PRICE_DEFAULT_PRICE_CONTROL_VALUE * @brief Controls PriceAck policy for outgoing PublishPrice packets. * SE devices can enable this field (refer @ref zb_zcl_price_publish_price_payload_t::price_control) * if they want to receive @ref ZB_ZCL_PRICE_CLI_CMD_PRICE_ACK "PriceAcknowledgement" command as * response to @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_PRICE "PublishPrice" command, but this behavior * is valid only for SE version >= 1.1. * SE 1.2 is used, so this field is set to 1 by default. */ #define ZB_ZCL_PRICE_DEFAULT_PRICE_CONTROL_VALUE 0x01 /** @def ZB_ZCL_PRICE_PUBLISH_PRICE_PAYLOAD_INIT * @brief Macro for initializing @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_PRICE "PublishPrice" Command payload. * @see @ref zb_zcl_price_publish_price_payload_t * @par Example * @code{C} * zb_zcl_price_publish_price_payload_t pl = ZB_ZCL_PRICE_PUBLISH_PRICE_PAYLOAD_INIT; * @endcode */ #define ZB_ZCL_PRICE_PUBLISH_PRICE_PAYLOAD_INIT \ (zb_zcl_price_publish_price_payload_t) \ { \ .price_ratio = 0xFF, \ .generation_price = 0xFFFFFFFF, \ .generation_price_ratio = 0xFF, \ .alternate_cost_delivered = 0xFFFFFFFF, \ .alternate_cost_unit = 0xFF, \ .alternate_cost_trailing_digit = 0xFF, \ .number_of_block_thresholds = 0xFF, \ .price_control = ZB_ZCL_PRICE_DEFAULT_PRICE_CONTROL_VALUE, \ .number_of_generation_tiers = 0x00, \ .generation_tier = 0x00, \ .extended_number_of_price_tiers = 0x00, \ .extended_price_tier = 0x00, \ .extended_register_tier = 0x00, \ } /** @brief @ref ZB_ZCL_PRICE_CLI_CMD_PRICE_ACK "PriceAcknowledgement" Command payload * @see SE spec, D.4.2.3.4.1 */ typedef ZB_PACKED_PRE struct zb_zcl_price_ack_payload_s { /** Unique identifier for the commodity provider. */ zb_uint32_t provider_id; /* (M) */ /** Unique identifier generated by the commodity provider. * allows devices to determine which pricing information is newer. */ zb_uint32_t issuer_event_id; /* (M) */ /** @e UTCTime field containing the current time as determined * by the device. */ zb_uint32_t current_time; /* (M) */ /** Identifies additional control options (PriceAcknowledgement policy and * total number of tier flag). */ zb_uint8_t price_control; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_ack_payload_t; /** @cond internals_doc */ /** Check if @ref ZB_ZCL_PRICE_CLI_CMD_PRICE_ACK "PriceAcknowledgement" Command payload is valid */ #define ZB_ZCL_PRICE_ACK_PAYLOAD_SIZE_IS_VALID(size) \ ((size) >= sizeof(zb_zcl_price_ack_payload_t)) /** @ref zb_zcl_price_ack_payload_t initializer */ #define ZB_ZCL_PRICE_ACK_PAYLOAD_INIT (zb_zcl_price_ack_payload_t) {0} /** Initialize @ref zb_zcl_price_ack_payload_t from * @ref zb_zcl_price_publish_price_payload_t values. */ #define ZB_ZCL_PRICE_ACK_PAYLOAD_INIT_FROM_PUBLISH_PRICE_PAYLOAD(pl) \ (zb_zcl_price_ack_payload_t) { \ .provider_id = (pl)->provider_id, \ .issuer_event_id = (pl)->issuer_event_id, \ .current_time = zb_get_utc_time(), \ .price_control = (pl)->price_control, \ } /** @endcond */ /* internals_doc */ /** @brief @ref ZB_ZCL_PRICE_CLI_CMD_GET_CURRENT_PRICE "GetCurrentPrice" Command Payload Format */ typedef ZB_PACKED_PRE struct zb_zcl_price_get_current_price_payload_s { /** @e CommandOptions field is 8 Bits in length * @note Zero bit is Requestor Rx On When Idle, others are reserved. */ zb_uint8_t command_options; } ZB_PACKED_STRUCT zb_zcl_price_get_current_price_payload_t; /** @def ZB_ZCL_PRICE_GET_CURRENT_PRICE_PAYLOAD_INIT * @brief Macro for initializing @ref ZB_ZCL_PRICE_CLI_CMD_GET_CURRENT_PRICE "GetCurrentPrice" Command payload */ #define ZB_ZCL_PRICE_GET_CURRENT_PRICE_PAYLOAD_INIT \ (zb_zcl_price_get_current_price_payload_t) {0} /** @def ZB_ZCL_PRICE_GET_CURRENT_PRICE_PAYLOAD_SIZE_IS_VALID * @brief Check if @ref ZB_ZCL_PRICE_CLI_CMD_GET_CURRENT_PRICE "GetCurrentPrice" Command payload is valid */ #define ZB_ZCL_PRICE_GET_CURRENT_PRICE_PAYLOAD_SIZE_IS_VALID(size) \ ((size) >= sizeof(zb_zcl_price_get_current_price_payload_t)) /** @brief @ref ZB_ZCL_PRICE_CLI_CMD_GET_SCHEDULED_PRICES "GetScheduledPrices" Command Payload Format * @see SE spec, D.4.2.3.3.1 */ typedef ZB_PACKED_PRE struct zb_zcl_price_get_scheduled_prices_payload_s { /** @e StartTime represents the minimum ending time for any scheduled or * currently active pricing events to be resent. * @note Value 0x00000000 will be replaced with the current time stamp. */ zb_uint32_t start_time; /** @e NumberOfEvents represents the maximum number of events to be sent. * @note Value 0 indicates no maximum limit. */ zb_uint8_t number_of_events; } ZB_PACKED_STRUCT zb_zcl_price_get_scheduled_prices_payload_t; /** @def ZB_ZCL_PRICE_GET_SCHEDULED_PRICES_PAYLOAD_INIT * @brief Macro for initializing @ref ZB_ZCL_PRICE_CLI_CMD_GET_SCHEDULED_PRICES "GetScheduledPrices" Command payload */ #define ZB_ZCL_PRICE_GET_SCHEDULED_PRICES_PAYLOAD_INIT \ (zb_zcl_price_get_scheduled_prices_payload_t) {0} /** @def ZB_ZCL_PRICE_GET_SCHEDULED_PRICES_PAYLOAD_SIZE_IS_VALID * @brief Check if @ref ZB_ZCL_PRICE_CLI_CMD_GET_SCHEDULED_PRICES "GetScheduledPrices" Command payload is valid */ #define ZB_ZCL_PRICE_GET_SCHEDULED_PRICES_PAYLOAD_SIZE_IS_VALID(size) \ ((size) >= sizeof(zb_zcl_price_get_scheduled_prices_payload_t)) /** @ref ZB_ZCL_PRICE_CLI_CMD_GET_BLOCK_PERIOD "GetBlockPeriod" command payload * @see SE spec, subclause D.4.2.3.5 */ typedef ZB_PACKED_PRE struct zb_zcl_price_get_block_period_payload_s { /** UTC Timestamp representing the minimum ending time for any scheduled or currently block period * events to be resent. */ zb_uint32_t start_time; /* (M) */ /** An 8-bit Integer which indicates the maximum number of Publish Block Period commands * that can be sent. */ zb_uint8_t number_of_events; /* (M) */ /** An 8-bit bitmap identifying the type of tariff published in this command. The least significant * nibble represents an enumeration of the tariff type. * @see SE spec, Table D-108 * @see zb_zcl_price_tariff_type_t */ zb_uint8_t tariff_type; /* (O) */ } ZB_PACKED_STRUCT zb_zcl_price_client_get_block_period_payload_t; /** @ref ZB_ZCL_PRICE_CLI_CMD_GET_CONVERSION_FACTOR "GetConversionFactor" command payload. * @see SE spec, subclause D.4.2.3.6.2 */ typedef ZB_PACKED_PRE struct zb_zcl_price_get_conversion_factor_payload_s { /** UTC Timestamp indicating the earliest start time of values to be returned by the corresponding * @e PublishConversionFactor command. * */ zb_uint32_t earliest_start_time; /* (M) */ /** A 32-bit integer representing the minimum @e IssuerEventID of values to be returned by the * corresponding @e PublishCalorificValue command. */ zb_uint32_t min_issuer_event_id; /* (M) */ /** An 8-bit integer which represents the maximum number of @e PublishConversionFactor commands that * the client is willing to receive in response to this command. A value of 0 indicates no maximum * limit. */ zb_uint8_t number_of_commands; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_get_conversion_factor_payload_t; /** @ref ZB_ZCL_PRICE_CLI_CMD_GET_CALORIFIC_VALUE "GetCalorificValue" command payload * @see SE spec, subclause D.4.2.3.7 */ typedef ZB_PACKED_PRE struct zb_zcl_price_client_get_calorific_value_payload_s { /** UTC Timestamp indicating the earliest start time of values to be returned by the * corresponding @e PublishCalorificValue command. * */ zb_uint32_t earliest_start_time; /* (M) */ /** A 32-bit integer representing the minimum @e IssuerEventID of values to be returned by the * corresponding @e PublishCalorificValue command. */ zb_uint32_t min_issuer_event_id; /* (M) */ /** An 8-bit Integer which represents the maximum number of @e PublishCalorificValue commands that the * client is willing to receive in response to this command. A value of 0 indicates no maximum limit */ zb_uint8_t number_of_commands; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_client_get_calorific_value_payload_t; /** @ref ZB_ZCL_PRICE_CLI_CMD_GET_TARIFF_INFORMATION "GetTariffInformation" command payload * @see SE spec, subclause D.4.2.3.8.2 */ typedef ZB_PACKED_PRE struct zb_zcl_price_get_tariff_information_payload_s { /** UTC Timestamp indicating the earliest start time of tariffs to be returned by the * corresponding @e PublishTariffInformation command. */ zb_uint32_t earliest_start_time; /* (M) */ /** A 32-bit integer representing the minimum @e IssuerEventID of tariffs to be returned by the * corresponding @e PublishTariffInformation command. */ zb_uint32_t min_issuer_event_id; /* (M) */ /** An 8-bit integer which represents the maximum number of @e PublishTariffInformation commands that * the client is willing to receive in response to this command. A value of 0 would indicate all * available @e PublishTariffInformation commands shall be returned. */ zb_uint8_t number_of_commands; /* (M) */ /** An 8-bit bitmap identifying the type of tariff published in this command. The least significant * nibble represents an enumeration of the tariff type. * The most significant nibble is reserved * @see SE spec, Table D-108 * @see zb_zcl_price_tariff_type_t */ zb_uint8_t tariff_type; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_get_tariff_information_payload_t; /** @ref ZB_ZCL_PRICE_CLI_CMD_GET_PRICE_MATRIX "GetPriceMatrix" command payload * @see SE spec, subclause D.4.2.3.9 */ typedef ZB_PACKED_PRE struct zb_zcl_price_get_price_matrix_payload_s { /** @e IssuerTariffID indicates the tariff to which the requested Price Matrix belongs. */ zb_uint32_t issuer_tariff_id; } ZB_PACKED_STRUCT zb_zcl_price_get_price_matrix_payload_t; /** @ref ZB_ZCL_PRICE_CLI_CMD_GET_BLOCK_THRESHOLDS "GetBlockThresholds" command payload * @see SE spec, subclause D.4.2.3.10 */ typedef ZB_PACKED_PRE struct zb_zcl_price_get_block_thresholds_payload_s { /** @e IssuerTariffID indicates the tariff to which the requested Block * Thresholds belong. */ zb_uint32_t issuer_tariff_id; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_get_block_thresholds_payload_t; /** @ref ZB_ZCL_PRICE_CLI_CMD_GET_CO2_VALUE "GetCO2Value" command payload * @see SE spec, subclause D.4.2.3.11.2 */ typedef ZB_PACKED_PRE struct zb_zcl_price_get_co2_value_payload_s { /** UTC Timestamp indicating the earliest start time of values to be returned by the corresponding * @e PublishCO2Value command. The first returned @e PublishCO2Value command shall be the instance * which is active or becomes active at or after the stated @e EarliestStartTime. If more than one * instance is requested, the active and scheduled instances shall be sent with ascending ordered * @e StartTime. */ zb_uint32_t earliest_start_time; /* (M) */ /** A 32-bit integer representing the minimum @e IssuerEventID of values to be returned by the * corresponding @e PublishCO2Value command. */ zb_uint32_t min_issuer_event_id; /* (M) */ /** An 8-bit Integer which represents the maximum number of @e PublishCO2Value commands that the * client is willing to receive in response to this command. A value of 0 would indicate all * available @e PublishCO2Value commands shall be returned. */ zb_uint8_t number_of_commands; /* (M) */ /** An 8-bit bitmap identifying the type of tariff published in this command. The least significant * nibble represents an enumeration of the tariff type. * @see SE spec, Table D-108 * @see zb_zcl_price_tariff_type_t */ zb_uint8_t tariff_type; /* (O) */ } ZB_PACKED_STRUCT zb_zcl_price_get_co2_value_payload_t; /** @ref ZB_ZCL_PRICE_CLI_CMD_GET_TIER_LABELS "GetTierLabels" command payload * @see SE spec, subclause D.4.2.3.12.2 */ typedef ZB_PACKED_PRE struct zb_zcl_price_get_tier_labels_payload_s { /** Unique identifier generated by the commodity supplier. This is used to * identify the tariff that the labels apply to. */ zb_uint32_t issuer_tariff_id; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_get_tier_labels_payload_t; #define ZB_ZCL_PRICE_GET_TIER_LABELS_PAYLOAD_SIZE_IS_VALID(size) \ ((size) >= sizeof(zb_zcl_price_get_tier_labels_payload_t)) /** @ref ZB_ZCL_PRICE_CLI_CMD_GET_BILLING_PERIOD "GetBillingPeriod" command payload * @see SE spec, subclause D.4.2.3.13.2 */ typedef ZB_PACKED_PRE struct zb_zcl_price_get_billing_period_payload_s { /** UTC Timestamp indicating the earliest start time of billing periods to be * returned by the corresponding @e PublishBillingPeriod command. */ zb_uint32_t earliest_start_time; /* (M) */ /** A 32-bit integer representing the minimum @e IssuerEventID of billing * periods to be returned by the corresponding @e PublishBillingPeriod command. */ zb_uint32_t min_issuer_event_id; /* (M) */ /** An 8-bit Integer which indicates the maximum number of @e PublishBillingPeriod commands * that the client is willing to receive in response to this command. */ zb_uint8_t number_of_commands; /* (M) */ /** An 8-bit bitmap identifying the @e TariffType of the requested @e BillingPeriod information. * The least significant nibble represents an enumeration of the tariff type. * The most significant nibble is reserved. * @see SE spec, Table D-108 * @see zb_zcl_price_tariff_type_t */ zb_uint8_t tariff_type; /* (O) */ } ZB_PACKED_STRUCT zb_zcl_price_get_billing_period_payload_t; /** @ref ZB_ZCL_PRICE_CLI_CMD_GET_CONSOLIDATED_BILL "GetConsolidatedBill" command payload * @see SE spec, subclause D.4.2.3.14.2 */ typedef ZB_PACKED_PRE struct zb_zcl_price_get_consolidated_bill_payload_s { /** UTC Timestamp indicating the earliest start time of billing information to be * returned by the corresponding @e PublishConsolidatedBill command. */ zb_uint32_t earliest_start_time; /* (M) */ /** A 32-bit integer representing the minimum @e IssuerEventID of billing information * to be returned by the corresponding @e PublishConsolidatedBill command. */ zb_uint32_t min_issuer_event_id; /* (M) */ /** An 8-bit Integer which indicates the maximum number of @e PublishConsolidatedBill * commands that can be sent. A value of 0 would indicate all available @e PublishConsolidatedBill * commands shall be returned. */ zb_uint8_t number_of_commands; /* (M) */ /** An 8-bit bitmap identifying the @e TariffType of the requested @e BillingPeriod information. * The least significant nibble represents an enumeration of the tariff type. * The most significant nibble is reserved. * @see SE spec, Table D-108 * @see zb_zcl_price_tariff_type_t */ zb_uint8_t tariff_type; /* (O) */ } ZB_PACKED_STRUCT zb_zcl_price_get_consolidated_bill_payload_t; /** @ref ZB_ZCL_PRICE_CLI_CMD_CPP_EVENT_RESPONSE "CPPEventResponse" command payload * @see SE spec, subclause D.4.2.3.15.2 */ typedef ZB_PACKED_PRE struct zb_zcl_price_cpp_event_response_payload_s { /** 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) */ /** An 8-bit enumeration identifying the status of the CPP event. This field shall contain the * 'Accepted' or 'Rejected' values * @see SE spec, Table D-113 * @see zb_zcl_price_cpp_event_status_t */ zb_uint8_t cpp_auth; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_cpp_event_response_payload_t; /** @ref ZB_ZCL_PRICE_CLI_CMD_GET_CREDIT_PAYMENT "GetCreditPayment" command payload * @see SE spec, subclause D.4.2.3.16.2 */ typedef ZB_PACKED_PRE struct zb_zcl_price_get_credit_payment_payload_s { /** UTC timestamp indicating the latest @e CreditPaymentDate of records to be returned * by the corresponding @e PublishCreditPayment commands. The first returned * @e PublishCreditPayment command shall be the most recent record with its * @e CreditPaymentDate equal to or older than the @e LatestEndTime provided. */ zb_uint32_t latest_end_time; /* (M) */ /** An 8-bit integer that represents the maximum number of @e PublishCreditPayment * commands that the client is willing to receive in response to this command. */ zb_uint8_t number_of_commands; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_get_credit_payment_payload_t; /** Block Period Control Field BitMap * @see SE spec, Table D-104 * @see zb_zcl_price_publish_block_period_payload_s::block_period_control */ typedef enum zb_zcl_price_block_period_control_field_bitmap_e { ZB_ZCL_PRICE_CONTROL_PRICE_ACKNOWLEDGEMENT_REQUIRED = 1 << 0, /**< 1=Price Acknowledgement required,@n * 0=Price Acknowledgement not required */ ZB_ZCL_PRICE_CONTROL_REPEATING_BLOCK = 1 << 1, /**< 1=Repeating Block, @n * 0=Non Repeating Block */ } zb_zcl_price_block_period_control_field_t; /** @brief Block Period Duration Control Enumeration * @see SE spec, Table D-106 */ typedef enum zb_zcl_price_block_period_duration_control_e { ZB_ZCL_PRICE_DURATION_START_OF_TIMEBASE = 0x00, /**< Start of Timebase */ ZB_ZCL_PRICE_DURATION_END_OF_TIMEBASE, /**< End of Timebase */ ZB_ZCL_PRICE_DURATION_NOT_SPECIFIED /**< Not Specified */ } zb_zcl_price_block_period_duration_control_t; /** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_BLOCK_PERIOD "PublishBlockPeriod" command payload * @see SE spec, subclause D.4.2.4.2.1 */ typedef ZB_PACKED_PRE struct zb_zcl_price_publish_block_period_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; /* (M) */ /** Unique identifier generated by the commodity provider. When new block period * information is provided that replaces older information for the same period, * this field allows devices to determine which information is newer. */ zb_uint32_t issuer_event_id; /* (M) */ /** A @e UTCTime field to denote the time at which the block tariff period starts. */ zb_uint32_t block_period_start_time; /* (M) */ /** An unsigned 24-bit field to denote the block tariff period . */ zb_uint24_t block_period_duration; /* (M) */ /** Identifies additional control options for the block period event. A value of * 0x00 indicates field not used. */ zb_uint8_t block_period_control; /** An 8-bit bitmap where the least significant nibble is an enumerated sub-field * indicating the time base used for the duration, and the most significant nibble * is an enumerated sub-field providing duration control. * @see zb_zcl_price_block_period_duration_type_e */ zb_uint8_t block_period_duration_type; /* (M) */ /** An 8-bit bitmap identifying the type of tariff published in this command. * The least significant nibble represents an enumeration of the tariff type. * @see SE spec, Table D-108 * @see zb_zcl_price_tariff_type_t */ zb_uint8_t tariff_type; /* (M) */ /** An 8-bit enumeration identifying the resolution period for the block tariff. * @see SE spec, Table D-107 * @see zb_zcl_price_tariff_resolution_period_t */ zb_uint8_t tariff_resolution_period; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_publish_block_period_payload_t; /** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CONVERSION_FACTOR "PublishConversionFactor" command payload * @see SE spec, subclause D.4.2.4.3.1 */ typedef ZB_PACKED_PRE struct zb_zcl_price_publish_conversion_factor_payload_s { /** Unique identifier generated by the commodity provider. */ zb_uint32_t issuer_event_id; /* (M) */ /** A @e UTCTime field to denote the time at which the value becomes valid. * The value remains valid until replaced by a newer one. */ zb_uint32_t start_time; /* (M) */ /** @see SE spec, subclause D.4.2.2.4.3 */ zb_uint32_t conversion_factor; /* (M) */ /** @see SE spec, subclause D.4.2.2.4.4 */ zb_uint8_t conversion_factor_trailing_digit; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_publish_conversion_factor_payload_t; /** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CALORIFIC_VALUE "PublishCalorificValue" command payload * @see SE spec, subclause D.4.2.4.4. */ typedef ZB_PACKED_PRE struct zb_zcl_price_publish_calorific_value_payload_s { /** Unique identifier generated by the commodity provider. */ zb_uint32_t issuer_event_id; /* (M) */ /** A @e UTCTime field to denote the time at which the value becomes valid. * The value remains valid until replaced by a newer one. */ zb_uint32_t start_time; /* (M) */ /** @see sub-clause D.4.2.2.4.5 */ zb_uint32_t calorific_value; /* (M) */ /** @see sub-clause D.4.2.2.4.6 */ zb_uint8_t calorific_value_unit; /* (M) */ /** @see sub-clause D.4.2.2.4.7 */ zb_uint8_t calorific_value_trailing_digit; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_publish_calorific_value_payload_t; /** Tariff Type Enumeration * @see SE spec, Table D-108 */ typedef enum zb_zcl_price_tariff_type_e { ZB_ZCL_PRICE_TARIFF_TYPE_DELIVERED = 0x00, /**< Delivered Tariff */ ZB_ZCL_PRICE_TARIFF_TYPE_RECEIVED, /**< Received Tariff */ ZB_ZCL_PRICE_TARIFF_TYPE_DELIVERED_AND_RECEIVED, /**< Delivered and Received Tariff */ } zb_zcl_price_tariff_type_t; /** Tariff Charging Scheme Enumeration * @see SE spec, Table D-109 */ typedef enum zb_zcl_price_tariff_charging_scheme_e { ZB_ZCL_PRICE_TOU_TARIFF = 0x00, /**< TOU Tariff */ ZB_ZCL_PRICE_BLOCK_TARIFF, /**< Block Tariff */ ZB_ZCL_PRICE_BLOCK_TOU_TARIFF_COMMON, /**< Block/TOU Tariff with common thresholds */ ZB_ZCL_PRICE_BLOCK_TOU_TARIFF_INDIVIDUAL, /**< Block/TOU Tariff with individual thresholds per tier */ } zb_zcl_price_tariff_charging_scheme_t; /** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_TARIFF_INFORMATION "PublishTariffInformation" command payload * @see SE spec, subclause D.4.2.4.5.2 */ typedef ZB_PACKED_PRE struct zb_zcl_price_publish_tariff_information_payload_s { /** A unique identifier for the commodity supplier. */ 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. */ zb_uint32_t issuer_tariff_id; /* (M) */ /** A UTC Time field to denote the time at which the price signal becomes valid. */ zb_uint32_t start_time; /* (M) */ /** An 8-bit bitmap identifying the type of tariff published in this command. * The least significant nibble represents an enumeration of the tariff type, * the most significant nibble represents an enumeration specifying the charging * scheme. * @see SE spec, Table D-108 and Table D-109 * @see zb_zcl_price_tariff_type_t * @see zb_zcl_price_tariff_charging_scheme_e */ zb_uint8_t tariff_type_charging_scheme; /* (M) */ /** The format and use of this field is the same as for the @e TariffLabel attribute * or @e ReceivedTariffLabel attribute */ zb_uint8_t tariff_label[25]; /* (M) */ /** The format and use of this field is the same as for the @e NumberOfPriceTiersInUse * attribute or @e ReceivedNumberOfPriceTiersInUse attribute */ zb_uint8_t number_of_price_tiers_in_use; /* (M) */ /** The format and use of this field is the same as for the @e NumberOfBlockThresholdsInUse * attribute or @e ReceivedNumberOfBlockThresholdsInUse attribute */ zb_uint8_t number_of_block_thresholds_in_use; /* (M) */ /** The format and use of this field is the same as for the @e UnitOfMeasure attribute */ zb_uint8_t unit_of_measure; /* (M) */ /** The format and use of this field is the same as for the @e Currencyattribute */ zb_uint16_t currency; /* (M) */ /** The format and use of this field is the same as for the @e PriceTrailingDigit * attribute */ zb_uint8_t price_trailing_digit; /* (M) */ /** The format and use of this field is the same as for the @e StandingCharge * attribute. A value of 0xFFFFFFFF indicates the field is not used */ zb_uint32_t standing_charge; /* (M) */ /** The format and use of this field is the same as for the @e TierBlockMode * attribute or @e ReceivedTierBlockMode attribute */ zb_uint8_t tier_block_mode; /* (M) */ /** @e BlockThresholdMultiplier provides a value to be multiplied against Threshold * parameter(s). If present, this attribute must be applied to all @e BlockThreshold * values to derive values that can be compared against the @e CurrentBlockPeriodConsumptionDelivered * attribute within the Metering cluster. This parameter must be used in conjunction * with the @e BlockThresholdDivisor parameter(s). */ zb_uint24_t block_threshold_multiplier; /* (M) */ /** @e BlockThresholdDivisor provides a value to divide the result of applying the * @e ThresholdMultiplier attribute to @e BlockThreshold values to derive values that * can be compared against the @e CurrentBlockPeriodConsumptionDelivered attribute * within the Metering cluster. This attribute must be used in conjunction with * the @e BlockThresholdMultiplier parameter(s). In case no divisor is defined, * this field shall be set to 1. */ zb_uint24_t block_threshold_devisor; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_publish_tariff_information_payload_t; /** PublishPriceMatrix and PublishBlockThresholds Sub-Payload Control Bitmap * @see SE spec, Table D-110 * @see SE spec, Table D-111 * @see zb_zcl_price_publish_matrix_type_e * @see zb_zcl_price_publish_block_thresholds_type_e */ enum zb_zcl_price_sub_payload_control_bitmap_e { ZB_ZCL_PRICE_SUB_PAYLOAD_TYPE = 0, /**< 0-bit of bitfield */ }; /** PublishPriceMatrix Sub-Payload Control values. * @see SE spec, Table D-110 * @see zb_zcl_price_sub_payload_control_bitmap_e */ typedef enum zb_zcl_price_publish_matrix_type_e { ZB_ZCL_PRICE_BLOCK_TOU_BASED_INFORMATION = 0x00, /**< The information stored in the * sub payload is Block only or Block/TOU based */ ZB_ZCL_PRICE_TOU_BASED_INFORMATION = 0x01, /**< The information stored in the sub * payload is TOU based. */ } zb_zcl_price_publish_matrix_type_t; /** PriceMatrix Sub-Payload * @see SE spec, subclause D.4.2.4.6.2.1 */ typedef ZB_PACKED_PRE struct zb_zcl_price_price_matrix_sub_payload_s { /** The @e Tier/Block ID specifies the TOU Tier or the TOU Tier and Block that * the subsequent @e Price field in the command applies to */ zb_uint8_t tier_block_id; /* (M) */ /** This field holds the price information for the Block/TOU or TOU identified * by the previous @e Tier/Block @e ID field. */ zb_uint32_t price; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_price_matrix_sub_payload_t; /** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_PRICE_MATRIX "PublishPriceMatrix" command payload * @see SE spec, subclause D.4.2.4.6.2 */ typedef ZB_PACKED_PRE struct zb_zcl_price_publish_price_matrix_payload_s { /** A unique identifier for the commodity supplier. */ 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) */ /** A @e UTCTime field to denote the time at which the price signal becomes valid. */ zb_uint32_t start_time; /* (M) */ /** Unique identifier generated by the commodity supplier. This must match the * @e IssuerTariffID sent in the related @e PublishTariffInformation command. */ zb_uint32_t issuer_tariff_id; /* (M) */ /** The @e CommandIndex is used to count the payload fragments in the case that * an entire payload does not fit into one message. The @e CommandIndex starts * at 0 and is incremented for each fragment belonging to the same command. */ zb_uint8_t command_index; /* (M) */ /** In the case that an entire payload does not fit into one message, the * @e TotalNumberOfCommands field indicates the total number of sub-commands * in the message. */ zb_uint8_t total_number_of_commands; /* (M) */ /** An 8-bit bitmap, the least significant bit of which specifies the information * type stored in the sub payload. The remaining bits are reserved. */ zb_uint8_t sub_payload_control; /* (M) */ /** @see zb_zcl_price_price_matrix_sub_payload_s */ zb_zcl_price_price_matrix_sub_payload_t *price_matrix_sub_payload; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_publish_price_matrix_payload_t; /** PublishBlockThresholds Sub-Payload Control values * @see SE spec, Table D-111 * @see zb_zcl_price_sub_payload_control_bitmap_e */ typedef enum zb_zcl_price_publish_block_thresholds_type_e { ZB_ZCL_PRICE_SPECIFIC_TOU_TIER = 0x00, /**< Block Thresholds supplied * apply to a specific TOU tier */ ZB_ZCL_PRICE_ALL_TOU_TIER = 0X01, /**< Block Thresholds supplied apply to * all TOU tiers or when Block Only charging * is in operation */ } zb_zcl_price_publish_block_thresholds_type_t; /** BlockThreshold Sub-Payload Format * @see SE spec, subclause D.4.2.4.7.2.1 */ typedef ZB_PACKED_PRE struct zb_zcl_price_block_threshold_sub_payload_s { /** The Tier/NumberOfBlockThresholds field is an 8 bitmap. The format of the * bitmap is decided by bit0 of the sub-payload control field. * @n If Bit0 of the Sub-Payload Control field is 0, then the least significant * nibble represents a value specifying the number of thresholds to follow in * the command. The most significant nibble represents the Tier that the subsequent * block threshold values apply to. * @n If Bit0 of the Sub-Payload Control field is 1, then the most significant * nibble is unused and should be set to 0. * @n Valid values for the NumberOfBlockThresholds sub-field are 0 to 15 * reflecting no block in use (0) to block 15(15). * Valid values for the Tiers sub-field are from 0 to 15 reflecting no tier to tier * fifteen. */ zb_uint8_t tier_number_of_block_thresholds; /** The Block Thresholds represent the threshold values applicable to an * individual block period and, where applicable, to a particular tier. */ zb_uint48_t block_threshold[15]; } ZB_PACKED_STRUCT zb_zcl_price_block_threshold_sub_payload_t; /** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_BLOCK_THRESHOLDS "PublishBlockThresholds" command payload * @see SE spec, subclause D.4.2.4.7.2 */ typedef ZB_PACKED_PRE struct zb_zcl_price_publish_block_thresholds_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) */ /** A @e UTCTime field to denote the time at which the price signal becomes valid. */ zb_uint32_t start_time; /* (M) */ /** Unique identifier generated by the commodity supplier. This must match the * @e IssuerTariffID sent in the related @e PublishTariffInformation command. */ zb_uint32_t issuer_tariff_id; /* (M) */ /** The @e CommandIndex is used to count the payload fragments in the case where * the entire payload does not fit into one message. The @e 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 * @e TotalNumberOfCommands field indicates the total number of sub-commands * in the message. */ zb_uint8_t total_number_of_commands; /* (M) */ /** The Sub-Payload Control bitmap specifies the usage of the information contained * within the Block Threshold Sub-Payload. * @see zb_zcl_price_publish_block_thresholds_sub_payload_control_bitmap_e */ zb_uint8_t sub_payload_control; /* (M) */ /** The BlockThreshold Sub-Payload consists of multiple sets of data which * consist of a @e TierID, @e BlockThresholdCount and the threshold values * associated with the stated Tier. * @see zb_zcl_price_block_threshold_sub_payload_t */ zb_zcl_price_block_threshold_sub_payload_t *block_threshold_sub_payload; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_publish_block_thresholds_payload_t; /** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CO2_VALUE "PublishCO2Value" command payload * @see SE spec, subclause D.4.2.4.8.2 */ typedef ZB_PACKED_PRE struct zb_zcl_price_publish_co2_value_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) */ /** A @e UTCTime field to denote the time at which the @e CO2 value becomes valid. */ zb_uint32_t start_time; /* (M) */ /** An 8-bit bitmap identifying the type of tariff published in this command. * The least significant nibble represents an enumeration of the tariff type. * The most significant nibble is reserved. * @see zb_zcl_price_tariff_type_t */ zb_uint8_t tariff_type; /* (M) */ /** The format and use of this field is the same as for the @e CO2 attribute or * @e ReceivedCO2 attribute . A value of 0xFFFFFFFF indicates field not used. */ zb_uint32_t co2_value; /* (M) */ /** The format and use of this field is the same as for the @e CO2Unit attribute * or @e ReceivedCO2Unit attribute. A value of 0xFF indicates field not used. */ zb_uint8_t co2_value_unit; /* (M) */ /** The format and use of this field is the same as for the @e CO2TrailingDigit * attribute or @e ReceivedCO2TrailingDigit attribute. * A value of 0xFF indicates field not used. */ zb_uint8_t co2_value_trailing_digit; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_publish_co2_value_payload_t; /** @see SE spec, subclause D.4.2.4.9.2 * @see zb_zcl_price_publish_tier_labels_payload_t::tier_labels */ typedef ZB_PACKED_PRE struct zb_zcl_price_publish_tier_labels_sub_payload_s { /** The tier number that the associated @e TierLabel applies to. */ zb_uint8_t tier_id; /* (M) */ /** Octet String field capable of storing a 12 character string (the first * character indicates the string length, represented in hexadecimal format) * encoded in the UTF-8 format. */ zb_uint8_t tier_label[13]; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_publish_tier_labels_sub_payload_t; /** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_TIER_LABELS "PublishTierLabels" command payload * @see SE spec, subclause D.4.2.4.9.2 */ typedef ZB_PACKED_PRE struct zb_zcl_price_publish_tier_labels_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. This is used to * identify the tariff that the labels apply to. */ zb_uint32_t issuer_tariff_id; /* (M) */ /** The @e CommandIndex is used to count the payload fragments in the case where * the entire payload does not fit into one message. The @e 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 * @e TotalNumberOfCommands field indicates the total number of sub-commands * in the message. */ zb_uint8_t total_number_of_commands; /* (M) */ /** The number of @e TierID/Tier Label sets contained within the command. */ zb_uint8_t number_of_labels; /* (M) */ /** @see zb_zcl_price_publish_tier_labels_sub_payload_t */ zb_zcl_price_publish_tier_labels_sub_payload_t *tier_labels; } ZB_PACKED_STRUCT zb_zcl_price_publish_tier_labels_payload_t; /** Check if @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_TIER_LABELS "PublishTierLabels" command payload size is valid * @param size - size of received data payload */ #define ZB_ZCL_PRICE_PUBLISH_TIER_LABELS_PAYLOAD_SIZE_IS_VALID(size) \ ((size >= (sizeof(zb_zcl_price_publish_tier_labels_payload_t)-sizeof(void *)) ? ZB_TRUE : ZB_FALSE)) /** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_BILLING_PERIOD "PublishBillingPeriod" command payload * @see SE spec, D.4.2.4.10 */ typedef ZB_PACKED_PRE struct zb_zcl_price_publish_billing_period_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) */ /** A @e UTCTime field to denote the time at which the billing period starts. */ zb_uint32_t billing_period_start_time; /* (M) */ /** An unsigned 24-bit field to denote the billing period duration. The * duration units are defined by the @e BillingPeriodDurationType field. */ zb_uint24_t billing_period_duration; /* (M) */ /** An 8-bit bitmap where the least significant nibble is an enumerated * sub-field indicating the time base used for the duration, and the most * significant nibble is an enumerated sub-field providing duration control. * @see zb_zcl_price_block_period_duration_type_t * @see zb_zcl_price_block_period_duration_control_t */ zb_uint8_t billing_period_duration_type; /* (M) */ /** An 8-bit bitmap identifying the type of tariff published in this command. * The least significant nibble represents an enumeration of the tariff type. * The most significant nibble is reserved. * @see zb_zcl_price_block_period_duration_control_t */ zb_uint8_t tariff_type; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_publish_billing_period_payload_t; /** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CONSOLIDATED_BILL "PublishConsolidatedBill" command payload * @see SE spec, subclause D.4.2.4.11.2 */ typedef ZB_PACKED_PRE struct zb_zcl_price_publish_consolidated_bill_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) */ /** A @e UTCTime field containing the start time of the related billing period. */ zb_uint32_t billing_period_start_time; /* (M) */ /** An unsigned 24-bit field denoting the duration of the related billing period. */ zb_uint24_t billing_period_duration; /* (M) */ /** An 8-bit bitmap where the least significant nibble is an enumerated sub-field * indicating the time base used for the duration, and the most significant nibble * is an enumerated sub-field providing duration control. * @see SE spec, Table D-105, Table D-106 */ zb_uint8_t billing_period_duration_type; /* (M) */ /** An 8-bit bitmap identifying the type of tariff published in this command. * The least significant nibble represents an enumeration of the tariff type. * The most significant nibble is reserved. * @see zb_zcl_price_tariff_type_t */ zb_uint8_t tariff_type; /* (M) */ /** An unsigned 32-bit field containing the consolidated bill value for the * stated billing period. */ zb_uint32_t consolidated_bill; /* (M) */ /** An unsigned 16-bit field containing identifying information concerning the * local unit of currency used in the @e ConsolidatedBill field. */ zb_uint16_t currency; /* (M) */ /** An 8-bit field used to determine where the decimal point is located in the * @e ConsolidatedBill field. */ zb_uint8_t bill_trailing_digit; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_publish_consolidated_bill_payload_t; /** CPP Auth Enumeration * @see SE spec, Table D-112 */ typedef enum zb_zcl_price_cpp_price_tier_e { ZB_ZCL_PRICE_CPP_PRICE_TIER_CPP1 = 0, /**< CPP1 */ ZB_ZCL_PRICE_CPP_PRICE_TIER_CPP2 = 1, /**< CPP2 */ } zb_zcl_price_cpp_price_tier_t; /** CPP Auth Enumeration * @see SE spec, Table D-113 */ typedef enum zb_zcl_price_cpp_event_status_e { ZB_ZCL_PRICE_CPP_EVENT_STATUS_PENDING = 0, /**< Pending */ ZB_ZCL_PRICE_CPP_EVENT_STATUS_ACCEPTED, /**< Accepted */ ZB_ZCL_PRICE_CPP_EVENT_STATUS_REJECTED, /**< Rejected */ ZB_ZCL_PRICE_CPP_EVENT_STATUS_FORCED, /**< Forced */ } zb_zcl_price_cpp_event_status_t; /** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CPP_EVENT "PublishCPPEvent" command payload * @see SE spec, subclause D.4.2.4.12.2 */ typedef ZB_PACKED_PRE struct zb_zcl_price_publish_cpp_event_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) */ /** A @e UTCTime field to denote the time at which the CPP event begins. A start * date/time of 0x00000000 shall indicate that the command should be executed * immediately. */ zb_uint32_t start_time; /* (M) */ /** Defines the duration of the CPP event. */ zb_uint16_t duration_in_minutes; /* (M) */ /** An 8-bit bitmap identifying the type of tariff published in this command. * The least significant nibble represents an enumeration of the tariff type. * The most significant nibble is reserved. * @see zb_zcl_price_tariff_type_t */ zb_uint8_t tariff_type; /* (M) */ /** An 8-bit enumeration identifying the price tier associated with this CPP event. * The price(s) contained in the active price matrix for that price tier will override * the normal pricing scheme. * @see zb_zcl_price_cpp_price_tier_t */ zb_uint8_t cpp_price_tier; /* (M) */ /** An 8-bit enumeration identifying the status of the CPP event. * @see zb_zcl_price_cpp_event_status_t */ zb_uint8_t cpp_auth; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_publish_cpp_event_payload_t; /** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CREDIT_PAYMENT "PublishCreditPayment" command payload. * @see SE spec, subclause D.4.2.4.13.2 */ typedef ZB_PACKED_PRE struct zb_zcl_price_publish_credit_payment_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) */ /** A @e UTCTime field containing the time that the next credit payment is due. */ zb_uint32_t credit_payment_due_date; /* (M) */ /** An unsigned 32-bit field denoting the current amount this is overdue from * the consumer. This field should be provided in the same currency as used in * the Price cluster. */ zb_uint32_t credit_payment_overdue_amount; /* (M) */ /** An 8-bit enumeration identifying the current credit payment status. */ zb_uint8_t credit_payment_status; /* (M) */ /** An unsigned 32-bit field denoting the last credit payment. This field should * be provided in the same currency as used in the Price cluster. */ zb_uint32_t credit_payment; /* (M) */ /** A @e UTCTime field containing the time at which the last credit payment * was made. */ zb_uint32_t credit_payment_date; /* (M) */ /** An string of between 0-20 octets used to denote the last credit payment * reference used by the energy supplier. */ zb_uint8_t credit_payment_ref[21]; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_publish_credit_payment_payload_t; /** Currency Change Control Enumeration * @see SE spec, Table D-114 */ typedef enum zb_zcl_price_currency_change_control_e { ZB_ZCL_PRICE_CLEAR_BILLING_INFORMATION = 1 << 0, /**< 1 = Clear Billing Information * @n 0 = Do Not Clear Billing Information */ ZB_ZCL_PRICE_CONVERT_BILLING_INFORMATION = 1 << 1, /**< 1 = Convert Billing Information using the New Currency * @n 0 = Do Not Convert Billing Information */ ZB_ZCL_PRICE_CLEAR_OLD_CONSUMPTION_DATA = 1 << 2, /**< 1 = Clear Old Consumption Data * @n 0 = Do Not Clear Old Consumption Data */ ZB_ZCL_PRICE_CONVERT_OLD_CONSUMPTION_DATA = 1 << 3, /**< 1 = Convert Old Consumption Data using the New Currency * @n 0 = Do Not Convert Old Consumption Data */ } zb_zcl_price_currency_cghange_control_t; /** @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_CURRENCY_CONVERSION "PublishCurrencyConversion" command payload. * @see SE spec, subclause D.4.2.4.14.2 */ typedef ZB_PACKED_PRE struct zb_zcl_price_publish_currency_conversion_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) */ /** A @e UTCTime field to denote the time at which the new currency becomes valid. */ zb_uint32_t start_time; /* (M) */ /** An unsigned 16-bit field containing identifying information concerning the * old local unit of currency used in the Price cluster. */ zb_uint16_t old_currency; /* (M) */ /** An unsigned 16-bit field containing identifying information concerning the * new local unit of currency used in the Price cluster. The value of the @e NewCurrency * field should match the values defined by ISO 4217. */ zb_uint16_t new_currency; /* (M) */ /** The format and use of this field is the same as for the @e ConversionFactor * attribute as defined in D.4.2.2.4.3. */ zb_uint32_t conversion_factor; /* (M) */ /** The format and use of this field is the same as for the * @e ConversionFactorTrailingDigit attribute as defined in D.4.2.2.4.4. */ zb_uint8_t conversion_factor_trailing_digit; /* (M) */ /** A 32-bit mask that denotes the functions that are required to be carried * out on processing of this command. */ zb_uint32_t currency_change_control_flags; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_publish_currency_conversion_payload_t; /** @ref ZB_ZCL_PRICE_SRV_CMD_CANCEL_TARIFF "CancelTariff" command payload * @see SE spec, subclause D.4.2.4.15.2 */ typedef ZB_PACKED_PRE struct zb_zcl_price_cancel_tariff_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. All parts of a tariff * instance shall have the same @e IssuerTariffID. */ zb_uint32_t issuer_tariff_id; /* (M) */ /** An 8-bit bitmap identifying the type of tariff to be cancelled by this command. * The least significant nibble represents an enumeration of the tariff type. * The most significant nibble is reserved. * @see SE spec, Table D-108 * @see zb_zcl_price_tariff_type_t */ zb_uint8_t tariff_type; /* (M) */ } ZB_PACKED_STRUCT zb_zcl_price_cancel_tariff_payload_t; /** @cond internals_doc */ /** @def ZB_ZCL_PRICE_GET_REQUESTOR_RX_ON_WHEN_IDLE * @brief Macro for getting Requestor RX on When Idle state. * @param x - zb_zcl_price_get_current_price_payload_t value. */ #define ZB_ZCL_PRICE_GET_REQUESTOR_RX_ON_WHEN_IDLE(x) ZB_CHECK_BIT_IN_BIT_VECTOR(x, 0) /** @def ZB_ZCL_PRICE_SET_REQUESTOR_RX_ON_WHEN_IDLE * @brief Macro for setting Requestor RX on When Idle state. * @param x - zb_zcl_price_get_current_price_payload_t value. */ #define ZB_ZCL_PRICE_SET_REQUESTOR_RX_ON_WHEN_IDLE(x) ZB_SET_BIT_IN_BIT_VECTOR(x, 0) /** @endcond */ /* internals_doc */ /** @def ZB_ZCL_PRICE_SEND_CMD_GET_CURRENT_PRICE * @brief Macro for sending @ref ZB_ZCL_PRICE_CLI_CMD_GET_CURRENT_PRICE "GetCurrentPrice" command. * @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 _rx_on_when_idle - Helps to determine publishing * policy for the server, (see SE spec, subclause D.4.2.3.2.1.1) */ #define ZB_ZCL_PRICE_SEND_CMD_GET_CURRENT_PRICE( \ _param, _dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _rx_on_when_idle) \ zb_zcl_price_send_cmd_get_current_price( \ _param, _dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _rx_on_when_idle, NULL) /** @def ZB_ZCL_PRICE_SEND_CMD_GET_SCHEDULED_PRICES * @brief Macro for sending @ref ZB_ZCL_PRICE_CLI_CMD_GET_SCHEDULED_PRICES "GetScheduledPrices" command. * @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 _payload - Packet payload (@ref * zb_zcl_price_get_scheduled_prices_payload_t). */ #define ZB_ZCL_PRICE_SEND_CMD_GET_SCHEDULED_PRICES( \ _param, _dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload) \ zb_zcl_price_send_cmd_get_scheduled_prices( \ _param, _dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload, NULL) /** @def ZB_ZCL_PRICE_SEND_CMD_PUBLISH_PRICE * @brief Macro for sending @ref ZB_ZCL_PRICE_SEND_CMD_PUBLISH_PRICE "PublishPrice" command. * @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 _payload - Packet payload (@ref zb_zcl_price_publish_price_payload_t). */ #define ZB_ZCL_PRICE_SEND_CMD_PUBLISH_PRICE( \ _param, _dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload) \ zb_zcl_price_send_cmd_publish_price( \ _param, _dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload, NULL) /** @def ZB_ZCL_PRICE_SEND_CMD_GET_TIER_LABELS * @brief Macro for sending @ref ZB_ZCL_PRICE_CLI_CMD_GET_TIER_LABELS "GetTierLabels" command. * @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 _payload - Packet payload (ref to @ref zb_zcl_price_get_tier_labels_payload_t). */ #define ZB_ZCL_PRICE_SEND_CMD_GET_TIER_LABELS(_param, _dst_addr, _dst_addr_mode, \ _dst_ep, _src_ep, _payload) \ zb_zcl_price_send_cmd_get_tier_labels(_param, _dst_addr, _dst_addr_mode, \ _dst_ep, _src_ep, _payload, NULL) /** @def ZB_ZCL_PRICE_SEND_CMD_PUBLISH_TIER_LABELS * @brief Macro for sending @ref ZB_ZCL_PRICE_SRV_CMD_PUBLISH_TIER_LABELS "PublishTierLabels" command. * @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 _payload - Packet payload (ref to @ref zb_zcl_price_publish_tier_labels_payload_t). */ #define ZB_ZCL_PRICE_SEND_CMD_PUBLISH_TIER_LABELS(_param, _dst_addr, _dst_addr_mode, \ _dst_ep, _src_ep, _payload) \ zb_zcl_price_send_cmd_publish_tier_labels(_param, _dst_addr, _dst_addr_mode, \ _dst_ep, _src_ep, _payload, NULL) /** @cond internals_doc */ /** @def ZB_ZCL_PRICE_SEND_CMD_PRICE_ACK * @brief Macro for sending @ref ZB_ZCL_PRICE_CLI_CMD_PRICE_ACK "PriceAcknowledgement" command. * @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 _payload - Packet payload (@ref zb_zcl_price_ack_payload_t). */ #define ZB_ZCL_PRICE_SEND_CMD_PRICE_ACK( \ _param, _dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload) \ zb_zcl_price_send_cmd_price_ack( \ _param, _dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload, NULL) /** @cond internals_doc */ /** @def ZB_ZCL_PRICE_SEND_CMD_PRICE_ACK_TSN * @brief Macro for sending @ref ZB_ZCL_PRICE_SEND_CMD_PRICE_ACK_TSN "PriceAcknowledgement" command. * @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 _payload - Packet payload (@ref zb_zcl_price_ack_payload_t). * @param _tsn - sequence number of source command */ #define ZB_ZCL_PRICE_SEND_CMD_PRICE_ACK_TSN( \ _param, _dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload, _tsn) \ zb_zcl_price_send_cmd_price_ack_tsn( \ _param, _dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload, _tsn, NULL) void zb_zcl_price_send_cmd_publish_price(zb_uint8_t param, const zb_addr_u *dst_addr, zb_aps_addr_mode_t dst_addr_mode, zb_uint8_t dst_ep, zb_uint8_t src_ep, const zb_zcl_price_publish_price_payload_t *payload, zb_callback_t cb); void zb_zcl_price_send_cmd_get_current_price(zb_uint8_t param, const zb_addr_u *dst_addr, zb_aps_addr_mode_t dst_addr_mode, zb_uint8_t dst_ep, zb_uint8_t src_ep, zb_uint8_t rx_on_when_idle, zb_callback_t cb); void zb_zcl_price_send_cmd_price_ack(zb_uint8_t param, const zb_addr_u *dst_addr, zb_aps_addr_mode_t dst_addr_mode, zb_uint8_t dst_ep, zb_uint8_t src_ep, const zb_zcl_price_ack_payload_t *payload, zb_callback_t cb); /** Function for sending @ref ZB_ZCL_PRICE_CLI_CMD_PRICE_ACK_TSN "PriceAcknowledgement" command. * @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 _payload - Packet payload (@ref zb_zcl_price_ack_payload_t). * @param _tsn - sequence number of source command * @param cb - Callback which should be called when the ZCL stack receives APS ack. */ void zb_zcl_price_send_cmd_price_ack_tsn(zb_uint8_t param, const zb_addr_u *dst_addr, zb_aps_addr_mode_t dst_addr_mode, zb_uint8_t dst_ep, zb_uint8_t src_ep, const zb_zcl_price_ack_payload_t *payload, zb_uint8_t tsn, zb_callback_t cb); void zb_zcl_price_send_cmd_get_scheduled_prices(zb_uint8_t param, const zb_addr_u *dst_addr, zb_aps_addr_mode_t dst_addr_mode, zb_uint8_t dst_ep, zb_uint8_t src_ep, const zb_zcl_price_get_scheduled_prices_payload_t *payload, zb_callback_t cb); void zb_zcl_price_send_cmd_get_tier_labels(zb_uint8_t param, zb_addr_u *dst_addr, zb_aps_addr_mode_t dst_addr_mode, zb_uint8_t dst_ep, zb_uint8_t src_ep, zb_zcl_price_get_tier_labels_payload_t *payload, zb_callback_t cb); void zb_zcl_price_send_cmd_publish_tier_labels(zb_uint8_t param, zb_addr_u *dst_addr, zb_aps_addr_mode_t dst_addr_mode, zb_uint8_t dst_ep, zb_uint8_t src_ep, zb_zcl_price_publish_tier_labels_payload_t *payload, zb_callback_t cb); /** @endcond */ /* internals_doc */ /** @} */ /* end of ZB_ZCL_PRICE_CLUSTER_COMMANDS */ /** @cond internals_doc */ /*** Internal handler for Price Cluster commands */ void zb_zcl_price_init_server(void); void zb_zcl_price_init_client(void); #define ZB_ZCL_CLUSTER_ID_PRICE_SERVER_ROLE_INIT zb_zcl_price_init_server #define ZB_ZCL_CLUSTER_ID_PRICE_CLIENT_ROLE_INIT zb_zcl_price_init_client /** @endcond */ /* internals_doc */ /** @} */ /* Price cluster */ /** @endcond */ /* DOXYGEN_ZCL_SECTION */ #endif /* ZB_ZCL_PRICE_H */