13#ifndef PACKET_ZBEE_ZCL_H
14#define PACKET_ZBEE_ZCL_H
20 bool disable_default_resp;
29#define ZBEE_ZCL_CMD_READ_ATTR 0x00
30#define ZBEE_ZCL_CMD_READ_ATTR_RESP 0x01
31#define ZBEE_ZCL_CMD_WRITE_ATTR 0x02
32#define ZBEE_ZCL_CMD_WRITE_ATTR_UNDIVIDED 0x03
33#define ZBEE_ZCL_CMD_WRITE_ATTR_RESP 0x04
34#define ZBEE_ZCL_CMD_WRITE_ATTR_NO_RESP 0x05
35#define ZBEE_ZCL_CMD_CONFIG_REPORT 0x06
36#define ZBEE_ZCL_CMD_CONFIG_REPORT_RESP 0x07
37#define ZBEE_ZCL_CMD_READ_REPORT_CONFIG 0x08
38#define ZBEE_ZCL_CMD_READ_REPORT_CONFIG_RESP 0x09
39#define ZBEE_ZCL_CMD_REPORT_ATTR 0x0a
40#define ZBEE_ZCL_CMD_DEFAULT_RESP 0x0b
41#define ZBEE_ZCL_CMD_DISCOVER_ATTR 0x0c
42#define ZBEE_ZCL_CMD_DISCOVER_ATTR_RESP 0x0d
43#define ZBEE_ZCL_CMD_READ_ATTR_STRUCT 0x0e
44#define ZBEE_ZCL_CMD_WRITE_ATTR_STRUCT 0x0f
45#define ZBEE_ZCL_CMD_WRITE_ATTR_STRUCT_RESP 0x10
46#define ZBEE_ZCL_CMD_DISCOVER_CMDS_REC 0x11
47#define ZBEE_ZCL_CMD_DISCOVER_CMDS_REC_RESP 0x12
48#define ZBEE_ZCL_CMD_DISCOVER_CMDS_GEN 0x13
49#define ZBEE_ZCL_CMD_DISCOVER_CMDS_GEN_RESP 0x14
50#define ZBEE_ZCL_CMD_DISCOVER_ATTR_EXTENDED 0x15
51#define ZBEE_ZCL_CMD_DISCOVER_ATTR_EXTENDED_RESP 0x16
55#define ZBEE_ZCL_NO_DATA 0x00
57#define ZBEE_ZCL_8_BIT_DATA 0x08
58#define ZBEE_ZCL_16_BIT_DATA 0x09
59#define ZBEE_ZCL_24_BIT_DATA 0x0a
60#define ZBEE_ZCL_32_BIT_DATA 0x0b
61#define ZBEE_ZCL_40_BIT_DATA 0x0c
62#define ZBEE_ZCL_48_BIT_DATA 0x0d
63#define ZBEE_ZCL_56_BIT_DATA 0x0e
64#define ZBEE_ZCL_64_BIT_DATA 0x0f
66#define ZBEE_ZCL_BOOLEAN 0x10
68#define ZBEE_ZCL_8_BIT_BITMAP 0x18
69#define ZBEE_ZCL_16_BIT_BITMAP 0x19
70#define ZBEE_ZCL_24_BIT_BITMAP 0x1a
71#define ZBEE_ZCL_32_BIT_BITMAP 0x1b
72#define ZBEE_ZCL_40_BIT_BITMAP 0x1c
73#define ZBEE_ZCL_48_BIT_BITMAP 0x1d
74#define ZBEE_ZCL_56_BIT_BITMAP 0x1e
75#define ZBEE_ZCL_64_BIT_BITMAP 0x1f
77#define ZBEE_ZCL_8_BIT_UINT 0x20
78#define ZBEE_ZCL_16_BIT_UINT 0x21
79#define ZBEE_ZCL_24_BIT_UINT 0x22
80#define ZBEE_ZCL_32_BIT_UINT 0x23
81#define ZBEE_ZCL_40_BIT_UINT 0x24
82#define ZBEE_ZCL_48_BIT_UINT 0x25
83#define ZBEE_ZCL_56_BIT_UINT 0x26
84#define ZBEE_ZCL_64_BIT_UINT 0x27
86#define ZBEE_ZCL_8_BIT_INT 0x28
87#define ZBEE_ZCL_16_BIT_INT 0x29
88#define ZBEE_ZCL_24_BIT_INT 0x2a
89#define ZBEE_ZCL_32_BIT_INT 0x2b
90#define ZBEE_ZCL_40_BIT_INT 0x2c
91#define ZBEE_ZCL_48_BIT_INT 0x2d
92#define ZBEE_ZCL_56_BIT_INT 0x2e
93#define ZBEE_ZCL_64_BIT_INT 0x2f
95#define ZBEE_ZCL_8_BIT_ENUM 0x30
96#define ZBEE_ZCL_16_BIT_ENUM 0x31
98#define ZBEE_ZCL_SEMI_FLOAT 0x38
99#define ZBEE_ZCL_SINGLE_FLOAT 0x39
100#define ZBEE_ZCL_DOUBLE_FLOAT 0x3a
102#define ZBEE_ZCL_OCTET_STRING 0x41
103#define ZBEE_ZCL_CHAR_STRING 0x42
104#define ZBEE_ZCL_LONG_OCTET_STRING 0x43
105#define ZBEE_ZCL_LONG_CHAR_STRING 0x44
107#define ZBEE_ZCL_ARRAY 0x48
108#define ZBEE_ZCL_STRUCT 0x4c
110#define ZBEE_ZCL_SET 0x50
111#define ZBEE_ZCL_BAG 0x51
113#define ZBEE_ZCL_TIME 0xe0
114#define ZBEE_ZCL_DATE 0xe1
115#define ZBEE_ZCL_UTC 0xe2
117#define ZBEE_ZCL_CLUSTER_ID 0xe8
118#define ZBEE_ZCL_ATTR_ID 0xe9
119#define ZBEE_ZCL_BACNET_OID 0xea
121#define ZBEE_ZCL_IEEE_ADDR 0xf0
122#define ZBEE_ZCL_SECURITY_KEY 0xf1
124#define ZBEE_ZCL_UNKNOWN 0xff
127#define ZBEE_ZCL_DIR_REPORTED 0
128#define ZBEE_ZCL_DIR_RECEIVED 1
130#define IS_ANALOG_SUBTYPE(x) ( (x & 0xF0) == 0x20 || (x & 0xF8) == 0x38 || (x & 0xF8) == 0xE0 )
133#define ZBEE_ZCL_STAT_SUCCESS 0x00
134#define ZBEE_ZCL_STAT_FAILURE 0x01
136#define ZBEE_ZCL_STAT_NOT_AUTHORIZED 0x7e
137#define ZBEE_ZCL_STAT_RESERVED_FIELD_NOT_ZERO 0x7f
138#define ZBEE_ZCL_STAT_MALFORMED_CMD 0x80
139#define ZBEE_ZCL_STAT_UNSUP_CLUSTER_CMD 0x81
140#define ZBEE_ZCL_STAT_UNSUP_GENERAL_CMD 0x82
141#define ZBEE_ZCL_STAT_UNSUP_MFR_CLUSTER_CMD 0x83
142#define ZBEE_ZCL_STAT_UNSUP_MFR_GENERAL_CMD 0x84
143#define ZBEE_ZCL_STAT_INVALID_FIELD 0x85
144#define ZBEE_ZCL_STAT_UNSUPPORTED_ATTR 0x86
145#define ZBEE_ZCL_STAT_INVALID_VALUE 0x87
146#define ZBEE_ZCL_STAT_READ_ONLY 0x88
147#define ZBEE_ZCL_STAT_INSUFFICIENT_SPACE 0x89
148#define ZBEE_ZCL_STAT_DUPLICATE_EXISTS 0x8a
149#define ZBEE_ZCL_STAT_NOT_FOUND 0x8b
150#define ZBEE_ZCL_STAT_UNREPORTABLE_ATTR 0x8c
151#define ZBEE_ZCL_STAT_INVALID_DATA_TYPE 0x8d
152#define ZBEE_ZCL_STAT_INVALID_SELECTOR 0x8e
153#define ZBEE_ZCL_STAT_WRITE_ONLY 0x8f
154#define ZBEE_ZCL_STAT_INCONSISTENT_STARTUP_STATE 0x90
155#define ZBEE_ZCL_STAT_DEFINED_OUT_OF_BAND 0x91
156#define ZBEE_ZCL_STAT_INCONSISTENT 0x92
157#define ZBEE_ZCL_STAT_ACTION_DENIED 0x93
158#define ZBEE_ZCL_STAT_TIMEOUT 0x94
159#define ZBEE_ZCL_STAT_OTA_ABORT 0x95
160#define ZBEE_ZCL_STAT_OTA_INVALID_IMAGE 0x96
161#define ZBEE_ZCL_STAT_OTA_WAIT_FOR_DATA 0x97
162#define ZBEE_ZCL_STAT_OTA_NO_IMAGE_AVAILABLE 0x98
163#define ZBEE_ZCL_STAT_OTA_REQUIRE_MORE_IMAGE 0x99
164#define ZBEE_ZCL_STAT_OTA_NOTIFICATION_PENDING 0x9a
165#define ZBEE_ZCL_STAT_HARDWARE_FAILURE 0xc0
166#define ZBEE_ZCL_STAT_SOFTWARE_FAILURE 0xc1
167#define ZBEE_ZCL_STAT_CALIBRATION_ERROR 0xc2
168#define ZBEE_ZCL_STAT_UNSUPPORTED_CLUSTER 0xc3
169#define ZBEE_ZCL_STAT_LIMIT_REACHED 0xc4
172#define INT24_SIGN_BITS 0xffff8000
173#define MONTHS_PER_YEAR 12
174#define YEAR_OFFSET 1900
177#define ZCL_CLUSTER_MFR_KEY(cluster_id,mfr_code) (((mfr_code)<<16) | (cluster_id))
179typedef void (*zbee_zcl_fn_attr_data)(
proto_tree *tree,
tvbuff_t *tvb,
unsigned *offset, uint16_t attr_id,
unsigned data_type,
bool client_attr);
186 int hf_attr_server_id;
187 int hf_attr_client_id;
192 zbee_zcl_fn_attr_data fn_attr_data;
195extern const value_string zbee_zcl_short_data_type_names[];
200extern void dissect_zcl_read_attr (
tvbuff_t *tvb,
packet_info *pinfo,
proto_tree *tree,
unsigned *offset, uint16_t cluster_id, uint16_t mfr_code,
bool direction);
201extern void dissect_zcl_write_attr (
tvbuff_t *tvb,
packet_info *pinfo,
proto_tree *tree,
unsigned *offset, uint16_t cluster_id, uint16_t mfr_code,
bool direction);
202extern void dissect_zcl_report_attr(
tvbuff_t *tvb,
packet_info *pinfo _U_,
proto_tree *tree,
unsigned *offset, uint16_t cluster_id, uint16_t mfr_code,
bool direction);
203extern void dissect_zcl_read_attr_resp (
tvbuff_t *tvb,
packet_info *pinfo,
proto_tree *tree,
unsigned *offset, uint16_t cluster_id, uint16_t mfr_code,
bool direction);
204extern void dissect_zcl_attr_id(
tvbuff_t *tvb,
proto_tree *tree,
unsigned *offset, uint16_t cluster_id, uint16_t mfr_code,
bool client_attr);
205extern void dissect_zcl_attr_data_type_val(
tvbuff_t *tvb,
proto_tree *tree,
unsigned *offset, uint16_t attr_id, uint16_t cluster_id, uint16_t mfr_code,
bool client_attr);
206extern unsigned dissect_zcl_attr_uint8 (
tvbuff_t *tvb,
proto_tree *tree,
unsigned *offset,
int *length);
211void decode_zcl_utc_time (
char *s, uint32_t value);
212WS_DLL_PUBLIC
void decode_zcl_time_in_100ms (
char *s, uint16_t value);
213WS_DLL_PUBLIC
void decode_zcl_time_in_seconds (
char *s, uint16_t value);
214WS_DLL_PUBLIC
void decode_zcl_time_in_minutes (
char *s, uint16_t value);
215WS_DLL_PUBLIC
void dissect_zcl_attr_data (
tvbuff_t *tvb,
proto_tree *tree,
unsigned *offset,
unsigned data_type,
bool client_attr);
217WS_DLL_PUBLIC
void zbee_zcl_init_cluster(
const char *proto_abbrev,
int proto,
int ett, uint16_t cluster_id, uint16_t mfr_code,
int hf_attr_server_id,
int hf_attr_client_id,
int hf_cmd_rx_id,
int hf_cmd_tx_id, zbee_zcl_fn_attr_data fn_attr_data);
220#define ZBEE_ZCL_CSC_IAS_ZONE_C_ERC_NEP 0x02
221#define ZBEE_ZCL_CSC_IAS_ZONE_C_ERC_NS 0x01
222#define ZBEE_ZCL_CSC_IAS_ZONE_C_ERC_S 0x00
223#define ZBEE_ZCL_CSC_IAS_ZONE_C_ERC_TMZ 0x03
224#define ZBEE_ZCL_CSC_IAS_ZONE_C_ZER 0x00
225#define ZBEE_ZCL_CSC_IAS_ZONE_S_ZER 0x01
226#define ZBEE_ZCL_CSC_IAS_ZONE_S_ZSCN 0x00
227#define ZBEE_ZCL_CSC_POLL_CONTROL_C_CIR 0x00
228#define ZBEE_ZCL_CSC_POLL_CONTROL_C_FPS 0x01
229#define ZBEE_ZCL_CSC_POLL_CONTROL_C_SLPI 0x02
230#define ZBEE_ZCL_CSC_POLL_CONTROL_C_SSPI 0x03
231#define ZBEE_ZCL_CSC_POLL_CONTROL_S_CI 0x00
232#define ZBEE_ZCL_CSC_THERMOSTAT_C_CWS 0x03
233#define ZBEE_ZCL_CSC_THERMOSTAT_C_GWS 0x02
234#define ZBEE_ZCL_CSC_THERMOSTAT_C_SRL 0x00
235#define ZBEE_ZCL_CSC_THERMOSTAT_C_SWS 0x01
236#define ZBEE_ZCL_CSC_THERMOSTAT_C_SWS_DOW_AV 0x80
237#define ZBEE_ZCL_CSC_THERMOSTAT_C_SWS_DOW_FR 0x20
238#define ZBEE_ZCL_CSC_THERMOSTAT_C_SWS_DOW_MO 0x02
239#define ZBEE_ZCL_CSC_THERMOSTAT_C_SWS_DOW_SA 0x40
240#define ZBEE_ZCL_CSC_THERMOSTAT_C_SWS_DOW_SU 0x01
241#define ZBEE_ZCL_CSC_THERMOSTAT_C_SWS_DOW_TH 0x10
242#define ZBEE_ZCL_CSC_THERMOSTAT_C_SWS_DOW_TU 0x04
243#define ZBEE_ZCL_CSC_THERMOSTAT_C_SWS_DOW_WE 0x08
244#define ZBEE_ZCL_CSC_THERMOSTAT_C_SWS_SP_B 0x03
245#define ZBEE_ZCL_CSC_THERMOSTAT_C_SWS_SP_C 0x02
246#define ZBEE_ZCL_CSC_THERMOSTAT_C_SWS_SP_H 0x01
247#define ZBEE_ZCL_CSC_THERMOSTAT_S_GWSR 0x00
Definition packet_info.h:43
Definition value_string.h:25
Definition packet-zbee-zcl.h:181
Definition tvbuff-int.h:35
Definition packet-zbee-zcl.h:17