2 * Copyright (c) 2010-2020 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.caddx.internal;
15 import java.util.HashMap;
18 import org.eclipse.jdt.annotation.NonNullByDefault;
19 import org.eclipse.jdt.annotation.Nullable;
22 * All the panel message types
24 * @author Georgios Moutsos - Initial contribution
27 public enum CaddxMessageType {
29 INTERFACE_CONFIGURATION_MESSAGE(0x01, null, 12, "Interface Configuration Message",
30 "This message will contain the firmware version number and other information about features currently enabled. It will be sent each time the unit is reset or programmed.",
31 CaddxDirection.IN, CaddxSource.PANEL,
34 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
35 new CaddxProperty("panel_firmware_version", 2, 4, 0, 0, CaddxPropertyType.STRING, "Firmware version",
38 // Byte 6 Supported transition message flags (1)
39 new CaddxProperty("panel_interface_configuration_message", 6, 1, 1, 1, CaddxPropertyType.BIT,
40 "Interface Configuration Message", false),
41 new CaddxProperty("panel_zone_status_message", 6, 1, 4, 1, CaddxPropertyType.BIT, "Zone Status Message",
43 new CaddxProperty("panel_zones_snapshot_message", 6, 1, 5, 1, CaddxPropertyType.BIT,
44 "Zones Snapshot Message", false),
45 new CaddxProperty("panel_partition_status_message", 6, 1, 6, 1, CaddxPropertyType.BIT,
46 "Partition Status Message", false),
47 new CaddxProperty("panel_partitions_snapshot_message", 6, 1, 7, 1, CaddxPropertyType.BIT,
48 "Partitions Snapshot Message", false),
50 // Byte 7 Supported transition message flags (2)
51 new CaddxProperty("panel_system_status_message", 7, 1, 0, 1, CaddxPropertyType.BIT, "System Status Message",
53 new CaddxProperty("panel_x10_message_received", 7, 1, 1, 1, CaddxPropertyType.BIT, "X-10 Message Received",
55 new CaddxProperty("panel_log_event_message", 7, 1, 2, 1, CaddxPropertyType.BIT, "Log Event Message", false),
56 new CaddxProperty("panel_keypad_message_received", 7, 1, 3, 1, CaddxPropertyType.BIT,
57 "Keypad Message Received", false),
59 // Byte 8 Supported request / command flags (1)
60 new CaddxProperty("panel_interface_configuration_request", 8, 1, 1, 1, CaddxPropertyType.BIT,
61 "Interface Configuration Request", false),
62 new CaddxProperty("panel_zone_name_request", 8, 1, 3, 1, CaddxPropertyType.BIT, "Zone Name Request", false),
63 new CaddxProperty("panel_zone_status_request", 8, 1, 4, 1, CaddxPropertyType.BIT, "Zone Status Request",
65 new CaddxProperty("panel_zones_snapshot_request", 8, 1, 5, 1, CaddxPropertyType.BIT,
66 "Zones Snapshot Request", false),
67 new CaddxProperty("panel_partition_status_request", 8, 1, 6, 1, CaddxPropertyType.BIT,
68 "Partition Status Request", false),
69 new CaddxProperty("panel_partitions_snapshot_request", 8, 1, 7, 1, CaddxPropertyType.BIT,
70 "Partitions Snapshot Request", false),
72 // Byte 9 Supported request / command flags (2)
73 new CaddxProperty("panel_system_status_request", 9, 1, 0, 1, CaddxPropertyType.BIT, "System Status Request",
75 new CaddxProperty("panel_send_x10_message", 9, 1, 1, 1, CaddxPropertyType.BIT, "Send X-10 Message", false),
76 new CaddxProperty("panel_log_event_request", 9, 1, 2, 1, CaddxPropertyType.BIT, "Log Event Request", false),
77 new CaddxProperty("panel_send_keypad_text_message", 9, 1, 3, 1, CaddxPropertyType.BIT,
78 "Send Keypad Text Message", false),
79 new CaddxProperty("panel_keypad_terminal_mode_request", 9, 1, 4, 1, CaddxPropertyType.BIT,
80 "Keypad Terminal Mode Request", false),
82 // Byte 10 Supported request / command flags (3)
83 new CaddxProperty("panel_program_data_request", 10, 1, 0, 1, CaddxPropertyType.BIT, "Program Data Request",
85 new CaddxProperty("panel_program_data_command", 10, 1, 1, 1, CaddxPropertyType.BIT, "Program Data Command",
87 new CaddxProperty("panel_user_information_request_with_pin", 10, 1, 2, 1, CaddxPropertyType.BIT,
88 "User Information Request with PIN", false),
89 new CaddxProperty("panel_user_information_request_without_pin", 10, 1, 3, 1, CaddxPropertyType.BIT,
90 "User Information Request without PIN", false),
91 new CaddxProperty("panel_set_user_code_command_with_pin", 10, 1, 4, 1, CaddxPropertyType.BIT,
92 "Set User Code Command with PIN", false),
93 new CaddxProperty("panel_set_user_code_command_without_pin", 10, 1, 5, 1, CaddxPropertyType.BIT,
94 "Set User Code Command without PIN", false),
95 new CaddxProperty("panel_set_user_authorization_command_with_pin", 10, 1, 6, 1, CaddxPropertyType.BIT,
96 "Set User Authorization Command with PIN", false),
97 new CaddxProperty("panel_set_user_authorization_command_without_pin", 10, 1, 7, 1, CaddxPropertyType.BIT,
98 "Set User Authorization Command without PIN", false),
100 // Byte 11 Supported request / command flags (4)
101 new CaddxProperty("panel_store_communication_event_command", 11, 1, 2, 1, CaddxPropertyType.BIT,
102 "Store Communication Event Command", false),
103 new CaddxProperty("panel_set_clock_calendar_command", 11, 1, 3, 1, CaddxPropertyType.BIT,
104 "Set Clock / Calendar Command", false),
105 new CaddxProperty("panel_primary_keypad_function_with_pin", 11, 1, 4, 1, CaddxPropertyType.BIT,
106 "Primary Keypad Function with PIN", false),
107 new CaddxProperty("panel_primary_keypad_function_without_pin", 11, 1, 5, 1, CaddxPropertyType.BIT,
108 "Primary Keypad Function without PIN", false),
109 new CaddxProperty("panel_secondary_keypad_function", 11, 1, 6, 1, CaddxPropertyType.BIT,
110 "Secondary Keypad Function", false),
111 new CaddxProperty("panel_zone_bypass_toggle", 11, 1, 7, 1, CaddxPropertyType.BIT, "Zone Bypass Toggle",
114 ZONE_NAME_MESSAGE(0x03, null, 18, "Zone Name Message",
115 "This message will contain the 16-character name for the zone number that was requested (via Zone Name Request (23h)).",
116 CaddxDirection.IN, CaddxSource.ZONE,
119 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
120 new CaddxProperty("zone_number", 2, 1, 0, 0, CaddxPropertyType.INT, "Zone number", false),
121 new CaddxProperty("zone_name", 3, 16, 0, 0, CaddxPropertyType.STRING, "Zone name", false)),
123 ZONE_STATUS_MESSAGE(0x04, null, 8, "Zone Status Message",
124 "This message will contain all information relevant to a zone in the system.", CaddxDirection.IN,
128 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
130 new CaddxProperty("zone_number", 2, 1, 0, 0, CaddxPropertyType.INT, "Zone number", false),
132 // Byte 3 Partition mask
133 new CaddxProperty("zone_partition1", 3, 1, 0, 1, CaddxPropertyType.BIT, "Partition 1 enable", false),
134 new CaddxProperty("zone_partition2", 3, 1, 1, 1, CaddxPropertyType.BIT, "Partition 2 enable", false),
135 new CaddxProperty("zone_partition3", 3, 1, 2, 1, CaddxPropertyType.BIT, "Partition 3 enable", false),
136 new CaddxProperty("zone_partition4", 3, 1, 3, 1, CaddxPropertyType.BIT, "Partition 4 enable", false),
137 new CaddxProperty("zone_partition5", 3, 1, 4, 1, CaddxPropertyType.BIT, "Partition 5 enable", false),
138 new CaddxProperty("zone_partition6", 3, 1, 5, 1, CaddxPropertyType.BIT, "Partition 6 enable", false),
139 new CaddxProperty("zone_partition7", 3, 1, 6, 1, CaddxPropertyType.BIT, "Partition 7 enable", false),
140 new CaddxProperty("zone_partition8", 3, 1, 7, 1, CaddxPropertyType.BIT, "Partition 8 enable", false),
142 // Byte 4 Zone type flags (1)
143 new CaddxProperty("zone_fire", 4, 1, 0, 1, CaddxPropertyType.BIT, "Fire", false),
144 new CaddxProperty("zone_24hour", 4, 1, 1, 1, CaddxPropertyType.BIT, "24 Hour", false),
145 new CaddxProperty("zone_key_switch", 4, 1, 2, 1, CaddxPropertyType.BIT, "Key-switch", false),
146 new CaddxProperty("zone_follower", 4, 1, 3, 1, CaddxPropertyType.BIT, "Follower", false),
147 new CaddxProperty("zone_entry_exit_delay_1", 4, 1, 4, 1, CaddxPropertyType.BIT, "Entry / exit delay 1",
149 new CaddxProperty("zone_entry_exit_delay_2", 4, 1, 5, 1, CaddxPropertyType.BIT, "Entry / exit delay 2",
151 new CaddxProperty("zone_interior", 4, 1, 6, 1, CaddxPropertyType.BIT, "Interior", false),
152 new CaddxProperty("zone_local_only", 4, 1, 7, 1, CaddxPropertyType.BIT, "Local only", false),
154 // Byte 5 Zone type flags (2)
155 new CaddxProperty("zone_keypad_sounder", 5, 1, 0, 1, CaddxPropertyType.BIT, "Keypad sounder", false),
156 new CaddxProperty("zone_yelping_siren", 5, 1, 1, 1, CaddxPropertyType.BIT, "Yelping siren", false),
157 new CaddxProperty("zone_steady_siren", 5, 1, 2, 1, CaddxPropertyType.BIT, "Steady siren", false),
158 new CaddxProperty("zone_chime", 5, 1, 3, 1, CaddxPropertyType.BIT, "Chime", false),
159 new CaddxProperty("zone_bypassable", 5, 1, 4, 1, CaddxPropertyType.BIT, "Bypassable", false),
160 new CaddxProperty("zone_group_bypassable", 5, 1, 5, 1, CaddxPropertyType.BIT, "Group bypassable", false),
161 new CaddxProperty("zone_force_armable", 5, 1, 6, 1, CaddxPropertyType.BIT, "Force armable", false),
162 new CaddxProperty("zone_entry_guard", 5, 1, 7, 1, CaddxPropertyType.BIT, "Entry guard", false),
164 // Byte 6 Zone type flags (3)
165 new CaddxProperty("zone_fast_loop_response", 6, 1, 0, 1, CaddxPropertyType.BIT, "Fast loop response",
167 new CaddxProperty("zone_double_eol_tamper", 6, 1, 1, 1, CaddxPropertyType.BIT, "Double EOL tamper", false),
168 new CaddxProperty("zone_type_trouble", 6, 1, 2, 1, CaddxPropertyType.BIT, "Trouble", false),
169 new CaddxProperty("zone_cross_zone", 6, 1, 3, 1, CaddxPropertyType.BIT, "Cross zone", false),
170 new CaddxProperty("zone_dialer_delay", 6, 1, 4, 1, CaddxPropertyType.BIT, "Dialer delay", false),
171 new CaddxProperty("zone_swinger_shutdown", 6, 1, 5, 1, CaddxPropertyType.BIT, "Swinger shutdown", false),
172 new CaddxProperty("zone_restorable", 6, 1, 6, 1, CaddxPropertyType.BIT, "Restorable", false),
173 new CaddxProperty("zone_listen_in", 6, 1, 7, 1, CaddxPropertyType.BIT, "Listen in", false),
175 // Byte 7 Zone condition flags (1)
176 new CaddxProperty("zone_faulted", 7, 1, 0, 1, CaddxPropertyType.BIT, "Faulted (or delayed trip)", false),
177 new CaddxProperty("zone_tampered", 7, 1, 1, 1, CaddxPropertyType.BIT, "Tampered", false),
178 new CaddxProperty("zone_trouble", 7, 1, 2, 1, CaddxPropertyType.BIT, "Trouble", false),
179 new CaddxProperty("zone_bypassed", 7, 1, 3, 1, CaddxPropertyType.BIT, "Bypassed", false),
180 new CaddxProperty("zone_inhibited", 7, 1, 4, 1, CaddxPropertyType.BIT, "Inhibited (force armed)", false),
181 new CaddxProperty("zone_low_battery", 7, 1, 5, 1, CaddxPropertyType.BIT, "Low battery", false),
182 new CaddxProperty("zone_loss_of_supervision", 7, 1, 6, 1, CaddxPropertyType.BIT, "Loss of supervision",
185 // Byte 8 Zone condition flags (2)
186 new CaddxProperty("zone_alarm_memory", 8, 1, 0, 1, CaddxPropertyType.BIT, "Alarm memory", false),
187 new CaddxProperty("zone_bypass_memory", 8, 1, 1, 1, CaddxPropertyType.BIT, "Bypass memory", false)),
189 ZONES_SNAPSHOT_MESSAGE(0x05, null, 10, "Zones Snapshot Message",
190 "This message will contain an abbreviated set of information for any group of 16 zones possible on the system. (A zone offset number will set the range of zones)",
191 CaddxDirection.IN, CaddxSource.PANEL,
194 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
196 new CaddxProperty("zone_offset", 2, 1, 0, 0, CaddxPropertyType.INT, "Zone offset (0= start at zone 1)",
199 // Byte 3 Zone 1 & 2 (+offset) status flags
200 new CaddxProperty("", 3, 1, 0, 1, CaddxPropertyType.BIT, "Zone 1 faulted (or delayed trip)", false),
201 new CaddxProperty("", 3, 1, 1, 1, CaddxPropertyType.BIT, "Zone 1 bypass (or inhibited)", false),
202 new CaddxProperty("zone_1_trouble", 3, 1, 2, 1, CaddxPropertyType.BIT,
203 "Zone 1 trouble (tamper, low battery, or lost)", false),
204 new CaddxProperty("", 3, 1, 3, 1, CaddxPropertyType.BIT, "Zone 1 alarm memory", false),
205 new CaddxProperty("", 3, 1, 4, 1, CaddxPropertyType.BIT, "Zone 2 faulted (or delayed trip)", false),
206 new CaddxProperty("", 3, 1, 5, 1, CaddxPropertyType.BIT, "Zone 2 bypass (or inhibited)", false),
207 new CaddxProperty("zone_2_trouble", 3, 1, 6, 1, CaddxPropertyType.BIT,
208 "Zone 2 trouble (tamper, low battery, or lost)", false),
209 new CaddxProperty("", 3, 1, 7, 1, CaddxPropertyType.BIT, "Zone 2 alarm memory", false),
211 // Byte 4 Zone 3 & 4 status flags (see byte 3)
212 new CaddxProperty("", 4, 1, 0, 1, CaddxPropertyType.BIT, "Zone 3 faulted (or delayed trip)", false),
213 new CaddxProperty("", 4, 1, 1, 1, CaddxPropertyType.BIT, "Zone 3 bypass (or inhibited)", false),
214 new CaddxProperty("zone_3_trouble", 4, 1, 2, 1, CaddxPropertyType.BIT,
215 "Zone 3 trouble (tamper, low battery, or lost)", false),
216 new CaddxProperty("", 4, 1, 3, 1, CaddxPropertyType.BIT, "Zone 3 alarm memory", false),
217 new CaddxProperty("", 4, 1, 4, 1, CaddxPropertyType.BIT, "Zone 4 faulted (or delayed trip)", false),
218 new CaddxProperty("", 4, 1, 5, 1, CaddxPropertyType.BIT, "Zone 4 bypass (or inhibited)", false),
219 new CaddxProperty("zone_4_trouble", 4, 1, 6, 1, CaddxPropertyType.BIT,
220 "Zone 4 trouble (tamper, low battery, or lost)", false),
221 new CaddxProperty("", 4, 1, 7, 1, CaddxPropertyType.BIT, "Zone 4 alarm memory", false),
223 // Byte 5 Zone 5 & 6 status flags (see byte 3)
224 new CaddxProperty("", 5, 1, 0, 1, CaddxPropertyType.BIT, "Zone 5 faulted (or delayed trip)", false),
225 new CaddxProperty("", 5, 1, 1, 1, CaddxPropertyType.BIT, "Zone 5 bypass (or inhibited)", false),
226 new CaddxProperty("zone_5_trouble", 5, 1, 2, 1, CaddxPropertyType.BIT,
227 "Zone 5 trouble (tamper, low battery, or lost)", false),
228 new CaddxProperty("", 5, 1, 3, 1, CaddxPropertyType.BIT, "Zone 5 alarm memory", false),
229 new CaddxProperty("", 5, 1, 4, 1, CaddxPropertyType.BIT, "Zone 6 faulted (or delayed trip)", false),
230 new CaddxProperty("", 5, 1, 5, 1, CaddxPropertyType.BIT, "Zone 6 bypass (or inhibited)", false),
231 new CaddxProperty("zone_6_trouble", 5, 1, 6, 1, CaddxPropertyType.BIT,
232 "Zone 6 trouble (tamper, low battery, or lost)", false),
233 new CaddxProperty("", 5, 1, 7, 1, CaddxPropertyType.BIT, "Zone 6 alarm memory", false),
235 // Byte 6 Zone 7 & 8 status flags (see byte 3)
236 new CaddxProperty("", 6, 1, 0, 1, CaddxPropertyType.BIT, "Zone 7 faulted (or delayed trip)", false),
237 new CaddxProperty("", 6, 1, 1, 1, CaddxPropertyType.BIT, "Zone 7 bypass (or inhibited)", false),
238 new CaddxProperty("zone_7_trouble", 6, 1, 2, 1, CaddxPropertyType.BIT,
239 "Zone 7 trouble (tamper, low battery, or lost)", false),
240 new CaddxProperty("", 6, 1, 3, 1, CaddxPropertyType.BIT, "Zone 7 alarm memory", false),
241 new CaddxProperty("", 6, 1, 4, 1, CaddxPropertyType.BIT, "Zone 8 faulted (or delayed trip)", false),
242 new CaddxProperty("", 6, 1, 5, 1, CaddxPropertyType.BIT, "Zone 8 bypass (or inhibited)", false),
243 new CaddxProperty("zone_8_trouble", 6, 1, 6, 1, CaddxPropertyType.BIT,
244 "Zone 8 trouble (tamper, low battery, or lost)", false),
245 new CaddxProperty("", 6, 1, 7, 1, CaddxPropertyType.BIT, "Zone 8 alarm memory", false),
247 // Byte 7 Zone 9 & 10 status flags (see byte 3)
248 new CaddxProperty("", 7, 1, 0, 1, CaddxPropertyType.BIT, "Zone 9 faulted (or delayed trip)", false),
249 new CaddxProperty("", 7, 1, 1, 1, CaddxPropertyType.BIT, "Zone 9 bypass (or inhibited)", false),
250 new CaddxProperty("zone_9_trouble", 7, 1, 2, 1, CaddxPropertyType.BIT,
251 "Zone 9 trouble (tamper, low battery, or lost)", false),
252 new CaddxProperty("", 7, 1, 3, 1, CaddxPropertyType.BIT, "Zone 9 alarm memory", false),
253 new CaddxProperty("", 7, 1, 4, 1, CaddxPropertyType.BIT, "Zone 10 faulted (or delayed trip)", false),
254 new CaddxProperty("", 7, 1, 5, 1, CaddxPropertyType.BIT, "Zone 10 bypass (or inhibited)", false),
255 new CaddxProperty("zone_10_trouble", 7, 1, 6, 1, CaddxPropertyType.BIT,
256 "Zone 10 trouble (tamper, low battery, or lost)", false),
257 new CaddxProperty("", 7, 1, 7, 1, CaddxPropertyType.BIT, "Zone 10 alarm memory", false),
259 // Byte 8 Zone 11 & 12 status flags (see byte 3)
260 new CaddxProperty("", 8, 1, 0, 1, CaddxPropertyType.BIT, "Zone 11 faulted (or delayed trip)", false),
261 new CaddxProperty("", 8, 1, 1, 1, CaddxPropertyType.BIT, "Zone 11 bypass (or inhibited)", false),
262 new CaddxProperty("zone_11_trouble", 8, 1, 2, 1, CaddxPropertyType.BIT,
263 "Zone 11 trouble (tamper, low battery, or lost)", false),
264 new CaddxProperty("", 8, 1, 3, 1, CaddxPropertyType.BIT, "Zone 11 alarm memory", false),
265 new CaddxProperty("", 8, 1, 4, 1, CaddxPropertyType.BIT, "Zone 12 faulted (or delayed trip)", false),
266 new CaddxProperty("", 8, 1, 5, 1, CaddxPropertyType.BIT, "Zone 12 bypass (or inhibited)", false),
267 new CaddxProperty("zone_12_trouble", 8, 1, 6, 1, CaddxPropertyType.BIT,
268 "Zone 12 trouble (tamper, low battery, or lost)", false),
269 new CaddxProperty("", 8, 1, 7, 1, CaddxPropertyType.BIT, "Zone 12 alarm memory", false),
271 // Byte 9 Zone 13 & 14 status flags (see byte 3)
272 new CaddxProperty("", 9, 1, 0, 1, CaddxPropertyType.BIT, "Zone 13 faulted (or delayed trip)", false),
273 new CaddxProperty("", 9, 1, 1, 1, CaddxPropertyType.BIT, "Zone 13 bypass (or inhibited)", false),
274 new CaddxProperty("zone_13_trouble", 9, 1, 2, 1, CaddxPropertyType.BIT,
275 "Zone 13 trouble (tamper, low battery, or lost)", false),
276 new CaddxProperty("", 9, 1, 3, 1, CaddxPropertyType.BIT, "Zone 13 alarm memory", false),
277 new CaddxProperty("", 9, 1, 4, 1, CaddxPropertyType.BIT, "Zone 14 faulted (or delayed trip)", false),
278 new CaddxProperty("", 9, 1, 5, 1, CaddxPropertyType.BIT, "Zone 14 bypass (or inhibited)", false),
279 new CaddxProperty("zone_14_trouble", 9, 1, 6, 1, CaddxPropertyType.BIT,
280 "Zone 14 trouble (tamper, low battery, or lost)", false),
281 new CaddxProperty("", 9, 1, 7, 1, CaddxPropertyType.BIT, "Zone 14 alarm memory", false),
283 // Byte 10 Zone 15 & 16 status flags (see byte 3)
284 new CaddxProperty("", 10, 1, 0, 1, CaddxPropertyType.BIT, "Zone 15 faulted (or delayed trip)", false),
285 new CaddxProperty("", 10, 1, 1, 1, CaddxPropertyType.BIT, "Zone 15 bypass (or inhibited)", false),
286 new CaddxProperty("zone_15_trouble", 10, 1, 2, 1, CaddxPropertyType.BIT,
287 "Zone 15 trouble (tamper, low battery, or lost)", false),
288 new CaddxProperty("", 10, 1, 3, 1, CaddxPropertyType.BIT, "Zone 15 alarm memory", false),
289 new CaddxProperty("", 10, 1, 4, 1, CaddxPropertyType.BIT, "Zone 16 faulted (or delayed trip)", false),
290 new CaddxProperty("", 10, 1, 5, 1, CaddxPropertyType.BIT, "Zone 16 bypass (or inhibited)", false),
291 new CaddxProperty("zone_16_trouble", 10, 1, 6, 1, CaddxPropertyType.BIT,
292 "Zone 16 trouble (tamper, low battery, or lost)", false),
293 new CaddxProperty("", 10, 1, 7, 1, CaddxPropertyType.BIT, "Zone 16 alarm memory", false)),
295 PARTITION_STATUS_MESSAGE(0x06, null, 9, "Partition Status Message",
296 "This message will contain all information relevant to a single partition in the system.",
297 CaddxDirection.IN, CaddxSource.PARTITION,
301 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
303 new CaddxProperty("partition_number", 2, 1, 0, 0, CaddxPropertyType.INT,
304 "Partition number (0= partition 1)", false),
306 // Byte 3 Partition condition flags (1)
307 new CaddxProperty("partition_bypass_code_required", 3, 1, 0, 1, CaddxPropertyType.BIT,
308 "Bypass code required", false),
309 new CaddxProperty("partition_fire_trouble", 3, 1, 1, 1, CaddxPropertyType.BIT, "Fire trouble", false),
310 new CaddxProperty("partition_fire", 3, 1, 2, 1, CaddxPropertyType.BIT, "Fire", false),
311 new CaddxProperty("partition_pulsing_buzzer", 3, 1, 3, 1, CaddxPropertyType.BIT, "Pulsing Buzzer", false),
312 new CaddxProperty("partition_tlm_fault_memory", 3, 1, 4, 1, CaddxPropertyType.BIT, "TLM fault memory",
314 new CaddxProperty("partition_armed", 3, 1, 6, 1, CaddxPropertyType.BIT, "Armed", false),
315 new CaddxProperty("partition_instant", 3, 1, 7, 1, CaddxPropertyType.BIT, "Instant", false),
317 // Byte 4 Partition condition flags (2)
318 new CaddxProperty("partition_previous_alarm", 4, 1, 0, 1, CaddxPropertyType.BIT, "Previous Alarm", false),
319 new CaddxProperty("partition_siren_on", 4, 1, 1, 1, CaddxPropertyType.BIT, "Siren on", false),
320 new CaddxProperty("partition_steady_siren_on", 4, 1, 2, 1, CaddxPropertyType.BIT, "Steady siren on", false),
321 new CaddxProperty("partition_alarm_memory", 4, 1, 3, 1, CaddxPropertyType.BIT, "Alarm memory", false),
322 new CaddxProperty("partition_tamper", 4, 1, 4, 1, CaddxPropertyType.BIT, "Tamper", false),
323 new CaddxProperty("partition_cancel_command_entered", 4, 1, 5, 1, CaddxPropertyType.BIT,
324 "Cancel command entered", false),
325 new CaddxProperty("partition_code_entered", 4, 1, 6, 1, CaddxPropertyType.BIT, "Code entered", false),
326 new CaddxProperty("partition_cancel_pending", 4, 1, 7, 1, CaddxPropertyType.BIT, "Cancel pending", false),
328 // Byte 5 Partition condition flags (3)
329 new CaddxProperty("partition_silent_exit_enabled", 5, 1, 1, 1, CaddxPropertyType.BIT, "Silent exit enabled",
331 new CaddxProperty("partition_entryguard", 5, 1, 2, 1, CaddxPropertyType.BIT, "Entryguard (stay mode)",
333 new CaddxProperty("partition_chime_mode_on", 5, 1, 3, 1, CaddxPropertyType.BIT, "Chime mode on", false),
334 new CaddxProperty("partition_entry", 5, 1, 4, 1, CaddxPropertyType.BIT, "Entry", false),
335 new CaddxProperty("partition_delay_expiration_warning", 5, 1, 5, 1, CaddxPropertyType.BIT,
336 "Delay expiration warning", false),
337 new CaddxProperty("partition_exit1", 5, 1, 6, 1, CaddxPropertyType.BIT, "Exit1", false),
338 new CaddxProperty("partition_exit2", 5, 1, 7, 1, CaddxPropertyType.BIT, "Exit2", false),
340 // Byte 6 Partition condition flags (4)
341 new CaddxProperty("partition_led_extinguish", 6, 1, 0, 1, CaddxPropertyType.BIT, "LED extinguish", false),
342 new CaddxProperty("partition_cross_timing", 6, 1, 1, 1, CaddxPropertyType.BIT, "Cross timing", false),
343 new CaddxProperty("partition_recent_closing_being_timed", 6, 1, 2, 1, CaddxPropertyType.BIT,
344 "Recent closing being timed", false),
345 new CaddxProperty("partition_exit_error_triggered", 6, 1, 4, 1, CaddxPropertyType.BIT,
346 "Exit error triggered", false),
347 new CaddxProperty("partition_auto_home_inhibited", 6, 1, 5, 1, CaddxPropertyType.BIT, "Auto home inhibited",
349 new CaddxProperty("partition_sensor_low_battery", 6, 1, 6, 1, CaddxPropertyType.BIT, "Sensor low battery",
351 new CaddxProperty("partition_sensor_lost_supervision", 6, 1, 7, 1, CaddxPropertyType.BIT,
352 "Sensor lost supervision", false),
354 new CaddxProperty("", 7, 1, 0, 0, CaddxPropertyType.INT, "Last user number", false),
356 // Byte 8 Partition condition flags (5)
357 new CaddxProperty("partition_zone_bypassed", 8, 1, 0, 1, CaddxPropertyType.BIT, "Zone bypassed", false),
358 new CaddxProperty("partition_force_arm_triggered_by_auto_arm", 8, 1, 1, 1, CaddxPropertyType.BIT,
359 "Force arm triggered by auto arm", false),
360 new CaddxProperty("partition_ready_to_arm", 8, 1, 2, 1, CaddxPropertyType.BIT, "Ready to arm", false),
361 new CaddxProperty("partition_ready_to_force_arm", 8, 1, 3, 1, CaddxPropertyType.BIT, "Ready to force arm",
363 new CaddxProperty("partition_valid_pin_accepted", 8, 1, 4, 1, CaddxPropertyType.BIT, "Valid PIN accepted",
365 new CaddxProperty("partition_chime_on", 8, 1, 5, 1, CaddxPropertyType.BIT, "Chime on (sounding)", false),
366 new CaddxProperty("partition_error_beep", 8, 1, 6, 1, CaddxPropertyType.BIT, "Error beep (triple beep)",
368 new CaddxProperty("partition_tone_on", 8, 1, 7, 1, CaddxPropertyType.BIT, "Tone on (activation tone)",
371 // Byte 9 Partition condition flags (6)
372 new CaddxProperty("partition_entry1", 9, 1, 0, 1, CaddxPropertyType.BIT, "Entry 1", false),
373 new CaddxProperty("partition_open_period", 9, 1, 1, 1, CaddxPropertyType.BIT, "Open period", false),
374 new CaddxProperty("partition_alarm_sent_using_phone_number_1", 9, 1, 2, 1, CaddxPropertyType.BIT,
375 "Alarm sent using phone number 1", false),
376 new CaddxProperty("partition_alarm_sent_using_phone_number_2", 9, 1, 3, 1, CaddxPropertyType.BIT,
377 "Alarm sent using phone number 2", false),
378 new CaddxProperty("partition_alarm_sent_using_phone_number_3", 9, 1, 4, 1, CaddxPropertyType.BIT,
379 "Alarm sent using phone number 3", false),
380 new CaddxProperty("partition_cancel_report_is_in_the_stack", 9, 1, 5, 1, CaddxPropertyType.BIT,
381 "Cancel report is in the stack", false),
382 new CaddxProperty("partition_keyswitch_armed", 9, 1, 6, 1, CaddxPropertyType.BIT, "Keyswitch armed", false),
383 new CaddxProperty("partition_delay_trip_in_progress", 9, 1, 7, 1, CaddxPropertyType.BIT,
384 "Delay Trip in progress (common zone)", false)),
386 PARTITIONS_SNAPSHOT_MESSAGE(0x07, null, 9, "Partitions Snapshot Message",
387 "This message will contain an abbreviated set of information for all 8 partitions on the system.",
388 CaddxDirection.IN, CaddxSource.PANEL,
392 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
394 // Byte 2 Partition 1 condition flags
395 new CaddxProperty("partition_1_valid", 2, 1, 0, 1, CaddxPropertyType.BIT, "Partition 1 valid partition",
397 new CaddxProperty("", 2, 1, 1, 1, CaddxPropertyType.BIT, "Partition 1 ready", false),
398 new CaddxProperty("", 2, 1, 2, 1, CaddxPropertyType.BIT, "Partition 1 armed", false),
399 new CaddxProperty("", 2, 1, 3, 1, CaddxPropertyType.BIT, "Partition 1 stay mode", false),
400 new CaddxProperty("", 2, 1, 4, 1, CaddxPropertyType.BIT, "Partition 1 chime mode", false),
401 new CaddxProperty("", 2, 1, 5, 1, CaddxPropertyType.BIT, "Partition 1 any entry delay", false),
402 new CaddxProperty("", 2, 1, 6, 1, CaddxPropertyType.BIT, "Partition 1 any exit delay", false),
403 new CaddxProperty("", 2, 1, 7, 1, CaddxPropertyType.BIT, "Partition 1 previous alarm", false),
405 // Byte 3 Partition 2 condition flags
406 new CaddxProperty("partition_2_valid", 3, 1, 0, 1, CaddxPropertyType.BIT, "Partition 2 valid partition",
408 new CaddxProperty("", 3, 1, 1, 1, CaddxPropertyType.BIT, "Partition 2 ready", false),
409 new CaddxProperty("", 3, 1, 2, 1, CaddxPropertyType.BIT, "Partition 2 armed", false),
410 new CaddxProperty("", 3, 1, 3, 1, CaddxPropertyType.BIT, "Partition 2 stay mode", false),
411 new CaddxProperty("", 3, 1, 4, 1, CaddxPropertyType.BIT, "Partition 2 chime mode", false),
412 new CaddxProperty("", 3, 1, 5, 1, CaddxPropertyType.BIT, "Partition 2 any entry delay", false),
413 new CaddxProperty("", 3, 1, 6, 1, CaddxPropertyType.BIT, "Partition 2 any exit delay", false),
414 new CaddxProperty("", 3, 1, 7, 1, CaddxPropertyType.BIT, "Partition 2 previous alarm", false),
416 // Byte 4 Partition 3 condition flags
417 new CaddxProperty("partition_3_valid", 4, 1, 0, 1, CaddxPropertyType.BIT, "Partition 3 valid partition",
419 new CaddxProperty("", 4, 1, 1, 1, CaddxPropertyType.BIT, "Partition 3 ready", false),
420 new CaddxProperty("", 4, 1, 2, 1, CaddxPropertyType.BIT, "Partition 3 armed", false),
421 new CaddxProperty("", 4, 1, 3, 1, CaddxPropertyType.BIT, "Partition 3 stay mode", false),
422 new CaddxProperty("", 4, 1, 4, 1, CaddxPropertyType.BIT, "Partition 3 chime mode", false),
423 new CaddxProperty("", 4, 1, 5, 1, CaddxPropertyType.BIT, "Partition 3 any entry delay", false),
424 new CaddxProperty("", 4, 1, 6, 1, CaddxPropertyType.BIT, "Partition 3 any exit delay", false),
425 new CaddxProperty("", 4, 1, 7, 1, CaddxPropertyType.BIT, "Partition 3 previous alarm", false),
427 // Byte 5 Partition 4 condition flags
428 new CaddxProperty("partition_4_valid", 5, 1, 0, 1, CaddxPropertyType.BIT, "Partition 4 valid partition",
430 new CaddxProperty("", 5, 1, 1, 1, CaddxPropertyType.BIT, "Partition 4 ready", false),
431 new CaddxProperty("", 5, 1, 2, 1, CaddxPropertyType.BIT, "Partition 4 armed", false),
432 new CaddxProperty("", 5, 1, 3, 1, CaddxPropertyType.BIT, "Partition 4 stay mode", false),
433 new CaddxProperty("", 5, 1, 4, 1, CaddxPropertyType.BIT, "Partition 4 chime mode", false),
434 new CaddxProperty("", 5, 1, 5, 1, CaddxPropertyType.BIT, "Partition 4 any entry delay", false),
435 new CaddxProperty("", 5, 1, 6, 1, CaddxPropertyType.BIT, "Partition 4 any exit delay", false),
436 new CaddxProperty("", 5, 1, 7, 1, CaddxPropertyType.BIT, "Partition 4 previous alarm", false),
438 // Byte 6 Partition 5 condition flags
439 new CaddxProperty("partition_5_valid", 6, 1, 0, 1, CaddxPropertyType.BIT, "Partition 5 valid partition",
441 new CaddxProperty("", 6, 1, 1, 1, CaddxPropertyType.BIT, "Partition 5 ready", false),
442 new CaddxProperty("", 6, 1, 2, 1, CaddxPropertyType.BIT, "Partition 5 armed", false),
443 new CaddxProperty("", 6, 1, 3, 1, CaddxPropertyType.BIT, "Partition 5 stay mode", false),
444 new CaddxProperty("", 6, 1, 4, 1, CaddxPropertyType.BIT, "Partition 5 chime mode", false),
445 new CaddxProperty("", 6, 1, 5, 1, CaddxPropertyType.BIT, "Partition 5 any entry delay", false),
446 new CaddxProperty("", 6, 1, 6, 1, CaddxPropertyType.BIT, "Partition 5 any exit delay", false),
447 new CaddxProperty("", 6, 1, 7, 1, CaddxPropertyType.BIT, "Partition 5 previous alarm", false),
449 // Byte 7 Partition 6 condition flags
450 new CaddxProperty("partition_6_valid", 7, 1, 0, 1, CaddxPropertyType.BIT, "Partition 6 valid partition",
452 new CaddxProperty("", 7, 1, 1, 1, CaddxPropertyType.BIT, "Partition 6 ready", false),
453 new CaddxProperty("", 7, 1, 2, 1, CaddxPropertyType.BIT, "Partition 6 armed", false),
454 new CaddxProperty("", 7, 1, 3, 1, CaddxPropertyType.BIT, "Partition 6 stay mode", false),
455 new CaddxProperty("", 7, 1, 4, 1, CaddxPropertyType.BIT, "Partition 6 chime mode", false),
456 new CaddxProperty("", 7, 1, 5, 1, CaddxPropertyType.BIT, "Partition 6 any entry delay", false),
457 new CaddxProperty("", 7, 1, 6, 1, CaddxPropertyType.BIT, "Partition 6 any exit delay", false),
458 new CaddxProperty("", 7, 1, 7, 1, CaddxPropertyType.BIT, "Partition 6 previous alarm", false),
460 // Byte 8 Partition 7 condition flags
461 new CaddxProperty("partition_7_valid", 8, 1, 0, 1, CaddxPropertyType.BIT, "Partition 7 valid partition",
463 new CaddxProperty("", 8, 1, 1, 1, CaddxPropertyType.BIT, "Partition 7 ready", false),
464 new CaddxProperty("", 8, 1, 2, 1, CaddxPropertyType.BIT, "Partition 7 armed", false),
465 new CaddxProperty("", 8, 1, 3, 1, CaddxPropertyType.BIT, "Partition 7 stay mode", false),
466 new CaddxProperty("", 8, 1, 4, 1, CaddxPropertyType.BIT, "Partition 7 chime mode", false),
467 new CaddxProperty("", 8, 1, 5, 1, CaddxPropertyType.BIT, "Partition 7 any entry delay", false),
468 new CaddxProperty("", 8, 1, 6, 1, CaddxPropertyType.BIT, "Partition 7 any exit delay", false),
469 new CaddxProperty("", 8, 1, 7, 1, CaddxPropertyType.BIT, "Partition 7 previous alarm", false),
471 // Byte 9 Partition 8 condition flags
472 new CaddxProperty("partition_8_valid", 9, 1, 0, 1, CaddxPropertyType.BIT, "Partition 8 valid partition",
474 new CaddxProperty("", 9, 1, 1, 1, CaddxPropertyType.BIT, "Partition 8 ready", false),
475 new CaddxProperty("", 9, 1, 2, 1, CaddxPropertyType.BIT, "Partition 8 armed", false),
476 new CaddxProperty("", 9, 1, 3, 1, CaddxPropertyType.BIT, "Partition 8 stay mode", false),
477 new CaddxProperty("", 9, 1, 4, 1, CaddxPropertyType.BIT, "Partition 8 chime mode", false),
478 new CaddxProperty("", 9, 1, 5, 1, CaddxPropertyType.BIT, "Partition 8 any entry delay", false),
479 new CaddxProperty("", 9, 1, 6, 1, CaddxPropertyType.BIT, "Partition 8 any exit delay", false),
480 new CaddxProperty("", 9, 1, 8, 1, CaddxPropertyType.BIT, "Partition 8 previous alarm", false)),
482 SYSTEM_STATUS_MESSAGE(0x08, null, 12, "System Status Message",
483 "This message will contain all information relevant to the entire system.", CaddxDirection.IN,
488 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
491 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "Panel ID number", false),
494 new CaddxProperty("", 3, 1, 0, 1, CaddxPropertyType.BIT, "Line seizure", false),
495 new CaddxProperty("", 3, 1, 1, 1, CaddxPropertyType.BIT, "Off hook", false),
496 new CaddxProperty("", 3, 1, 2, 1, CaddxPropertyType.BIT, "Initial handshake received", false),
497 new CaddxProperty("", 3, 1, 3, 1, CaddxPropertyType.BIT, "Download in progress", false),
498 new CaddxProperty("", 3, 1, 4, 1, CaddxPropertyType.BIT, "Dialer delay in progress", false),
499 new CaddxProperty("", 3, 1, 5, 1, CaddxPropertyType.BIT, "Using backup phone", false),
500 new CaddxProperty("", 3, 1, 6, 1, CaddxPropertyType.BIT, "Listen in active", false),
501 new CaddxProperty("", 3, 1, 7, 1, CaddxPropertyType.BIT, "Two way lockout", false),
504 new CaddxProperty("", 4, 1, 0, 1, CaddxPropertyType.BIT, "Ground fault", false),
505 new CaddxProperty("", 4, 1, 1, 1, CaddxPropertyType.BIT, "Phone fault", false),
506 new CaddxProperty("", 4, 1, 2, 1, CaddxPropertyType.BIT, "Fail to communicate", false),
507 new CaddxProperty("", 4, 1, 3, 1, CaddxPropertyType.BIT, "Fuse fault", false),
508 new CaddxProperty("", 4, 1, 4, 1, CaddxPropertyType.BIT, "Box tamper", false),
509 new CaddxProperty("", 4, 1, 5, 1, CaddxPropertyType.BIT, "Siren tamper / trouble", false),
510 new CaddxProperty("", 4, 1, 6, 1, CaddxPropertyType.BIT, "Low Battery", false),
511 new CaddxProperty("", 4, 1, 7, 1, CaddxPropertyType.BIT, "AC fail", false),
514 new CaddxProperty("", 5, 1, 0, 1, CaddxPropertyType.BIT, "Expander box tamper", false),
515 new CaddxProperty("", 5, 1, 1, 1, CaddxPropertyType.BIT, "Expander AC failure", false),
516 new CaddxProperty("", 5, 1, 2, 1, CaddxPropertyType.BIT, "Expander low battery", false),
517 new CaddxProperty("", 5, 1, 3, 1, CaddxPropertyType.BIT, "Expander loss of supervision", false),
518 new CaddxProperty("", 5, 1, 4, 1, CaddxPropertyType.BIT, "Expander auxiliary output over current", false),
519 new CaddxProperty("", 5, 1, 5, 1, CaddxPropertyType.BIT, "Auxiliary communication channel failure", false),
520 new CaddxProperty("", 5, 1, 6, 1, CaddxPropertyType.BIT, "Expander bell fault", false),
523 new CaddxProperty("", 6, 1, 0, 1, CaddxPropertyType.BIT, "6 digit PIN enabled", false),
524 new CaddxProperty("", 6, 1, 1, 1, CaddxPropertyType.BIT, "Programming token in use", false),
525 new CaddxProperty("", 6, 1, 2, 1, CaddxPropertyType.BIT, "PIN required for local download", false),
526 new CaddxProperty("", 6, 1, 3, 1, CaddxPropertyType.BIT, "Global pulsing buzzer", false),
527 new CaddxProperty("", 6, 1, 4, 1, CaddxPropertyType.BIT, "Global Siren on", false),
528 new CaddxProperty("", 6, 1, 5, 1, CaddxPropertyType.BIT, "Global steady siren", false),
529 new CaddxProperty("", 6, 1, 6, 1, CaddxPropertyType.BIT, "Bus device has line seized", false),
530 new CaddxProperty("", 6, 1, 7, 1, CaddxPropertyType.BIT, "Bus device has requested sniff mode", false),
533 new CaddxProperty("", 7, 1, 0, 1, CaddxPropertyType.BIT, "Dynamic battery test", false),
534 new CaddxProperty("", 7, 1, 1, 1, CaddxPropertyType.BIT, "AC power on", false),
535 new CaddxProperty("", 7, 1, 2, 1, CaddxPropertyType.BIT, "Low battery memory", false),
536 new CaddxProperty("", 7, 1, 3, 1, CaddxPropertyType.BIT, "Ground fault memory", false),
537 new CaddxProperty("", 7, 1, 4, 1, CaddxPropertyType.BIT, "Fire alarm verification being timed", false),
538 new CaddxProperty("", 7, 1, 5, 1, CaddxPropertyType.BIT, "Smoke power reset", false),
539 new CaddxProperty("", 7, 1, 6, 1, CaddxPropertyType.BIT, "50 Hz line power detected", false),
540 new CaddxProperty("", 7, 1, 7, 1, CaddxPropertyType.BIT, "Timing a high voltage battery charge", false),
543 new CaddxProperty("", 8, 1, 0, 1, CaddxPropertyType.BIT, "Communication since last autotest", false),
544 new CaddxProperty("", 8, 1, 1, 1, CaddxPropertyType.BIT, "Power up delay in progress", false),
545 new CaddxProperty("", 8, 1, 2, 1, CaddxPropertyType.BIT, "Walk test mode", false),
546 new CaddxProperty("", 8, 1, 3, 1, CaddxPropertyType.BIT, "Loss of system time", false),
547 new CaddxProperty("", 8, 1, 4, 1, CaddxPropertyType.BIT, "Enroll requested", false),
548 new CaddxProperty("", 8, 1, 5, 1, CaddxPropertyType.BIT, "Test fixture mode", false),
549 new CaddxProperty("", 8, 1, 6, 1, CaddxPropertyType.BIT, "Control shutdown mode", false),
550 new CaddxProperty("", 8, 1, 7, 1, CaddxPropertyType.BIT, "Timing a cancel window", false),
553 new CaddxProperty("", 9, 1, 7, 1, CaddxPropertyType.BIT, "Call back in progress", false),
556 new CaddxProperty("", 10, 1, 0, 1, CaddxPropertyType.BIT, "Phone line faulted", false),
557 new CaddxProperty("", 10, 1, 1, 1, CaddxPropertyType.BIT, "Voltage present interrupt active", false),
558 new CaddxProperty("", 10, 1, 2, 1, CaddxPropertyType.BIT, "House phone off hook", false),
559 new CaddxProperty("", 10, 1, 3, 1, CaddxPropertyType.BIT, "Phone line monitor enabled", false),
560 new CaddxProperty("", 10, 1, 4, 1, CaddxPropertyType.BIT, "Sniffing", false),
561 new CaddxProperty("", 10, 1, 5, 1, CaddxPropertyType.BIT, "Last read was off hook", false),
562 new CaddxProperty("", 10, 1, 6, 1, CaddxPropertyType.BIT, "Listen in requested", false),
563 new CaddxProperty("", 10, 1, 7, 1, CaddxPropertyType.BIT, "Listen in trigger", false),
566 new CaddxProperty("", 11, 1, 0, 1, CaddxPropertyType.BIT, "Valid partition 1", false),
567 new CaddxProperty("", 11, 1, 1, 1, CaddxPropertyType.BIT, "Valid partition 2", false),
568 new CaddxProperty("", 11, 1, 2, 1, CaddxPropertyType.BIT, "Valid partition 3", false),
569 new CaddxProperty("", 11, 1, 3, 1, CaddxPropertyType.BIT, "Valid partition 4", false),
570 new CaddxProperty("", 11, 1, 4, 1, CaddxPropertyType.BIT, "Valid partition 5", false),
571 new CaddxProperty("", 11, 1, 5, 1, CaddxPropertyType.BIT, "Valid partition 6", false),
572 new CaddxProperty("", 11, 1, 6, 1, CaddxPropertyType.BIT, "Valid partition 7", false),
573 new CaddxProperty("", 11, 1, 7, 1, CaddxPropertyType.BIT, "Valid partition 8", false),
575 // Byte 12 Communicator stack pointer
576 new CaddxProperty("panel_communicator_stack_pointer", 12, 1, 0, 0, CaddxPropertyType.INT,
577 "Communicator stack pointer", false)),
579 X10_MESSAGE_RECEIVED(0x09, null, 4, "X-10 Message Received",
580 "This message contains information about an X-10 command that was requested by any device on the system bus.",
581 CaddxDirection.IN, CaddxSource.PANEL,
585 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
588 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "House code (0=house A)", false),
591 new CaddxProperty("", 3, 1, 0, 0, CaddxPropertyType.INT, "Unit code (0=unit 1)", false),
594 new CaddxProperty("", 4, 1, 0, 0, CaddxPropertyType.INT, "X-10 function code", false)),
596 LOG_EVENT_MESSAGE(0x0a, null, 10, "Log Event Message",
597 "This message will contain all information relating to an event in the log memory.", CaddxDirection.IN,
602 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
604 new CaddxProperty("panel_log_event_number", 2, 1, 0, 0, CaddxPropertyType.INT,
605 "Event number of this message", false),
607 new CaddxProperty("panel_log_event_size", 3, 1, 0, 0, CaddxPropertyType.INT,
608 "Total log size (number of log entries allowed)", false),
611 new CaddxProperty("panel_log_event_type", 4, 1, 0, 7, CaddxPropertyType.INT, "Event type", false),
612 // Bits 0-6 See type definitions in table that follows
613 // Bit 7 Non-reporting event if not set
616 new CaddxProperty("panel_log_event_zud", 5, 1, 0, 0, CaddxPropertyType.INT, "Zone / User / Device number",
619 new CaddxProperty("panel_log_event_partition", 6, 1, 0, 0, CaddxPropertyType.INT,
620 "Partition number (0=partition 1, if relevant)", false),
622 new CaddxProperty("panel_log_event_month", 7, 1, 0, 0, CaddxPropertyType.INT, "Month (1-12)", false),
624 new CaddxProperty("panel_log_event_day", 8, 1, 0, 0, CaddxPropertyType.INT, "Day (1-31)", false),
626 new CaddxProperty("panel_log_event_hour", 9, 1, 0, 0, CaddxPropertyType.INT, "Hour (0-23)", false),
628 new CaddxProperty("panel_log_event_minute", 10, 1, 0, 0, CaddxPropertyType.INT, "Minute (0-59)", false)),
630 KEYPAD_MESSAGE_RECEIVED(0x0b, null, 3, "Keypad Message Received",
631 "This message contains a keystroke from a keypad that is in a Terminal Mode.", CaddxDirection.IN,
636 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
639 new CaddxProperty("", 1, 2, 0, 0, CaddxPropertyType.INT, "Keypad address", false),
642 new CaddxProperty("keypad_key_pressed", 1, 1, 0, 0, CaddxPropertyType.INT, "Key value", false)),
644 PROGRAM_DATA_REPLY(0x10, null, 13, "Program Data Reply",
645 "This message will contain a system device’s buss address, logical location, and program data that was previously requested (via Program Data Request (3Ch)).",
646 CaddxDirection.IN, CaddxSource.PANEL,
650 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
653 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "Device’s buss address", false),
655 // Byte 3 Upper logical location / offset
656 new CaddxProperty("", 3, 1, 0, 3, CaddxPropertyType.INT, "Bits 8-11 of logical location", false),
657 new CaddxProperty("", 3, 1, 4, 4, CaddxPropertyType.INT, "Segment size (0=byte, 1=nibble)", false),
658 new CaddxProperty("", 3, 1, 5, 1, CaddxPropertyType.BIT, "Must be 0", false),
659 new CaddxProperty("", 3, 1, 6, 6, CaddxPropertyType.INT, "Segment offset (0-none, 1=8 bytes)", false),
660 new CaddxProperty("", 3, 1, 7, 1, CaddxPropertyType.BIT, "Must be 0", false),
662 // Byte 4 Bits 0-7 of logical location
663 new CaddxProperty("", 4, 1, 0, 0, CaddxPropertyType.INT, "Bits 0-7 of logical location", false),
665 // Byte 5 Location length / data type
666 new CaddxProperty("", 5, 1, 0, 4, CaddxPropertyType.INT, "Number of segments in location (0=1 segment)",
668 new CaddxProperty("", 5, 1, 5, 7, CaddxPropertyType.INT,
669 "Data type : 0=Binary 1=Decimal 2=Hexadecimal 3=ASCII 4=unused 5=unused 6=unused 7=unused", false),
672 new CaddxProperty("", 6, 1, 0, 0, CaddxPropertyType.INT, "Data byte 0", false),
674 new CaddxProperty("", 7, 1, 0, 0, CaddxPropertyType.INT, "Data byte 1", false),
676 new CaddxProperty("", 8, 1, 0, 0, CaddxPropertyType.INT, "Data byte 2", false),
678 new CaddxProperty("", 9, 1, 0, 0, CaddxPropertyType.INT, "Data byte 3", false),
680 new CaddxProperty("", 10, 1, 0, 0, CaddxPropertyType.INT, "Data byte 4", false),
682 new CaddxProperty("", 11, 1, 0, 0, CaddxPropertyType.INT, "Data byte 5", false),
684 new CaddxProperty("", 12, 1, 0, 0, CaddxPropertyType.INT, "Data byte 6", false),
686 new CaddxProperty("", 13, 1, 0, 0, CaddxPropertyType.INT, "Data byte 7", false)),
688 USER_INFORMATION_REPLY(0x12, null, 7, "User Information Reply",
689 "This message will contain all digits, attributes and partitions for the requested user PIN number that was previously requested (via User Information Request with(out) PIN (32h,33h)).",
690 CaddxDirection.IN, CaddxSource.PANEL,
694 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
697 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "User Number (1=user 1)", false),
699 // Byte 3 PIN digits 1 & 2
700 new CaddxProperty("", 3, 1, 0, 3, CaddxPropertyType.INT, "PIN digit 1", false),
701 new CaddxProperty("", 3, 1, 4, 7, CaddxPropertyType.INT, "PIN digit 2", false),
703 // Byte 4 PIN digits 3 & 4
704 new CaddxProperty("", 4, 1, 0, 3, CaddxPropertyType.INT, "PIN digit 3", false),
705 new CaddxProperty("", 4, 1, 4, 7, CaddxPropertyType.INT, "PIN digit 4", false),
707 // Byte 5 PIN digits 5 & 6
708 new CaddxProperty("", 5, 1, 0, 3, CaddxPropertyType.INT, "PIN digit 5 (pad with 0 if 4 digit PIN)", false),
709 new CaddxProperty("", 5, 1, 4, 7, CaddxPropertyType.INT, "PIN digit 6 (pad with 0 if 4 digit PIN)", false),
711 // Byte 6* Authority flags
712 new CaddxProperty("", 6, 1, 0, 1, CaddxPropertyType.BIT,
713 "Reserved (if bit 7 is clear) || Output 1 enable (if bit 7 is set)", false),
714 new CaddxProperty("", 6, 1, 1, 1, CaddxPropertyType.BIT,
715 "Arm only (if bit 7 is clear) || Output 2 enable (if bit 7 is set)", false),
716 new CaddxProperty("", 6, 1, 2, 1, CaddxPropertyType.BIT,
717 "Arm only (during close window) (if bit 7 is clear) || Output 3 enable (if bit 7 is set)", false),
718 new CaddxProperty("", 6, 1, 3, 1, CaddxPropertyType.BIT,
719 "Master / program (if bit 7 is clear) || Output 4 enable (if bit 7 is set)", false),
720 new CaddxProperty("", 6, 1, 4, 1, CaddxPropertyType.BIT,
721 "Arm / Disarm (if bit 7 is clear) || Arm / Disarm (if bit 7 is set)", false),
722 new CaddxProperty("", 6, 1, 5, 1, CaddxPropertyType.BIT,
723 "Bypass enable (if bit 7 is clear) || Bypass enable (if bit 7 is set)", false),
724 new CaddxProperty("", 6, 1, 6, 1, CaddxPropertyType.BIT,
725 "Open / close report enable (if bit 7 is clear) || Open / close report enable (if bit 7 is set)",
727 new CaddxProperty("", 6, 1, 7, 1, CaddxPropertyType.BIT,
728 "Must be a 0 (if bit 7 is clear) || Must be a 1 (if bit 7 is set)", false),
730 // Byte 7 Authorized partition(s) mask
731 new CaddxProperty("", 7, 1, 0, 1, CaddxPropertyType.BIT, "Authorized for partition 1", false),
732 new CaddxProperty("", 7, 1, 1, 1, CaddxPropertyType.BIT, "Authorized for partition 2", false),
733 new CaddxProperty("", 7, 1, 2, 1, CaddxPropertyType.BIT, "Authorized for partition 3", false),
734 new CaddxProperty("", 7, 1, 3, 1, CaddxPropertyType.BIT, "Authorized for partition 4", false),
735 new CaddxProperty("", 7, 1, 4, 1, CaddxPropertyType.BIT, "Authorized for partition 5", false),
736 new CaddxProperty("", 7, 1, 5, 1, CaddxPropertyType.BIT, "Authorized for partition 6", false),
737 new CaddxProperty("", 7, 1, 6, 1, CaddxPropertyType.BIT, "Authorized for partition 7", false),
738 new CaddxProperty("", 7, 1, 7, 1, CaddxPropertyType.BIT, "Authorized for partition 8", false)),
740 REQUEST_FAILED(0x1c, null, 1, "Command / Request Failed",
741 "This message is sent in place of a ‘Positive Acknowledge’ message when a command or request was received properly, but the system was unable to carry out the task correctly. This would normally occur 2.5 seconds after receiving the initial command or request.",
742 CaddxDirection.IN, CaddxSource.PANEL,
746 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false)),
748 POSITIVE_ACKNOWLEDGE(0x1d, null, 1, "Positive Acknowledge",
749 "This message will acknowledge receipt of a message that had the ‘Acknowledge Required’ flag set in the command byte.",
750 CaddxDirection.IN, CaddxSource.PANEL,
753 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false)),
755 NEGATIVE_ACKNOWLEDGE(0x1e, null, 1, "Negative Acknowledge",
756 "This message is sent in place of a ‘Positive Acknowledge’ message when the message received was not properly formatted. It will also be sent if an additional message is received before a reply has been returned during the 2.5 second allowable reply period of a previous message. An ‘Implied Negative Acknowledge’ is assumed when no acknowledge is returned with 3 seconds.",
757 CaddxDirection.IN, CaddxSource.PANEL,
761 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false)),
763 MESSAGE_REJECTED(0x1f, null, 1, "Message Rejected",
764 "This message is sent in place of a ‘Positive Acknowledge’ message when the message was received properly formatted, but not supported or disabled.",
765 CaddxDirection.IN, CaddxSource.PANEL,
769 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false)),
771 INTERFACE_CONFIGURATION_REQUEST(0x21, new int[] { 0x01, 0x1c, 0x1f }, 1, "Interface Configuration Request",
772 "This request will cause the return of the Interface Configuration Message (01h) containing information about the options selected on the interface.",
773 CaddxDirection.OUT, CaddxSource.NONE,
777 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false)),
779 ZONE_NAME_REQUEST(0x23, new int[] { 0x03, 0x1c, 0x1f }, 2, "Zone Name Request",
780 "This request will cause the return of the Zone Name Message (03h) for the zone number that was requested.",
781 CaddxDirection.OUT, CaddxSource.NONE,
785 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
788 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "Zone number (0= zone 1)", true)),
790 ZONE_STATUS_REQUEST(0x24, new int[] { 0x04, 0x1c, 0x1f }, 2, "Zone Status Request",
791 "This request will cause the return of the Zone Status Message (04h) for the zone number that was requested.",
792 CaddxDirection.OUT, CaddxSource.NONE,
796 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
799 new CaddxProperty("zone_number", 2, 1, 0, 0, CaddxPropertyType.INT, "Zone number (0= zone 1)", true)),
801 ZONES_SNAPSHOT_REQUEST(0x25, new int[] { 0x05, 0x1c, 0x1f }, 2, "Zones Snapshot Request",
802 "This request will cause the return of the Zones Snapshot Message (05h) with the group of zones starting at the zone 1 plus the offset value.",
803 CaddxDirection.OUT, CaddxSource.NONE,
807 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
810 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "Zone number offset (0= start at zone 1)", true)),
812 PARTITION_STATUS_REQUEST(0x26, new int[] { 0x06, 0x1c, 0x1f }, 2, "Partition Status Request",
813 "This request will cause the return of the Partition Status Message (06h) for the partition number that was requested.",
814 CaddxDirection.OUT, CaddxSource.NONE,
818 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
821 new CaddxProperty("partition_number", 2, 1, 0, 0, CaddxPropertyType.INT,
822 "Partition number (0= partition 1)", true)),
824 PARTITIONS_SNAPSHOT_REQUEST(0x27, new int[] { 0x07, 0x1c, 0x1f }, 1, "Partitions Snapshot Request",
825 "This request will cause the return of the Partitions Snapshot Message (07h) containing all partitions.",
826 CaddxDirection.OUT, CaddxSource.NONE,
830 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false)),
832 SYSTEM_STATUS_REQUEST(0x28, new int[] { 0x08, 0x1c, 0x1f }, 1, "System Status Request",
833 "This request will cause the return of the System Status Message (08h).", CaddxDirection.OUT,
838 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false)),
840 SEND_X_10_MESSAGE(0x29, new int[] { 0x1d, 0x1c, 0x1f }, 4, "Send X-10 Message",
841 "This message will contain information about an X-10 command that should be resent on the system bus.",
842 CaddxDirection.OUT, CaddxSource.NONE,
846 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
849 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "House code (0=house A) ", true),
852 new CaddxProperty("", 3, 1, 0, 0, CaddxPropertyType.INT, "Unit code (0=unit 1)", true),
855 new CaddxProperty("", 4, 1, 0, 0, CaddxPropertyType.INT, "X-10 function code (see table at message # 0Ah)",
858 LOG_EVENT_REQUEST(0x2a, new int[] { 0x0a, 0x1c, 0x1f }, 2, "Log Event Request",
859 "This request will cause the return of the Log Event Message (0Ah).", CaddxDirection.OUT, CaddxSource.NONE,
860 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
861 new CaddxProperty("panel_log_event_number", 2, 1, 0, 0, CaddxPropertyType.INT, "Event number requested",
864 SEND_KEYPAD_TEXT_MESSAGE(0x2b, new int[] { 0x1d, 0x1c, 0x1f }, 12, "Send Keypad Text Message",
865 "This message will contain ASCII text for a specific keypad on the bus that will be displayed during Terminal Mode.",
866 CaddxDirection.OUT, CaddxSource.NONE,
870 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
871 // Byte 2 Keypad address
872 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "Keypad address", false),
873 // Byte 3 Keypad type (0=NX-148e)(all others not supported)
874 new CaddxProperty("", 3, 1, 0, 0, CaddxPropertyType.INT, "Keypad type", false),
875 // Byte 4 Display storage location (0=top left corner
876 new CaddxProperty("", 4, 1, 0, 0, CaddxPropertyType.INT, "Display storage location", false),
877 // Byte 5 ASCII character for location +0
878 new CaddxProperty("", 5, 1, 0, 0, CaddxPropertyType.INT, "ASCII character for location +0", false),
879 // Byte 6 ASCII character for location +1
880 new CaddxProperty("", 6, 1, 0, 0, CaddxPropertyType.INT, "ASCII character for location +1", false),
881 // Byte 7 ASCII character for location +2
882 new CaddxProperty("", 7, 1, 0, 0, CaddxPropertyType.INT, "ASCII character for location +2", false),
883 // Byte 8 ASCII character for location +3
884 new CaddxProperty("", 8, 1, 0, 0, CaddxPropertyType.INT, "ASCII character for location +3", false),
885 // Byte 9 ASCII character for location +4
886 new CaddxProperty("", 9, 1, 0, 0, CaddxPropertyType.INT, "ASCII character for location +4", false),
887 // Byte 10 ASCII character for location +5
888 new CaddxProperty("", 10, 1, 0, 0, CaddxPropertyType.INT, "ASCII character for location +5", false),
889 // Byte 11 ASCII character for location +6
890 new CaddxProperty("", 11, 1, 0, 0, CaddxPropertyType.INT, "ASCII character for location +6", false),
891 // Byte 12 ASCII character for location +7
892 new CaddxProperty("", 12, 1, 0, 0, CaddxPropertyType.INT, "ASCII character for location +7", false)),
894 KEYPAD_TERMINAL_MODE_REQUEST(0x2c, new int[] { 0x1d, 0x1c, 0x1f }, 3, "Keypad Terminal Mode Request",
895 "This message will contain the address of a keypad that should enter a Terminal Mode for the time contained. Only one keypad should be in the Terminal Mode at a time.",
896 CaddxDirection.OUT, CaddxSource.NONE,
900 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
901 // Byte 2 Keypad address
902 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "Keypad address", false),
904 new CaddxProperty("", 3, 1, 0, 0, CaddxPropertyType.INT, "Number of seconds for Terminal Mode", false)),
906 PROGRAM_DATA_REQUEST(0x30, new int[] { 0x10, 0x1c, 0x1f }, 4, "Program Data Request",
907 "This message will contain a system device’s buss address and the logical location of program data that will be returned in a Program Data Reply message (10h).",
908 CaddxDirection.OUT, CaddxSource.NONE,
912 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
913 // Byte 2 Device’s buss address
914 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "Device’s buss address", false),
915 // Byte 3 Upper logical location / offset
916 // Bits 0-3 Bits 8-11 of logical location
917 new CaddxProperty("", 3, 1, 0, 4, CaddxPropertyType.INT, "Bits 8-11 of logical location", false),
918 // Bits 4,5 Must be 0
919 new CaddxProperty("", 3, 1, 4, 2, CaddxPropertyType.BIT, "Must be 0", false),
920 // Bit 6 Segment offset (0-none, 1=8 bytes)
921 new CaddxProperty("", 3, 1, 6, 1, CaddxPropertyType.BIT, "Segment offset (0-none, 1=8 bytes)", false),
923 new CaddxProperty("", 3, 1, 7, 1, CaddxPropertyType.BIT, "Must be 0", false),
924 // Byte 4 Bits 0-7 of logical location
925 new CaddxProperty("", 4, 1, 0, 0, CaddxPropertyType.INT, "Bits 0-7 of logical location", false)),
927 PROGRAM_DATA_COMMAND(0x31, new int[] { 0x1d, 0x1c, 0x1f }, 13, "Program Data Command",
928 "This message will contain a system device’s buss address and the logical location where the included data should be stored.",
929 CaddxDirection.OUT, CaddxSource.NONE,
932 // Byte 1 Message number
933 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
934 // Byte 2 Device’s buss address
935 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "Device’s buss address", false),
936 // Byte 3 Upper logical location / offset
937 // Bits 0-3 Bits 8-11 of logical location
938 new CaddxProperty("", 3, 1, 0, 4, CaddxPropertyType.BIT, "Bits 8-11 of logical location", false),
939 // Bit 4 Segment size (0=byte, 1=nibble)
940 new CaddxProperty("", 3, 1, 4, 1, CaddxPropertyType.BIT, "Segment size (0=byte, 1=nibble)", false),
942 new CaddxProperty("", 3, 1, 5, 1, CaddxPropertyType.BIT, "Must be 1", false),
943 // Bit 6 Segment offset (0-none, 1=8 bytes)
944 new CaddxProperty("", 3, 1, 6, 1, CaddxPropertyType.BIT, "Segment offset (0-none, 1=8 bytes)", false),
946 new CaddxProperty("", 3, 1, 7, 1, CaddxPropertyType.BIT, "Must be 0", false),
947 // Byte 4 Bits 0-7 of logical location
948 new CaddxProperty("", 4, 1, 0, 0, CaddxPropertyType.INT, "Bits 0-7 of logical location", false),
949 // Byte 5 Location length / data type
950 // Bits 0-4 Number of segments in location (0=1 segment)
951 new CaddxProperty("", 5, 1, 0, 5, CaddxPropertyType.BIT, "Number of segments in location (0=1 segment)",
953 // Bits 5-7 Data type : 5=unused
954 new CaddxProperty("", 5, 1, 5, 3, CaddxPropertyType.BIT,
955 "Data type: 0=Binary, 1=Decimal, 2=Hexadecimal, 3=ASCII, 4=unused, 5=unused, 6=unused, 7=unused",
957 // Byte 6 Data byte 1 to store
958 new CaddxProperty("", 6, 1, 0, 0, CaddxPropertyType.INT, "Data byte 1 to store", false),
959 // Byte 7 Data byte 2 to store
960 new CaddxProperty("", 7, 1, 0, 0, CaddxPropertyType.INT, "Data byte 2 to store", false),
961 // Byte 8 Data byte 3 to store
962 new CaddxProperty("", 8, 1, 0, 0, CaddxPropertyType.INT, "Data byte 3 to store", false),
963 // Byte 9 Data byte 4 to store
964 new CaddxProperty("", 9, 1, 0, 0, CaddxPropertyType.INT, "Data byte 4 to store", false),
965 // Byte 10 Data byte 5 to store
966 new CaddxProperty("", 10, 1, 0, 0, CaddxPropertyType.INT, "Data byte 5 to store", false),
967 // Byte 11 Data byte 6 to store
968 new CaddxProperty("", 11, 1, 0, 0, CaddxPropertyType.INT, "Data byte 6 to store", false),
969 // Byte 12 Data byte 7 to store
970 new CaddxProperty("", 12, 1, 0, 0, CaddxPropertyType.INT, "Data byte 7 to store", false),
971 // Byte 13 Data byte 8 to store
972 new CaddxProperty("", 13, 1, 0, 0, CaddxPropertyType.INT, "Data byte 8 to store", false)),
974 USER_INFORMATION_REQUEST_WITH_PIN(0x32, new int[] { 0x12, 0x1c, 0x1f }, 5, "User Information Request with PIN",
975 "This message will contain a user number for which information is being requested and a PIN that will be checked for Master capability before proceeding. The information will be returned in a User Information Reply message (12h).",
976 CaddxDirection.OUT, CaddxSource.NONE,
979 // Byte 1 Message number
980 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
981 // Byte 2 (Master) PIN digits 1 & 2
982 // Bits 0-3 PIN digit 1
983 new CaddxProperty("", 2, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 1", false),
984 // Bits 4-7 PIN digit 2
985 new CaddxProperty("", 2, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 2", false),
986 // Byte 3 (Master) PIN digits 3 & 4
987 // Bits 0-3 PIN digit 3
988 new CaddxProperty("", 3, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 3", false),
989 // Bits 4-7 PIN digit 4
990 new CaddxProperty("", 3, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 4", false),
991 // Byte 4 (Master) PIN digits 5 & 6
992 // Bits 0-3 PIN digit 5 (pad with 0 if 4 digit PIN)
993 new CaddxProperty("", 4, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 5 (pad with 0 if 4 digit PIN)", false),
994 // Bits 4-7 PIN digit 6 (pad with 0 if 4 digit PIN)
995 new CaddxProperty("", 4, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 6 (pad with 0 if 4 digit PIN)", false),
996 // Byte 5 User number (1=user 1)
997 new CaddxProperty("", 5, 1, 0, 0, CaddxPropertyType.INT, "User number (1=user 1)", false)),
999 USER_INFORMATION_REQUEST_WITHOUT_PIN(0x33, new int[] { 0x12, 0x1c, 0x1f }, 2,
1000 "User Information Request without PIN",
1001 "This message will contain a user number for which information is being requested, no authentication will be performed. The information will be returned in a User Information Reply message (12h).",
1002 CaddxDirection.OUT, CaddxSource.NONE,
1005 // Byte 1 Message number
1006 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
1007 // Byte 2 User number (1=user 1)
1008 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "User number (1=user 1)", false)),
1010 SET_USER_CODE_COMMAND_WITH_PIN(0x34, new int[] { 0x12, 0x1c, 0x1f }, 8, "Set User Code Command with PIN",
1011 "This message will contain all digits that should be stored as the new code for the designated User number. A PIN will be checked for Master capability before proceeding. A successful programming of the user code will result in the User Information Reply (12h) returned in place of the acknowledge.",
1012 CaddxDirection.OUT, CaddxSource.NONE,
1015 // Byte 1 Message number
1016 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
1017 // Byte 2 (Master) PIN digits 1 & 2
1018 // Bits 0-3 PIN digit 1
1019 new CaddxProperty("", 2, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 1", false),
1020 // Bits 4-7 PIN digit 2
1021 new CaddxProperty("", 2, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 2", false),
1022 // Byte 3 (Master) PIN digits 3 & 4
1023 // Bits 0-3 PIN digit 3
1024 new CaddxProperty("", 3, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 3", false),
1025 // Bits 4-7 PIN digit 4
1026 new CaddxProperty("", 3, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 4", false),
1027 // Byte 4 (Master) PIN digits 5 & 6
1028 // Bits 0-3 PIN digit 5 (pad with 0 if 4 digit PIN)
1029 new CaddxProperty("", 4, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 5 (pad with 0 if 4 digit PIN)", false),
1030 // Bits 4-7 PIN digit 6 (pad with 0 if 4 digit PIN)
1031 new CaddxProperty("", 4, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 6 (pad with 0 if 4 digit PIN)", false),
1032 // Byte 5 User number (1=user 1)
1033 new CaddxProperty("", 5, 1, 0, 0, CaddxPropertyType.INT, "User number (1=user 1)", false),
1034 // Byte 6 PIN digits 1 & 2
1035 // Bits 0-3 PIN digit 1
1036 new CaddxProperty("", 6, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 1", false),
1037 // Bits 4-7 PIN digit 2
1038 new CaddxProperty("", 6, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 2", false),
1039 // Byte 7 PIN digits 3 & 4
1040 // Bits 0-3 PIN digit 3
1041 new CaddxProperty("", 7, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 3", false),
1042 // Bits 4-7 PIN digit 4
1043 new CaddxProperty("", 7, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 4", false),
1044 // Byte 8 PIN digits 5 & 6
1045 // Bits 0-3 PIN digit 5 (pad with 0 if 4 digit PIN)
1046 new CaddxProperty("", 8, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 5 (pad with 0 if 4 digit PIN)", false),
1047 // Bits 4-7 PIN digit 6 (pad with 0 if 4 digit PIN)
1048 new CaddxProperty("", 8, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 6 (pad with 0 if 4 digit PIN)", false)),
1050 SET_USER_CODE_COMMAND_WITHOUT_PIN(0x35, new int[] { 0x12, 0x1c, 0x1f }, 5, "Set User Code Command without PIN",
1051 "This message will contain all digits that should be stored as the new code for the designated User number. No authentication will be performed. A successful programming of the user code will result in the User Information Reply (12h) returned in place of the acknowledge.",
1052 CaddxDirection.OUT, CaddxSource.NONE,
1055 // Byte 1 Message number
1056 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
1057 // Byte 2 User number (1=user 1)
1058 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "User number (1=user 1)", false),
1059 // Byte 3 PIN digits 1 & 2
1060 // Bits 0-3 PIN digit 1
1061 new CaddxProperty("", 3, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 1", false),
1062 // Bits 4-7 PIN digit 2
1063 new CaddxProperty("", 3, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 2", false),
1064 // Byte 4 PIN digits 3 & 4
1065 // Bits 0-3 PIN digit 3
1066 new CaddxProperty("", 4, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 3", false),
1067 // Bits 4-7 PIN digit 4
1068 new CaddxProperty("", 4, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 4", false),
1069 // Byte 5 PIN digits 5 & 6
1070 // Bits 0-3 PIN digit 5 (pad with 0 if 4 digit PIN)
1071 new CaddxProperty("", 5, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 5 (pad with 0 if 4 digit PIN)", false),
1072 // Bits 4-7 PIN digit 6 (pad with 0 if 4 digit PIN)
1073 new CaddxProperty("", 5, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 6 (pad with 0 if 4 digit PIN)", false)),
1075 SET_USER_AUTHORIZATION_COMMAND_WITH_PIN(0x36, new int[] { 0x1d, 0x1c, 0x1f }, 7,
1076 "Set User Authorization Command with PIN",
1077 "This message will contain all attributes and partitions that should be stored as the new information for the designated User number. A PIN will be checked for Master capability before proceeding.",
1078 CaddxDirection.OUT, CaddxSource.NONE,
1081 // Byte 1 Message number
1082 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
1084 // Byte 2 (Master) PIN digits 1 & 2
1085 new CaddxProperty("", 2, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 1", false),
1086 new CaddxProperty("", 2, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 2", false),
1088 // Byte 3 (Master) PIN digits 3 & 4
1089 new CaddxProperty("", 3, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 3", false),
1090 new CaddxProperty("", 3, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 4", false),
1092 // Byte 4 (Master) PIN digits 5 & 6
1093 new CaddxProperty("", 4, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 5 (pad with 0 if 4 digit PIN)", false),
1094 new CaddxProperty("", 4, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 6 (pad with 0 if 4 digit PIN)", false),
1096 // Byte 5 User number (1=user 1)
1097 new CaddxProperty("", 5, 1, 0, 0, CaddxPropertyType.INT, "User number (1=user 1)", false),
1099 // Byte 6 Authority flags
1100 new CaddxProperty("", 6, 1, 0, 1, CaddxPropertyType.BIT,
1101 "Reserved (if bit 7 is clear) || Output 1 enable (if bit 7 is set)", false),
1102 new CaddxProperty("", 6, 1, 1, 1, CaddxPropertyType.BIT,
1103 "Arm only (if bit 7 is clear) || Output 2 enable (if bit 7 is set)", false),
1104 new CaddxProperty("", 6, 1, 2, 1, CaddxPropertyType.BIT,
1105 "Arm only (during close window) (if bit 7 is clear) || Output 3 enable (if bit 7 is set)", false),
1106 new CaddxProperty("", 6, 1, 3, 1, CaddxPropertyType.BIT,
1107 "Master / program (if bit 7 is clear) || Output 4 enable (if bit 7 is set)", false),
1108 new CaddxProperty("", 6, 1, 4, 1, CaddxPropertyType.BIT,
1109 "Arm / Disarm (if bit 7 is clear) || Arm / Disarm (if bit 7 is set)", false),
1110 new CaddxProperty("", 6, 1, 5, 1, CaddxPropertyType.BIT,
1111 "Bypass enable (if bit 7 is clear) || Bypass enable (if bit 7 is set)", false),
1112 new CaddxProperty("", 6, 1, 6, 1, CaddxPropertyType.BIT,
1113 "Open / close report enable (if bit 7 is clear) || Open / close report enable (if bit 7 is set)",
1115 new CaddxProperty("", 6, 1, 7, 1, CaddxPropertyType.BIT,
1116 "Must be a 0 (if bit 7 is clear) || Must be a 1 (if bit 7 is set)", false),
1118 // Byte 7 Authorized partition(s) mask
1119 new CaddxProperty("", 7, 1, 0, 1, CaddxPropertyType.BIT, "Authorized for partition 1", false),
1120 new CaddxProperty("", 7, 1, 1, 1, CaddxPropertyType.BIT, "Authorized for partition 2", false),
1121 new CaddxProperty("", 7, 1, 2, 1, CaddxPropertyType.BIT, "Authorized for partition 3", false),
1122 new CaddxProperty("", 7, 1, 3, 1, CaddxPropertyType.BIT, "Authorized for partition 4", false),
1123 new CaddxProperty("", 7, 1, 4, 1, CaddxPropertyType.BIT, "Authorized for partition 5", false),
1124 new CaddxProperty("", 7, 1, 5, 1, CaddxPropertyType.BIT, "Authorized for partition 6", false),
1125 new CaddxProperty("", 7, 1, 6, 1, CaddxPropertyType.BIT, "Authorized for partition 7", false),
1126 new CaddxProperty("", 7, 1, 7, 1, CaddxPropertyType.BIT, "Authorized for partition 8", false)),
1128 SET_USER_AUTHORIZATION_COMMAND_WITHOUT_PIN(0x37, new int[] { 0x1d, 0x1c, 0x1f }, 4,
1129 "Set User Authorization Command without PIN",
1130 "This message will contain all attributes and partitions that should be stored as the new information for the designated User number. No authentication will be performed.",
1131 CaddxDirection.OUT, CaddxSource.NONE,
1134 // Byte 1 Message number
1135 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
1137 // Byte 2 User number (1=user 1)
1138 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "User number (1=user 1)", false),
1140 // Byte 3 Authority flags
1141 new CaddxProperty("", 3, 1, 0, 1, CaddxPropertyType.BIT,
1142 "Reserved (if bit 7 is clear) || Output 1 enable (if bit 7 is set)", false),
1143 new CaddxProperty("", 3, 1, 1, 1, CaddxPropertyType.BIT,
1144 "Arm only (if bit 7 is clear) || Output 2 enable (if bit 7 is set)", false),
1145 new CaddxProperty("", 3, 1, 2, 1, CaddxPropertyType.BIT,
1146 "Arm only (during close window) (if bit 7 is clear) || Output 3 enable (if bit 7 is set)", false),
1147 new CaddxProperty("", 3, 1, 3, 1, CaddxPropertyType.BIT,
1148 "Master / program (if bit 7 is clear) || Output 4 enable (if bit 7 is set)", false),
1149 new CaddxProperty("", 3, 1, 4, 1, CaddxPropertyType.BIT,
1150 "Arm / Disarm (if bit 7 is clear) || Arm / Disarm (if bit 7 is set)", false),
1151 new CaddxProperty("", 3, 1, 5, 1, CaddxPropertyType.BIT,
1152 "Bypass enable (if bit 7 is clear) || Bypass enable (if bit 7 is set)", false),
1153 new CaddxProperty("", 3, 1, 6, 1, CaddxPropertyType.BIT,
1154 "Open / close report enable (if bit 7 is clear) || Open / close report enable (if bit 7 is set)",
1156 new CaddxProperty("", 3, 1, 7, 1, CaddxPropertyType.BIT,
1157 "Must be a 0 (if bit 7 is clear) || Must be a 1 (if bit 7 is set)", false),
1159 // Byte 4 Authorized partition(s) mask
1160 new CaddxProperty("", 4, 1, 0, 1, CaddxPropertyType.BIT, "Authorized for partition 1", false),
1161 new CaddxProperty("", 4, 1, 1, 1, CaddxPropertyType.BIT, "Authorized for partition 2", false),
1162 new CaddxProperty("", 4, 1, 2, 1, CaddxPropertyType.BIT, "Authorized for partition 3", false),
1163 new CaddxProperty("", 4, 1, 3, 1, CaddxPropertyType.BIT, "Authorized for partition 4", false),
1164 new CaddxProperty("", 4, 1, 4, 1, CaddxPropertyType.BIT, "Authorized for partition 5", false),
1165 new CaddxProperty("", 4, 1, 5, 1, CaddxPropertyType.BIT, "Authorized for partition 6", false),
1166 new CaddxProperty("", 4, 1, 6, 1, CaddxPropertyType.BIT, "Authorized for partition 7", false),
1167 new CaddxProperty("", 4, 1, 7, 1, CaddxPropertyType.BIT, "Authorized for partition 8", false)),
1169 STORE_COMMUNICATION_EVENT_COMMAND(0x3a, new int[] { 0x1d, 0x1c, 0x1f }, 6, "Store Communication Event Command",
1170 "This message will submit an event to the control’s communication stack for possible transmission over its telephone or alternate communications path.",
1171 CaddxDirection.OUT, CaddxSource.NONE),
1173 SET_CLOCK_CALENDAR_COMMAND(0x3b, new int[] { 0x1d, 0x1c, 0x1f }, 7, "Set Clock / Calendar Command",
1174 "This message will set the clock / calendar in the system.", CaddxDirection.OUT, CaddxSource.NONE,
1177 // Byte 1 Message number
1178 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
1180 // Byte 2 Year (00-99)
1181 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "Year (00-99)", false),
1183 // Byte 3 Month (1-12)
1184 new CaddxProperty("", 3, 1, 0, 0, CaddxPropertyType.INT, "Month (1-12)", false),
1186 // Byte 4 Day (1-31)
1187 new CaddxProperty("", 4, 1, 0, 0, CaddxPropertyType.INT, "Day (1-31)", false),
1189 // Byte 5 Hour (0-23)
1190 new CaddxProperty("", 5, 1, 0, 0, CaddxPropertyType.INT, "Hour (0-23)", false),
1192 // Byte 6 Minute (0-59)
1193 new CaddxProperty("", 6, 1, 0, 0, CaddxPropertyType.INT, "Minute (0-59)", false),
1196 new CaddxProperty("", 7, 1, 0, 0, CaddxPropertyType.INT, "Day", false)),
1198 PRIMARY_KEYPAD_FUNCTION_WITH_PIN(0x3c, new int[] { 0x1d, 0x1c, 0x1f }, 6, "Primary Keypad Function with PIN",
1199 "This message will contain a value that defines with function to perform, the partitions to use and a PIN value for the validation.",
1200 CaddxDirection.OUT, CaddxSource.NONE,
1203 // Byte 1 Message number
1204 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
1206 // Byte 2 PIN digits 1 & 2
1207 new CaddxProperty("", 2, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 1", false),
1208 new CaddxProperty("", 2, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 2", false),
1210 // Byte 3 PIN digits 3 & 4
1211 new CaddxProperty("", 3, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 3", false),
1212 new CaddxProperty("", 3, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 4", false),
1214 // Byte 4 PIN digits 5 & 6
1215 new CaddxProperty("", 4, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 5 (pad with 0 if 4 digit PIN)", false),
1216 new CaddxProperty("", 4, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 6 (pad with 0 if 4 digit PIN)", false),
1218 // Byte 5 Keypad function [00h Turn off any sounder or alarm, 01h Disarm, 02h Arm in away mode, 03h Arm
1219 // in stay mode, 04h Cancel, 05h Initiate auto-arm, 06h Start walk-test mode, 07h Stop walk-test mode,
1220 // 08h-FFh Reserved]
1221 new CaddxProperty("", 5, 1, 0, 0, CaddxPropertyType.INT,
1222 "Keypad function [00h Turn off any sounder or alarm, 01h Disarm, 02h Arm in away mode, 03h Arm in stay mode, 04h Cancel, 05h Initiate auto-arm, 06h Start walk-test mode, 07h Stop walk-test mode, 08h-FFh Reserved]",
1225 // Byte 6 Partition mask
1226 new CaddxProperty("", 6, 1, 0, 1, CaddxPropertyType.BIT, "Perform on partition 1 (if PIN has access)",
1228 new CaddxProperty("", 6, 1, 1, 1, CaddxPropertyType.BIT, "Perform on partition 2 (if PIN has access)",
1230 new CaddxProperty("", 6, 1, 2, 1, CaddxPropertyType.BIT, "Perform on partition 3 (if PIN has access)",
1232 new CaddxProperty("", 6, 1, 3, 1, CaddxPropertyType.BIT, "Perform on partition 4 (if PIN has access)",
1234 new CaddxProperty("", 6, 1, 4, 1, CaddxPropertyType.BIT, "Perform on partition 5 (if PIN has access)",
1236 new CaddxProperty("", 6, 1, 5, 1, CaddxPropertyType.BIT, "Perform on partition 6 (if PIN has access)",
1238 new CaddxProperty("", 6, 1, 6, 1, CaddxPropertyType.BIT, "Perform on partition 7 (if PIN has access)",
1240 new CaddxProperty("", 6, 1, 7, 1, CaddxPropertyType.BIT, "Perform on partition 8 (if PIN has access)",
1243 PRIMARY_KEYPAD_FUNCTION_WITHOUT_PIN(0x3d, new int[] { 0x1d, 0x1c, 0x1f }, 4, "Primary Keypad Function without PIN",
1244 "This message will contain a value that defines with function to perform, the partitions and user number to assign to the function.",
1245 CaddxDirection.OUT, CaddxSource.NONE,
1248 // Byte 1 Message number
1249 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
1251 // Byte 2 "Keypad function [00h Turn off any sounder or alarm, 01h Disarm, 02h Arm in away mode, 03h Arm
1252 // in stay mode, 04h Cancel, 05h Initiate auto-arm, 06h Start walk-test mode, 07h Stop walk-test mode,
1253 // 08h-FFh Reserved]",
1254 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT,
1255 "Keypad function [00h Turn off any sounder or alarm, 01h Disarm, 02h Arm in away mode, 03h Arm in stay mode, 04h Cancel, 05h Initiate auto-arm, 06h Start walk-test mode, 07h Stop walk-test mode, 08h-FFh Reserved]",
1258 // Byte 3 Partition mask
1259 new CaddxProperty("", 3, 1, 0, 1, CaddxPropertyType.BIT, "Perform on partition 1 (if PIN has access)",
1261 new CaddxProperty("", 3, 1, 1, 1, CaddxPropertyType.BIT, "Perform on partition 2 (if PIN has access)",
1263 new CaddxProperty("", 3, 1, 2, 1, CaddxPropertyType.BIT, "Perform on partition 3 (if PIN has access)",
1265 new CaddxProperty("", 3, 1, 3, 1, CaddxPropertyType.BIT, "Perform on partition 4 (if PIN has access)",
1267 new CaddxProperty("", 3, 1, 4, 1, CaddxPropertyType.BIT, "Perform on partition 5 (if PIN has access)",
1269 new CaddxProperty("", 3, 1, 5, 1, CaddxPropertyType.BIT, "Perform on partition 6 (if PIN has access)",
1271 new CaddxProperty("", 3, 1, 6, 1, CaddxPropertyType.BIT, "Perform on partition 7 (if PIN has access)",
1273 new CaddxProperty("", 3, 1, 7, 1, CaddxPropertyType.BIT, "Perform on partition 8 (if PIN has access)",
1276 // Byte 4 User number
1277 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "User number", false)),
1279 SECONDARY_KEYPAD_FUNCTION(0x3e, new int[] { 0x1d, 0x1c, 0x1f }, 3, "Secondary Keypad Function",
1280 "This message will contain a value that defines with function to perform, and the partitions to use.",
1281 CaddxDirection.OUT, CaddxSource.NONE,
1284 // Byte 1 Message number
1285 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
1287 // Byte 2 "Keypad function [00h Stay (1 button arm / toggle interiors), 01h Chime (toggle chime mode),
1288 // 02h Exit (1 button arm / toggle instant), 03h Bypass interiors, 04h Fire panic, 05h Medical panic,
1289 // 06h Police panic, 07h Smoke detector reset, 08h Auto callback download, 09h Manual pickup download,
1290 // 0Ah Enable silent exit (for this arm cycle), 0Bh Perform test, 0Ch Group bypass, 0Dh Auxiliary
1291 // function 1, 0Eh Auxiliary function 2, 0Fh Start keypad sounder, 10h-FFh Reserved]",
1292 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT,
1293 "Keypad function [00h Stay (1 button arm / toggle interiors), 01h Chime (toggle chime mode), 02h Exit (1 button arm / toggle instant), 03h Bypass interiors, 04h Fire panic, 05h Medical panic, 06h Police panic, 07h Smoke detector reset, 08h Auto callback download, 09h Manual pickup download, 0Ah Enable silent exit (for this arm cycle), 0Bh Perform test, 0Ch Group bypass, 0Dh Auxiliary function 1, 0Eh Auxiliary function 2, 0Fh Start keypad sounder, 10h-FFh Reserved]",
1296 // Byte 3 Partition mask
1297 new CaddxProperty("", 3, 1, 0, 1, CaddxPropertyType.BIT, "Perform on partition 1", false),
1298 new CaddxProperty("", 3, 1, 1, 1, CaddxPropertyType.BIT, "Perform on partition 2", false),
1299 new CaddxProperty("", 3, 1, 2, 1, CaddxPropertyType.BIT, "Perform on partition 3", false),
1300 new CaddxProperty("", 3, 1, 3, 1, CaddxPropertyType.BIT, "Perform on partition 4", false),
1301 new CaddxProperty("", 3, 1, 4, 1, CaddxPropertyType.BIT, "Perform on partition 5", false),
1302 new CaddxProperty("", 3, 1, 5, 1, CaddxPropertyType.BIT, "Perform on partition 6", false),
1303 new CaddxProperty("", 3, 1, 6, 1, CaddxPropertyType.BIT, "Perform on partition 7", false),
1304 new CaddxProperty("", 3, 1, 7, 1, CaddxPropertyType.BIT, "Perform on partition 8", false)),
1306 ZONE_BYPASS_TOGGLE(0x3f, new int[] { 0x1d, 0x1c, 0x1f }, 2, "Zone Bypass Toggle",
1307 "This message will contain a number of a zone that should be (un)bypassed.", CaddxDirection.OUT,
1311 // Byte 1 Message number
1312 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
1314 // Byte 2 Zone number (0= zone 1)
1315 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "Zone number (0= zone 1)", false));
1317 public final String name;
1318 public final String description;
1319 public final int number;
1320 public final int @Nullable [] replyMessageNumbers;
1321 public final int length;
1322 public final CaddxDirection direction;
1323 public final CaddxSource source;
1324 public final CaddxProperty[] properties;
1326 CaddxMessageType(int number, int @Nullable [] replyMessageNumbers, int length, String name, String description,
1327 CaddxDirection direction, CaddxSource source, CaddxProperty... properties) {
1329 this.description = description;
1330 this.direction = direction;
1331 this.source = source;
1332 this.number = number;
1333 this.replyMessageNumbers = replyMessageNumbers;
1334 this.length = length;
1335 this.properties = properties;
1338 private static final Map<Integer, CaddxMessageType> BY_MESSAGE_TYPE = new HashMap<>();
1341 for (CaddxMessageType mt : values()) {
1342 BY_MESSAGE_TYPE.put(mt.number, mt);
1346 public static @Nullable CaddxMessageType valueOfMessageType(int number) {
1347 return BY_MESSAGE_TYPE.get(number);