blob: 4a4da5b1a8438697cacfea1f20df853cc93ee1ad (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
|
/* packet-zbee-zcl.h
* Dissector routines for the ZigBee Cluster Library (ZCL)
* By Fred Fierling <fff@exegin.com>
* Copyright 2009 Exegin Technologies Limited
*
* $Id$
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef PACKET_ZBEE_ZCL_H
#define PACKET_ZBEE_ZCL_H
/* Structure to contain the ZCL frame information */
typedef struct{
gboolean mfr_spec;
gboolean direction;
gboolean disable_default_resp;
guint8 frame_type;
guint16 mfr_code;
guint8 tran_seqno;
guint8 cmd_id;
} zbee_zcl_packet;
/* ZCL Commands */
#define ZBEE_ZCL_CMD_READ_ATTR 0x00
#define ZBEE_ZCL_CMD_READ_ATTR_RESP 0x01
#define ZBEE_ZCL_CMD_WRITE_ATTR 0x02
#define ZBEE_ZCL_CMD_WRITE_ATTR_UNDIVIDED 0x03
#define ZBEE_ZCL_CMD_WRITE_ATTR_RESP 0x04
#define ZBEE_ZCL_CMD_WRITE_ATTR_NO_RESP 0x05
#define ZBEE_ZCL_CMD_CONFIG_REPORT 0x06
#define ZBEE_ZCL_CMD_CONFIG_REPORT_RESP 0x07
#define ZBEE_ZCL_CMD_READ_REPORT_CONFIG 0x08
#define ZBEE_ZCL_CMD_READ_REPORT_CONFIG_RESP 0x09
#define ZBEE_ZCL_CMD_REPORT_ATTR 0x0a
#define ZBEE_ZCL_CMD_DEFAULT_RESP 0x0b
#define ZBEE_ZCL_CMD_DISCOVER_ATTR 0x0c
#define ZBEE_ZCL_CMD_DISCOVER_ATTR_RESP 0x0d
#define ZBEE_ZCL_CMD_READ_ATTR_STRUCT 0x0e
#define ZBEE_ZCL_CMD_WRITE_ATTR_STRUCT 0x0f
#define ZBEE_ZCL_CMD_WRITE_ATTR_STRUCT_RESP 0x10
/* ZCL Data Types */
#define ZBEE_ZCL_NO_DATA 0x00
#define ZBEE_ZCL_8_BIT_DATA 0x08
#define ZBEE_ZCL_16_BIT_DATA 0x09
#define ZBEE_ZCL_24_BIT_DATA 0x0a
#define ZBEE_ZCL_32_BIT_DATA 0x0b
#define ZBEE_ZCL_40_BIT_DATA 0x0c
#define ZBEE_ZCL_48_BIT_DATA 0x0d
#define ZBEE_ZCL_56_BIT_DATA 0x0e
#define ZBEE_ZCL_64_BIT_DATA 0x0f
#define ZBEE_ZCL_BOOLEAN 0x10
#define ZBEE_ZCL_8_BIT_BITMAP 0x18
#define ZBEE_ZCL_16_BIT_BITMAP 0x19
#define ZBEE_ZCL_24_BIT_BITMAP 0x1a
#define ZBEE_ZCL_32_BIT_BITMAP 0x1b
#define ZBEE_ZCL_40_BIT_BITMAP 0x1c
#define ZBEE_ZCL_48_BIT_BITMAP 0x1d
#define ZBEE_ZCL_56_BIT_BITMAP 0x1e
#define ZBEE_ZCL_64_BIT_BITMAP 0x1f
#define ZBEE_ZCL_8_BIT_UINT 0x20
#define ZBEE_ZCL_16_BIT_UINT 0x21
#define ZBEE_ZCL_24_BIT_UINT 0x22
#define ZBEE_ZCL_32_BIT_UINT 0x23
#define ZBEE_ZCL_40_BIT_UINT 0x24
#define ZBEE_ZCL_48_BIT_UINT 0x25
#define ZBEE_ZCL_56_BIT_UINT 0x26
#define ZBEE_ZCL_64_BIT_UINT 0x27
#define ZBEE_ZCL_8_BIT_INT 0x28
#define ZBEE_ZCL_16_BIT_INT 0x29
#define ZBEE_ZCL_24_BIT_INT 0x2a
#define ZBEE_ZCL_32_BIT_INT 0x2b
#define ZBEE_ZCL_40_BIT_INT 0x2c
#define ZBEE_ZCL_48_BIT_INT 0x2d
#define ZBEE_ZCL_56_BIT_INT 0x2e
#define ZBEE_ZCL_64_BIT_INT 0x2f
#define ZBEE_ZCL_8_BIT_ENUM 0x30
#define ZBEE_ZCL_16_BIT_ENUM 0x31
#define ZBEE_ZCL_SEMI_FLOAT 0x38
#define ZBEE_ZCL_SINGLE_FLOAT 0x39
#define ZBEE_ZCL_DOUBLE_FLOAT 0x3a
#define ZBEE_ZCL_OCTET_STRING 0x41
#define ZBEE_ZCL_CHAR_STRING 0x42
#define ZBEE_ZCL_LONG_OCTET_STRING 0x43
#define ZBEE_ZCL_LONG_CHAR_STRING 0x44
#define ZBEE_ZCL_ARRAY 0x48
#define ZBEE_ZCL_STRUCT 0x4c
#define ZBEE_ZCL_SET 0x50
#define ZBEE_ZCL_BAG 0x51
#define ZBEE_ZCL_TIME 0xe0
#define ZBEE_ZCL_DATE 0xe1
#define ZBEE_ZCL_UTC 0xe2
#define ZBEE_ZCL_CLUSTER_ID 0xe8
#define ZBEE_ZCL_ATTR_ID 0xe9
#define ZBEE_ZCL_BACNET_OID 0xea
#define ZBEE_ZCL_IEEE_ADDR 0xf0
#define ZBEE_ZCL_SECURITY_KEY 0xf1
#define ZBEE_ZCL_UNKNOWN 0xff
/* ZCL Miscellaneous */
#define ZBEE_ZCL_INVALID_STR_LENGTH 0xff
#define ZBEE_ZCL_INVALID_LONG_STR_LENGTH 0xffff
#define ZBEE_ZCL_NUM_INDIVIDUAL_ETT 2
#define ZBEE_ZCL_NUM_ATTR_ETT 64
#define ZBEE_ZCL_DIR_REPORTED 0
#define ZBEE_ZCL_DIR_RECEIVED 1
/* seconds elapsed from year 1970 to 2000 */
#define ZBEE_ZCL_NSTIME_UTC_OFFSET (((3*365 + 366)*7 + 2*365)*24*3600)
#define IS_ANALOG_SUBTYPE(x) ( (x & 0xe0) == 0x20 || (x & 0xe0) == 0xe0 )
/* ZCL Status Enumerations */
#define ZBEE_ZCL_STAT_SUCCESS 0x00
#define ZBEE_ZCL_STAT_FAILURE 0x01
#define ZBEE_ZCL_STAT_NOT_AUTHORIZED 0x7e
#define ZBEE_ZCL_STAT_RESERVED_FIELD_NOT_ZERO 0x7f
#define ZBEE_ZCL_STAT_MALFORMED_CMD 0x80
#define ZBEE_ZCL_STAT_UNSUP_CLUSTER_CMD 0x81
#define ZBEE_ZCL_STAT_UNSUP_GENERAL_CMD 0x82
#define ZBEE_ZCL_STAT_UNSUP_MFR_CLUSTER_CMD 0x83
#define ZBEE_ZCL_STAT_UNSUP_MFR_GENERAL_CMD 0x84
#define ZBEE_ZCL_STAT_INVALID_FIELD 0x85
#define ZBEE_ZCL_STAT_UNSUPPORTED_ATTR 0x86
#define ZBEE_ZCL_STAT_INVALID_VALUE 0x87
#define ZBEE_ZCL_STAT_READ_ONLY 0x88
#define ZBEE_ZCL_STAT_INSUFFICIENT_SPACE 0x89
#define ZBEE_ZCL_STAT_DUPLICATE_EXISTS 0x8a
#define ZBEE_ZCL_STAT_NOT_FOUND 0x8b
#define ZBEE_ZCL_STAT_UNREPORTABLE_ATTR 0x8c
#define ZBEE_ZCL_STAT_INVALID_DATA_TYPE 0x8d
#define ZBEE_ZCL_STAT_INVALID_SELECTOR 0x8e
#define ZBEE_ZCL_STAT_WRITE_ONLY 0x8f
#define ZBEE_ZCL_STAT_INCONSISTENT_STARTUP_STATE 0x90
#define ZBEE_ZCL_STAT_DEFINED_OUT_OF_BAND 0x91
#define ZBEE_ZCL_STAT_HARDWARE_FAILURE 0xc0
#define ZBEE_ZCL_STAT_SOFTWARE_FAILURE 0xc1
#define ZBEE_ZCL_STAT_CALIBRATION_ERROR 0xc2
/* Misc. */
#define INT24_SIGN_BITS 0xffff8000
#define MONTHS_PER_YEAR 12
#define YEAR_OFFSET 1900
#endif /* PACKET_ZBEE_ZCL_H*/
|