Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*****************************************************************************
- *
- * MODULE: Window Covering Cluster
- *
- * COMPONENT: WindowCovering.c
- *
- * AUTHOR: Vesa 'ISO-B' Ylikyl�
- * DESCRIPTION: WindowCovering Client cluster definition
- *
- * $HeadURL: $
- *
- * $Revision: 1 $
- *
- * $LastChangedBy: isob $
- *
- * $LastChangedDate: 2019-01-19 12:00:00 +0200 (Sat, 19 Jan 2018) $
- *
- * $Id: WindowCovering.c 1 2019-01-19 10:00:00Z isob $
- *
- ****************************************************************************/
- /****************************************************************************/
- /*** Include files ***/
- /****************************************************************************/
- #include <jendefs.h>
- #include "zps_apl.h"
- #include "zps_apl_aib.h"
- #include "zcl.h"
- #include "zcl_customcommand.h"
- #include "zcl_options.h"
- #include "string.h"
- #include "WindowCovering.h"
- #include "WindowCovering_internal.h"
- #include "dbg.h"
- #ifdef DEBUG_CLD_WINDOWCOVERING
- #define TRACE_WINDOWCOVERING TRUE
- #else
- #define TRACE_WINDOWCOVERING FALSE
- #endif
- /****************************************************************************/
- /*** Macro Definitions ***/
- /****************************************************************************/
- // 2019.06.02 TrungTQ DEL
- // #if defined(CLD_WINDOWCOVERING) && !defined(WINDOWCOVERING_CLIENT)
- // #error You Must Have WINDOWCOVERING_CLIENT defined in zcl_options.h
- // #endif
- // #ifdef WINDOWCOVERING_SERVER
- // #error ZiGate does not support Window Covering Server Cluster
- // #endif
- // 2019.06.02 TrungTQ END
- // #define CLD_WINDOWCOVERING
- /****************************************************************************/
- /*** Type Definitions ***/
- /****************************************************************************/
- // #ifdef CLD_WINDOWCOVERING
- /****************************************************************************/
- /*** Local Function Prototypes ***/
- /****************************************************************************/
- /****************************************************************************/
- /*** Exported Variables ***/
- /****************************************************************************/
- /****************************************************************************/
- /*** Local Variables ***/
- /****************************************************************************/
- #ifdef ZCL_COMMAND_DISCOVERY_SUPPORTED
- const tsZCL_CommandDefinition asCLD_WindowCoveringClusterCommandDefinitions[] = {
- {E_CLD_WINDOWCOVERING_CMD_UP_OPEN, E_ZCL_CF_RX}, /* Mandatory */
- {E_CLD_WINDOWCOVERING_CMD_DOWN_CLOSE, E_ZCL_CF_RX}, /* Mandatory */
- {E_CLD_WINDOWCOVERING_CMD_STOP, E_ZCL_CF_RX}, /* Mandatory */
- {E_CLD_WINDOWCOVERING_CMD_GO_TO_LIFT_VALUE, E_ZCL_CF_RX},
- {E_CLD_WINDOWCOVERING_CMD_GO_TO_LIFT_PERCENTAGE, E_ZCL_CF_RX},
- {E_CLD_WINDOWCOVERING_CMD_GO_TO_TILT_VALUE, E_ZCL_CF_RX},
- {E_CLD_WINDOWCOVERING_CMD_GO_TO_TILT_PERCENTAGE, E_ZCL_CF_RX}
- };
- #endif
- const tsZCL_AttributeDefinition asCLD_WindowCoveringClusterAttributeDefinitions[] = {
- #ifdef WINDOWCOVERING_SERVER
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_WINDOW_COVERING_TYPE
- {E_CLD_WINDOWCOVERING_ATTR_ID_WINDOW_COVERING_TYPE, E_ZCL_AF_RD, E_ZCL_ENUM8, (uint32)(&((tsCLD_WindowCovering*)(0))->eWindowCoveringType),0}, /* Mandatory */
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_WINDOW_COVERING_TYPE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_LIFT_CM
- {E_CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_LIFT_CM, E_ZCL_AF_RD, E_ZCL_UINT16, (uint32)(&((tsCLD_WindowCovering*)(0))->u16PhysicalClosedLimitLiftCm),0}, /* Optional */
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_LIFT_CM */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE
- {E_CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE, E_ZCL_AF_RD, E_ZCL_UINT16, (uint32)(&((tsCLD_WindowCovering*)(0))->u16PhysicalClosedLimitTiltDegree),0}, /* Optional */
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_CM
- {E_CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_CM, E_ZCL_AF_RD, E_ZCL_UINT16, (uint32)(&((tsCLD_WindowCovering*)(0))->u16CurrentPositionLiftCm),0}, /* Optional */
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_CM */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_DEGREE
- {E_CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_DEGREE, E_ZCL_AF_RP, E_ZCL_UINT16, (uint32)(&((tsCLD_WindowCovering*)(0))->u16CurrentPositionTiltDegree),0}, /* Optional */
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_DEGREE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_LIFT
- {E_CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_LIFT, E_ZCL_AF_RD, E_ZCL_UINT16, (uint32)(&((tsCLD_WindowCovering*)(0))->u16NumberOfActuationsLift),0}, /* Optional */
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_LIFT */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_TILT
- {E_CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_TILT, E_ZCL_AF_RD, E_ZCL_UINT16, (uint32)(&((tsCLD_WindowCovering*)(0))->u16NumberOfActuationsTilt),0}, /* Optional */
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_TILT */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_CONFIG_STATUS
- {E_CLD_WINDOWCOVERING_ATTR_ID_CONFIG_STATUS, E_ZCL_AF_RD, E_ZCL_BMAP8, (uint32)(&((tsCLD_WindowCovering*)(0))->u8ConfigStatus),0}, /* Mandatory */
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_CONFIG_STATUS */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE
- {E_CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE, (E_ZCL_AF_RD|E_ZCL_AF_RP), E_ZCL_UINT8, (uint32)(&((tsCLD_WindowCovering*)(0))->u8CurrentPositionLiftPercentage),0}, /* Mandatory */
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_PERCENTAGE
- {E_CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_PERCENTAGE, (E_ZCL_AF_RD|E_ZCL_AF_RP), E_ZCL_UINT8, (uint32)(&((tsCLD_WindowCovering*)(0))->u8CurrentPositionTiltPercentage),0}, /* Mandatory */
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_PERCENTAGE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_LIFT_CM
- {E_CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_LIFT_CM, E_ZCL_AF_RD, E_ZCL_UINT16, (uint32)(&((tsCLD_WindowCovering*)(0))->u16InstalledOpenLimitLiftCm),0}, /* Optional */
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_LIFT_CM */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_LIFT_CM
- {E_CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_LIFT_CM, E_ZCL_AF_RD, E_ZCL_UINT16, (uint32)(&((tsCLD_WindowCovering*)(0))->u16InstalledClosedLimitLiftCm),0}, /* Optional */
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_LIFT_CM */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_TILT_DEGREE
- {E_CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_TILT_DEGREE, E_ZCL_AF_RD, E_ZCL_UINT16, (uint32)(&((tsCLD_WindowCovering*)(0))->u16InstalledOpenLimitTiltDegree),0}, /* Optional */
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_TILT_DEGREE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_TILT_DEGREE
- {E_CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_TILT_DEGREE, E_ZCL_AF_RD, E_ZCL_UINT16, (uint32)(&((tsCLD_WindowCovering*)(0))->u16InstalledClosedLimitTiltDegree),0}, /* Optional */
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_TILT_DEGREE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_VELOCITY
- {E_CLD_WINDOWCOVERING_ATTR_ID_VELOCITY, (E_ZCL_AF_RD|E_ZCL_AF_WR), E_ZCL_UINT16, (uint32)(&((tsCLD_WindowCovering*)(0))->u16Velocity),0}, /* Optional */
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_VELOCITY */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_ACCELERATION_TIME_LIFT
- {E_CLD_WINDOWCOVERING_ATTR_ID_ACCELERATION_TIME_LIFT, (E_ZCL_AF_RD|E_ZCL_AF_WR), E_ZCL_UINT16, (uint32)(&((tsCLD_WindowCovering*)(0))->u16AccelrationTimeLift),0}, /* Optional */
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_ACCELERATION_TIME_LIFT */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_DECELERATION_TIME_LIFT
- {E_CLD_WINDOWCOVERING_ATTR_ID_DECELERATION_TIME_LIFT, (E_ZCL_AF_RD|E_ZCL_AF_WR), E_ZCL_UINT16, (uint32)(&((tsCLD_WindowCovering*)(0))->u16DecelerationTimeLift),0}, /* Optional */
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_DECELERATION_TIME_LIFT */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_MODE
- {E_CLD_WINDOWCOVERING_ATTR_ID_MODE, (E_ZCL_AF_RD|E_ZCL_AF_WR), E_ZCL_BMAP8, (uint32)(&((tsCLD_WindowCovering*)(0))->u8Mode),0}, /* Mandatory */
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_MODE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_LIFT
- {E_CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_LIFT, (E_ZCL_AF_RD|E_ZCL_AF_WR), E_ZCL_CSTRING, (uint32)(&((tsCLD_WindowCovering*)(0))->sIntermediateSetpointsLift),0}, /* Optional */
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_LIFT */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_TILT
- {E_CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_TILT, (E_ZCL_AF_RD|E_ZCL_AF_WR), E_ZCL_CSTRING, (uint32)(&((tsCLD_WindowCovering*)(0))->sIntermediateSetpointsTilt),0}, /* Optional */
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_TILT */
- #endif /* WINDOWCOVERING_SERVER */
- {E_CLD_GLOBAL_ATTR_ID_CLUSTER_REVISION, (E_ZCL_AF_RD|E_ZCL_AF_GA), E_ZCL_UINT16, (uint32)(&((tsCLD_WindowCovering*)(0))->u16ClusterRevision),0}, /* Mandatory */
- };
- tsZCL_ClusterDefinition sCLD_WindowCovering = {
- CLOSURE_CLUSTER_ID_WINDOWCOVERING,
- FALSE,
- E_ZCL_SECURITY_NETWORK,
- (sizeof(asCLD_WindowCoveringClusterAttributeDefinitions) / sizeof(tsZCL_AttributeDefinition)),
- (tsZCL_AttributeDefinition*)asCLD_WindowCoveringClusterAttributeDefinitions,
- NULL
- #ifdef ZCL_COMMAND_DISCOVERY_SUPPORTED
- ,
- (sizeof(asCLD_WindowCoveringClusterCommandDefinitions) / sizeof(tsZCL_CommandDefinition)),
- (tsZCL_CommandDefinition*)asCLD_WindowCoveringClusterCommandDefinitions
- #endif
- };
- uint8 au8WindowCoveringAttributeControlBits[(sizeof(asCLD_WindowCoveringClusterAttributeDefinitions) / sizeof(tsZCL_AttributeDefinition))];
- /****************************************************************************/
- /*** Exported Functions ***/
- /****************************************************************************/
- /****************************************************************************
- **
- ** NAME: eCLD_WindowCoveringCreateWindowCovering
- **
- ** DESCRIPTION:
- ** Creates a Window Covering cluster
- **
- ** PARAMETERS: Name Usage
- ** tsZCL_ClusterInstance *psClusterInstance Cluster structure
- ** bool_t bIsServer Server Client flag
- ** tsZCL_ClusterDefinition *psClusterDefinition Cluster Definition
- ** void *pvEndPointSharedStructPtr EndPoint Shared Structure
- ** uint8 *pu8AttributeControlBits Attribute Control Bits
- **
- ** RETURN:
- ** teZCL_Status
- **
- ****************************************************************************/
- PUBLIC teZCL_Status eCLD_WindowCoveringCreateWindowCovering(
- tsZCL_ClusterInstance *psClusterInstance,
- bool_t bIsServer,
- tsZCL_ClusterDefinition *psClusterDefinition,
- void *pvEndPointSharedStructPtr,
- uint8 *pu8AttributeControlBits,
- // 2019.06.07 TrungTQ ADD
- tsCLD_WindowCoveringCustomDataStructure *psCustomDataStructure
- // 2019.06.07 TrungTQ END
- ) {
- #ifdef STRICT_PARAM_CHECK
- /* Parameter check */
- if ((psClusterInstance == NULL) || (psClusterDefinition == NULL)) {
- return E_ZCL_ERR_PARAMETER_NULL;
- }
- #endif /* STRICT_PARAM_CHECK */
- // cluster data
- vZCL_InitializeClusterInstance(
- psClusterInstance,
- bIsServer,
- psClusterDefinition,
- pvEndPointSharedStructPtr,
- pu8AttributeControlBits,
- psCustomDataStructure,
- eCLD_WindowCoveringCommandHandler);
- #ifdef WINDOWCONVERING_SERVER
- // 2019.06.07 TrungTQ ADD
- psCustomDataStructure->sCustomCallBackEvent.eEventType = E_ZCL_CBET_CLUSTER_CUSTOM;
- psCustomDataStructure->sCustomCallBackEvent.uMessage.sClusterCustomMessage.u16ClusterId = psClusterDefinition->u16ClusterEnum;
- psCustomDataStructure->sCustomCallBackEvent.uMessage.sClusterCustomMessage.pvCustomData = (void *)&psCustomDataStructure->sCallBackMessage;
- psCustomDataStructure->sCustomCallBackEvent.psClusterInstance = psClusterInstance;
- /* Window Convering Transition State */
- psCustomDataStructure->sTransition.eTransition = E_CLD_WINDOWCOVERING_TRANSITION_STOP;
- #if (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE) || \
- (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_DEGREE)
- psCustomDataStructure->sTransition.u8LastPositionPercentage = CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MIN;
- psCustomDataStructure->sTransition.u8CurrentPositionPercentage = CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MIN;
- psCustomDataStructure->sTransition.u8TargetPositionPercentage = CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MIN;
- #endif
- // 2019.06.07 TrungTQ END
- #endif /* WINDOWCONVERING_SERVER */
- if (NULL != psClusterInstance->pvEndPointSharedStructPtr) {
- if (bIsServer) {
- // 2019.06.06 TrungTQ ADD
- #ifdef WINDOWCOVERING_SERVER
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_WINDOW_COVERING_TYPE
- ((tsCLD_WindowCovering*)pvEndPointSharedStructPtr)->eWindowCoveringType = CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_WINDOW_COVERING_TYPE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_LIFT_CM
- ((tsCLD_WindowCovering*)pvEndPointSharedStructPtr)->u16PhysicalClosedLimitLiftCm = CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_LIFT_CM_MAX;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_LIFT_CM */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE
- ((tsCLD_WindowCovering*)pvEndPointSharedStructPtr)->u16PhysicalClosedLimitTiltDegree = CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE_MAX;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_CM
- ((tsCLD_WindowCovering*)pvEndPointSharedStructPtr)->u16CurrentPositionLiftCm = CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_LIFT_CM_MIN;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_CM */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_DEGREE
- ((tsCLD_WindowCovering*)pvEndPointSharedStructPtr)->u16CurrentPositionTiltDegree = CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_TILT_DEGREE_MIN;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_DEGREE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_LIFT
- ((tsCLD_WindowCovering*)pvEndPointSharedStructPtr)->u16NumberOfActuationsLift = CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_LIFT_MIN;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_LIFT */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_TILT
- ((tsCLD_WindowCovering*)pvEndPointSharedStructPtr)->u16NumberOfActuationsTilt = CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_TILT_MIN;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_TILT */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_CONFIG_STATUS
- ((tsCLD_WindowCovering*)pvEndPointSharedStructPtr)->u8ConfigStatus = CLD_WINDOWCOVERING_WINDOW_COVERING_CONFIG;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_CONFIG_STATUS */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE
- ((tsCLD_WindowCovering*)pvEndPointSharedStructPtr)->u8CurrentPositionLiftPercentage = CLD_WINDOWCOVERING_POSITION_LIFT_PERCENTAGE_MIN;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_PERCENTAGE
- ((tsCLD_WindowCovering*)pvEndPointSharedStructPtr)->u8CurrentPositionTiltPercentage = CLD_WINDOWCOVERING_POSITION_TILT_PERCENTAGE_MIN;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_PERCENTAGE */
- /* Window Covering Settings Attribute */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_LIFT_CM
- ((tsCLD_WindowCovering*)pvEndPointSharedStructPtr)->u16InstalledOpenLimitLiftCm = CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_LIFT_CM_MAX;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_LIFT_CM */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_LIFT_CM
- ((tsCLD_WindowCovering*)pvEndPointSharedStructPtr)->u16InstalledClosedLimitLiftCm = CLD_WINDOWCOVERING_INSTALLED_CLOSED_LIMIT_LIFT_CM_MIN;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_LIFT_CM */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_TILT_DEGREE
- ((tsCLD_WindowCovering*)pvEndPointSharedStructPtr)->u16InstalledOpenLimitTiltDegree = CLD_WINDOWCOVERING_INSTALLED_CLOSED_LIMIT_TILT_DEGREE_MAX;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_TILT_DEGREE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_TILT_DEGREE
- ((tsCLD_WindowCovering*)pvEndPointSharedStructPtr)->u16InstalledClosedLimitTiltDegree = CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_TILT_DEGREE_MIN;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_TILT_DEGREE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_VELOCITY
- ((tsCLD_WindowCovering*)pvEndPointSharedStructPtr)->u16Velocity = 0;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_VELOCITY */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_ACCELERATION_TIME_LIFT
- ((tsCLD_WindowCovering*)pvEndPointSharedStructPtr)->u16AccelrationTimeLift = 0;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_ACCELERATION_TIME_LIFT */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_DECELERATION_TIME_LIFT
- ((tsCLD_WindowCovering*)pvEndPointSharedStructPtr)->u16DecelerationTimeLift = 0;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_DECELERATION_TIME_LIFT */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_MODE
- ((tsCLD_WindowCovering*)pvEndPointSharedStructPtr)->u8Mode = 0;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_MODE */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_LIFT
- ((tsCLD_Basic*)pvEndPointSharedStructPtr)->sIntermediateSetpointsLift.u8MaxLength = sizeof(((tsCLD_Basic*)pvEndPointSharedStructPtr)->sIntermediateSetpointsLift);
- ((tsCLD_Basic*)pvEndPointSharedStructPtr)->sIntermediateSetpointsLift.u8Length = CLD_WINDOWCOVERING_ID_INTERMEDIATE_SETPOINTS_LIFT_SIZE;
- ((tsCLD_Basic*)pvEndPointSharedStructPtr)->sIntermediateSetpointsLift.pu8Data = ((tsCLD_Basic*)pvEndPointSharedStructPtr)->sIntermediateSetpointsLift;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_LIFT */
- #ifdef CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_TILT
- ((tsCLD_Basic*)pvEndPointSharedStructPtr)->sIntermediateSetpointsTilt.u8MaxLength = sizeof(((tsCLD_Basic*)pvEndPointSharedStructPtr)->sIntermediateSetpointsTilt);
- ((tsCLD_Basic*)pvEndPointSharedStructPtr)->sIntermediateSetpointsTilt.u8Length = CLD_WINDOWCOVERING_ID_INTERMEDIATE_SETPOINTS_TILT_SIZE;
- ((tsCLD_Basic*)pvEndPointSharedStructPtr)->sIntermediateSetpointsTilt.pu8Data = ((tsCLD_Basic*)pvEndPointSharedStructPtr)->sIntermediateSetpointsTilt;
- #endif /* CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_TILT */
- #endif /* WINDOWCONVERING_SERVER */
- // 2019.06.06 TrungTQ END
- }
- ((tsCLD_WindowCovering*)pvEndPointSharedStructPtr)->u16ClusterRevision = CLD_WINDOWCOVERING_CLUSTER_REVISION;
- }
- #ifdef WINDOWCONVERING_SERVER
- /* As this cluster has reportable attributes enable default reporting */
- if (bIsServer) {
- vZCL_SetDefaultReporting(psClusterInstance);
- }
- #endif /* WINDOWCONVERING_SERVER */
- return E_ZCL_SUCCESS;
- }
- // #endif /* #define CLD_WINDOWCOVERING */
- /****************************************************************************/
- /*** END OF FILE ***/
- /****************************************************************************/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement