MeshTalos-Client/managed_components/espressif__esp-zboss-lib/include/zcl/zb_zcl_prepayment.h
2025-12-03 14:20:11 +08:00

1595 lines
66 KiB
C

/*
* 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: Prepayment cluster definitions
*/
#ifndef ZB_ZCL_PREPAYMENT_H_
#define ZB_ZCL_PREPAYMENT_H_
#include "zboss_api_core.h" /* ZBOSS core API types */
/** @cond DOXYGEN_ZCL_SECTION && DOXYGEN_SE_SECTION */
/** @addtogroup ZB_ZCL_PREPAYMENT
* @{
* @details
* The Prepayment Cluster provides the facility to pass messages relating to
* the accounting functionality of a meter between devices on the HAN. It allows
* for the implementation of a system conforming to the set of standards relating
* to Payment Electricity Meters (IEC 62055) and also for the case where the
* accounting function is remote from the meter. Prepayment issued in situations
* where the supply of a service may be interrupted or enabled under the control
* of the meter or system in relation to a payment tariff. The accounting
* process may be within the meter or elsewhere in the system. The amount of
* available credit is decremented as the service is consumed and is incremented
* through payments made by the consumer. Such a system allows the consumer
* to better manage their energy consumption and reduces the risk of bad debt
* owing to the supplier.
*/
/** @defgroup ZB_ZCL_PREPAYMENT_ATTRS Prepayment cluster attributes
* @{
*/
/** @brief Default value for Prepayment cluster revision global attribute */
#define ZB_ZCL_PREPAYMENT_CLUSTER_REVISION_DEFAULT ((zb_uint16_t)0x0001u)
/** Prepayment Server Attribute Sets
* @see SE spec, subclause 7.2.2
*/
typedef enum zb_zcl_prepayment_attr_sets_e
{
/** The following set of attributes provides access to the standard information
* relating to a Prepayment meter.
*/
ZB_ZCL_PREPAYMENT_SET_PREPAYMENT_INFORMATION = 0x00,
/** The following set of attributes provides access to previous successful
* credit top-ups on a prepayment meter. #1 is the most recent, based on
* time.
*/
ZB_ZCL_PREPAYMENT_SET_TOP_UP,
/** This set of attributes provides access to information on debt held on a
* Prepayment meter.
*/
ZB_ZCL_PREPAYMENT_SET_DEBT,
/** The following set of attributes provides a means to control which
* prepayment alarms may be generated from the meter.
*/
ZB_ZCL_PREPAYMENT_SET_ALARM = 0x04,
/** Historical Cost Consumption Information Attribute Set */
ZB_ZCL_PREPAYMENT_SET_HISTORICAL_COST_CONSUMPTION_INFORMATION,
} zb_zcl_prepayment_attr_sets_t;
/** The Prepayment Information Attribute Set provides access to the
* standard information relating to a Prepayment meter.
* @see SE spec, subclause 7.2.2.1
*/
typedef enum zb_zcl_prepayment_prepayment_information_attr_set_e
{
/** The PaymentControlConfiguration attribute represents the payment mechanisms
* currently enabled within the Metering Device.
*/
ZB_ZCL_ATTR_PREPAYMENT_PAYMENT_CONTROL_CONFIGURATION = 0x0000, /* (M) */
/** The Credit Remaining attribute represents the amount of credit remaining
* on the Metering Device.
*/
ZB_ZCL_ATTR_PREPAYMENT_CREDIT_REMAINING, /* (O) */
/** The Emergency Credit Remaining attribute represents the amount of
* Emergency Credit still available on the Metering Device.
*/
ZB_ZCL_ATTR_PREPAYMENT_EMERGENCY_CREDIT_REMAINING, /* (O) */
/** The Credit Status attribute represents the current status of credit within
* the Metering Device.
*/
ZB_ZCL_ATTR_PREPAYMENT_CREDIT_STATUS, /* (O) */
/** The UTC time at which the Credit Remaining attribute was last populated. */
ZB_ZCL_ATTR_PREPAYMENT_CREDIT_REMAINING_TIMESTAMP, /* (O) */
/** The AccumulatedDebt attribute represents the total amount of debt remaining
* on the Metering Device.
*/
ZB_ZCL_ATTR_PREPAYMENT_ACCUMULATED_DEBT, /* (O) */
/** The OverallDebtCap attribute represents the total amount of debt that can
* be taken from top-ups (in the case of multiple instantiated top-up based debts
* on the Metering Device).
*/
ZB_ZCL_ATTR_PREPAYMENT_OVERALL_DEBT_CAP, /* (O) */
/** The EmergencyCreditLimit/Allowance attribute may be updated by the utility
* company. This is the amount of Emergency Credit available to loan to the
* consumer when the remaining balance goes below the low credit threshold.
*/
ZB_ZCL_ATTR_PREPAYMENT_EMERGENCY_CREDIT_LIMIT = 0x0010, /* (O) */
/** When credit (or emergency credit) falls below this threshold, an alarm is
* raised to warn the consumer of imminent supply interruption and, if available,
* to offer Emergency Credit.
*/
ZB_ZCL_ATTR_PREPAYMENT_EMERGENCY_CREDIT_THRESHOLD, /* (O) */
/** An unsigned 48-bit integer value indicating running total of credit topped
* up to date.
*/
ZB_ZCL_ATTR_PREPAYMENT_TOTAL_CREDIT_ADDED = 0x0020, /* (O) */
/** An unsigned 32-bit integer value indicating the maximum credit balance
* allowed on a meter.
*/
ZB_ZCL_ATTR_PREPAYMENT_MAX_CREDIT_LIMIT, /* (O) */
/** An unsigned 32-bit integer value indicating the maximum credit per top-up.
* Any single top-up greater than this threshold will cause the meter to reject
* the top-up
*/
ZB_ZCL_ATTR_PREPAYMENT_MAX_CREDIT_PER_TOP_UP, /* (O) */
/** An unsigned 8-bit integer value indicating the amount of time, in minutes,
* before the Friendly Credit Period End Warning alarm flag is triggered.
*/
ZB_ZCL_ATTR_PREPAYMENT_FRIENDLY_CREDIT_WARNING = 0x0030, /* (O) */
/** An unsigned 32-bit integer that defines the utility low credit value below
* which the Low Credit warning should sound.
*/
ZB_ZCL_ATTR_PREPAYMENT_LOW_CREDIT_WARNING, /* (O) */
/** An unsigned 32-bit integer that is defined by the consumer for a low credit
* value below which a Low Credit warning should sound.
*/
ZB_ZCL_ATTR_PREPAYMENT_IHD_LOW_CREDIT_WARNING, /* (O) */
/** When the end of a configured non-disconnect period is reached and the
* supply is to be interrupted due to insufficient credit being available,
* the meter will provide visual and audible alerts and the interruption will be
* suspended for a further period of minutes defined by this attribute.
*/
ZB_ZCL_ATTR_PREPAYMENT_INTERRUPT_SUSPEND_TIME, /* (O) */
/** An unsigned 16-bit integer value indicating the amount of time remaining,
* in minutes, in a currently active Friendly Credit period.
*/
ZB_ZCL_ATTR_PREPAYMENT_REMAINING_FRIENDLY_CREDIT_TIMES, /* (O) */
/** The UTC time at which the next Friendly Credit period is due to commence. */
ZB_ZCL_ATTR_PREPAYMENT_NEXT_FRIENDLY_CREDIT_PERIOD, /* (O) */
/** This attribute is a signed 32-bit integer that shall either be zero or a
* negative value (in all known cases).
*/
ZB_ZCL_ATTR_PREPAYMENT_CUT_OFF_VALUE = 0x0040, /* (O) */
/** The TokenCarrierId attribute provides a method for utilities to publish the
* payment card number that is used with this meter set.
*/
ZB_ZCL_ATTR_PREPAYMENT_TOKEN_CARRIER_ID = 0x0080, /* (O) */
} zb_zcl_prepayment_prepayment_information_attr_set_t;
/** @endcond */ /* DOXYGEN_ZCL_SECTION && DOXYGEN_SE_SECTION */
/** @cond internals_doc */
#define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_PREPAYMENT_PAYMENT_CONTROL_CONFIGURATION(data_ptr) \
{ \
ZB_ZCL_ATTR_PREPAYMENT_PAYMENT_CONTROL_CONFIGURATION, \
ZB_ZCL_ATTR_TYPE_16BITMAP, \
ZB_ZCL_ATTR_ACCESS_READ_ONLY, \
(ZB_ZCL_NON_MANUFACTURER_SPECIFIC), \
(void*) data_ptr \
}
/** @endcond */ /* internals_doc */
/** @cond DOXYGEN_ZCL_SECTION && DOXYGEN_SE_SECTION */
/** @brief Declare attribute list for Prepayment cluster
@param attr_list - attribute list name
@param payment_control_configuration - pointer to variable to store Payment Control Configuration attribute value
*/
#define ZB_ZCL_DECLARE_PREPAYMENT_ATTRIB_LIST(attr_list, payment_control_configuration) \
ZB_ZCL_START_DECLARE_ATTRIB_LIST_CLUSTER_REVISION(attr_list, ZB_ZCL_PREPAYMENT) \
ZB_ZCL_SET_ATTR_DESC(ZB_ZCL_ATTR_PREPAYMENT_PAYMENT_CONTROL_CONFIGURATION, (payment_control_configuration)) \
ZB_ZCL_FINISH_DECLARE_ATTRIB_LIST
/**
* @brief Prepayment cluster Mandatory attributes
*/
typedef struct zb_zcl_prepayment_attrs_s
{
/** @see ZB_ZCL_PREPAYMENT_PAYMENT_CONTROL_CONFIGURATION
*/
zb_uint16_t payment_control_configuration;
} zb_zcl_prepayment_attrs_t;
/** Declare attribute list for Prepayment cluster
* @param[in] attr_list - attribute list variable name
* @param[in] attrs - variable of @ref zb_zcl_prepayment_attrs_t type (containing Prepaylent cluster attributes)
*/
#define ZB_ZCL_DECLARE_PREPAYMENT_ATTR_LIST(attr_list, attrs) \
ZB_ZCL_DECLARE_PREPAYMENT_ATTRIB_LIST(attr_list, &attrs.payment_control_configuration)
/** The PaymentControlConfiguration attribute represents the payment mechanisms
* currently enabled within the Metering Device.
* @see SE spec, Table D-130
*/
typedef enum zb_zcl_prepayment_payment_control_configuration_attr_e
{
/** Indicates whether the metering device is to disconnect the energy supply on
* expiry of available credit.
*/
PREPAYMENT_DISCONNECTION_ENABLED = 1 << 0,
/** Indicates if the meter is a prepayment meter; if this value is 0,
* the meter is considered to be a credit meter.
*/
PREPAYMENT_PREPAYMENT_ENABLED = 1 << 1,
/** Indicates whether the metering device should manage accounting functionality
* according to available tariff information.
*/
PREPAYMENT_CREDIT_MANAGEMENT_ENABLED = 1 << 2,
/** Indicates whether the metering device should display the credit status. */
PREPAYMENT_CREDIT_DISPLAY_ENABLED = 1 << 4,
/** Indicates whether the metering device is running in Monetary (0) or
* Unit based (1) units.
*/
PREPAYMENT_ACCOUNT_BASE = 1 << 5,
/** Indicates whether the metering device is fitted with a Contactor
* i.e. is capable if disconnecting the energy supply.
*/
PREPAYMENT_CONTACTOR_FITTED = 1 << 7,
/** Indicates whether the standing charge collection is halted when the prepaid
* credit is exhausted.
*/
PREPAYMENT_STANDING_CHARGE_CONFIGURATION = 1 << 8,
/** Indicates whether the standing charge collection is halted when the device
* is in Emergency Credit mode.
*/
PREPAYMENT_EMERGENCY_STANDING_CHARGE_CONFIGURATION = 1 << 9,
/** Indicates whether the debt collection is halted when the prepaid credit is
* exhausted.
*/
PREPAYMENT_DEBT_CONFIGURATION = 1 << 10,
/** Indicates whether the debt is collected when the device is in Emergency
* Credit mode.
*/
PREPAYMENT_EMERGENCY_DEBT_CONFIGURATION = 1 << 11,
} zb_zcl_prepayment_payment_control_configuration_attr_t;
/** The Credit Status attribute represents the current status of credit within
* the Metering Device.
* @see SE spec, Table D-131
*/
typedef enum zb_zcl_prepayment_credit_status_attr_e
{
ZB_ZCL_PREPAYMENT_CREDIT_STATUS_CREDIT_OK = 1 << 0, /**< Credit Ok */
ZB_ZCL_PREPAYMENT_CREDIT_STATUS_LOW_CREDIT = 1 << 1, /**< Low Credit */
ZB_ZCL_PREPAYMENT_CREDIT_STATUS_EMERGENCY_CREDIT_ENABLED = 1 << 2, /**< Emergency Credit Enabled */
ZB_ZCL_PREPAYMENT_CREDIT_STATUS_EMERGENCY_CREDIT_AVAILABLE = 1 << 3, /**< Emergency Credit Available */
ZB_ZCL_PREPAYMENT_CREDIT_STATUS_EMERGENCY_CREDIT_SELECTED = 1 << 4, /**< Emergency Credit Selected */
ZB_ZCL_PREPAYMENT_CREDIT_STATUS_EMERGENCY_CREDIT_IN_USE = 1 << 5, /**< Emergency Credit In Use */
ZB_ZCL_PREPAYMENT_CREDIT_STATUS_CREDIT_EXHAUSTED = 1 << 6, /**< Credit Exhausted */
} zb_zcl_prepayment_credit_status_attr_t;
/** The Top-up Attribute Set provides access to previous successful
* credit top-ups on a prepayment meter. #1 is the most recent, based on time.
* @see SE spec, subclause 7.2.2.2
*/
typedef enum zb_zcl_prepayment_top_up_attr_set_e
{
/** The Top up Date/Time attribute represents the time that the credit was
* topped up on the Metering Device. There are five records containing this
* attribute, one for each of the last five top-ups.
*/
ZB_ZCL_ATTR_PREPAYMENT_TOP_UP_TOP_UP_DATE_1 = 0x0100, /* (O) */
/** The Top up Amount attribute represents the amount of credit that was added
* to the Metering Device during the top up.
*/
ZB_ZCL_ATTR_PREPAYMENT_TOP_UP_TOP_UP_AMOUNT_1, /* (O) */
/** The Originating Device attribute represents the SE device that was the
* source of the top-up command.
*/
ZB_ZCL_ATTR_PREPAYMENT_TOP_UP_ORIGINATING_DEVICE_1, /* (O) */
/** The Top up Code attribute represents any encrypted number that was used to
* apply the credit to the meter; the octet string shall be as it was received,
* i.e. not decoded.
*/
ZB_ZCL_ATTR_PREPAYMENT_TOP_UP_TOP_UP_CODE_1, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_TOP_UP_TOP_UP_DATE_2 = 0x0110, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_TOP_UP_TOP_UP_AMOUNT_2, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_TOP_UP_ORIGINATING_DEVICE_2, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_TOP_UP_TOP_UP_CODE_2, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_TOP_UP_TOP_UP_DATE_3 = 0x0120, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_TOP_UP_TOP_UP_AMOUNT_3, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_TOP_UP_ORIGINATING_DEVICE_3, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_TOP_UP_TOP_UP_CODE_3, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_TOP_UP_TOP_UP_DATE_4 = 0x0130, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_TOP_UP_TOP_UP_AMOUNT_4, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_TOP_UP_ORIGINATING_DEVICE_4, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_TOP_UP_TOP_UP_CODE_4, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_TOP_UP_TOP_UP_DATE_5 = 0x0140, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_TOP_UP_TOP_UP_AMOUNT_5, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_TOP_UP_ORIGINATING_DEVICE_5, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_TOP_UP_TOP_UP_CODE_5, /* (O) */
} zb_zcl_prepayment_top_up_attr_set_t;
/** Debt Attribute Set provides access to information on debt held on a
* Prepayment meter.
* @see SE spec, subclause 7.2.2.3
*/
typedef enum zb_zcl_prepayment_debt_attr_set_e
{
/** The DebtLabel#n attribute provides a method for utilities to assign a name
* to a particular type of debt. The DebtLabel#n attribute is a ZCL Octet String
* field capable of storing a 12 character string (the first Octet indicates length)
* encoded in the UTF-8 format.
*/
ZB_ZCL_ATTR_PREPAYMENT_DEBT_LABEL_1 = 0x0210, /* (O) */
/** An unsigned 32-bit field to denote the amount of Debt remaining on the
* Metering Device. This parameter shall be measured in base unit of Currency
* with the decimal point located as indicated by the Trailing Digits field,
* as defined in the Price Cluster.
*/
ZB_ZCL_ATTR_PREPAYMENT_DEBT_AMOUNT_1, /* (O) */
/** An enumerated attribute denoting the debt recovery method used
* for this debt type
*/
ZB_ZCL_ATTR_PREPAYMENT_DEBT_RECOVERY_METHOD_1, /* (O) */
/** A UTC Time field to denote the time at which the debt collection should
* start. This applies to all debt recovery methods.
*/
ZB_ZCL_ATTR_PREPAYMENT_DEBT_RECOVERY_START_TIME_1, /* (O) */
/** An unsigned 16-bit field denoting the time of day when the debt collection
* takes place.
*/
ZB_ZCL_ATTR_PREPAYMENT_DEBT_RECOVERY_COLLECTION_TIME_1, /* (O) */
/** The DebtRecoveryFrequency#N attribute represents the period over which each
* DebtRecoveryAmount#N is recovered.
*/
ZB_ZCL_ATTR_PREPAYMENT_DEBT_RECOVERY_FREQUENCY_1 = 0x0216, /* (O) */
/** The DebtRecoveryAmount#N attribute represents the amount of Debt recovered
* each period specified by DebtRecoveryFrequency#N, measured in base unit of
* Currency with the decimal point located as indicated by the Trailing Digits
* field, as defined in the Price Cluster.
*/
ZB_ZCL_ATTR_PREPAYMENT_DEBT_RECOVERY_AMOUNT_1, /* (O) */
/** An unsigned 16-bit field used in Percentage based recovery to denote the
* percentage from a top- up amount to be deducted from the debt.
*/
ZB_ZCL_ATTR_PREPAYMENT_DEBT_RECOVERY_TOP_UP_PERCENTAGE_1 = 0x0219, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_DEBT_LABEL_2 = 0x0220, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_DEBT_AMOUNT_2, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_DEBT_RECOVERY_METHOD_2, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_DEBT_RECOVERY_START_TIME_2, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_DEBT_RECOVERY_COLLECTION_TIME_2, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_DEBT_RECOVERY_FREQUENCY_2 = 0x0226, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_DEBT_RECOVERY_AMOUNT_2, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_DEBT_RECOVERY_TOP_UP_PERCENTAGE_2 = 0x0229, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_DEBT_LABEL_3 = 0x0230, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_DEBT_AMOUNT_3, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_DEBT_RECOVERY_METHOD_3, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_DEBT_RECOVERY_START_TIME_3, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_DEBT_RECOVERY_COLLECTION_TIME_3, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_DEBT_RECOVERY_FREQUENCY_3 =0x0236, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_DEBT_RECOVERY_AMOUNT_3, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_DEBT_RECOVERY_TOP_UP_PERCENTAGE_3 = 0x0239, /* (O) */
} zb_zcl_prepayment_debt_attr_set_t;
/** Debt Recovery Method Enumerations
* @see SE spec, Table D-135
*/
typedef enum zb_zcl_prepayment_debt_recovery_method_e
{
ZB_ZCL_PREPAYMENT_TIME_BASED = 0x00, /**< Time based */
ZB_ZCL_PREPAYMENT_PERCENTAGE_BASED, /**< Percentage based */
ZB_ZCL_PREPAYMENT_CATCH_UP_BASED /**< Catch UP based */
} zb_zcl_prepayment_debt_recovery_method_t;
/** Recovery Frequency Field Enumerations
* @see SE spec, Table D-136
*/
typedef enum zb_zcl_prepayment_recovery_frequency_e
{
ZB_ZCL_PREPAYMENT_PER_HOUR = 0x00, /**< Per Hour */
ZB_ZCL_PREPAYMENT_PER_DAY, /**< Per Day */
ZB_ZCL_PREPAYMENT_PER_WEEK, /**< Per Week */
ZB_ZCL_PREPAYMENT_PER_MONTH, /**< Per Month */
ZB_ZCL_PREPAYMENT_PER_QUARTER /**< Per Quarter */
} zb_zcl_prepayment_recovery_frequency_t;
/** The Alarms Attribute Set provides a means to control which prepayment alarms
* may be generated from the meter.
* @see SE spec, subclause 7.2.2.5
*/
typedef enum zb_zcl_prepayment_alarms_attr_set_e
{
/** The PrepaymentAlarmStatus attribute provides indicators reflecting the current
* error conditions found by the prepayment metering device.
*/
ZB_ZCL_ATTR_PREPAYMENT_PREPAYMENT_ALARM_STATUS = 0x0400, /* (O) */
/** The Alarm Mask attributes of the Alarms Attribute Set specify whether each
* of the alarms listed in the corresponding alarm group in Table D-139 through
* Table D-142 is enabled.
*/
ZB_ZCL_ATTR_PREPAYMENT_PREPAY_GENERIC_ALARM_MASK, /* (O) */
/** */
ZB_ZCL_ATTR_PREPAYMENT_PREPAY_SWITCH_ALARM_MASK, /* (O) */
/** */
ZB_ZCL_ATTR_PREPAYMENT_PREPAY_EVENT_ALARM_MASK /* (O) */
} zb_zcl_prepayment_alarms_attr_set_t;
/** Prepayment Alarm Status Indicators
* @see SE spec, Table D-138
*/
typedef enum zb_zcl_prepayment_prepayment_alarm_status_indicators_e
{
/** An alarm triggered by a configured threshold. */
ZB_ZCL_PREPAYMENT_ALARM_LOW_CREDIT_WARNING = 1 << 0,
/** The Top up code has been sent but it is too long or short for the meter */
ZB_ZCL_PREPAYMENT_ALARM_TOP_UP_CODE_ERROR = 1 << 1,
/** The Top up code has been sent but the credit value for this top up code
* has already been applied and this is a duplicate request.
*/
ZB_ZCL_PREPAYMENT_ALARM_TOP_UP_CODE_ALREADY_USED = 1 << 2,
/** The Top up code is a correct length but is not a valid top up code. */
ZB_ZCL_PREPAYMENT_ALARM_TOP_UP_CODE_INVALID = 1 << 3,
/** The meter is in a Friendly Credit period and Friendly Credit is being used
* due to no actual credit being available on the meter.
*/
ZB_ZCL_PREPAYMENT_ALARM_FRIENDLY_CREDIT_IN_USE = 1 << 4,
/** This is triggered when the time remaining in a Friendly Credit period
* falls below the value of the FriendlyCreditWarning attribute (default 1hr)
* and the above Friendly Credit In Use flag is set.
*/
ZB_ZCL_PREPAYMENT_ALARM_FRIENDLY_CREDIT_PERIOD_END_WARNING = 1 << 5,
/** An alarm triggered when Emergency credit is available to be selected */
ZB_ZCL_PREPAYMENT_ALARM_EC_AVAILABLE = 1 << 6,
/** GAS: Valve Fault and unauthorised gas is being provided to the home
* ELECTRICITY: Disconnection Fault and unauthorised electricity is
* being provided to the house.
*/
ZB_ZCL_PREPAYMENT_ALARM_UNAUTHORISED_ENERGY_USE = 1 << 7,
/** Supply has been disconnected due to no credit on meter. Cleared by
* addition of credit or by selecting Emergency Credit
*/
ZB_ZCL_PREPAYMENT_ALARM_DISCONNECTED_SUPPLY_DUE_TO_CREDIT = 1 << 8,
/** Supply has been disconnected due to a tamper detect on the meter. It can
* also be due to a fault on the meter that is not covered by another flag.
*/
ZB_ZCL_PREPAYMENT_ALARM_DISCONNECTED_SUPPLY_DUE_TO_TAMPER = 1 << 9,
/** This is normally due to the HES cutting the supply */
ZB_ZCL_PREPAYMENT_ALARM_DISCONNECTED_SUPPLY_DUE_TO_HES = 1 << 10,
/** Physical attack on the Prepayment Meter */
ZB_ZCL_PREPAYMENT_ALARM_PHYSICAL_ATTACK = 1 << 11,
/** Electronic attack on the Prepayment Meter */
ZB_ZCL_PREPAYMENT_ALARM_ELECTRONIC_ATTACK = 1 << 12,
/** Manufacture Alarm Code A */
ZB_ZCL_PREPAYMENT_ALARM_MANUFACTURE_ALARM_CODE_A = 1 << 13,
/** Manufacture Alarm Code B */
ZB_ZCL_PREPAYMENT_ALARM_MANUFACTURE_ALARM_CODE_B = 1 << 14
} zb_zcl_prepayment_prepayment_alarm_status_indicators_t;
/** PrepayGenericAlarmGroup
* @see SE spec, Table D-140
*/
typedef enum zb_zcl_prepayment_prepay_generic_alarm_group_e
{
ZB_ZCL_PREPAYMENT_GROUP_LOW_CREDIT = 0x00,
ZB_ZCL_PREPAYMENT_GROUP_NO_CREDIT,
ZB_ZCL_PREPAYMENT_GROUP_CREDIT_EXHAUSTED,
ZB_ZCL_PREPAYMENT_GROUP_EMERGENCY_CREDIT_ENABLED,
ZB_ZCL_PREPAYMENT_GROUP_EMERGENCY_CREDIT_EXHAUSTED,
ZB_ZCL_PREPAYMENT_GROUP_IHD_LOW_CREDIT_WARNING,
ZB_ZCL_PREPAYMENT_GROUP_EVENT_LOG_CLEARED
} zb_zcl_prepayment_prepay_generic_alarm_group_t;
/** PrepaySwitchAlarmGroup
* @see SE spec, Table D-141
*/
typedef enum zb_zcl_prepayment_prepay_switch_alarm_group_e
{
ZB_ZCL_PREPAYMENT_GROUP_SUPPLY_ON = 0x10,
ZB_ZCL_PREPAYMENT_GROUP_SUPPLY_ARM,
ZB_ZCL_PREPAYMENT_GROUP_SUPPLY_OFF,
ZB_ZCL_PREPAYMENT_GROUP_DISCONNECTION_FAILURE,
ZB_ZCL_PREPAYMENT_GROUP_DISCONNECTION_TAMPER_DETECTED,
ZB_ZCL_PREPAYMENT_GROUP_DISCONNECTED_DUE_TO_CUT_OFF_VALUE,
ZB_ZCL_PREPAYMENT_GROUP_REMOTE_DISCONNECTED
} zb_zcl_prepayment_prepay_switch_alarm_group_t;
/** PrepayEventAlarmGroup
* @see SE spec, Table D-142
*/
typedef enum zb_zcl_prepayment_prepay_event_alarm_group_e
{
ZB_ZCL_PREPAYMENT_GROUP_PHYSICAL_ATTACK_ON_PREPAY_METER = 0x20,
ZB_ZCL_PREPAYMENT_GROUP_ELECTRONIC_ATTACK_ON_PREPAY_METER,
ZB_ZCL_PREPAYMENT_GROUP_DISCOUNT_APPLIED,
ZB_ZCL_PREPAYMENT_GROUP_CREDIT_ADJUSTMENT,
ZB_ZCL_PREPAYMENT_GROUP_CREDIT_ADJUSTMENT_FAIL,
ZB_ZCL_PREPAYMENT_GROUP_DEBT_ADJUSTMENT,
ZB_ZCL_PREPAYMENT_GROUP_DEBT_ADJUSTMENT_FAIL,
ZB_ZCL_PREPAYMENT_GROUP_MODE_CHANGE,
ZB_ZCL_PREPAYMENT_GROUP_TOP_UP_CODE_ERROR,
ZB_ZCL_PREPAYMENT_GROUP_TOP_UP_ALREADY_USED,
ZB_ZCL_PREPAYMENT_GROUP_TOP_UP_CODE_INVALID,
ZB_ZCL_PREPAYMENT_GROUP_FRIENDLY_CREDIT_IN_USE,
ZB_ZCL_PREPAYMENT_GROUP_FRIENDLY_CREDIT_PERIOD_END_WARNING,
ZB_ZCL_PREPAYMENT_GROUP_FRIENDLY_CREDIT_PERIOD_END,
ZB_ZCL_PREPAYMENT_GROUP_ERROR_REG_CLEAR = 0x30,
ZB_ZCL_PREPAYMENT_GROUP_ALARM_REG_CLEAR,
ZB_ZCL_PREPAYMENT_GROUP_PREPAY_CLUSTER_NOT_FOUND,
ZB_ZCL_PREPAYMENT_GROUP_MODE_CREDIT_2_PREPAY = 0x41,
ZB_ZCL_PREPAYMENT_GROUP_MODE_PREPAY_2_CREDIT,
ZB_ZCL_PREPAYMENT_GROUP_MODE_DEFAULT
} zb_zcl_prepayment_prepay_event_alarm_group_t;
/** Historical Cost Consumption Information Set
* @see SE spec, subclause 7.2.2.6
*/
typedef enum zb_zcl_prepayment_historical_cost_consumption_information_set_e
{
/** HistoricalCostConsumptionFormatting provides a method to properly decipher
* the decimal point location for the values found in the Historical Cost
* Consumption Set of attributes
*/
ZB_ZCL_ATTR_PREPAYMENT_HISTORICAL_COST_CONSUMPTION_FORMATING = 0x0500, /* (O) */
/** ConsumptionUnitOfMeasurement provides a label for the Energy, Gas, or Water
* being measured by the metering device.
*/
ZB_ZCL_ATTR_PREPAYMENT_CONSUMPTION_UNIT_OF_MEASUREMENT, /* (O) */
/** CurrencyScalingFactor provides a scaling factor for the Currency attribute
* for the Energy, Gas, or Water being measured by the metering device.
*/
ZB_ZCL_ATTR_PREPAYMENT_CURRENCY_SCALING_FACTOR, /* (O) */
/** The Currency attribute provides the currency for the Energy, Gas, or Water
* being measured by the prepayment device.
*/
ZB_ZCL_ATTR_PREPAYMENT_CURRENCY, /* (O) */
/** It represents the summed value of Energy, Gas, or Water delivered to the
* premises since the HFT.
*/
ZB_ZCL_ATTR_PREPAYMENT_CURRENT_DAY_COST_CONSUMPTION_DELIVERED = 0x051C, /* (O) */
/** represents the summed value of Energy, Gas, or Water received from the
* premises since the HFT.
*/
ZB_ZCL_ATTR_PREPAYMENT_CURRENT_DAY_COST_CONSUMPTION_RECEIVED, /* (O) */
/** PreviousDayNCostConsumptionDelivered represents the summed value of Energy,
* Gas, or Water delivered to the premises within the previous 24 hour period
* starting at the HFT.
*/
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_DAY_COST_CONSUMPTION_DELIVERED, /* (O) */
/** PreviousDayNCostConsumptionReceived represents the summed value of Energy,
* Gas, or Water received from the premises within the previous 24 hour period
* starting at the HFT.
*/
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_DAY_COST_CONSUMPTION_RECEIVED, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_DAY_COST_CONSUMPTION_DELIVERED_2, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_DAY_COST_CONSUMPTION_RECEIVED_2, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_DAY_COST_CONSUMPTION_DELIVERED_3, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_DAY_COST_CONSUMPTION_RECEIVED_3, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_DAY_COST_CONSUMPTION_DELIVERED_4, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_DAY_COST_CONSUMPTION_RECEIVED_4, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_DAY_COST_CONSUMPTION_DELIVERED_5, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_DAY_COST_CONSUMPTION_RECEIVED_5, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_DAY_COST_CONSUMPTION_DELIVERED_6, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_DAY_COST_CONSUMPTION_RECEIVED_6, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_DAY_COST_CONSUMPTION_DELIVERED_7, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_DAY_COST_CONSUMPTION_RECEIVED_7, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_DAY_COST_CONSUMPTION_DELIVERED_8, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_DAY_COST_CONSUMPTION_RECEIVED_8, /* (O) */
/** CurrentWeekCostConsumptionDelivered represents the summed value of Energy,
* Gas, or Water delivered to the premises since the HFT on Monday to the
* last HFT read.
*/
ZB_ZCL_ATTR_PREPAYMENT_CURRENT_WEEK_COST_CONSUMPTION_DELIVERED = 0x0530, /* (O) */
/** CurrentWeekCostConsumptionReceived represents the summed value of Energy,
* Gas, or Water received from the premises since the HFT on Monday to the
* last HFT read. */
ZB_ZCL_ATTR_PREPAYMENT_CURRENT_WEEK_COST_CONSUMPTION_RECEIVED, /* (O) */
/** PreviousWeekNCostConsumptionDelivered represents the summed value of
* Energy, Gas, or Water delivered to the premises within the previous week
* period starting at the HFT on the Monday to the Sunday.
*/
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_WEEK_COST_CONSUMPTION_DELIVERED, /* (O) */
/** PreviousWeekNCostConsumptionReceived represents the summed value of Energy,
* Gas, or Water received from the premises within the previous week period
* starting at the HFT on the Monday to the Sunday
*/
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_WEEK_COST_CONSUMPTION_RECEIVED, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_WEEK_COST_CONSUMPTION_DELIVERED_2, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_WEEK_COST_CONSUMPTION_RECEIVED_2, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_WEEK_COST_CONSUMPTION_DELIVERED_3, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_WEEK_COST_CONSUMPTION_RECEIVED_3, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_WEEK_COST_CONSUMPTION_DELIVERED_4, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_WEEK_COST_CONSUMPTION_RECEIVED_4, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_WEEK_COST_CONSUMPTION_DELIVERED_5, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_WEEK_COST_CONSUMPTION_RECEIVED_5, /* (O) */
/** CurrentMonthCostConsumptionDelivered represents the summed value of Energy,
* Gas, or Water delivered to the premises since the HFT on the 1 st of the
* month to the last HFT read.
*/
ZB_ZCL_ATTR_PREPAYMENT_CURRENT_MONTH_COST_CONSUMPTION_DELIVERED = 0x0540, /* (O) */
/** CurrentMonthCostConsumptionReceived represents the summed value of Energy,
* Gas, or Water received from the premises since the HFT on the 1 st of the
* month to the last HFT read.
*/
ZB_ZCL_ATTR_PREPAYMENT_CURRENT_MONTH_COST_CONSUMPTION_RECEIVED, /* (O) */
/** PreviousMonthNCostConsumptionDelivered represents the summed value of
* Energy, Gas, or Water delivered to the premises within the previous Month
* period starting at the HFT on the 1 st of the month to the last day of the
* month.
*/
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_DELIVERED, /* (O) */
/** PreviousMonthNCostConsumptionReceived represents the summed value of
* Energy, Gas, or Water received from the premises within the previous month
* period starting at the HFT on the 1 st of the month to the last day of the
* month.
*/
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_RECEIVED, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_DELIVERED_2, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_RECEIVED_2, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_DELIVERED_3, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_RECEIVED_3, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_DELIVERED_4, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_RECEIVED_4, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_DELIVERED_5, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_RECEIVED_5, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_DELIVERED_6, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_RECEIVED_6, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_DELIVERED_7, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_RECEIVED_7, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_DELIVERED_8, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_RECEIVED_8, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_DELIVERED_9, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_RECEIVED_9, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_DELIVERED_10, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_RECEIVED_10, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_DELIVERED_11, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_RECEIVED_11, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_DELIVERED_12, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_RECEIVED_12, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_DELIVERED_13, /* (O) */
ZB_ZCL_ATTR_PREPAYMENT_PREVIOUS_MONTH_COST_CONSUMPTION_RECEIVED_13, /* (O) */
/** HistoricalFreezeTime represents the time of day, in Local Time, when
* Historical Cost Consumption attributes are captured.
*/
ZB_ZCL_ATTR_PREPAYMENT_HISTORICAL_FREEZE_TIME /* (O) */
} zb_zcl_prepayment_historical_cost_consumption_information_set_t;
/** CurrencyScalingFactor Enumerations
* @see SE spec, Table D-144
*/
typedef enum zb_zcl_prepayment_currency_scaling_factor_e
{
ZB_ZCL_PREPAYMENT_SCALE_DOT_000001 = 0x00,
ZB_ZCL_PREPAYMENT_SCALE_DOT_00001,
ZB_ZCL_PREPAYMENT_SCALE_DOT_0001,
ZB_ZCL_PREPAYMENT_SCALE_DOT_001,
ZB_ZCL_PREPAYMENT_SCALE_DOT_01,
ZB_ZCL_PREPAYMENT_SCALE_DOT_1,
ZB_ZCL_PREPAYMENT_SCALE_1,
ZB_ZCL_PREPAYMENT_SCALE_10,
ZB_ZCL_PREPAYMENT_SCALE_100,
ZB_ZCL_PREPAYMENT_SCALE_1000,
ZB_ZCL_PREPAYMENT_SCALE_10000,
ZB_ZCL_PREPAYMENT_SCALE_100000,
ZB_ZCL_PREPAYMENT_SCALE_1000000
} zb_zcl_prepayment_currency_scaling_factor_t;
/** @} */ /* ZB_ZCL_PREPAYMENT_ATTRS */
/** @defgroup ZB_ZCL_PREPAYMENT_COMMANDS Prepayment cluster commands
* @{
*/
/** Commands are generated by Prepayment Client.
* @see SE spec, subclause 7.2.3
*/
typedef enum zb_zcl_prepayment_cli_cmd_e
{
/** This command is sent to the Metering Device to activate the use of any
* Emergency Credit available on the Metering Device.
*/
ZB_ZCL_PREPAYMENT_CLI_CMD_SELECT_AVAILABLE_EMERGENCY_CREDIT = 0x00, /* (O) */
/** The ChangeDebt command is sent to the Metering Device to change the debt
* values.
*/
ZB_ZCL_PREPAYMENT_CLI_CMD_CHANGE_DEBT = 0x02, /* (O) */
/** This command provides a method to set up the parameters for
* the Emergency Credit.
*/
ZB_ZCL_PREPAYMENT_CLI_CMD_EMERGENCY_CREDIT_SETUP, /* (O) */
/** The follow command is used by the IHD and the ESI as a method to apply
* credit top up values to a prepayment meter.
*/
ZB_ZCL_PREPAYMENT_CLI_CMD_CONSUMER_TOP_UP, /* (O) */
/** The follow command is sent to update the Credit Remaining attribute on a
* Prepayment meter. It shall only be sent from an ESI to the Meter.
*/
ZB_ZCL_PREPAYMENT_CLI_CMD_CREDIT_ADJUSTMENT, /* (O) */
/** This command is sent to a Metering Device to instruct it to change its mode
* of operation, e.g. from Credit to Prepayment.
*/
ZB_ZCL_PREPAYMENT_CLI_CMD_CHANGE_PAYMENT_MODE, /* (O) */
/** This command is used to request the cluster server for snapshot data. */
ZB_ZCL_PREPAYMENT_CLI_CMD_GET_PREPAY_SNAPSHOT, /* (O) */
/** This command is sent to the Metering Device to retrieve the log of Top Up
* codes received by the meter.
*/
ZB_ZCL_PREPAYMENT_CLI_CMD_GET_TOP_UP_LOG, /* (O) */
/** This command is sent from client to a Prepayment server to set the warning
* level for low credit.
*/
ZB_ZCL_PREPAYMENT_CLI_CMD_SET_LOW_CREDIT_WARNING_LEVEL, /* (O) */
/** This command is used to request the contents of the Repayment log. */
ZB_ZCL_PREPAYMENT_CLI_CMD_GET_DEBT_REPAYMENT_LOG, /* (O) */
/** This command is sent from a client to the Prepayment server to set the
* maximum credit level allowed in the meter.
*/
ZB_ZCL_PREPAYMENT_CLI_CMD_SET_MAXIMUM_CREDIT_LIMIT, /* (O) */
/** This command is sent from a client to the Prepayment server to set the
* overall debt cap allowed in the meter.
*/
ZB_ZCL_PREPAYMENT_CLI_CMD_SET_OVERALL_DEBT_CAP /* (O) */
} zb_zcl_prepayment_cli_cmd_t;
/** Originating Device Field Enumerations
* @see SE spec, Table D-146
*/
typedef enum zb_zcl_prepayment_originating_device_e
{
ZB_ZCL_PREPAYMENT_ORIGINATING_DEVICE_ESI = 0x00,
ZB_ZCL_PREPAYMENT_ORIGINATING_DEVICE_METERING,
ZB_ZCL_PREPAYMENT_ORIGINATING_DEVICE_IHD
} zb_zcl_prepayment_originating_device_t;
/** Select Available Emergency Credit Command Payload
* @see SE spec, subclause 7.2.3.1
*/
typedef ZB_PACKED_PRE struct zb_zcl_prepayment_select_available_emergency_credit_payload_s
{
/** A UTCTime field to indicate the date and time at which the selection
* command was issued.
*/
zb_uint32_t command_issue_date; /* (M) */
/** An 8-bit enumeration field identifying the SE device issuing the selection
* command
*/
zb_uint8_t originating_device; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_prepayment_select_available_emergency_credit_payload_t;
/** Debt Amount Type Field Enumerations
* @see SE spec, Table D-147
*/
typedef enum zb_zcl_prepayment_debt_amount_type_e
{
ZB_ZCL_PREPAYMENT_DEBT_AMOUNT_TYPE_1_ABSOLUTE = 0x00,
ZB_ZCL_PREPAYMENT_DEBT_AMOUNT_TYPE_1_INCREMENTAL,
ZB_ZCL_PREPAYMENT_DEBT_AMOUNT_TYPE_2_ABSOLUTE,
ZB_ZCL_PREPAYMENT_DEBT_AMOUNT_TYPE_2_INCREMENTAL,
ZB_ZCL_PREPAYMENT_DEBT_AMOUNT_TYPE_3_ABSOLUTE,
ZB_ZCL_PREPAYMENT_DEBT_AMOUNT_TYPE_3_INCREMENTAL
} zb_zcl_prepayment_debt_amount_type_t;
/** Change Debt Command Payload
* @see SE spec, subclause 7.2.3.3
*/
typedef ZB_PACKED_PRE struct zb_zcl_prepayment_change_debt_command_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) */
/** The format and use of this field is the same as for the DebtLabel#N
* attribute as defined in D.7.2.2.3.1.
*/
zb_uint8_t debt_label[13]; /* (M) */
/** The format and use of this field is the same as for
* the DebtAmount#N attribute as defined in D.7.2.2.3.2.
*/
zb_int32_t debt_amount; /* (M) */
/** The format and use of this field is the same as for the DebtRecoveryMethod#N
* attribute as defined in D.7.2.2.3.3.
*/
zb_uint8_t debt_recovery_method; /* (M) */
/** An 8-bit enumeration field identifying the type of debt information to be
* issued within this command.
*/
zb_uint8_t debt_amount_type; /* (M) */
/** The format and use of this field is the same as for the
* DebtRecoveryStartTime#N attribute as defined in D.7.2.2.3.4.
*/
zb_uint32_t debt_recovery_start_time; /* (M) */
/** The format and use of this field is the same as for the
* DebtRecoveryCollectionTime#N attribute as defined in D.7.2.2.3.5.
*/
zb_uint16_t debt_recovery_collection_time; /* (M) */
/** The format and use of this field is the same as for the
* DebtRecoveryFrequency#N attribute as defined in D.7.2.2.3.6.
*/
zb_uint8_t debt_recovery_frequency; /* (M) */
/** The format and use of this field is the same as for the
* DebtRecoveryAmount#N attribute as defined in D.7.2.2.3.7.
*/
zb_int32_t debt_recovery_amount; /* (M) */
/** The format and use of this field is the same as for the
* DebtRecoveryTopUpPercentage#N attribute as defined in D.7.2.2.3.8.
*/
zb_uint16_t debt_recovery_balance_percentage; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_prepayment_change_debt_command_payload_t;
/** Emergency Credit Setup Command Payload
* @see SE spec, subclause D.7.2.3.4
*/
typedef ZB_PACKED_PRE struct zb_zcl_prepayment_emergency_credit_setup_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) */
/** A UTC Time field to denote the time at which the Emergency Credit settings
* become valid. A start date/time of 0x00000000 shall indicate that the
* command should be executed immediately.
*/
zb_uint32_t start_time; /* (M) */
/** An unsigned 32-bit field to denote the Emergency Credit limit on the
* Metering Device, measured in base unit of Currency
* or in Units with the decimal point.
*/
zb_uint32_t emergency_credit_limit; /* (M) */
/** An unsigned 32-bit field to denote the amount of credit remaining on the
* Metering Device below which the Emergency Credit facility can be selected.
* The value is measured in base unit of Currency or in Units with the decimal
* points.
*/
zb_uint32_t emergency_credit_threshold; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_prepayment_emergency_credit_setup_payload_t;
/** Consumer Top Up Command is used by the IHD and the ESI as a method to apply
* credit top up values to a prepayment meter.
* @see SE spec, subclause D.7.2.3.5
*/
typedef ZB_PACKED_PRE struct zb_zcl_prepayment_consumer_top_up_payload_s
{
/** An 8-bit enumeration field identifying the Smart Energy device issuing the
* selection command
* @see SE spec, Table D-146.
*/
zb_uint8_t originating_device; /* (M) */
/** An octet string of between 1 and 26 characters (the first character indicates
* the string length).
*/
zb_uint8_t top_up_code[26]; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_prepayment_consumer_top_up_payload_t;
/** Credit Type Field Enumerations
* @see SE spec, Table D-148
*/
typedef enum zb_zcl_prepayment_credit_type_e
{
ZB_ZCL_PREPAYMENT_CREDIT_INCREMENTAL = 0x00,
ZB_ZCL_PREPAYMENT_CREDIT_ABSOLUTE
} zb_zcl_prepayment_credit_type_t;
/** The Credit Adjustment command Payload
* @see SE spec, subclause D.7.2.3.6
*/
typedef ZB_PACKED_PRE struct zb_zcl_prepayment_credit_adjustment_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) */
/** A UTC Time field to denote the time at which the credit adjustment settings
* become valid. A start date/time of 0x00000000 shall indicate that the
* command should be executed immediately.
*/
zb_uint32_t start_time; /* (M) */
/** An 8-bit enumeration field identifying the type of credit adjustment to be
* issued out within this command.
*/
zb_uint8_t credit_adjustment_type; /* (M) */
/** A signed 32-bit field to denote the value of the credit adjustment,
* measured in base unit of Currency or in Units with the decimal point
*/
zb_int32_t credit_adjustment_value; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_prepayment_credit_adjustment_payload_t;
/** Change Payment Mode Command Payload
* @see SE spec, subclause D.7.2.3.7
*/
typedef ZB_PACKED_PRE struct zb_zcl_prepayment_change_payment_mode_payload_s
{
/** An unsigned 32-bit field containing a unique identifier for the commodity
* supplier to whom this command relates.
*/
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 UTC Time field to indicate the date from which the payment mode change is
* to be applied. An Implementation Date/Time value of 0x00000000 shall
* indicate that the command should be executed immediately.
*/
zb_uint32_t implementation_date; /* (M) */
/** An 16-bit BitMap indicating the actions required in relation to switching
* the payment mode.
*/
zb_uint16_t proposed_payment_control_configuration; /* (M) */
/** This value is a signed 32-bit integer that shall either be zero or a
* negative value (in all known cases). This value represents a threshold
* relating to the absolute value of the CreditRemaining attribute, that when
* reached (when credit is decrementing) causes the supply of service to be
* disconnected.
*/
zb_int32_t cut_off_value; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_prepayment_change_payment_mode_payload_t;
/** Get Prepay Snapshot Command Payload
* @see SE spec, subclause D.7.2.3.8
*/
typedef ZB_PACKED_PRE struct zb_zcl_prepayment_get_prepay_snapshot_payload_s
{
/** A UTC Timestamp indicating the earliest time of a snapshot to be returned
* by a corresponding Publish Prepay Snapshot command.
*/
zb_uint32_t earliest_start_time; /* (M) */
/** A UTC Timestamp indicating the latest time of a snapshot to be returned by
* a corresponding Publish Prepay Snapshot command.
*/
zb_uint32_t latest_end_time; /* (M) */
/** Where multiple snapshots satisfy the selection criteria specified by the
* other fields in this command, this field identifies the individual snapshot
* to be returned.
*/
zb_uint8_t snapshot_offset; /* (M) */
/** This field is used to request only snapshots for a specific cause. */
zb_uint32_t snapshot_cause; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_prepayment_get_prepay_snapshot_payload_t;
/** Get Top Up Log Payload
* @see SE spec, subclause D.7.2.3.9
*/
typedef ZB_PACKED_PRE struct zb_zcl_prepayment_get_top_up_log_payload_s
{
/** UTC timestamp indicating the latest TopUp Time of Top Up records to be
* returned by the corresponding Publish Top Up Log commands.
*/
zb_uint32_t latest_end_time; /* (M) */
/** An 8-bit integer which represents the maximum number of records that the
* client is willing to receive in response to this command. A value of 0
* would indicate all available records shall be returned.
*/
zb_uint8_t records_number; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_prepayment_get_top_up_log_payload_t;
/** Set Low Credit Warning Level Payload.
* @see SE spec, subclause D.7.2.3.10
*/
typedef zb_uint32_t zb_zcl_prepayment_set_low_credit_warning_level_payload_t;
/** Debt Type Field Enumerations
* @see SE spec, Table D-149
*/
typedef enum zb_zcl_prepayment_debt_type_e
{
ZB_ZCL_PREPAYMENT_DEBT_TYPE_DEBT_1 = 0x00,
ZB_ZCL_PREPAYMENT_DEBT_TYPE_DEBT_2,
ZB_ZCL_PREPAYMENT_DEBT_TYPE_DEBT_3,
ZB_ZCL_PREPAYMENT_DEBT_TYPE_ALL_DEBTS = 0xFF
} zb_zcl_prepayment_debt_type_t;
/** Get Debt Repayment Log Command Payload
* @see SE spec, table D.7.2.3.11
*/
typedef ZB_PACKED_PRE struct zb_zcl_prepayment_get_debt_repayment_log_payload_s
{
/** UTC timestamp indicating the latest Collection Time of debt repayment
* records to be returned by the corresponding Publish Debt Log commands.
*/
zb_uint32_t latest_end_time; /* (M) */
/** An 8-bit integer which represents the maximum number of debt repayment
* records that the client is willing to receive in response to this command.
*/
zb_uint8_t debts_number; /* (M) */
/** An 8-bit enumeration field identifying the type of debt record(s) to be
* returned
*/
zb_uint8_t debt_type; /* (O) */
} ZB_PACKED_STRUCT zb_zcl_prepayment_get_debt_repayment_log_payload_t;
/** Set Maximum Credit Limit Payload
* @see SE spec, subclause D.7.2.3.12
*/
typedef ZB_PACKED_PRE struct zb_zcl_prepayment_set_maximum_credit_limit_payload_s
{
/** An unsigned 32-bit field containing a unique identifier for the commodity
* supplier to whom this command relates.
*/
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 UTC Time field to indicate the date from which the maximum credit level
* is to be applied.
*/
zb_uint32_t implementation_date; /* (M) */
/** An unsigned 32-bit integer value indicating the maximum credit balance
* allowed on a meter. Any further top-up amount that will cause the meter to
* exceed this limit will be rejected.
*/
zb_uint32_t max_credit_level; /* (M) */
/** An unsigned 32-bit integer value indicating the maximum credit per top-up.
* Any single top-up greater than this threshold will cause the meter to
* reject the top-up.
*/
zb_uint32_t max_credit_per_top_up; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_prepayment_set_maximum_credit_limit_payload_t;
/** Set Overall Debt Cap Payload
* @see SE spec, subclause D.7.2.3.13
*/
typedef ZB_PACKED_PRE struct zb_zcl_prepayment_set_overall_debt_cap_payload_s
{
/** An unsigned 32-bit field containing a unique identifier for the commodity
* supplier to whom this command relates.
*/
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 UTC Time field to indicate the date from which the overall debt cap is to
* be applied. An Implementation Date/Time of 0x00000000 shall indicate that
* the command should be executed immediately.
*/
zb_uint32_t implementation_date; /* (M) */
/** A signed 32-bit integer that defines the total amount of debt that can be
* taken from top-ups. This field is always a monetary value, and as such the
* field is measured in a base unit of Currency with the decimal point.
*/
zb_int32_t overall_debt_cap; /* (O) */
} ZB_PACKED_STRUCT zb_zcl_prepayment_set_overall_debt_cap_payload_t;
/** Commands are generated by Prepayment Server.
* @see SE spec, subclause D.7.2.4
*/
typedef enum zb_zcl_prepayment_srv_cmd_e
{
/** This command is generated in response to a GetPrepaySnapshot command or
* when a new snapshot is created. It is used to return a single snapshot
* to the client.
*/
ZB_ZCL_PREPAYMENT_SRV_CMD_PUBLISH_PREPAY_SNAPSHOT = 0x01, /* (O) */
/** This command is sent in response to the ChangePaymentMode command. This command
* shall only inform the ESI of the current default setting that would affect
* the meter when entering into Prepayment/PAYG or Credit mode. Should these
* values require changing then other commands within the Prepayment & Price
* cluster should be used.
*/
ZB_ZCL_PREPAYMENT_SRV_CMD_CHANGE_PAYMENT_MODE_RESPONSE, /* (O) */
/** */
ZB_ZCL_PREPAYMENT_SRV_CMD_CONSUMER_TOP_UP_RESPONSE, /* (O) */
/** This command is used to send the Top Up Code Log entries to the Prepayment
* client. The command shall be sent in response to a Get Top Up Log command
* and MAY be sent unsolicited whenever a new Top Up code is received and
* successfully processed
*/
ZB_ZCL_PREPAYMENT_SRV_CMD_PUBLISH_TOP_UP_LOG = 0x05, /* (O) */
/** This command is used to send the contents of the Repayment Log. */
ZB_ZCL_PREPAYMENT_SRV_CMD_PUBLISH_DEBT_LOG /* (O) */
} zb_zcl_prepayment_srv_cmd_t;
/** Snapshot Payload Cause
* @see SE spec, Table D-151
*/
typedef enum zb_zcl_prepayment_snapshot_payload_cause_e
{
ZB_ZCL_PREPAYMENT_CAUSE_GENERAL = 1 << 0,
ZB_ZCL_PREPAYMENT_CAUSE_END_OF_BILLING_PERIOD = 1 << 1,
/* 1 << 2 is reserved for metering cluster */
ZB_ZCL_PREPAYMENT_CAUSE_TARIFF_INFORMATION_CHANGE = 1 << 3,
ZB_ZCL_PREPAYMENT_CAUSE_PRICE_MATRIX_CHANGE = 1 << 4,
/* 1 << 5 is reserved for metering cluster */
/* 1 << 6 is reserved for metering cluster */
/* 1 << 7 is reserved for metering cluster */
/* 1 << 8 is reserved for metering cluster */
/* 1 << 9 is reserved for metering cluster */
ZB_ZCL_PREPAYMENT_CAUSE_MANUALLY_TRIGGERED_FROM_CLIENT = 1 << 10,
/* 1 << 11 is reserved for metering cluster */
ZB_ZCL_PREPAYMENT_CAUSE_TENANCY_CHANGE = 1 << 12,
ZB_ZCL_PREPAYMENT_CAUSE_SUPPLIER_CHANGE = 1 << 13,
ZB_ZCL_PREPAYMENT_CAUSE_METER_MODE_CHANGE = 1 << 14,
/* 1 << 15 is reserved for metering cluster */
/* 1 << 16 is reserved for metering cluster */
/* 1 << 17 is reserved for metering cluster */
ZB_ZCL_PREPAYMENT_CAUSE_TOP_UP_ADDITION = 1 << 18,
ZB_ZCL_PREPAYMENT_CAUSE_DEBT_AND_CREDIT_ADDITION = 1 << 19
} zb_zcl_prepayment_snapshot_payload_cause_t;
/** Snapshot Payload Type
* @see SE spec, Table D-152
*/
typedef enum zb_zcl_prepayment_snapshot_payload_type_e
{
ZB_ZCL_PREPAYMENT_SNAPSHOT_PAYLOAD_TYPE_DEBT_AND_CREDIT_STATUS = 0x00,
} zb_zcl_prepayment_snapshot_payload_type_t;
/** Debt/Credit Status Command Payload
* @see SE spec, Figure D-128
*/
typedef ZB_PACKED_PRE struct zb_zcl_prepayment_snapshot_payload_s
{
/* It is a part of zb_zcl_prepayment_publish_prepay_snapshot_payload_t */
zb_uint8_t snapshot_payload_type; /* (M) */
ZB_PACKED_PRE union
{
ZB_PACKED_PRE struct
{
/** The AccumulatedDebt field represents the total amount of debt remaining on
* the Metering Device, measured in a base unit of Currency with the decimal
* point located as indicated by the Trailing Digits field, as defined in
* the Price cluster.
*/
zb_int32_t accumulated_debt; /* (M) */
/** The Type1DebtRemaining field represents the amount of Type 1 debt remaining
* on the Metering Device, measured in base unit of Currency with the decimal
* point located as indicated by the Trailing Digits field, as defined in the
* Price cluster.
*/
zb_uint32_t type_1_debt_remaining; /* (M) */
/** The Type2DebtRemaining field represents the amount of Type 2 debt remaining
* on the Metering Device, measured in base unit of Currency with the decimal
* point located as indicated by the TrailingDigits field, as defined in the
* Price cluster.
*/
zb_uint32_t type_2_debt_remaining; /* (M) */
/** The Type3DebtRemaining field represents the amount of Type 3 debt remaining
* on the Metering Device, measured in base unit of Currency with the decimal
* point located as indicated by the TrailingDigits field, as defined in the
* Price cluster.
*/
zb_uint32_t type_3_debt_remaining; /* (M) */
/** The EmergencyCreditRemaining field represents the amount of Emergency Credit
* still available on the Metering Device. If Monetary based, this field is
* measured in a base unit of Currency or in Units, with the decimal point
*/
zb_int32_t emergency_credit_remaining; /* (M) */
/** The CreditRemaining field represents the amount of credit
* remaining on the Metering Device. If Monetary based, this field is measured
* in a base unit of Currency or in Units, with the decimal point.
*/
zb_int32_t credit_remaining; /* (M) */
} ZB_PACKED_STRUCT debt_credit_status;
} ZB_PACKED_STRUCT u;
} ZB_PACKED_STRUCT zb_zcl_prepayment_snapshot_payload_t;
/** Publish Prepay Snapshot Command Payload
* @see SE spec, subclause 7.2.4.2
*/
typedef ZB_PACKED_PRE struct zb_zcl_prepayment_publish_prepay_snapshot_payload_s
{
/** Unique identifier allocated by the device creating the snapshot. */
zb_uint32_t snapshot_id; /* (M) */
/** This is a 32-bit value (in UTC Time) representing the time at which the
* data snapshot was taken.
*/
zb_uint32_t snapshot_time; /* (M) */
/** An 8-bit Integer indicating the number of snapshots found, based on the
* search criteria defined in the associated GetPrepaySnapshot command. If the
* value is greater than 1, the client is able to request the next snapshot by
* incrementing the Snapshot Offset field in an otherwise repeated
* get_prepay_snapshot command.
*/
zb_uint8_t total_snapshots_found; /* (M) */
/** The follow field is uses to count the payload fragments in the case where
* the entire payload does not fit into one message. The Command Index starts
* at 0 and is incremented for each fragment belonging to the same command.
*/
zb_uint8_t command_index; /* (M) */
/** In the case where the entire payload does not fit into one message, the
* Total Number of Commands field indicates the total number of sub-commands
* in the message.
*/
zb_uint8_t total_number_of_commands; /* (M) */
/** A 32-bit BitMap indicating the cause of the snapshot. */
zb_uint32_t snapshot_cause; /* (M) */
zb_zcl_prepayment_snapshot_payload_t snapshot_payload; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_prepayment_publish_prepay_snapshot_payload_t;
/** Friendly Credit BitMap
* @see SE spec, Table D-153
*/
typedef enum zb_zcl_prepayment_friendly_credit_bitmap_e
{
PREPAYMENT_FRIENDLY_CREDIT_ENABLED = 0,
} zb_zcl_prepayment_friendly_credit_bitmap_t;
/** Change Payment Mode Response Command Payload
* @see SE spec, subclause 7.2.4.3
*/
typedef ZB_PACKED_PRE struct zb_zcl_prepayment_payment_mode_response_payload_s
{
/** An 8-bit BitMap to show if the meter has a Friendly Credit calendar and that
* this calendar shall be enabled.
*/
zb_uint8_t friendly_credit; /* (M) */
/** An unsigned 32-bit field to denote the IssuerCalendarID that shall be used
* for the friendly credit periods
*/
zb_uint32_t friendly_credit_calendar_id; /* (M) */
/** An unsigned 32-bit field to denote the emergency credit limit on the Metering
* Device, measured in base unit of Currency with the decimal point located as
* indicated by the TrailingDigits field, as defined in the Price cluster.
*/
zb_uint32_t emergency_credit_limit; /* (M) */
/** An unsigned 32-bit field to denote the amount of credit remaining on the
* Metering Device below which the Emergency Credit facility can be selected.
* The value is measured in base unit of Currency with the decimal point located
* as indicated by the TrailingDigits field, as defined in the Price cluster.
*/
zb_uint32_t emergency_credit_threshold; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_prepayment_payment_mode_response_payload_t;
/** Result Type Field Enumerations
* @see SE spec, Table D-154
*/
typedef enum zb_zcl_prepayment_result_type_e
{
ZB_ZCL_PREPAYMENT_RESULT_ACCEPTED = 0x00,
ZB_ZCL_PREPAYMENT_RESULT_REJECTED_INVALID_TOP_UP,
ZB_ZCL_PREPAYMENT_RESULT_REJECTED_DUPLICATE_TOP_UP,
ZB_ZCL_PREPAYMENT_RESULT_REJECTED_ERROR,
ZB_ZCL_PREPAYMENT_RESULT_REJECTED_MAX_CREDIT_REACHED,
ZB_ZCL_PREPAYMENT_RESULT_REJECTED_KAYPAD_LOCK,
ZB_ZCL_PREPAYMENT_RESULT_REJECTED_TOP_UP_VALUE_TOO_LARGE,
ZB_ZCL_PREPAYMENT_RESULT_ACCEPTED_SUPPLY_ENABLED = 0x10,
ZB_ZCL_PREPAYMENT_RESULT_ACCEPTED_SUPPLY_DISABLED,
ZB_ZCL_PREPAYMENT_RESULT_ACCEPTED_SUPPLY_ARMED
} zb_zcl_prepayment_result_type_t;
/** Consumer Top Up Response Command Payload
* @see SE spec, subclause 7.2.4.4
*/
typedef ZB_PACKED_PRE struct zb_zcl_prepayment_consumer_top_up_response_payload_s
{
/** An 8-bit enumerated value indicating whether the Metering Device accepted
* or rejected the top up.
*/
zb_uint8_t result_type; /* (M) */
/** A signed 32-bit integer field representing the Top Up value available in
* the top up content. If it is Monetary based, this field is measured in a
* base unit of Currency with the decimal point located as indicated by the
* Trailing Digits field, as defined in the Price cluster.
*/
zb_int32_t top_up_value; /* (M) */
/** An 8-bit enumeration indicating the device that has issued the top up */
zb_uint8_t source_of_top_up; /* (M) */
/** The Credit Remaining field represents the amount of credit remaining on the
* Metering Device after addition of a top up.
*/
zb_int32_t credit_remaining; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_prepayment_consumer_top_up_response_payload_t;
/** Top Up Payload Details
* @see SE spec, Figure D-132
*/
typedef ZB_PACKED_PRE struct zb_zcl_prepayment_top_up_payload_details_s
{
/** This is the value of the Top Up code stored in the log. */
zb_uint8_t top_up_code[26]; /* (M) */
/** This is the amount of credit that was added to the Metering Device during
* this Top Up.
*/
zb_int32_t top_up_amount; /* (M) */
/** This is the UTC Timestamp when the Top Up was applied to the Metering Device. */
zb_uint32_t top_up_time; /* (M) */
zb_uint8_t top_up_code_plus_1[26]; /* (M) */
zb_int32_t top_up_amount_plus_1; /* (M) */
zb_uint32_t top_up_time_plus_1; /* (M) */
zb_uint8_t top_up_code_plus_n[26]; /* (M) */
zb_int32_t top_up_amount_plus_n; /* (M) */
zb_uint32_t top_up_time_plus_n; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_prepayment_top_up_payload_details_t;
/** Publish Top Up Log Command Payload
* @see SE spec, subclause 7.2.4.5
*/
typedef ZB_PACKED_PRE struct zb_zcl_prepayment_publish_top_up_log_payload_s
{
/** The Command Index is used to count the payload fragments in the case where
* the entire payload does not fit into one message. The Command Index 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 Total
* Number of Commands field indicates the total number of sub-commands in the
* message.
*/
zb_uint8_t commands_total_number; /* (M) */
/** see @ref zb_zcl_prepayment_top_up_payload_details_t */
zb_zcl_prepayment_top_up_payload_details_t top_up_payload; /* (O) */
} ZB_PACKED_STRUCT zb_zcl_prepayment_publish_top_up_log_payload_t;
/** Format of a Debt Payload Record
* @see SE spec, Figure D-134
*/
typedef ZB_PACKED_PRE struct zb_zcl_prepayment_debt_payload_record_s
{
/** An UTC time field identifying the time when the collection occurred. */
zb_uint32_t collection_time; /* (M) */
/** An unsigned 32-bit field to denote the amount of debt collected at this
* time.
*/
zb_uint32_t amount_collected; /* (M) */
/** An 8-bit enumeration field identifying the type of debt the record refers to.
* The enumerations are defined in Table D-149.
*/
zb_uint8_t debt_type; /* (M) */
/** An unsigned 32-bit field to denote the amount of debt still outstanding
* after the debt was collected.
*/
zb_uint32_t outstanding_debt; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_prepayment_debt_payload_record_t;
/** Publish Debt Log Command Payload
* @see SE spec, subclause 7.2.4.6
*/
typedef ZB_PACKED_PRE struct zb_zcl_prepayment_publish_debt_log_payload_s
{
/** An UTC time field identifying the time when the collection occurred. */
zb_uint8_t command_index; /* (M) */
/** An unsigned 32-bit field to denote the amount of debt collected at this
* time.
*/
zb_uint8_t commands_total_number; /* (M) */
/** The Debt Payload shall contain one or more debt records
* @ref zb_zcl_prepayment_debt_payload_record_t
*/
zb_zcl_prepayment_debt_payload_record_t *debt_payload; /* (M) */
} ZB_PACKED_STRUCT zb_zcl_prepayment_publish_debt_log_payload_t;
/** @cond internals_doc */
void zb_zcl_prepayment_init_server(void);
void zb_zcl_prepayment_init_client(void);
#define ZB_ZCL_CLUSTER_ID_PREPAYMENT_SERVER_ROLE_INIT zb_zcl_prepayment_init_server
#define ZB_ZCL_CLUSTER_ID_PREPAYMENT_CLIENT_ROLE_INIT zb_zcl_prepayment_init_client
/** @endcond */ /* internals_doc */
/** @} */ /* ZB_ZCL_PREPAYMENT_COMMANDS */
/** @} */ /* ZB_ZCL_PREPAYMENT */
/** @endcond */ /* DOXYGEN_ZCL_SECTION */
#endif /* ZB_ZCL_PREPAYMENT_H_ */