Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*****************************************************************************
- *
- * MODULE: Window Covering Cluster
- *
- * COMPONENT: WindowCovering.h
- *
- * AUTHOR: Vesa 'ISO-B' Ylikyl�
- * DESCRIPTION: Header for WindowCovering Client Cluster
- *
- * $HeadURL: $
- *
- * $Revision: 1 $
- *
- * $LastChangedBy: isob $
- *
- * $LastChangedDate: 2019-01-19 12:00:00 +0200 (Sat, 19 Jan 2018) $
- *
- * $Id: WindowCovering.h 1 2019-01-19 10:00:00Z isob $
- *
- ****************************************************************************/
- #ifndef WINDOWCOVERING_H
- #define WINDOWCOVERING_H
- #include <jendefs.h>
- #include "zcl.h"
- // 2019.06.11 TrungTQ ADD
- #include <zcl_customcommand.h>
- // 2019.06.11 TrungTQ END
- #include "zcl_options.h"
- /****************************************************************************/
- /*** Macro Definitions ***/
- /****************************************************************************/
- /* Cluster ID's */
- #define CLOSURE_CLUSTER_ID_WINDOWCOVERING 0x0102
- /****************************************************************************/
- /* Window Covering Control Cluster - Optional Attributes */
- /* */
- /* Optional attributes are not implemented since client doesn't need those */
- /****************************************************************************/
- //#define WINDOWCOVERING_SERVER
- //#define CLD_WINDOWCOVERING_WINDOW_COVERING_CONFIG (CLD_WINDOWCOVERING_CONFIG_OPERATIONAL_SUPPORTED | CLD_WINDOWCOVERING_CONFIG_CLOSED_CONTROL_TILT_SUPPORTED)
- //#define CLD_WINDOWCOVERING_WINDOW_COVERING_MODE (0)
- //#define CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_TILT_BLIND_TILT_AND_LIFT
- #if (defined CLD_WINDOWCOVERING) && (defined WINDOWCOVERING_CLIENT) && !(defined WINDOWCOVERING_SERVER)
- #ifndef CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE
- #define CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE (0x0000)
- #endif /* CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE */
- #else
- #undef CLD_WINDOWCOVERING_ATTR_ID_WINDOW_COVERING_TYPE
- #define CLD_WINDOWCOVERING_ATTR_ID_WINDOW_COVERING_TYPE
- #undef CLD_WINDOWCOVERING_ATTR_ID_MODE
- #define CLD_WINDOWCOVERING_ATTR_ID_MODE
- #ifndef CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE
- #error You Must Have CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE defined in zcl_options.h
- #endif /* CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE */
- #ifndef CLD_WINDOWCOVERING_WINDOW_COVERING_CONFIG
- #error You Must Have CLD_WINDOWCOVERING_WINDOW_COVERING_CONFIG defined in zcl_options.h
- #endif
- #ifndef CLD_WINDOWCOVERING_WINDOW_COVERING_MODE
- #error You Must Have CLD_WINDOWCOVERING_WINDOW_COVERING_MODE defined in zcl_options.h
- #endif
- #endif
- #if CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE == E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_ROLLERSHADE
- #undef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
- #define CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
- #elif CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE == E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_ROLLERSHADE_2_MOTOR
- #undef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
- #define CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
- #elif CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE == E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_ROLLERSHADE_EXTERIOR
- #undef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
- #define CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
- #elif CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE == E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_ROLLERSHADE_EXTERIOR_2_MOTOR
- #undef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
- #define CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
- #elif CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE == E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_DRAPERY
- #undef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
- #define CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
- #elif CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE == E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_AWNING
- #undef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
- #define CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
- #elif CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE == E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_PROJECTOR_SCREEN
- #undef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_TILT
- #define CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_TILT
- #elif CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE == E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_TILT_BLIND_TILT_ONLY
- #undef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_TILT
- #define CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_TILT
- #elif CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE == E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_TILT_BLIND_TILT_AND_LIFT
- #undef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
- #define CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
- #undef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_TILT
- #define CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_TILT
- #else
- #error You Must Have CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE defined in zcl_options.h
- #endif
- #ifdef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
- #undef CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_OPEN_LIMIT_LIFT_CM
- #define CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_OPEN_LIMIT_LIFT_CM
- #undef CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_LIFT_CM
- #define CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_LIFT_CM
- #undef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_LIFT_CM
- #define CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_LIFT_CM
- #undef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_LIFT_CM
- #define CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_LIFT_CM
- #undef CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE
- #define CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE
- #endif /* CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT */
- #ifdef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_TILT
- #undef CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_OPEN_LIMIT_TILT_DEGREE
- #define CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_OPEN_LIMIT_TILT_DEGREE
- #undef CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE
- #define CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE
- #undef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_TILT_DEGREE
- #define CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_TILT_DEGREE
- #undef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_TILT_DEGREE
- #define CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_TILT_DEGREE
- #undef CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_PERCENTAGE
- #define CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_PERCENTAGE
- #endif /* CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_TILT */
- #ifndef CLD_WINDOWCOVERING_CLUSTER_REVISION
- #define CLD_WINDOWCOVERING_CLUSTER_REVISION (1)
- #endif /* CLD_WINDOWCOVERING_CLUSTER_REVISION */
- #ifndef CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_LIFT_CM_MIN
- #define CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_LIFT_CM_MIN (0)
- #endif /* CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_LIFT_CM_MIN */
- #ifndef CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_LIFT_CM_MAX
- #define CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_LIFT_CM_MAX (0xFFFF)
- #endif /* CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_LIFT_CM_MAX */
- #ifndef CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE_MIN
- #define CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE_MIN (0)
- #endif /* CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE_MIN */
- #ifndef CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE_MAX
- #define CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE_MAX (0xFFFF)
- #endif /* CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE_MAX */
- #ifndef CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_LIFT_MIN
- #define CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_LIFT_MIN (0)
- #endif /* CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_LIFT_MIN */
- #ifndef CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_LIFT_MAX
- #define CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_LIFT_MAX (0xFFFF)
- #endif /* CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_LIFT_MAX */
- #ifndef CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_TILT_MIN
- #define CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_TILT_MIN (0)
- #endif /* CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_TILT_MIN */
- #ifndef CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_TILT_MAX
- #define CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_TILT_MAX (0xFFFF)
- #endif /* CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_TILT_MAX */
- #ifndef CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MIN
- #define CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MIN (0)
- #endif /* CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MIN */
- #ifndef CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MAX
- #define CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MAX (100)
- #endif /* CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MAX */
- #ifndef CLD_WINDOWCOVERING_POSITION_LIFT_PERCENTAGE_MIN
- #define CLD_WINDOWCOVERING_POSITION_LIFT_PERCENTAGE_MIN (CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MIN)
- #endif /* CLD_WINDOWCOVERING_POSITION_LIFT_PERCENTAGE_MIN */
- #ifndef CLD_WINDOWCOVERING_POSITION_LIFT_PERCENTAGE_MAX
- #define CLD_WINDOWCOVERING_POSITION_LIFT_PERCENTAGE_MAX (CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MAX)
- #endif /* CLD_WINDOWCOVERING_POSITION_LIFT_PERCENTAGE_MAX */
- #ifndef CLD_WINDOWCOVERING_POSITION_TILT_PERCENTAGE_MIN
- #define CLD_WINDOWCOVERING_POSITION_TILT_PERCENTAGE_MIN (CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MIN)
- #endif /* CLD_WINDOWCOVERING_POSITION_LIFT_PERCENTAGE_MIN */
- #ifndef CLD_WINDOWCOVERING_POSITION_TILT_PERCENTAGE_MAX
- #define CLD_WINDOWCOVERING_POSITION_TILT_PERCENTAGE_MAX (CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MAX)
- #endif /* CLD_WINDOWCOVERING_POSITION_TILT_PERCENTAGE_MAX */
- #ifndef CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_LIFT_CM_MIN
- #define CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_LIFT_CM_MIN (0)
- #endif /* CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_LIFT_CM_MIN */
- #ifndef CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_LIFT_CM_MAX
- #define CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_LIFT_CM_MAX (0xFFFF)
- #endif /* CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_LIFT_CM_MAX */
- #ifndef CLD_WINDOWCOVERING_INSTALLED_CLOSED_LIMIT_LIFT_CM_MIN
- #define CLD_WINDOWCOVERING_INSTALLED_CLOSED_LIMIT_LIFT_CM_MIN (0)
- #endif /* CLD_WINDOWCOVERING_INSTALLED_CLOSE_LIMIT_LIFT_CM_MIN */
- #ifndef CLD_WINDOWCOVERING_INSTALLED_CLOSED_LIMIT_LIFT_CM_MAX
- #define CLD_WINDOWCOVERING_INSTALLED_CLOSED_LIMIT_LIFT_CM_MAX (0xFFFF)
- #endif /* CLD_WINDOWCOVERING_INSTALLED_CLOSE_LIMIT_LIFT_CM_MAX */
- #ifndef CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_TILT_DEGREE_MIN
- #define CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_TILT_DEGREE_MIN (0)
- #endif /* CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_TILT_DEGREE_MIN */
- #ifndef CLD_WINDOWCOVERING_INSTALLED_CLOSED_LIMIT_TILT_DEGREE_MAX
- #define CLD_WINDOWCOVERING_INSTALLED_CLOSED_LIMIT_TILT_DEGREE_MAX (0xFFFF)
- #endif /* CLD_WINDOWCOVERING_INSTALLED_CLOSED_LIMIT_TILT_DEGREE_MAX */
- /* Bit Definitions For Config/Status Attribute */
- #define CLD_WINDOWCOVERING_CONFIG_OPERATIONAL_SUPPORTED (0x01 << 0)
- #define CLD_WINDOWCOVERING_CONFIG_ONLINE_SUPPORTED (0x01 << 1)
- #define CLD_WINDOWCOVERING_CONFIG_REVERSAL_SUPPORTED (0x01 << 2)
- #define CLD_WINDOWCOVERING_CONFIG_CLOSED_CONTROL_LIFT_SUPPORTED (0x01 << 3)
- #define CLD_WINDOWCOVERING_CONFIG_CLOSED_CONTROL_TILT_SUPPORTED (0x01 << 4)
- #define CLD_WINDOWCOVERING_CONFIG_ENCODER_CONTROLLED_LIFT_SUPPORTED (0x01 << 5)
- #define CLD_WINDOWCOVERING_CONFIG_ENCODER_CONTROLLED_TILT_SUPPORTED (0x01 << 6)
- /* Bit Definitions For Deceleration Mode Attribute */
- #define CLD_WINDOWCOVERING_MODE_MOTOR_DIRECTION_IS_REVERSED (0x01 << 0)
- #define CLD_WINDOWCOVERING_MODE_RUN_IN_CALIBRATION_MODE (0x01 << 1)
- #define CLD_WINDOWCOVERING_MODE_MOTOR_IS_RUNNING_IN_MAINTENANCE (0x01 << 2)
- #define CLD_WINDOWCOVERING_MODE_LEDS_WILL_DISPLAY_FEEDBACK (0x01 << 3)
- /****************************************************************************/
- /*** Type Definitions ***/
- /****************************************************************************/
- /* Window Covering Command - Payload */
- typedef enum {
- E_CLD_WINDOWCOVERING_CMD_UP_OPEN = 0x00, /* Mandatory */
- E_CLD_WINDOWCOVERING_CMD_DOWN_CLOSE, /* Mandatory */
- E_CLD_WINDOWCOVERING_CMD_STOP, /* Mandatory */
- E_CLD_WINDOWCOVERING_CMD_GO_TO_LIFT_VALUE = 0x04, /* Optional */
- E_CLD_WINDOWCOVERING_CMD_GO_TO_LIFT_PERCENTAGE, /* Optional */
- E_CLD_WINDOWCOVERING_CMD_GO_TO_TILT_VALUE = 0x07, /* Optional */
- E_CLD_WINDOWCOVERING_CMD_GO_TO_TILT_PERCENTAGE, /* Optional */
- // 2019.06.07 TrungTQ ADD
- E_CLD_WINDOWCOVERING_CMD_NONE
- // 2019.06.07 TrungTQ END
- } teCLD_WindowCovering_CommandID;
- typedef enum {
- /* Window Covering attribute set: Information */
- E_CLD_WINDOWCOVERING_ATTR_ID_WINDOW_COVERING_TYPE = 0x00, /* 0.Mandatory */
- E_CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_LIFT_CM, /* 1.Optional */
- E_CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE, /* 2.Optional */
- E_CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_CM, /* 3.Optional */
- E_CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_DEGREE, /* 4.Optional */
- E_CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_LIFT, /* 5.Optional */
- E_CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_TILT, /* 6.Optional */
- E_CLD_WINDOWCOVERING_ATTR_ID_CONFIG_STATUS, /* 7.Optional */
- E_CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE, /* 8.Mandatory if */
- E_CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_PERCENTAGE, /* 9.Mandatory if */
- /* Window Covering attribute set: Settings */
- E_CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_LIFT_CM = 0x10, /* 0.Mandatory if */
- E_CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_LIFT_CM, /* 1.Mandatory if */
- E_CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_TILT_DEGREE, /* 2.Mandatory if */
- E_CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_TILT_DEGREE, /* 3.Mandatory if */
- E_CLD_WINDOWCOVERING_ATTR_ID_VELOCITY, /* 4.Optional */
- E_CLD_WINDOWCOVERING_ATTR_ID_ACCELERATION_TIME_LIFT, /* 5.Optional */
- E_CLD_WINDOWCOVERING_ATTR_ID_DECELERATION_TIME_LIFT, /* 6.Optional */
- E_CLD_WINDOWCOVERING_ATTR_ID_MODE, /* 7.Mandatory */
- E_CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_LIFT, /* 8.Optional */
- E_CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_TILT, /* 9.Optional */
- } teCLD_WindowCovering_Cluster_AttrID;
- /* Window Covering Type */
- typedef enum {
- E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_ROLLERSHADE = 0x00,
- E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_ROLLERSHADE_2_MOTOR,
- E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_ROLLERSHADE_EXTERIOR,
- E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_ROLLERSHADE_EXTERIOR_2_MOTOR,
- E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_DRAPERY,
- E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_AWNING,
- E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_SHUTTER,
- E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_TILT_BLIND_TILT_ONLY,
- E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_TILT_BLIND_TILT_AND_LIFT,
- E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_PROJECTOR_SCREEN,
- E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_UNDEFINED = 0xFF
- } teCLD_WindowCovering_WindowCoveringType;
- typedef enum {
- E_CLD_WINDOWCOVERING_TRANSITION_UP_OPEN = 0x00,
- E_CLD_WINDOWCOVERING_TRANSITION_DOWN_CLOSE,
- E_CLD_WINDOWCOVERING_TRANSITION_STOP,
- E_CLD_WINDOWCOVERING_TRANSITION_GO_TO_LIFT_VALUE = 0x04,
- E_CLD_WINDOWCOVERING_TRANSITION_GO_TO_LIFT_PERCENTAGE,
- E_CLD_WINDOWCOVERING_TRANSITION_GO_TO_TILT_VALUE = 0x07,
- E_CLD_WINDOWCOVERING_TRANSITION_GO_TO_TILT_PERCENTAGE,
- E_CLD_WINDOWCOVERING_TRANSITION_NONE
- } teCLD_WindowCovering_Transition;
- // 2019.06.07 TrungTQ END
- /* Window Covering Cluster */
- typedef struct {
- // 2019.06.07 TrungTQ ADD
- #ifdef WINDOWCOVERING_SERVER
- /* Window Covering Information Attribute */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_WINDOW_COVERING_TYPE
- zenum8 eWindowCoveringType;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_WINDOW_COVERING_TYPE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_LIFT_CM
- zuint16 u16PhysicalClosedLimitLiftCm;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_LIFT_CM */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE
- zuint16 u16PhysicalClosedLimitTiltDegree;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_CM
- zuint16 u16CurrentPositionLiftCm;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_CM */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_DEGREE
- zuint16 u16CurrentPositionTiltDegree;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_DEGREE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_LIFT
- zuint16 u16NumberOfActuationsLift;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_LIFT */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_TILT
- zuint16 u16NumberOfActuationsTilt;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_TILT */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_CONFIG_STATUS
- zbmap8 u8ConfigStatus;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_CONFIG_STATUS */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE
- zuint8 u8CurrentPositionLiftPercentage;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_PERCENTAGE
- zuint8 u8CurrentPositionTiltPercentage;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_PERCENTAGE */
- /* Window Covering Settings Attribute */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_LIFT_CM
- zuint16 u16InstalledOpenLimitLiftCm;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_LIFT_CM */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_LIFT_CM
- zuint16 u16InstalledClosedLimitLiftCm;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_LIFT_CM */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_TILT_DEGREE
- zuint16 u16InstalledOpenLimitTiltDegree;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_TILT_DEGREE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_TILT_DEGREE
- zuint16 u16InstalledClosedLimitTiltDegree;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_TILT_DEGREE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_VELOCITY
- zuint16 u16Velocity;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_VELOCITY */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_ACCELERATION_TIME_LIFT
- zuint16 u16AccelrationTimeLift;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_ACCELERATION_TIME_LIFT */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_DECELERATION_TIME_LIFT
- zuint16 u16DecelerationTimeLift;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_DECELERATION_TIME_LIFT */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_MODE
- zbmap8 u8Mode;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_MODE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_LIFT
- tsZCL_OctetString sIntermediateSetpointsLift;
- uint8 au8IntermediateSetpointsLift[32];
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_LIFT */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_TILT
- tsZCL_OctetString sIntermediateSetpointsTilt;
- uint8 au8IntermediateSetpointsTilt[32];
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_TILT */
- #endif /* WINDOWCOVERING_SERVER */
- // 2019.06.07 TrungTQ END
- zuint16 u16ClusterRevision;
- } tsCLD_WindowCovering;
- /* Go To (Tilt|Lift) Value - Command request payload */
- typedef struct {
- uint16 u16Value;
- } tsCLD_WindowCovering_GoToValueRequestPayload;
- /* Go To (Tilt|Lift) Percentage - Command request payload */
- typedef struct {
- uint8 u8Percentage;
- } tsCLD_WindowCovering_GoToPercentageRequestPayload;
- typedef struct {
- zenum8 eStatus;
- } tsCLD_WindowCovering_DefaultResponsePayload;
- /* Definition of Window Covering Callback Event Structure */
- typedef struct {
- uint8 u8CommandId;
- union {
- // 2019.06.07 TrungTQ ADD
- #if (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_CM) || \
- (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_DEGREE)
- tsCLD_WindowCovering_GoToValueRequestPayload *psGoToValueRequestPayload;
- #endif
- #if (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE) || \
- (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_PERCENTAGE)
- tsCLD_WindowCovering_GoToPercentageRequestPayload *psGoToPercentageRequestPayload;
- #endif
- // 2019.06.07 TrungTQ END
- tsCLD_WindowCovering_DefaultResponsePayload *psDefaultResponsePayload;
- } uMessage;
- } tsCLD_WindowCoveringCallBackMessage;
- // 2019.06.07 TrungTQ ADD
- /* Only support Percentage now */
- typedef struct {
- teCLD_WindowCovering_Transition eTransition;
- #if (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE) || \
- (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_DEGREE)
- // 2019.06.18 TrungTQ DEL
- // uint8 u8LastPositionPercentage;
- // 2019.06.18 TrungTQ END
- uint8 u8CurrentPositionPercentage;
- uint8 u8TargetPositionPercentage;
- #endif
- } tsCLD_WindowCovering_Transition;
- typedef struct {
- tsCLD_WindowCovering_Transition sTransition;
- tsZCL_ReceiveEventAddress sReceiveEventAddress;
- tsZCL_CallBackEvent sCustomCallBackEvent;
- tsCLD_WindowCoveringCallBackMessage sCallBackMessage;
- } tsCLD_WindowCoveringCustomDataStructure;
- // 2019.06.07 TrungTQ END
- /****************************************************************************/
- /*** Exported Functions ***/
- /****************************************************************************/
- PUBLIC teZCL_Status eCLD_WindowCoveringCreateWindowCovering(
- tsZCL_ClusterInstance *psClusterInstance,
- bool_t bIsServer,
- tsZCL_ClusterDefinition *psClusterDefinition,
- void *pvEndPointSharedStructPtr,
- uint8 *pu8AttributeControlBits,
- tsCLD_WindowCoveringCustomDataStructure *psCustomDataStructure
- // 2019.06.07 TrungTQ END
- );
- #ifdef WINDOWCOVERING_CLIENT
- PUBLIC teZCL_Status eCLD_WindowCoveringCommandOpenCloseStopRequestSend(
- uint8 u8SourceEndPointId,
- uint8 u8DestinationEndPointId,
- tsZCL_Address *psDestinationAddress,
- uint8 *pu8TransactionSequenceNumber,
- teCLD_WindowCovering_CommandID eCommand);
- PUBLIC teZCL_Status eCLD_WindowCoveringCommandGotoValueRequestSend(
- uint8 u8SourceEndPointId,
- uint8 u8DestinationEndPointId,
- tsZCL_Address *psDestinationAddress,
- uint8 *pu8TransactionSequenceNumber,
- teCLD_WindowCovering_CommandID eCommand,
- tsCLD_WindowCovering_GoToValueRequestPayload *psPayload);
- PUBLIC teZCL_Status eCLD_WindowCoveringCommandGotoPercentageRequestSend(
- uint8 u8SourceEndPointId,
- uint8 u8DestinationEndPointId,
- tsZCL_Address *psDestinationAddress,
- uint8 *pu8TransactionSequenceNumber,
- teCLD_WindowCovering_CommandID eCommand,
- tsCLD_WindowCovering_GoToPercentageRequestPayload *psPayload);
- #endif /* WINDOWCOVERING_CLIENT */
- #ifdef WINDOWCOVERING_SERVER
- PUBLIC teZCL_Status eCLD_WindowCoveringCommandOpenCLoseStopRequestReceive(
- ZPS_tsAfEvent *pZPSevent,
- uint8 *pu8TransactionSequenceNumber);
- #if (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_CM) || \
- (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_DEGREE)
- PUBLIC teZCL_Status eCLD_WindowCoveringHandleGotoValueRequestReceive(
- ZPS_tsAfEvent *pZPSevent,
- uint8 *pu8TransactionSequenceNumber,
- tsCLD_WindowCovering_GoToValueRequestPayload *psPayload
- );
- #endif /**/
- #if (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE) || \
- (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_PERCENTAGE)
- PUBLIC teZCL_Status eCLD_WindowCoveringHandleGotoPercentageRequestReceive(
- ZPS_tsAfEvent *pZPSevent,
- uint8 *pu8TransactionSequenceNumber,
- tsCLD_WindowCovering_GoToPercentageRequestPayload *psPayload
- );
- #endif /* */
- PUBLIC teZCL_Status eCLD_WindowCoveringSetPercentagePosition(
- uint8 u8SourceEndPointId,
- uint8 u8PercentagePosition,
- teCLD_WindowCovering_Transition eTransition
- );
- PUBLIC teZCL_Status eCLD_WindowCoveringGetPercentagePosition(
- uint8 u8SourceEndPointId,
- uint8 *u8Percentage
- );
- #endif /* WINDOWCOVERING_SERVER */
- /****************************************************************************/
- /*** External Variables ***/
- /****************************************************************************/
- extern tsZCL_ClusterDefinition sCLD_WindowCovering;
- extern const tsZCL_AttributeDefinition asCLD_WindowCoveringClusterAttributeDefinitions[];
- extern uint8 au8WindowCoveringAttributeControlBits[];
- /****************************************************************************/
- /*** END OF FILE ***/
- /****************************************************************************/
- #endif /* WINDOWCOVERING_H */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement