753 lines
38 KiB
C
753 lines
38 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: Demand Response and Load Control cluster definitions
|
|
*/
|
|
|
|
#ifndef ZB_ZCL_DRLC_H_
|
|
#define ZB_ZCL_DRLC_H_
|
|
|
|
#include "zcl/zb_zcl_common.h"
|
|
#include "zcl/zb_zcl_commands.h"
|
|
|
|
/** @cond DOXYGEN_ZCL_SECTION */
|
|
|
|
/** @addtogroup ZB_ZCL_DRLC
|
|
* @{
|
|
* @details This cluster provides an interface to the functionality of Smart
|
|
* Energy Demand Response and Load Control.
|
|
*/
|
|
|
|
|
|
/* Cluster ZB_ZCL_CLUSTER_ID_DRLC */
|
|
|
|
/** @defgroup ZB_ZCL_DRLC_ATTRS_AND_ENUMS DRLC attributes and enumerations
|
|
* @{
|
|
* @details
|
|
* This section describes DRLC client attributes and common cluster enumerations.
|
|
*/
|
|
|
|
/** @brief Default value for DRLC cluster revision global attribute */
|
|
#define ZB_ZCL_DRLC_CLUSTER_REVISION_DEFAULT ((zb_uint16_t)0x0002u)
|
|
|
|
/** @brief Maximal value for implemented DRLC cluster revision global attribute */
|
|
#define ZB_ZCL_DRLC_CLUSTER_REVISION_MAX ZB_ZCL_DRLC_CLUSTER_REVISION_DEFAULT
|
|
|
|
/** DRLC Client attributes. @see SE spec, subclause D.2.3.2 */
|
|
typedef enum zb_zcl_drlc_cli_attr_e
|
|
{
|
|
ZB_ZCL_ATTR_DRLC_UTILITY_ENROLLMENT_GROUP = 0x0000, /**< UtilityEnrollmentGroup attribute.
|
|
* Provides for utilities to assign devices to groups.
|
|
*/
|
|
|
|
ZB_ZCL_ATTR_DRLC_START_RANDOMIZATION_MINUTES = 0x0001, /**< StartRandomizationMinutes attribute.
|
|
* Represents the maximum number of minutes to be used
|
|
* when randomizing the start of an event.
|
|
*/
|
|
|
|
ZB_ZCL_ATTR_DRLC_DURATION_RANDOMIZATION_MINUTES = 0x0002, /**< DurationRandomizationMinutes attribute.
|
|
* Represents the maximum number of minutes to be used
|
|
* when randomizing the duration of an event.
|
|
*/
|
|
|
|
ZB_ZCL_ATTR_DRLC_DEVICE_CLASS_VALUE = 0x0003, /**< DeviceClassValue attribute.
|
|
* Identifies which bits the device will match in the
|
|
* Device Class fields.
|
|
*/
|
|
} zb_zcl_drlc_cli_attr_t;
|
|
|
|
|
|
/** Criticality Level value applied by the device.
|
|
* @see SE spec, Table D-3
|
|
*/
|
|
typedef enum zb_zcl_drlc_criticality_levels_e
|
|
{
|
|
ZB_ZCL_DRLC_CRITICALITY_LEVEL_0 = 0x00, /**< Reserved */
|
|
ZB_ZCL_DRLC_CRITICALITY_LEVEL_1, /**< Green */
|
|
ZB_ZCL_DRLC_CRITICALITY_LEVEL_2, /**< Level 1 */
|
|
ZB_ZCL_DRLC_CRITICALITY_LEVEL_3, /**< Level 2 */
|
|
ZB_ZCL_DRLC_CRITICALITY_LEVEL_4, /**< Level 3 */
|
|
ZB_ZCL_DRLC_CRITICALITY_LEVEL_5, /**< Level 4 */
|
|
ZB_ZCL_DRLC_CRITICALITY_LEVEL_6, /**< Level 5 */
|
|
ZB_ZCL_DRLC_CRITICALITY_LEVEL_7, /**< Emergency */
|
|
ZB_ZCL_DRLC_CRITICALITY_LEVEL_8, /**< Planned Outage */
|
|
ZB_ZCL_DRLC_CRITICALITY_LEVEL_9 /**< Service Disconnect */
|
|
} zb_zcl_drlc_criticality_levels_t;
|
|
|
|
/** DRLC device classes enumeration.
|
|
* @see SE spec, Table D-2.
|
|
*/
|
|
typedef enum zb_zcl_drlc_device_class_e
|
|
{
|
|
ZB_ZCL_DRLC_DEVICE_CLASS_HVAC = 1 << 0, /**< HVAC Compressor or Furnace */
|
|
ZB_ZCL_DRLC_DEVICE_CLASS_STRIP_HEATER = 1 << 1, /**< Strip Heaters/Baseboard Heaters */
|
|
ZB_ZCL_DRLC_DEVICE_CLASS_WATER_HEATER = 1 << 2, /**< Water Heater */
|
|
ZB_ZCL_DRLC_DEVICE_CLASS_POOL_PUMP = 1 << 3, /**< Pool Pump/Spa/Jacuzzi */
|
|
ZB_ZCL_DRLC_DEVICE_CLASS_SMART_APPLIANCE = 1 << 4, /**< Smart Appliances */
|
|
ZB_ZCL_DRLC_DEVICE_CLASS_IRRIGATION_PUMP = 1 << 5, /**< Irrigation Pump */
|
|
ZB_ZCL_DRLC_DEVICE_CLASS_MCI_LOADS = 1 << 6, /**< Managed Commercial & Industrial (C&I) loads */
|
|
ZB_ZCL_DRLC_DEVICE_CLASS_SIMPLE_LOADS = 1 << 7, /**< Simple misc. (Residential On/Off) loads */
|
|
ZB_ZCL_DRLC_DEVICE_CLASS_EXTERIOR_LIGHTNING = 1 << 8, /**< Exterior Lighting */
|
|
ZB_ZCL_DRLC_DEVICE_CLASS_INTERIOR_LIGHTNING = 1 << 9, /**< Interior Lighting */
|
|
ZB_ZCL_DRLC_DEVICE_CLASS_ELECTRIC_VEHICLE = 1 << 10, /**< Electric Vehicle */
|
|
ZB_ZCL_DRLC_DEVICE_CLASS_GENERATION_SYSTEMS = 1 << 11 /**< Generation Systems */
|
|
} zb_zcl_drlc_device_class_t;
|
|
|
|
/** DRLC Event Status enum
|
|
* @see SE spec, Table D-9
|
|
*/
|
|
typedef enum zb_zcl_drlc_event_status_e
|
|
{
|
|
ZB_ZCL_DRLC_EVENT_RESERVED_00 = 0x00, /**< Reserved for future use. */
|
|
ZB_ZCL_DRLC_EVENT_LCE_RECEIVED, /**< Load Control Event command received */
|
|
ZB_ZCL_DRLC_EVENT_EVENT_STARTED, /**< Event started */
|
|
ZB_ZCL_DRLC_EVENT_EVENT_COMPLETED, /**< Event completed */
|
|
ZB_ZCL_DRLC_EVENT_OPT_OUT, /**< User has chosen to “Opt-Out”, user will not participate in this event */
|
|
ZB_ZCL_DRLC_EVENT_OPT_IN, /**< User has chosen to “Opt-In”, user will participate in this event */
|
|
ZB_ZCL_DRLC_EVENT_EVENT_CANCELLED, /**< The event has been cancelled */
|
|
ZB_ZCL_DRLC_EVENT_EVENT_SUPERSEDED, /**< The event has been superseded */
|
|
ZB_ZCL_DRLC_EVENT_EVENT_PARTIALLY_OPT_OUT, /**< Event partially completed with User “Opt-Out”. */
|
|
ZB_ZCL_DRLC_EVENT_EVENT_PARTIALLY_OPT_IN, /**< Event partially completed due to User “Opt-In”. */
|
|
ZB_ZCL_DRLC_EVENT_EVENT_COMPLETED_NO_USER, /**< Event completed, no User participation (Previous “Opt-Out”). */
|
|
ZB_ZCL_DRLC_EVENT_RESERVED_0B, /**< Reserved for future use. */
|
|
ZB_ZCL_DRLC_EVENT_RESERVED_F7 = 0xF7, /**< Reserved for future use. */
|
|
ZB_ZCL_DRLC_EVENT_REJECTED_INVALID_CANCEL_CMD, /**< Rejected - Invalid Cancel Command (Default) */
|
|
ZB_ZCL_DRLC_EVENT_REJECTED_INVALID_EFFECTIVE_TIME, /**< Rejected - Invalid Cancel Command (Invalid Effective Time) */
|
|
ZB_ZCL_DRLC_EVENT_RESERVED_FA, /**< Reserved */
|
|
ZB_ZCL_DRLC_EVENT_REJECTED_EXPIRED, /**< Rejected - Event was received after it had expired@n (Current Time > Start Time + Duration) */
|
|
ZB_ZCL_DRLC_EVENT_RESERVED_FC, /**< Reserved for future use. */
|
|
ZB_ZCL_DRLC_EVENT_REJECTED_UNDEFINED_EVENT, /**< Rejected - Invalid Cancel Command (Undefined Event) */
|
|
ZB_ZCL_DRLC_EVENT_REJECTED, /**< Load Control Event command Rejected */
|
|
ZB_ZCL_DRLC_EVENT_RESERVED_FF /**< Reserved for future use. */
|
|
} zb_zcl_drlc_event_status_t;
|
|
|
|
/** DRLC signature type enum */
|
|
typedef enum zb_zcl_drlc_signature_type_e
|
|
{
|
|
ZB_ZCL_DRLC_LCE_NO_SIGNATURE = 0x00, /**< No Signature */
|
|
ZB_ZCL_DRLC_LCE_SIGNATURE_ECDSA, /**< ECDSA */
|
|
ZB_ZCL_DRLC_LCE_SIGNATURE_RESERVED /**< Reserved */
|
|
} zb_zcl_drlc_signature_type_t;
|
|
|
|
/** @} */ /* ZB_ZCL_DRLC_ATTRS_AND_ENUMS */
|
|
|
|
|
|
/** @defgroup ZB_ZCL_DRLC_COMMANDS_STRUCTURES_AND_DEFINITIONS DRLC commands
|
|
* @{
|
|
* @details
|
|
* This section describes all commands structures and data payloads.
|
|
*/
|
|
|
|
|
|
/** Commands are generated by DRLC Server.
|
|
* @see SE spec, Table D-1
|
|
*/
|
|
typedef enum zb_zcl_drlc_srv_cmd_e
|
|
{
|
|
ZB_ZCL_DRLC_SRV_CMD_LOAD_CONTROL_EVENT = 0x00, /**< LoadControlEvent is generated when the ESI wants to control one or more
|
|
* load control devices usually as the result of an energy curtailment
|
|
* command from the Smart Energy Network.
|
|
* @see zb_zcl_drlc_lce_payload_s
|
|
*/
|
|
|
|
ZB_ZCL_DRLC_SRV_CMD_CANCEL_LOAD_CONTROL_EVENT = 0x01, /**< CancelLoadControlEvent is generated when the ESI wants to cancel
|
|
* previously scheduled control of one or more load control devices, usually
|
|
* as the result of an energy curtailment command from the Smart Energy
|
|
* Network
|
|
* @see zb_zcl_drlc_cancel_lce_payload_s
|
|
*/
|
|
|
|
ZB_ZCL_DRLC_SRV_CMD_CANCEL_ALL_LOAD_CONTROL_EVENTS = 0x02, /**< CancellAllLoadControlEvents is generated when the ESI wants to cancel all
|
|
* events for control device(s)
|
|
*/
|
|
} zb_zcl_drlc_srv_cmd_t;
|
|
|
|
|
|
/** Commands are generated by DRLC Client.
|
|
* @see SE spec, Table D-8
|
|
*/
|
|
typedef enum zb_zcl_drlc_cli_cmd_e
|
|
{
|
|
ZB_ZCL_DRLC_CLI_CMD_REPORT_EVENT_STATUS = 0x00, /**< ReportEventStatus is generated when the client device detects a change of
|
|
* state for an active LoadControl event.
|
|
* @see zb_zcl_drlc_report_event_status_payload_s
|
|
*/
|
|
|
|
ZB_ZCL_DRLC_CLI_CMD_GET_SCHEDULED_EVENTS = 0x01, /**< GetScheduledEvents is generated when the client device wishes to verify
|
|
* the available LoadControl events.
|
|
* @see zb_zcl_drlc_get_scheduled_events_payload_s
|
|
*/
|
|
} zb_zcl_drlc_cli_cmd_t;
|
|
|
|
/** @cond internals_doc */
|
|
/* DRLC cluster commands list : only for information - do not modify */
|
|
#define ZB_ZCL_CLUSTER_ID_DRLC_SERVER_ROLE_GENERATED_CMD_LIST \
|
|
ZB_ZCL_DRLC_SRV_CMD_LOAD_CONTROL_EVENT, \
|
|
ZB_ZCL_DRLC_SRV_CMD_CANCEL_LOAD_CONTROL_EVENT, \
|
|
ZB_ZCL_DRLC_SRV_CMD_CANCEL_ALL_LOAD_CONTROL_EVENTS
|
|
|
|
#define ZB_ZCL_CLUSTER_ID_DRLC_CLIENT_ROLE_RECEIVED_CMD_LIST ZB_ZCL_CLUSTER_ID_DRLC_SERVER_ROLE_GENERATED_CMD_LIST
|
|
|
|
#define ZB_ZCL_CLUSTER_ID_DRLC_CLIENT_ROLE_GENERATED_CMD_LIST \
|
|
ZB_ZCL_DRLC_CLI_CMD_REPORT_EVENT_STATUS, \
|
|
ZB_ZCL_DRLC_CLI_CMD_GET_SCHEDULED_EVENTS
|
|
|
|
#define ZB_ZCL_CLUSTER_ID_DRLC_SERVER_ROLE_RECEIVED_CMD_LIST ZB_ZCL_CLUSTER_ID_DRLC_CLIENT_ROLE_GENERATED_CMD_LIST
|
|
/*! @}
|
|
* @endcond */ /* internals_doc */
|
|
|
|
/* Payload description */
|
|
|
|
/** @ref ZB_ZCL_DRLC_SRV_CMD_LOAD_CONTROL_EVENT "LoadControlEvent" command payload.
|
|
* @see SE spec, Figure D-2
|
|
*/
|
|
typedef ZB_PACKED_PRE struct zb_zcl_drlc_lce_payload_s {
|
|
|
|
/** Unique identifier generated by the Energy provider.
|
|
* The value of this field allows matching of Event reports
|
|
* with a specific Demand Response and Load Control event.
|
|
*/
|
|
zb_uint32_t issuer_event_id; /* (M) */
|
|
|
|
/** Bit encoded field representing the Device Class to apply the
|
|
* current Load Control Event. Each bit, if set individually or
|
|
* in combination, indicates the class device(s) needing to
|
|
* participate in the event.
|
|
*/
|
|
zb_uint16_t device_class; /* (M) */
|
|
|
|
/** This field can be used in conjunction with the Device Class bits
|
|
* for providing a mechanism to direct Load Control Events
|
|
* to groups of Devices.
|
|
*/
|
|
zb_uint8_t utility_enrollment_group; /* (M) */
|
|
|
|
/** UTC Timestamp representing when the event is scheduled to start.
|
|
* A start time of 0x00000000 is a special time denoting “now.”
|
|
*/
|
|
zb_uint32_t start_time; /* (M) */
|
|
|
|
/** Duration of this event in number of minutes.
|
|
* Maximum value is 1440 (one day).
|
|
*/
|
|
zb_uint16_t duration_in_minutes; /* (M) */
|
|
|
|
/** This field defines the level of criticality of event. The
|
|
* action for an event can be solely based on this value,
|
|
* or combination with other Load Control Event fields.
|
|
*/
|
|
zb_uint8_t criticality_level; /* (M) */
|
|
|
|
/** Requested offset to apply to the normal cooling setpoint
|
|
* at the time of the start of the event in + 0.1 Celsius.
|
|
*/
|
|
zb_uint8_t cooling_temperature_offset; /* (O) - use 0xff if optional */
|
|
|
|
/** Requested offset to apply to the normal heating setpoint
|
|
* at the time of the start of the event in + 0.1 Celsius.
|
|
*/
|
|
zb_uint8_t heating_temperature_offset; /* (O) - use 0xff if optional */
|
|
|
|
/** Requested cooling set point in 0.01 degrees Celsius. */
|
|
zb_int16_t cooling_temperature_set_point; /* (O) - use 0x8000 if optional */
|
|
|
|
/** Requested heating set point in 0.01 degrees Celsius. */
|
|
zb_int16_t heating_temperature_set_point; /* (O) - use 0x8000 if optional */
|
|
|
|
/** Defines a maximum energy usage limit as a percentage of
|
|
* the client implementations specific average energy usage.
|
|
*/
|
|
zb_int8_t average_load_adjustment_percentage; /* (O) */
|
|
|
|
/** Defines the maximum on state duty cycle as a percentage of time. */
|
|
zb_uint8_t duty_cycle; /* (O) */
|
|
|
|
/** Identifies additional control options for the event. */
|
|
zb_uint8_t event_control; /* (M) */
|
|
} ZB_PACKED_STRUCT zb_zcl_drlc_lce_payload_t;
|
|
|
|
/** @def ZB_ZCL_DRLC_SRV_CMD_LOAD_CONTROL_EVENT_IS_VALID
|
|
*/
|
|
#define ZB_ZCL_DRLC_SRV_CMD_LOAD_CONTROL_EVENT_IS_VALID(size) \
|
|
((size) >= sizeof(zb_zcl_drlc_lce_payload_t))
|
|
|
|
/** @ref ZB_ZCL_DRLC_SRV_CMD_CANCEL_LOAD_CONTROL_EVENT "CancelLoadControlEvent" command payload
|
|
* @see SE spec, Figure D-3
|
|
*/
|
|
typedef ZB_PACKED_PRE struct zb_zcl_drlc_cancel_lce_payload_s {
|
|
/* Mandatory fields. */
|
|
|
|
/** Unique identifier generated by the Energy provider. The value of
|
|
* this field allows matching of Event reports with a specific Demand Response
|
|
* and Load Control event.
|
|
*/
|
|
zb_uint32_t issuer_event_id; /* (M) */
|
|
|
|
/** Bit encoded field representing the Device Class to apply the
|
|
* current Load Control Event. Each bit, if set individually or in combination,
|
|
* indicates the class device(s) needing to participate in the event.
|
|
*/
|
|
zb_uint16_t device_class; /* (M) */
|
|
|
|
/** This field can be used in conjunction with the Device Class bits
|
|
* for providing a mechanism to direct Load Control Events
|
|
* to groups of Devices.
|
|
*/
|
|
zb_uint8_t utility_enrollment_group; /* (M) */
|
|
|
|
/** This field is used to indicate that the Event is currently in process and
|
|
* a cancel command is received.*/
|
|
zb_uint8_t cancel_control; /* (M) */
|
|
|
|
/** UTC Timestamp representing when the canceling of the event is
|
|
* scheduled to start. An effective time of 0x00000000 is a special
|
|
* time denoting “now.”
|
|
*/
|
|
zb_uint32_t effective_time; /* (M) */
|
|
} ZB_PACKED_STRUCT zb_zcl_drlc_cancel_lce_payload_t;
|
|
|
|
/** @def ZB_ZCL_DRLC_SRV_CMD_CANCEL_LOAD_CONTROL_EVENT_IS_VALID
|
|
*/
|
|
#define ZB_ZCL_DRLC_SRV_CMD_CANCEL_LOAD_CONTROL_EVENT_IS_VALID(size) \
|
|
((size) >= sizeof(zb_zcl_drlc_cancel_lce_payload_t))
|
|
|
|
|
|
/** @ref ZB_ZCL_DRLC_SRV_CMD_CANCEL_ALL_LOAD_CONTROL_EVENTS "CancelAllLoadControlEvents" command payload
|
|
* @see SE spec, Figure D-3
|
|
*/
|
|
typedef ZB_PACKED_PRE struct zb_zcl_drlc_cancel_alce_payload_s {
|
|
/* Mandatory fields. */
|
|
|
|
/** Where the Cancel Control field indicates that randomization is to be used, the receiving device should first
|
|
* check whether Duration Time was to be randomized and, if so, termination of the event should be adjusted
|
|
* according to the value of the DurationRandomizationMinutes attribute.
|
|
*/
|
|
zb_uint8_t cancel_control; /* (M) */
|
|
} ZB_PACKED_STRUCT zb_zcl_drlc_cancel_alce_payload_t;
|
|
|
|
/** @def ZB_ZCL_DRLC_SRV_CMD_CANCEL_ALL_LOAD_CONTROL_EVENTS_IS_VALID
|
|
*/
|
|
#define ZB_ZCL_DRLC_SRV_CMD_CANCEL_ALL_LOAD_CONTROL_EVENTS_IS_VALID(size) \
|
|
((size) >= sizeof(zb_zcl_drlc_cancel_alce_payload_t))
|
|
|
|
/** @ref ZB_ZCL_DRLC_CLI_CMD_REPORT_EVENT_STATUS "ReportEventStatus" command payload
|
|
* @see SE spec, Figure D-5
|
|
*/
|
|
typedef ZB_PACKED_PRE struct zb_zcl_drlc_report_event_status_payload_s {
|
|
/* Mandatory fields. */
|
|
|
|
/** Unique identifier generated by the Energy provider. The value of
|
|
* this field allows matching of Event reports with a specific Demand Response
|
|
* and Load Control event.
|
|
*/
|
|
zb_uint32_t issuer_event_id; /* (M) */
|
|
|
|
/** This field stores value from set of event statuses*/
|
|
zb_uint8_t event_status; /* (M) */
|
|
|
|
/** UTC Timestamp representing when the event status
|
|
* occurred. This field shall not use the value of 0x00000000.
|
|
*/
|
|
zb_uint32_t event_status_time; /* (M) */
|
|
|
|
/** Criticality Level value applied by the device */
|
|
zb_uint8_t criticality_level_applied; /* (M) */
|
|
|
|
/** Defines Cooling Temperature Set Point value applied by the device.
|
|
* The value 0x8000 means that this field has not been used by the end device.
|
|
*/
|
|
zb_uint16_t cooling_temperature_set_point_applied; /* (O) */
|
|
|
|
/** Defines Heating Temperature Set Point value applied by the device.
|
|
* The value 0x8000 means that this field has not been used by
|
|
* the end device.
|
|
*/
|
|
zb_uint16_t heating_temperature_set_point_applied; /* (O) */
|
|
|
|
/** Defines Average Load Adjustment Percentage value applied by the device.
|
|
* The value 0x80 means that this field has not been used by the end device.
|
|
*/
|
|
zb_int8_t average_load_adjustment_percentage_applied; /* (O) */
|
|
|
|
/** Defines the maximum on state duty cycle applied by the device.
|
|
* The value 0xFF means that this field has not been used by the end device.
|
|
*/
|
|
zb_uint8_t duty_cycle_applied; /* (O) */
|
|
|
|
/** Identifies additional control options for the event. */
|
|
zb_uint8_t event_control; /* (M) */
|
|
|
|
/** This field is used to enumerate the type of algorithm use to create the signature.*/
|
|
zb_uint8_t signature_type; /* (M) */
|
|
|
|
/** A non-repudiation signature created by using the Matyas-Meyer-Oseas
|
|
* hash function used in conjunction with ECDSA.
|
|
*/
|
|
zb_uint8_t signature[42]; /* (O) */
|
|
} ZB_PACKED_STRUCT zb_zcl_drlc_report_event_status_payload_t;
|
|
|
|
/** @def ZB_ZCL_DRLC_CLI_CMD_REPORT_EVENT_STATUS_IS_VALID
|
|
*/
|
|
#define ZB_ZCL_DRLC_CLI_CMD_REPORT_EVENT_STATUS_IS_VALID(size) \
|
|
((size) >= sizeof(zb_zcl_drlc_report_event_status_payload_t))
|
|
|
|
/** @ref ZB_ZCL_DRLC_CLI_CMD_GET_SCHEDULED_EVENTS "GetScheduledEvents" command payload
|
|
* @see SE spec, Figure D-6
|
|
*/
|
|
typedef ZB_PACKED_PRE struct zb_zcl_drlc_get_scheduled_events_payload_s {
|
|
/* Mandatory fields. */
|
|
|
|
/** UTC Timestamp representing the minimum Start Time of events that shall be
|
|
* matched and sent by the Server. A Start Time of 0x00000000 has no special
|
|
* meaning.
|
|
*/
|
|
zb_uint32_t start_time; /* (M) */
|
|
|
|
/** Represents the maximum number of events to be sent. A value of 0 indicates
|
|
* no maximum limit.
|
|
*/
|
|
zb_uint8_t number_of_events; /* (M) */
|
|
|
|
/** Represents the minimum Issuer Event ID of events to be matched and sent
|
|
* by the server with the same Start Time as the Get Scheduled Events command.
|
|
* A value of 0xFFFFFFFF indicates this field will not be used.
|
|
*/
|
|
zb_uint32_t issuer_event_id; /* (O) */
|
|
} ZB_PACKED_STRUCT zb_zcl_drlc_get_scheduled_events_payload_t;
|
|
|
|
/** Initialize @ref ZB_ZCL_DRLC_SRV_CMD_LOAD_CONTROL_EVENT "LoadControlEvent" command @ref zb_zcl_drlc_lce_payload_t payload*/
|
|
#define ZB_ZCL_DRLC_LCE_PAYLOAD_INIT \
|
|
(zb_zcl_drlc_lce_payload_t) \
|
|
{ \
|
|
.cooling_temperature_offset = 0xFF, \
|
|
.heating_temperature_offset = 0xFF, \
|
|
.cooling_temperature_set_point = (zb_int16_t) 0x8000, \
|
|
.heating_temperature_set_point = (zb_int16_t) 0x8000, \
|
|
.average_load_adjustment_percentage = (zb_int8_t) 0x80, \
|
|
.duty_cycle = 0xFF, \
|
|
}
|
|
|
|
/** Initialize @ref ZB_ZCL_DRLC_SRV_CMD_CANCEL_LOAD_CONTROL_EVENT "CancelLoadControlEvent" command @ref zb_zcl_drlc_cancel_lce_payload_t payload */
|
|
#define ZB_ZCL_DRLC_CANCEL_LCE_PAYLOAD_INIT \
|
|
(zb_zcl_drlc_cancel_lce_payload_t) {0}
|
|
|
|
/** Initialize @ref ZB_ZCL_DRLC_SRV_CMD_CANCEL_ALL_LOAD_CONTROL_EVENTS "CancelAllLoadControlEvents" command @ref zb_zcl_drlc_cancel_alce_payload_t payload */
|
|
#define ZB_ZCL_DRLC_CANCEL_ALCE_PAYLOAD_INIT \
|
|
(zb_zcl_drlc_cancel_alce_payload_t) {0}
|
|
|
|
/** Initialize @ref ZB_ZCL_DRLC_CLI_CMD_REPORT_EVENT_STATUS "ReportEventStatus" command @ref zb_zcl_drlc_report_event_status_payload_t payload */
|
|
#define ZB_ZCL_DRLC_REPORT_EVENT_STATUS_PAYLOAD_INIT \
|
|
(zb_zcl_drlc_report_event_status_payload_t) \
|
|
{ \
|
|
.cooling_temperature_set_point_applied = (zb_uint16_t) 0x8000, \
|
|
.heating_temperature_set_point_applied = (zb_uint16_t) 0x8000, \
|
|
.average_load_adjustment_percentage_applied = (zb_int8_t) 0x80, \
|
|
.duty_cycle_applied = (zb_uint8_t) 0xFF, \
|
|
.signature = \
|
|
{ \
|
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \
|
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \
|
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \
|
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \
|
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \
|
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \
|
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \
|
|
}, \
|
|
}
|
|
|
|
/** Check if some size in range of variable size of specified payload.
|
|
*/
|
|
#define ZB_ZCL_DRLC_GET_SCHEDULED_EVENTS_PAYLOAD_SIZE_IS_VALID(size) \
|
|
((size) >= ((zb_int16_t)sizeof(zb_zcl_drlc_get_scheduled_events_payload_t) - \
|
|
(zb_int16_t)ZB_SIZEOF_FIELD(zb_zcl_drlc_get_scheduled_events_payload_t, issuer_event_id)))
|
|
|
|
/** Initialize @ref ZB_ZCL_DRLC_CLI_CMD_GET_SCHEDULED_EVENTS "GetScheduledEvents" command @ref zb_zcl_drlc_get_scheduled_events_payload_t payload */
|
|
#define ZB_ZCL_DRLC_CMD_GET_SCHEDULED_EVENTS_PAYLOAD_INIT \
|
|
(zb_zcl_drlc_get_scheduled_events_payload_t) \
|
|
{ \
|
|
.issuer_event_id = 0xFFFFFFFF, \
|
|
}
|
|
|
|
|
|
/** Function for send @ref ZB_ZCL_DRLC_SRV_CMD_LOAD_CONTROL_EVENT "LoadControlEvent" command.
|
|
* On sender's side callback ZCL device callback @ref ZB_ZCL_REGISTER_DEVICE_CB will be called with @ref ZB_ZCL_DRLC_GET_SCHEDULED_EVENTS_CB_ID
|
|
* callback id on reception of @ref ZB_ZCL_DRLC_CLI_CMD_GET_SCHEDULED_EVENTS "GetScheduledEvents" command.
|
|
* @n On receiver's side callback ZCL device callback @ref ZB_ZCL_REGISTER_DEVICE_CB will be called with
|
|
* @ref ZB_ZCL_DRLC_LOAD_CONTROL_EVENT_CB_ID callback id.
|
|
* @param param - Reference to buffer.
|
|
* @param dst_addr - Address of the device to send command to.
|
|
* @param dst_addr_mode - Address mode for dst_addr.
|
|
* @param dst_ep - Destination endpoint.
|
|
* @param src_ep - Current endpoint.
|
|
* @param payload - Packet payload (@ref zb_zcl_drlc_lce_payload_t).
|
|
* @param cb - Callback which should be called when the ZCL stack receives APS ack.
|
|
* @par Usage
|
|
* @n Handle @ref ZB_ZCL_DRLC_GET_SCHEDULED_EVENTS_CB_ID
|
|
* @snippet se/energy_service_interface/se_esi_zc.c handle_get_scheduled_events
|
|
* @n Example of sending @ref ZB_ZCL_DRLC_SRV_CMD_LOAD_CONTROL_EVENT "LoadControlEvent" command
|
|
* @snippet se/energy_service_interface/se_esi_zc.c esi_dev_cmd_send_lce_event1
|
|
*/
|
|
void zb_drlc_server_send_load_control_event(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_drlc_lce_payload_t *payload, zb_callback_t cb);
|
|
|
|
|
|
/** Function for send @ref ZB_ZCL_DRLC_SRV_CMD_CANCEL_LOAD_CONTROL_EVENT "CancelLoadControlEvent" command.
|
|
* On receiver's side callback ZCL device callback @ref ZB_ZCL_REGISTER_DEVICE_CB will be called with
|
|
* @ref ZB_ZCL_DRLC_CANCEL_LOAD_CONTROL_EVENT_CB_ID
|
|
* @param param - Reference to buffer.
|
|
* @param dst_addr - Address of the device to send command to.
|
|
* @param dst_addr_mode - Address mode for dst_addr.
|
|
* @param dst_ep - Destination endpoint.
|
|
* @param src_ep - Current endpoint.
|
|
* @param payload - Packet payload (@ref zb_zcl_drlc_cancel_lce_payload_t).
|
|
* @param cb - Callback which should be called when the ZCL stack receives APS ack.
|
|
* @par Usage
|
|
* @n Example of sending @ref ZB_ZCL_DRLC_SRV_CMD_CANCEL_LOAD_CONTROL_EVENT "CancelLoadControlEvent" command
|
|
* @snippet se/energy_service_interface/se_esi_zc.c esi_dev_cmd_send_lce_event2
|
|
*/
|
|
void zb_drlc_server_send_cancel_load_control_event(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_drlc_cancel_lce_payload_t *payload, zb_callback_t cb);
|
|
|
|
|
|
/** Function for send @ref ZB_ZCL_DRLC_SRV_CMD_CANCEL_ALL_LOAD_CONTROL_EVENTS "CancellAllLoadControlEvents" command.
|
|
* On receiver's side callback ZCL device callback @ref ZB_ZCL_REGISTER_DEVICE_CB will be called with
|
|
* @ref ZB_ZCL_DRLC_CANCEL_ALL_LOAD_CONTROL_EVENTS_CB_ID
|
|
* @param param - Reference to buffer.
|
|
* @param dst_addr - Address of the device to send command to.
|
|
* @param dst_addr_mode - Address mode for dst_addr.
|
|
* @param dst_ep - Destination endpoint.
|
|
* @param src_ep - Current endpoint.
|
|
* @param payload - Packet payload: pointer to zb_uint8_t, where
|
|
* "Cancel Control" field value is placed (see SE spec, D.2.2.3.3.1).
|
|
* @param cb - Callback which should be called when the ZCL stack receives APS ack.
|
|
* @par Usage
|
|
* @n Example of sending @ref ZB_ZCL_DRLC_SRV_CMD_CANCEL_ALL_LOAD_CONTROL_EVENTS "CancellAllLoadControlEvents" command
|
|
* @snippet se/energy_service_interface/se_esi_zc.c esi_dev_cmd_send_lce_event3
|
|
*/
|
|
void zb_drlc_server_send_cancel_all_load_control_events(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_uint8_t *payload, zb_callback_t cb);
|
|
|
|
/** Function for send @ref ZB_ZCL_DRLC_CLI_CMD_REPORT_EVENT_STATUS "ReportEventStatus" command.
|
|
* On sender's side callback ZCL device callback @ref ZB_ZCL_REGISTER_DEVICE_CB will be called with one of @ref ZB_ZCL_DRLC_LOAD_CONTROL_EVENT_CB_ID,
|
|
* @ref ZB_ZCL_DRLC_CANCEL_LOAD_CONTROL_EVENT_CB_ID, @ref ZB_ZCL_DRLC_CANCEL_ALL_LOAD_CONTROL_EVENTS_CB_ID
|
|
* callback ids on reception of @ref ZB_ZCL_DRLC_SRV_CMD_LOAD_CONTROL_EVENT "LoadControlEvent",
|
|
* @ref ZB_ZCL_DRLC_SRV_CMD_CANCEL_LOAD_CONTROL_EVENT "CancelLoadControlEvent",
|
|
* @ref ZB_ZCL_DRLC_SRV_CMD_CANCEL_ALL_LOAD_CONTROL_EVENTS "CancellAllLoadControlEvents" commands respectively.
|
|
* @n On receiver's side callback ZCL device callback @ref ZB_ZCL_REGISTER_DEVICE_CB will be called with
|
|
* @ref ZB_ZCL_DRLC_REPORT_EVENT_STATUS_CB_ID callback id.
|
|
* @param param - Reference to buffer.
|
|
* @param dst_addr - Address of the device to send command to.
|
|
* @param dst_addr_mode - Address mode for dst_addr.
|
|
* @param dst_ep - Destination endpoint.
|
|
* @param src_ep - Current endpoint.
|
|
* @param payload - Packet payload (@ref zb_zcl_drlc_report_event_status_payload_t).
|
|
* @param cb - Callback which should be called when the ZCL stack receives APS ack.
|
|
* @par Usage
|
|
* @n Handle @ref ZB_ZCL_DRLC_SRV_CMD_CANCEL_ALL_LOAD_CONTROL_EVENTS "CancellAllLoadControlEvents" command
|
|
* @snippet se/in_home_display/se_ihd_zr.c ihd_handle_cancel_all_load_control_events
|
|
* @n Example of sending @ref ZB_ZCL_DRLC_CLI_CMD_REPORT_EVENT_STATUS "ReportEventStatus" command
|
|
* @snippet se/in_home_display/se_ihd_zr.c ihd_send_report_event_status
|
|
*/
|
|
void zb_drlc_client_send_report_event_status(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_drlc_report_event_status_payload_t *payload, zb_callback_t cb);
|
|
|
|
/** Function for send @ref ZB_ZCL_DRLC_SEND_CMD_REPORT_EVENT_STATUS_TSN "ReportEventStatus" command.
|
|
* On sender's side callback ZCL device callback @ref ZB_ZCL_REGISTER_DEVICE_CB will be called with one of @ref ZB_ZCL_DRLC_LOAD_CONTROL_EVENT_CB_ID,
|
|
* @ref ZB_ZCL_DRLC_CANCEL_LOAD_CONTROL_EVENT_CB_ID, @ref ZB_ZCL_DRLC_CANCEL_ALL_LOAD_CONTROL_EVENTS_CB_ID
|
|
* callback ids on reception of @ref ZB_ZCL_DRLC_SRV_CMD_LOAD_CONTROL_EVENT "LoadControlEvent",
|
|
* @ref ZB_ZCL_DRLC_SRV_CMD_CANCEL_LOAD_CONTROL_EVENT "CancelLoadControlEvent",
|
|
* @ref ZB_ZCL_DRLC_SRV_CMD_CANCEL_ALL_LOAD_CONTROL_EVENTS "CancellAllLoadControlEvents" commands respectively.
|
|
* @n On receiver's side callback ZCL device callback @ref ZB_ZCL_REGISTER_DEVICE_CB will be called with
|
|
* @ref ZB_ZCL_DRLC_REPORT_EVENT_STATUS_CB_ID callback id.
|
|
* @param param - Reference to buffer.
|
|
* @param dst_addr - Address of the device to send command to.
|
|
* @param dst_addr_mode - Address mode for dst_addr.
|
|
* @param dst_ep - Destination endpoint.
|
|
* @param src_ep - Current endpoint.
|
|
* @param payload - Packet payload (@ref zb_zcl_drlc_report_event_status_payload_t).
|
|
* @param tsn - transaction sequence number of response
|
|
* @param cb - Callback which should be called when the ZCL stack receives APS ack.
|
|
* @par Usage
|
|
* @n Handle @ref ZB_ZCL_DRLC_SRV_CMD_CANCEL_ALL_LOAD_CONTROL_EVENTS "CancellAllLoadControlEvents" command
|
|
* @snippet se/in_home_display/se_ihd_zr.c ihd_handle_cancel_all_load_control_events
|
|
* @n Example of sending @ref ZB_ZCL_DRLC_SEND_CMD_REPORT_EVENT_STATUS_TSN "ReportEventStatus" command
|
|
* @snippet se/in_home_display/se_ihd_zr.c ihd_send_report_event_status
|
|
*/
|
|
void zb_drlc_client_send_report_event_status_tsn(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_drlc_report_event_status_payload_t *payload, zb_uint8_t tsn, zb_callback_t cb);
|
|
|
|
|
|
|
|
/** Function for send @ref ZB_ZCL_DRLC_CLI_CMD_GET_SCHEDULED_EVENTS "GetScheduledEvents" command.
|
|
* On receiver's side callback ZCL device callback @ref ZB_ZCL_REGISTER_DEVICE_CB will be called with
|
|
* @ref ZB_ZCL_DRLC_GET_SCHEDULED_EVENTS_CB_ID callback id.
|
|
* @param param - Reference to buffer.
|
|
* @param dst_addr - Address of the device to send command to.
|
|
* @param dst_addr_mode - Address mode for dst_addr.
|
|
* @param dst_ep - Destination endpoint.
|
|
* @param src_ep - Current endpoint.
|
|
* @param payload - Packet payload (@ref zb_zcl_drlc_get_scheduled_events_payload_t).
|
|
* @param cb - Callback which should be called when the ZCL stack receives APS ack.
|
|
* @par Usage
|
|
* @n Example of sending @ref ZB_ZCL_DRLC_CLI_CMD_GET_SCHEDULED_EVENTS "GetScheduledEvents"
|
|
* @snippet se/in_home_display/se_ihd_zr.c ihd_dev_cmd_get_scheduled_events
|
|
*/
|
|
void zb_drlc_client_send_get_scheduled_events(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_drlc_get_scheduled_events_payload_t *payload, zb_callback_t cb);
|
|
|
|
/** Macro for call @ref zb_drlc_server_send_load_control_event function
|
|
*/
|
|
#define ZB_ZCL_DRLC_SEND_CMD_LOAD_CONTROL_EVENT(_param, \
|
|
_dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload ) \
|
|
zb_drlc_server_send_load_control_event(_param, \
|
|
_dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload, NULL)
|
|
|
|
/** Macro for call @ref zb_drlc_server_send_cancel_load_control_event function
|
|
*/
|
|
#define ZB_ZCL_DRLC_SEND_CMD_CANCEL_LCE(_param, \
|
|
_dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload ) \
|
|
zb_drlc_server_send_cancel_load_control_event(_param, \
|
|
_dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload, NULL)
|
|
|
|
/** Macro for call @ref zb_drlc_server_send_cancel_all_load_control_events function
|
|
*/
|
|
#define ZB_ZCL_DRLC_SEND_CMD_CANCEL_ALL_LCE(_param, \
|
|
_dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload ) \
|
|
zb_drlc_server_send_cancel_all_load_control_events(_param, \
|
|
_dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload, NULL)
|
|
|
|
/** Macro for call @ref zb_drlc_client_send_get_scheduled_events function
|
|
*/
|
|
#define ZB_ZCL_DRLC_SEND_CMD_GET_SCHEDULED_EVENTS(_param, \
|
|
_dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload ) \
|
|
zb_drlc_client_send_get_scheduled_events(_param, \
|
|
_dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload, NULL)
|
|
|
|
/** Macro for call @ref zb_drlc_client_send_report_event_status function
|
|
*/
|
|
#define ZB_ZCL_DRLC_SEND_CMD_REPORT_EVENT_STATUS( _param, \
|
|
_dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload ) \
|
|
zb_drlc_client_send_report_event_status(_param, \
|
|
_dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload, NULL)
|
|
|
|
/** Macro for call @ref zb_drlc_client_send_report_event_status_tsn function
|
|
*/
|
|
#define ZB_ZCL_DRLC_SEND_CMD_REPORT_EVENT_STATUS_TSN( _param, \
|
|
_dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload, _tsn ) \
|
|
zb_drlc_client_send_report_event_status_tsn(_param, \
|
|
_dst_addr, _dst_addr_mode, _dst_ep, _src_ep, _payload, _tsn, NULL)
|
|
|
|
/** @} */ /* ZB_ZCL_DRLC_COMMANDS_STRUCTURES_AND_DEFINITIONS */
|
|
|
|
/** @brief Declare attribute list for DRLC cluster
|
|
* @param[in] attr_list - attribute list variable name
|
|
* @param[in] utility_enrollment_group - pointer to variable to store @ref ZB_ZCL_ATTR_DRLC_UTILITY_ENROLLMENT_GROUP value
|
|
* @param[in] start_randomization_munutes - pointer to variable to store @ref ZB_ZCL_ATTR_DRLC_START_RANDOMIZATION_MINUTES value
|
|
* @param[in] duration_randomization_minutes - pointer to variable to store @ref ZB_ZCL_ATTR_DRLC_DURATION_RANDOMIZATION_MINUTES value
|
|
* @param[in] device_class - pointer to variable to store @ref ZB_ZCL_ATTR_DRLC_DEVICE_CLASS_VALUE value
|
|
*/
|
|
#define ZB_ZCL_DECLARE_DRLC_ATTRIB_LIST(attr_list, utility_enrollment_group, \
|
|
start_randomization_munutes, duration_randomization_minutes, device_class) \
|
|
ZB_ZCL_START_DECLARE_ATTRIB_LIST_CLUSTER_REVISION(attr_list, ZB_ZCL_DRLC) \
|
|
ZB_ZCL_SET_ATTR_DESC_M(ZB_ZCL_ATTR_DRLC_UTILITY_ENROLLMENT_GROUP, (utility_enrollment_group), ZB_ZCL_ATTR_TYPE_8BIT, ZB_ZCL_ATTR_ACCESS_READ_WRITE) \
|
|
ZB_ZCL_SET_ATTR_DESC_M(ZB_ZCL_ATTR_DRLC_START_RANDOMIZATION_MINUTES, (start_randomization_munutes), ZB_ZCL_ATTR_TYPE_8BIT, ZB_ZCL_ATTR_ACCESS_READ_WRITE) \
|
|
ZB_ZCL_SET_ATTR_DESC_M(ZB_ZCL_ATTR_DRLC_DURATION_RANDOMIZATION_MINUTES, (duration_randomization_minutes), ZB_ZCL_ATTR_TYPE_8BIT, ZB_ZCL_ATTR_ACCESS_READ_WRITE) \
|
|
ZB_ZCL_SET_ATTR_DESC_M(ZB_ZCL_ATTR_DRLC_DEVICE_CLASS_VALUE, (device_class), ZB_ZCL_ATTR_TYPE_16BIT, ZB_ZCL_ATTR_ACCESS_READ_WRITE) \
|
|
ZB_ZCL_FINISH_DECLARE_ATTRIB_LIST
|
|
|
|
|
|
/** Initialize @ref zb_zcl_drlc_client_attrs_s DRLC cluster's attributes */
|
|
#define ZB_ZCL_DECLARE_DRLC_ATTR_LIST_INIT \
|
|
(zb_zcl_drlc_client_attrs_t) \
|
|
{ .utility_enrollment_group = 0, \
|
|
.start_randomization_munutes = 0x1e, \
|
|
.duration_randomization_minutes = 0, }
|
|
|
|
|
|
/**
|
|
* @brief DRLC client cluster attributes
|
|
*/
|
|
typedef struct zb_zcl_drlc_client_attrs_s
|
|
{
|
|
/** @copydoc ZB_ZCL_ATTR_DRLC_UTILITY_ENROLLMENT_GROUP
|
|
* @see ZB_ZCL_ATTR_DRLC_UTILITY_ENROLLMENT_GROUP
|
|
*/
|
|
zb_uint8_t utility_enrollment_group;
|
|
|
|
/** @copydoc ZB_ZCL_ATTR_DRLC_START_RANDOMIZATION_MINUTES
|
|
* @see ZB_ZCL_ATTR_DRLC_START_RANDOMIZATION_MINUTES
|
|
*/
|
|
zb_uint8_t start_randomization_munutes;
|
|
|
|
/** @copydoc ZB_ZCL_ATTR_DRLC_DURATION_RANDOMIZATION_MINUTES
|
|
* @see ZB_ZCL_ATTR_DRLC_DURATION_RANDOMIZATION_MINUTES
|
|
*/
|
|
zb_uint8_t duration_randomization_minutes;
|
|
|
|
/** @copydoc ZB_ZCL_ATTR_DRLC_DEVICE_CLASS_VALUE
|
|
* @see ZB_ZCL_ATTR_DRLC_DEVICE_CLASS_VALUE
|
|
*/
|
|
zb_uint16_t device_class_value;
|
|
} zb_zcl_drlc_client_attrs_t;
|
|
|
|
|
|
/** @brief Declare attribute list for DRLC cluster
|
|
* @param[in] attr_list - attribute list variable name
|
|
* @param[in] attrs - variable of @ref zb_zcl_drlc_client_attrs_t type (containing DRLC cluster attributes)
|
|
*/
|
|
#define ZB_ZCL_DECLARE_DRLC_ATTR_LIST(attr_list, attrs) \
|
|
ZB_ZCL_DECLARE_DRLC_ATTRIB_LIST(attr_list, &attrs.utility_enrollment_group, \
|
|
&attrs.start_randomization_munutes, &attrs.duration_randomization_minutes, \
|
|
&attrs.device_class_value)
|
|
|
|
/** @} */
|
|
|
|
/** @endcond */ /* DOXYGEN_ZCL_SECTION */
|
|
/** Internal handler for DRLC Cluster commands */
|
|
|
|
void zb_zcl_drlc_init_server(void);
|
|
void zb_zcl_drlc_init_client(void);
|
|
#define ZB_ZCL_CLUSTER_ID_DRLC_SERVER_ROLE_INIT zb_zcl_drlc_init_server
|
|
#define ZB_ZCL_CLUSTER_ID_DRLC_CLIENT_ROLE_INIT zb_zcl_drlc_init_client
|
|
|
|
#endif /* ZB_ZCL_DRLC_H_ */
|