Advertisement
tranthudo

WindowCovering.h

Jul 2nd, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 29.10 KB | None | 0 0
  1. /*****************************************************************************
  2. *
  3. * MODULE: Window Covering Cluster
  4. *
  5. * COMPONENT: WindowCovering.h
  6. *
  7. * AUTHOR: Vesa 'ISO-B' Ylikyl�
  8. * DESCRIPTION: Header for WindowCovering Client Cluster
  9. *
  10. * $HeadURL: $
  11. *
  12. * $Revision: 1 $
  13. *
  14. * $LastChangedBy: isob $
  15. *
  16. * $LastChangedDate: 2019-01-19 12:00:00 +0200 (Sat, 19 Jan 2018) $
  17. *
  18. * $Id: WindowCovering.h 1 2019-01-19 10:00:00Z isob $
  19. *
  20. ****************************************************************************/
  21.  
  22. #ifndef WINDOWCOVERING_H
  23. #define WINDOWCOVERING_H
  24.  
  25. #include <jendefs.h>
  26. #include "zcl.h"
  27. // 2019.06.11 TrungTQ ADD
  28. #include <zcl_customcommand.h>
  29. // 2019.06.11 TrungTQ END
  30. #include "zcl_options.h"
  31.  
  32. /****************************************************************************/
  33. /*** Macro Definitions ***/
  34. /****************************************************************************/
  35.  
  36. /* Cluster ID's */
  37. #define CLOSURE_CLUSTER_ID_WINDOWCOVERING 0x0102
  38.  
  39. /****************************************************************************/
  40. /* Window Covering Control Cluster - Optional Attributes */
  41. /* */
  42. /* Optional attributes are not implemented since client doesn't need those */
  43. /****************************************************************************/
  44.  
  45. //#define WINDOWCOVERING_SERVER
  46. //#define CLD_WINDOWCOVERING_WINDOW_COVERING_CONFIG (CLD_WINDOWCOVERING_CONFIG_OPERATIONAL_SUPPORTED | CLD_WINDOWCOVERING_CONFIG_CLOSED_CONTROL_TILT_SUPPORTED)
  47. //#define CLD_WINDOWCOVERING_WINDOW_COVERING_MODE (0)
  48. //#define CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_TILT_BLIND_TILT_AND_LIFT
  49.  
  50. #if (defined CLD_WINDOWCOVERING) && (defined WINDOWCOVERING_CLIENT) && !(defined WINDOWCOVERING_SERVER)
  51. #ifndef CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE
  52. #define CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE (0x0000)
  53. #endif /* CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE */
  54. #else
  55. #undef CLD_WINDOWCOVERING_ATTR_ID_WINDOW_COVERING_TYPE
  56. #define CLD_WINDOWCOVERING_ATTR_ID_WINDOW_COVERING_TYPE
  57.  
  58. #undef CLD_WINDOWCOVERING_ATTR_ID_MODE
  59. #define CLD_WINDOWCOVERING_ATTR_ID_MODE
  60.  
  61. #ifndef CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE
  62. #error You Must Have CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE defined in zcl_options.h
  63. #endif /* CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE */
  64.  
  65. #ifndef CLD_WINDOWCOVERING_WINDOW_COVERING_CONFIG
  66. #error You Must Have CLD_WINDOWCOVERING_WINDOW_COVERING_CONFIG defined in zcl_options.h
  67. #endif
  68.  
  69. #ifndef CLD_WINDOWCOVERING_WINDOW_COVERING_MODE
  70. #error You Must Have CLD_WINDOWCOVERING_WINDOW_COVERING_MODE defined in zcl_options.h
  71. #endif
  72. #endif
  73.  
  74. #if CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE == E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_ROLLERSHADE
  75. #undef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
  76. #define CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
  77. #elif CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE == E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_ROLLERSHADE_2_MOTOR
  78. #undef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
  79. #define CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
  80. #elif CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE == E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_ROLLERSHADE_EXTERIOR
  81. #undef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
  82. #define CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
  83. #elif CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE == E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_ROLLERSHADE_EXTERIOR_2_MOTOR
  84. #undef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
  85. #define CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
  86. #elif CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE == E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_DRAPERY
  87. #undef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
  88. #define CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
  89. #elif CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE == E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_AWNING
  90. #undef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
  91. #define CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
  92. #elif CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE == E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_PROJECTOR_SCREEN
  93. #undef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_TILT
  94. #define CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_TILT
  95. #elif CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE == E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_TILT_BLIND_TILT_ONLY
  96. #undef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_TILT
  97. #define CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_TILT
  98. #elif CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE == E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_TILT_BLIND_TILT_AND_LIFT
  99. #undef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
  100. #define CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
  101.  
  102. #undef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_TILT
  103. #define CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_TILT
  104. #else
  105. #error You Must Have CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE defined in zcl_options.h
  106. #endif
  107.  
  108. #ifdef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT
  109. #undef CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_OPEN_LIMIT_LIFT_CM
  110. #define CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_OPEN_LIMIT_LIFT_CM
  111.  
  112. #undef CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_LIFT_CM
  113. #define CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_LIFT_CM
  114.  
  115. #undef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_LIFT_CM
  116. #define CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_LIFT_CM
  117.  
  118. #undef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_LIFT_CM
  119. #define CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_LIFT_CM
  120.  
  121. #undef CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE
  122. #define CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE
  123. #endif /* CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_LIFT */
  124.  
  125. #ifdef CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_TILT
  126. #undef CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_OPEN_LIMIT_TILT_DEGREE
  127. #define CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_OPEN_LIMIT_TILT_DEGREE
  128.  
  129. #undef CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE
  130. #define CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE
  131.  
  132. #undef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_TILT_DEGREE
  133. #define CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_TILT_DEGREE
  134.  
  135. #undef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_TILT_DEGREE
  136. #define CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_TILT_DEGREE
  137.  
  138. #undef CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_PERCENTAGE
  139. #define CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_PERCENTAGE
  140. #endif /* CLD_WINDOWCOVERING_WINDOW_COVERING_SUPPORT_TILT */
  141.  
  142. #ifndef CLD_WINDOWCOVERING_CLUSTER_REVISION
  143. #define CLD_WINDOWCOVERING_CLUSTER_REVISION (1)
  144. #endif /* CLD_WINDOWCOVERING_CLUSTER_REVISION */
  145.  
  146. #ifndef CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_LIFT_CM_MIN
  147. #define CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_LIFT_CM_MIN (0)
  148. #endif /* CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_LIFT_CM_MIN */
  149.  
  150. #ifndef CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_LIFT_CM_MAX
  151. #define CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_LIFT_CM_MAX (0xFFFF)
  152. #endif /* CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_LIFT_CM_MAX */
  153.  
  154. #ifndef CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE_MIN
  155. #define CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE_MIN (0)
  156. #endif /* CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE_MIN */
  157.  
  158. #ifndef CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE_MAX
  159. #define CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE_MAX (0xFFFF)
  160. #endif /* CLD_WINDOWCOVERING_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE_MAX */
  161.  
  162. #ifndef CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_LIFT_MIN
  163. #define CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_LIFT_MIN (0)
  164. #endif /* CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_LIFT_MIN */
  165.  
  166. #ifndef CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_LIFT_MAX
  167. #define CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_LIFT_MAX (0xFFFF)
  168. #endif /* CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_LIFT_MAX */
  169.  
  170. #ifndef CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_TILT_MIN
  171. #define CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_TILT_MIN (0)
  172. #endif /* CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_TILT_MIN */
  173.  
  174. #ifndef CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_TILT_MAX
  175. #define CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_TILT_MAX (0xFFFF)
  176. #endif /* CLD_WINDOWCOVERING_NUMBER_OF_ACTUATIONS_TILT_MAX */
  177.  
  178. #ifndef CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MIN
  179. #define CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MIN (0)
  180. #endif /* CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MIN */
  181.  
  182. #ifndef CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MAX
  183. #define CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MAX (100)
  184. #endif /* CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MAX */
  185.  
  186. #ifndef CLD_WINDOWCOVERING_POSITION_LIFT_PERCENTAGE_MIN
  187. #define CLD_WINDOWCOVERING_POSITION_LIFT_PERCENTAGE_MIN (CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MIN)
  188. #endif /* CLD_WINDOWCOVERING_POSITION_LIFT_PERCENTAGE_MIN */
  189.  
  190. #ifndef CLD_WINDOWCOVERING_POSITION_LIFT_PERCENTAGE_MAX
  191. #define CLD_WINDOWCOVERING_POSITION_LIFT_PERCENTAGE_MAX (CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MAX)
  192. #endif /* CLD_WINDOWCOVERING_POSITION_LIFT_PERCENTAGE_MAX */
  193.  
  194. #ifndef CLD_WINDOWCOVERING_POSITION_TILT_PERCENTAGE_MIN
  195. #define CLD_WINDOWCOVERING_POSITION_TILT_PERCENTAGE_MIN (CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MIN)
  196. #endif /* CLD_WINDOWCOVERING_POSITION_LIFT_PERCENTAGE_MIN */
  197.  
  198. #ifndef CLD_WINDOWCOVERING_POSITION_TILT_PERCENTAGE_MAX
  199. #define CLD_WINDOWCOVERING_POSITION_TILT_PERCENTAGE_MAX (CLD_WINDOWCOVERING_POSITION_PERCENTAGE_MAX)
  200. #endif /* CLD_WINDOWCOVERING_POSITION_TILT_PERCENTAGE_MAX */
  201.  
  202. #ifndef CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_LIFT_CM_MIN
  203. #define CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_LIFT_CM_MIN (0)
  204. #endif /* CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_LIFT_CM_MIN */
  205.  
  206. #ifndef CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_LIFT_CM_MAX
  207. #define CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_LIFT_CM_MAX (0xFFFF)
  208. #endif /* CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_LIFT_CM_MAX */
  209.  
  210. #ifndef CLD_WINDOWCOVERING_INSTALLED_CLOSED_LIMIT_LIFT_CM_MIN
  211. #define CLD_WINDOWCOVERING_INSTALLED_CLOSED_LIMIT_LIFT_CM_MIN (0)
  212. #endif /* CLD_WINDOWCOVERING_INSTALLED_CLOSE_LIMIT_LIFT_CM_MIN */
  213.  
  214. #ifndef CLD_WINDOWCOVERING_INSTALLED_CLOSED_LIMIT_LIFT_CM_MAX
  215. #define CLD_WINDOWCOVERING_INSTALLED_CLOSED_LIMIT_LIFT_CM_MAX (0xFFFF)
  216. #endif /* CLD_WINDOWCOVERING_INSTALLED_CLOSE_LIMIT_LIFT_CM_MAX */
  217.  
  218. #ifndef CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_TILT_DEGREE_MIN
  219. #define CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_TILT_DEGREE_MIN (0)
  220. #endif /* CLD_WINDOWCOVERING_INSTALLED_OPEN_LIMIT_TILT_DEGREE_MIN */
  221.  
  222. #ifndef CLD_WINDOWCOVERING_INSTALLED_CLOSED_LIMIT_TILT_DEGREE_MAX
  223. #define CLD_WINDOWCOVERING_INSTALLED_CLOSED_LIMIT_TILT_DEGREE_MAX (0xFFFF)
  224. #endif /* CLD_WINDOWCOVERING_INSTALLED_CLOSED_LIMIT_TILT_DEGREE_MAX */
  225.  
  226. /* Bit Definitions For Config/Status Attribute */
  227. #define CLD_WINDOWCOVERING_CONFIG_OPERATIONAL_SUPPORTED (0x01 << 0)
  228. #define CLD_WINDOWCOVERING_CONFIG_ONLINE_SUPPORTED (0x01 << 1)
  229. #define CLD_WINDOWCOVERING_CONFIG_REVERSAL_SUPPORTED (0x01 << 2)
  230. #define CLD_WINDOWCOVERING_CONFIG_CLOSED_CONTROL_LIFT_SUPPORTED (0x01 << 3)
  231. #define CLD_WINDOWCOVERING_CONFIG_CLOSED_CONTROL_TILT_SUPPORTED (0x01 << 4)
  232. #define CLD_WINDOWCOVERING_CONFIG_ENCODER_CONTROLLED_LIFT_SUPPORTED (0x01 << 5)
  233. #define CLD_WINDOWCOVERING_CONFIG_ENCODER_CONTROLLED_TILT_SUPPORTED (0x01 << 6)
  234.  
  235. /* Bit Definitions For Deceleration Mode Attribute */
  236. #define CLD_WINDOWCOVERING_MODE_MOTOR_DIRECTION_IS_REVERSED (0x01 << 0)
  237. #define CLD_WINDOWCOVERING_MODE_RUN_IN_CALIBRATION_MODE (0x01 << 1)
  238. #define CLD_WINDOWCOVERING_MODE_MOTOR_IS_RUNNING_IN_MAINTENANCE (0x01 << 2)
  239. #define CLD_WINDOWCOVERING_MODE_LEDS_WILL_DISPLAY_FEEDBACK (0x01 << 3)
  240.  
  241. /****************************************************************************/
  242. /*** Type Definitions ***/
  243. /****************************************************************************/
  244.  
  245. /* Window Covering Command - Payload */
  246. typedef enum {
  247. E_CLD_WINDOWCOVERING_CMD_UP_OPEN = 0x00, /* Mandatory */
  248. E_CLD_WINDOWCOVERING_CMD_DOWN_CLOSE, /* Mandatory */
  249. E_CLD_WINDOWCOVERING_CMD_STOP, /* Mandatory */
  250. E_CLD_WINDOWCOVERING_CMD_GO_TO_LIFT_VALUE = 0x04, /* Optional */
  251. E_CLD_WINDOWCOVERING_CMD_GO_TO_LIFT_PERCENTAGE, /* Optional */
  252. E_CLD_WINDOWCOVERING_CMD_GO_TO_TILT_VALUE = 0x07, /* Optional */
  253. E_CLD_WINDOWCOVERING_CMD_GO_TO_TILT_PERCENTAGE, /* Optional */
  254. // 2019.06.07 TrungTQ ADD
  255. E_CLD_WINDOWCOVERING_CMD_NONE
  256. // 2019.06.07 TrungTQ END
  257. } teCLD_WindowCovering_CommandID;
  258.  
  259. typedef enum {
  260. /* Window Covering attribute set: Information */
  261. E_CLD_WINDOWCOVERING_ATTR_ID_WINDOW_COVERING_TYPE = 0x00, /* 0.Mandatory */
  262. E_CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_LIFT_CM, /* 1.Optional */
  263. E_CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE, /* 2.Optional */
  264. E_CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_CM, /* 3.Optional */
  265. E_CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_DEGREE, /* 4.Optional */
  266. E_CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_LIFT, /* 5.Optional */
  267. E_CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_TILT, /* 6.Optional */
  268. E_CLD_WINDOWCOVERING_ATTR_ID_CONFIG_STATUS, /* 7.Optional */
  269. E_CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE, /* 8.Mandatory if */
  270. E_CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_PERCENTAGE, /* 9.Mandatory if */
  271. /* Window Covering attribute set: Settings */
  272. E_CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_LIFT_CM = 0x10, /* 0.Mandatory if */
  273. E_CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_LIFT_CM, /* 1.Mandatory if */
  274. E_CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_TILT_DEGREE, /* 2.Mandatory if */
  275. E_CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_TILT_DEGREE, /* 3.Mandatory if */
  276. E_CLD_WINDOWCOVERING_ATTR_ID_VELOCITY, /* 4.Optional */
  277. E_CLD_WINDOWCOVERING_ATTR_ID_ACCELERATION_TIME_LIFT, /* 5.Optional */
  278. E_CLD_WINDOWCOVERING_ATTR_ID_DECELERATION_TIME_LIFT, /* 6.Optional */
  279. E_CLD_WINDOWCOVERING_ATTR_ID_MODE, /* 7.Mandatory */
  280. E_CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_LIFT, /* 8.Optional */
  281. E_CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_TILT, /* 9.Optional */
  282. } teCLD_WindowCovering_Cluster_AttrID;
  283.  
  284. /* Window Covering Type */
  285. typedef enum {
  286. E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_ROLLERSHADE = 0x00,
  287. E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_ROLLERSHADE_2_MOTOR,
  288. E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_ROLLERSHADE_EXTERIOR,
  289. E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_ROLLERSHADE_EXTERIOR_2_MOTOR,
  290. E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_DRAPERY,
  291. E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_AWNING,
  292. E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_SHUTTER,
  293. E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_TILT_BLIND_TILT_ONLY,
  294. E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_TILT_BLIND_TILT_AND_LIFT,
  295. E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_PROJECTOR_SCREEN,
  296. E_CLD_WINDOWCOVERING_WINDOW_COVERING_TYPE_UNDEFINED = 0xFF
  297. } teCLD_WindowCovering_WindowCoveringType;
  298.  
  299. typedef enum {
  300. E_CLD_WINDOWCOVERING_TRANSITION_UP_OPEN = 0x00,
  301. E_CLD_WINDOWCOVERING_TRANSITION_DOWN_CLOSE,
  302. E_CLD_WINDOWCOVERING_TRANSITION_STOP,
  303. E_CLD_WINDOWCOVERING_TRANSITION_GO_TO_LIFT_VALUE = 0x04,
  304. E_CLD_WINDOWCOVERING_TRANSITION_GO_TO_LIFT_PERCENTAGE,
  305. E_CLD_WINDOWCOVERING_TRANSITION_GO_TO_TILT_VALUE = 0x07,
  306. E_CLD_WINDOWCOVERING_TRANSITION_GO_TO_TILT_PERCENTAGE,
  307. E_CLD_WINDOWCOVERING_TRANSITION_NONE
  308. } teCLD_WindowCovering_Transition;
  309.  
  310. // 2019.06.07 TrungTQ END
  311.  
  312. /* Window Covering Cluster */
  313. typedef struct {
  314.  
  315. // 2019.06.07 TrungTQ ADD
  316. #ifdef WINDOWCOVERING_SERVER
  317. /* Window Covering Information Attribute */
  318. #ifdef CLD_WINDOWCOVERING_ATTR_ID_WINDOW_COVERING_TYPE
  319. zenum8 eWindowCoveringType;
  320. #endif /* CLD_WINDOWCOVERING_ATTR_ID_WINDOW_COVERING_TYPE */
  321.  
  322. #ifdef CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_LIFT_CM
  323. zuint16 u16PhysicalClosedLimitLiftCm;
  324. #endif /* CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_LIFT_CM */
  325.  
  326. #ifdef CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE
  327. zuint16 u16PhysicalClosedLimitTiltDegree;
  328. #endif /* CLD_WINDOWCOVERING_ATTR_ID_PHYSICAL_CLOSED_LIMIT_TILT_DEGREE */
  329.  
  330. #ifdef CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_CM
  331. zuint16 u16CurrentPositionLiftCm;
  332. #endif /* CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_CM */
  333.  
  334. #ifdef CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_DEGREE
  335. zuint16 u16CurrentPositionTiltDegree;
  336. #endif /* CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_DEGREE */
  337.  
  338. #ifdef CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_LIFT
  339. zuint16 u16NumberOfActuationsLift;
  340. #endif /* CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_LIFT */
  341.  
  342. #ifdef CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_TILT
  343. zuint16 u16NumberOfActuationsTilt;
  344. #endif /* CLD_WINDOWCOVERING_ATTR_ID_NUMBER_OF_ACTUATIONS_TILT */
  345.  
  346. #ifdef CLD_WINDOWCOVERING_ATTR_ID_CONFIG_STATUS
  347. zbmap8 u8ConfigStatus;
  348. #endif /* CLD_WINDOWCOVERING_ATTR_ID_CONFIG_STATUS */
  349.  
  350. #ifdef CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE
  351. zuint8 u8CurrentPositionLiftPercentage;
  352. #endif /* CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE */
  353.  
  354. #ifdef CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_PERCENTAGE
  355. zuint8 u8CurrentPositionTiltPercentage;
  356. #endif /* CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_PERCENTAGE */
  357.  
  358. /* Window Covering Settings Attribute */
  359. #ifdef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_LIFT_CM
  360. zuint16 u16InstalledOpenLimitLiftCm;
  361. #endif /* CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_LIFT_CM */
  362.  
  363. #ifdef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_LIFT_CM
  364. zuint16 u16InstalledClosedLimitLiftCm;
  365. #endif /* CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_LIFT_CM */
  366.  
  367. #ifdef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_TILT_DEGREE
  368. zuint16 u16InstalledOpenLimitTiltDegree;
  369. #endif /* CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_OPEN_LIMIT_TILT_DEGREE */
  370.  
  371. #ifdef CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_TILT_DEGREE
  372. zuint16 u16InstalledClosedLimitTiltDegree;
  373. #endif /* CLD_WINDOWCOVERING_ATTR_ID_INSTALLED_CLOSED_LIMIT_TILT_DEGREE */
  374.  
  375. #ifdef CLD_WINDOWCOVERING_ATTR_ID_VELOCITY
  376. zuint16 u16Velocity;
  377. #endif /* CLD_WINDOWCOVERING_ATTR_ID_VELOCITY */
  378.  
  379. #ifdef CLD_WINDOWCOVERING_ATTR_ID_ACCELERATION_TIME_LIFT
  380. zuint16 u16AccelrationTimeLift;
  381. #endif /* CLD_WINDOWCOVERING_ATTR_ID_ACCELERATION_TIME_LIFT */
  382.  
  383. #ifdef CLD_WINDOWCOVERING_ATTR_ID_DECELERATION_TIME_LIFT
  384. zuint16 u16DecelerationTimeLift;
  385. #endif /* CLD_WINDOWCOVERING_ATTR_ID_DECELERATION_TIME_LIFT */
  386.  
  387. #ifdef CLD_WINDOWCOVERING_ATTR_ID_MODE
  388. zbmap8 u8Mode;
  389. #endif /* CLD_WINDOWCOVERING_ATTR_ID_MODE */
  390.  
  391. #ifdef CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_LIFT
  392. tsZCL_OctetString sIntermediateSetpointsLift;
  393. uint8 au8IntermediateSetpointsLift[32];
  394. #endif /* CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_LIFT */
  395.  
  396. #ifdef CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_TILT
  397. tsZCL_OctetString sIntermediateSetpointsTilt;
  398. uint8 au8IntermediateSetpointsTilt[32];
  399. #endif /* CLD_WINDOWCOVERING_ATTR_ID_INTERMEDIATE_SETPOINTS_TILT */
  400.  
  401. #endif /* WINDOWCOVERING_SERVER */
  402. // 2019.06.07 TrungTQ END
  403.  
  404. zuint16 u16ClusterRevision;
  405. } tsCLD_WindowCovering;
  406.  
  407. /* Go To (Tilt|Lift) Value - Command request payload */
  408. typedef struct {
  409. uint16 u16Value;
  410. } tsCLD_WindowCovering_GoToValueRequestPayload;
  411.  
  412. /* Go To (Tilt|Lift) Percentage - Command request payload */
  413. typedef struct {
  414. uint8 u8Percentage;
  415. } tsCLD_WindowCovering_GoToPercentageRequestPayload;
  416.  
  417. typedef struct {
  418. zenum8 eStatus;
  419. } tsCLD_WindowCovering_DefaultResponsePayload;
  420.  
  421. /* Definition of Window Covering Callback Event Structure */
  422. typedef struct {
  423. uint8 u8CommandId;
  424. union {
  425. // 2019.06.07 TrungTQ ADD
  426. #if (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_CM) || \
  427. (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_DEGREE)
  428. tsCLD_WindowCovering_GoToValueRequestPayload *psGoToValueRequestPayload;
  429. #endif
  430.  
  431. #if (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE) || \
  432. (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_PERCENTAGE)
  433. tsCLD_WindowCovering_GoToPercentageRequestPayload *psGoToPercentageRequestPayload;
  434. #endif
  435. // 2019.06.07 TrungTQ END
  436.  
  437. tsCLD_WindowCovering_DefaultResponsePayload *psDefaultResponsePayload;
  438. } uMessage;
  439. } tsCLD_WindowCoveringCallBackMessage;
  440.  
  441. // 2019.06.07 TrungTQ ADD
  442. /* Only support Percentage now */
  443. typedef struct {
  444. teCLD_WindowCovering_Transition eTransition;
  445. #if (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE) || \
  446. (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_DEGREE)
  447. // 2019.06.18 TrungTQ DEL
  448. // uint8 u8LastPositionPercentage;
  449. // 2019.06.18 TrungTQ END
  450. uint8 u8CurrentPositionPercentage;
  451. uint8 u8TargetPositionPercentage;
  452. #endif
  453. } tsCLD_WindowCovering_Transition;
  454.  
  455. typedef struct {
  456. tsCLD_WindowCovering_Transition sTransition;
  457. tsZCL_ReceiveEventAddress sReceiveEventAddress;
  458. tsZCL_CallBackEvent sCustomCallBackEvent;
  459. tsCLD_WindowCoveringCallBackMessage sCallBackMessage;
  460. } tsCLD_WindowCoveringCustomDataStructure;
  461.  
  462. // 2019.06.07 TrungTQ END
  463.  
  464. /****************************************************************************/
  465. /*** Exported Functions ***/
  466. /****************************************************************************/
  467.  
  468. PUBLIC teZCL_Status eCLD_WindowCoveringCreateWindowCovering(
  469. tsZCL_ClusterInstance *psClusterInstance,
  470. bool_t bIsServer,
  471. tsZCL_ClusterDefinition *psClusterDefinition,
  472. void *pvEndPointSharedStructPtr,
  473. uint8 *pu8AttributeControlBits,
  474. tsCLD_WindowCoveringCustomDataStructure *psCustomDataStructure
  475. // 2019.06.07 TrungTQ END
  476. );
  477.  
  478. #ifdef WINDOWCOVERING_CLIENT
  479. PUBLIC teZCL_Status eCLD_WindowCoveringCommandOpenCloseStopRequestSend(
  480. uint8 u8SourceEndPointId,
  481. uint8 u8DestinationEndPointId,
  482. tsZCL_Address *psDestinationAddress,
  483. uint8 *pu8TransactionSequenceNumber,
  484. teCLD_WindowCovering_CommandID eCommand);
  485.  
  486. PUBLIC teZCL_Status eCLD_WindowCoveringCommandGotoValueRequestSend(
  487. uint8 u8SourceEndPointId,
  488. uint8 u8DestinationEndPointId,
  489. tsZCL_Address *psDestinationAddress,
  490. uint8 *pu8TransactionSequenceNumber,
  491. teCLD_WindowCovering_CommandID eCommand,
  492. tsCLD_WindowCovering_GoToValueRequestPayload *psPayload);
  493.  
  494. PUBLIC teZCL_Status eCLD_WindowCoveringCommandGotoPercentageRequestSend(
  495. uint8 u8SourceEndPointId,
  496. uint8 u8DestinationEndPointId,
  497. tsZCL_Address *psDestinationAddress,
  498. uint8 *pu8TransactionSequenceNumber,
  499. teCLD_WindowCovering_CommandID eCommand,
  500. tsCLD_WindowCovering_GoToPercentageRequestPayload *psPayload);
  501. #endif /* WINDOWCOVERING_CLIENT */
  502.  
  503. #ifdef WINDOWCOVERING_SERVER
  504. PUBLIC teZCL_Status eCLD_WindowCoveringCommandOpenCLoseStopRequestReceive(
  505. ZPS_tsAfEvent *pZPSevent,
  506. uint8 *pu8TransactionSequenceNumber);
  507.  
  508. #if (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_CM) || \
  509. (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_DEGREE)
  510. PUBLIC teZCL_Status eCLD_WindowCoveringHandleGotoValueRequestReceive(
  511. ZPS_tsAfEvent *pZPSevent,
  512. uint8 *pu8TransactionSequenceNumber,
  513. tsCLD_WindowCovering_GoToValueRequestPayload *psPayload
  514. );
  515. #endif /**/
  516.  
  517. #if (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_LIFT_PERCENTAGE) || \
  518. (defined CLD_WINDOWCOVERING_ATTR_ID_CURRENT_POSITION_TILT_PERCENTAGE)
  519. PUBLIC teZCL_Status eCLD_WindowCoveringHandleGotoPercentageRequestReceive(
  520. ZPS_tsAfEvent *pZPSevent,
  521. uint8 *pu8TransactionSequenceNumber,
  522. tsCLD_WindowCovering_GoToPercentageRequestPayload *psPayload
  523. );
  524. #endif /* */
  525.  
  526. PUBLIC teZCL_Status eCLD_WindowCoveringSetPercentagePosition(
  527. uint8 u8SourceEndPointId,
  528. uint8 u8PercentagePosition,
  529. teCLD_WindowCovering_Transition eTransition
  530. );
  531.  
  532. PUBLIC teZCL_Status eCLD_WindowCoveringGetPercentagePosition(
  533. uint8 u8SourceEndPointId,
  534. uint8 *u8Percentage
  535. );
  536.  
  537. #endif /* WINDOWCOVERING_SERVER */
  538.  
  539. /****************************************************************************/
  540. /*** External Variables ***/
  541. /****************************************************************************/
  542. extern tsZCL_ClusterDefinition sCLD_WindowCovering;
  543. extern const tsZCL_AttributeDefinition asCLD_WindowCoveringClusterAttributeDefinitions[];
  544. extern uint8 au8WindowCoveringAttributeControlBits[];
  545.  
  546. /****************************************************************************/
  547. /*** END OF FILE ***/
  548. /****************************************************************************/
  549.  
  550. #endif /* WINDOWCOVERING_H */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement