2 * Copyright (c) 2010-2023 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("zone_1_faulted", 3, 1, 0, 1, CaddxPropertyType.BIT, "Zone 1 faulted (or delayed trip)",
202 new CaddxProperty("zone_1_bypassed", 3, 1, 1, 1, CaddxPropertyType.BIT, "Zone 1 bypass (or inhibited)",
204 new CaddxProperty("zone_1_trouble", 3, 1, 2, 1, CaddxPropertyType.BIT,
205 "Zone 1 trouble (tamper, low battery, or lost)", false),
206 new CaddxProperty("zone_1_alarm_memory", 3, 1, 3, 1, CaddxPropertyType.BIT, "Zone 1 alarm memory", false),
207 new CaddxProperty("zone_2_faulted", 3, 1, 4, 1, CaddxPropertyType.BIT, "Zone 2 faulted (or delayed trip)",
209 new CaddxProperty("zone_2_bypassed", 3, 1, 5, 1, CaddxPropertyType.BIT, "Zone 2 bypass (or inhibited)",
211 new CaddxProperty("zone_2_trouble", 3, 1, 6, 1, CaddxPropertyType.BIT,
212 "Zone 2 trouble (tamper, low battery, or lost)", false),
213 new CaddxProperty("zone_2_alarm_memory", 3, 1, 7, 1, CaddxPropertyType.BIT, "Zone 2 alarm memory", false),
215 // Byte 4 Zone 3 & 4 status flags (see byte 3)
216 new CaddxProperty("zone_3_faulted", 4, 1, 0, 1, CaddxPropertyType.BIT, "Zone 3 faulted (or delayed trip)",
218 new CaddxProperty("zone_3_bypassed", 4, 1, 1, 1, CaddxPropertyType.BIT, "Zone 3 bypass (or inhibited)",
220 new CaddxProperty("zone_3_trouble", 4, 1, 2, 1, CaddxPropertyType.BIT,
221 "Zone 3 trouble (tamper, low battery, or lost)", false),
222 new CaddxProperty("zone_3_alarm_memory", 4, 1, 3, 1, CaddxPropertyType.BIT, "Zone 3 alarm memory", false),
223 new CaddxProperty("zone_4_faulted", 4, 1, 4, 1, CaddxPropertyType.BIT, "Zone 4 faulted (or delayed trip)",
225 new CaddxProperty("zone_4_bypassed", 4, 1, 5, 1, CaddxPropertyType.BIT, "Zone 4 bypass (or inhibited)",
227 new CaddxProperty("zone_4_trouble", 4, 1, 6, 1, CaddxPropertyType.BIT,
228 "Zone 4 trouble (tamper, low battery, or lost)", false),
229 new CaddxProperty("zone_4_alarm_memory", 4, 1, 7, 1, CaddxPropertyType.BIT, "Zone 4 alarm memory", false),
231 // Byte 5 Zone 5 & 6 status flags (see byte 3)
232 new CaddxProperty("zone_5_faulted", 5, 1, 0, 1, CaddxPropertyType.BIT, "Zone 5 faulted (or delayed trip)",
234 new CaddxProperty("zone_5_bypassed", 5, 1, 1, 1, CaddxPropertyType.BIT, "Zone 5 bypass (or inhibited)",
236 new CaddxProperty("zone_5_trouble", 5, 1, 2, 1, CaddxPropertyType.BIT,
237 "Zone 5 trouble (tamper, low battery, or lost)", false),
238 new CaddxProperty("zone_5_alarm_memory", 5, 1, 3, 1, CaddxPropertyType.BIT, "Zone 5 alarm memory", false),
239 new CaddxProperty("zone_6_faulted", 5, 1, 4, 1, CaddxPropertyType.BIT, "Zone 6 faulted (or delayed trip)",
241 new CaddxProperty("zone_6_bypassed", 5, 1, 5, 1, CaddxPropertyType.BIT, "Zone 6 bypass (or inhibited)",
243 new CaddxProperty("zone_6_trouble", 5, 1, 6, 1, CaddxPropertyType.BIT,
244 "Zone 6 trouble (tamper, low battery, or lost)", false),
245 new CaddxProperty("zone_6_alarm_memory", 5, 1, 7, 1, CaddxPropertyType.BIT, "Zone 6 alarm memory", false),
247 // Byte 6 Zone 7 & 8 status flags (see byte 3)
248 new CaddxProperty("zone_7_faulted", 6, 1, 0, 1, CaddxPropertyType.BIT, "Zone 7 faulted (or delayed trip)",
250 new CaddxProperty("zone_7_bypassed", 6, 1, 1, 1, CaddxPropertyType.BIT, "Zone 7 bypass (or inhibited)",
252 new CaddxProperty("zone_7_trouble", 6, 1, 2, 1, CaddxPropertyType.BIT,
253 "Zone 7 trouble (tamper, low battery, or lost)", false),
254 new CaddxProperty("zone_7_alarm_memory", 6, 1, 3, 1, CaddxPropertyType.BIT, "Zone 7 alarm memory", false),
255 new CaddxProperty("zone_8_faulted", 6, 1, 4, 1, CaddxPropertyType.BIT, "Zone 8 faulted (or delayed trip)",
257 new CaddxProperty("zone_8_bypassed", 6, 1, 5, 1, CaddxPropertyType.BIT, "Zone 8 bypass (or inhibited)",
259 new CaddxProperty("zone_8_trouble", 6, 1, 6, 1, CaddxPropertyType.BIT,
260 "Zone 8 trouble (tamper, low battery, or lost)", false),
261 new CaddxProperty("zone_8_alarm_memory", 6, 1, 7, 1, CaddxPropertyType.BIT, "Zone 8 alarm memory", false),
263 // Byte 7 Zone 9 & 10 status flags (see byte 3)
264 new CaddxProperty("zone_9_faulted", 7, 1, 0, 1, CaddxPropertyType.BIT, "Zone 9 faulted (or delayed trip)",
266 new CaddxProperty("zone_9_bypassed", 7, 1, 1, 1, CaddxPropertyType.BIT, "Zone 9 bypass (or inhibited)",
268 new CaddxProperty("zone_9_trouble", 7, 1, 2, 1, CaddxPropertyType.BIT,
269 "Zone 9 trouble (tamper, low battery, or lost)", false),
270 new CaddxProperty("zone_9_alarm_memory", 7, 1, 3, 1, CaddxPropertyType.BIT, "Zone 9 alarm memory", false),
271 new CaddxProperty("zone_10_faulted", 7, 1, 4, 1, CaddxPropertyType.BIT, "Zone 10 faulted (or delayed trip)",
273 new CaddxProperty("zone_10_bypassed", 7, 1, 5, 1, CaddxPropertyType.BIT, "Zone 10 bypass (or inhibited)",
275 new CaddxProperty("zone_10_trouble", 7, 1, 6, 1, CaddxPropertyType.BIT,
276 "Zone 10 trouble (tamper, low battery, or lost)", false),
277 new CaddxProperty("zone_10_alarm_memory", 7, 1, 7, 1, CaddxPropertyType.BIT, "Zone 10 alarm memory", false),
279 // Byte 8 Zone 11 & 12 status flags (see byte 3)
280 new CaddxProperty("zone_11_faulted", 8, 1, 0, 1, CaddxPropertyType.BIT, "Zone 11 faulted (or delayed trip)",
282 new CaddxProperty("zone_11_bypassed", 8, 1, 1, 1, CaddxPropertyType.BIT, "Zone 11 bypass (or inhibited)",
284 new CaddxProperty("zone_11_trouble", 8, 1, 2, 1, CaddxPropertyType.BIT,
285 "Zone 11 trouble (tamper, low battery, or lost)", false),
286 new CaddxProperty("zone_11_alarm_memory", 8, 1, 3, 1, CaddxPropertyType.BIT, "Zone 11 alarm memory", false),
287 new CaddxProperty("zone_12_faulted", 8, 1, 4, 1, CaddxPropertyType.BIT, "Zone 12 faulted (or delayed trip)",
289 new CaddxProperty("zone_12_bypassed", 8, 1, 5, 1, CaddxPropertyType.BIT, "Zone 12 bypass (or inhibited)",
291 new CaddxProperty("zone_12_trouble", 8, 1, 6, 1, CaddxPropertyType.BIT,
292 "Zone 12 trouble (tamper, low battery, or lost)", false),
293 new CaddxProperty("zone_12_alarm_memory", 8, 1, 7, 1, CaddxPropertyType.BIT, "Zone 12 alarm memory", false),
295 // Byte 9 Zone 13 & 14 status flags (see byte 3)
296 new CaddxProperty("zone_13_faulted", 9, 1, 0, 1, CaddxPropertyType.BIT, "Zone 13 faulted (or delayed trip)",
298 new CaddxProperty("zone_13_bypassed", 9, 1, 1, 1, CaddxPropertyType.BIT, "Zone 13 bypass (or inhibited)",
300 new CaddxProperty("zone_13_trouble", 9, 1, 2, 1, CaddxPropertyType.BIT,
301 "Zone 13 trouble (tamper, low battery, or lost)", false),
302 new CaddxProperty("zone_13_alarm_memory", 9, 1, 3, 1, CaddxPropertyType.BIT, "Zone 13 alarm memory", false),
303 new CaddxProperty("zone_14_faulted", 9, 1, 4, 1, CaddxPropertyType.BIT, "Zone 14 faulted (or delayed trip)",
305 new CaddxProperty("zone_14_bypassed", 9, 1, 5, 1, CaddxPropertyType.BIT, "Zone 14 bypass (or inhibited)",
307 new CaddxProperty("zone_14_trouble", 9, 1, 6, 1, CaddxPropertyType.BIT,
308 "Zone 14 trouble (tamper, low battery, or lost)", false),
309 new CaddxProperty("zone_14_alarm_memory", 9, 1, 7, 1, CaddxPropertyType.BIT, "Zone 14 alarm memory", false),
311 // Byte 10 Zone 15 & 16 status flags (see byte 3)
312 new CaddxProperty("zone_15_faulted", 10, 1, 0, 1, CaddxPropertyType.BIT,
313 "Zone 15 faulted (or delayed trip)", false),
314 new CaddxProperty("zone_15_bypassed", 10, 1, 1, 1, CaddxPropertyType.BIT, "Zone 15 bypass (or inhibited)",
316 new CaddxProperty("zone_15_trouble", 10, 1, 2, 1, CaddxPropertyType.BIT,
317 "Zone 15 trouble (tamper, low battery, or lost)", false),
318 new CaddxProperty("zone_15_alarm_memory", 10, 1, 3, 1, CaddxPropertyType.BIT, "Zone 15 alarm memory",
320 new CaddxProperty("zone_16_faulted", 10, 1, 4, 1, CaddxPropertyType.BIT,
321 "Zone 16 faulted (or delayed trip)", false),
322 new CaddxProperty("zone_16_bypassed", 10, 1, 5, 1, CaddxPropertyType.BIT, "Zone 16 bypass (or inhibited)",
324 new CaddxProperty("zone_16_trouble", 10, 1, 6, 1, CaddxPropertyType.BIT,
325 "Zone 16 trouble (tamper, low battery, or lost)", false),
326 new CaddxProperty("zone_16_alarm_memory", 10, 1, 7, 1, CaddxPropertyType.BIT, "Zone 16 alarm memory",
329 PARTITION_STATUS_MESSAGE(0x06, null, 9, "Partition Status Message",
330 "This message will contain all information relevant to a single partition in the system.",
331 CaddxDirection.IN, CaddxSource.PARTITION,
335 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
337 new CaddxProperty("partition_number", 2, 1, 0, 0, CaddxPropertyType.INT,
338 "Partition number (0= partition 1)", false),
340 // Byte 3 Partition condition flags (1)
341 new CaddxProperty("partition_bypass_code_required", 3, 1, 0, 1, CaddxPropertyType.BIT,
342 "Bypass code required", false),
343 new CaddxProperty("partition_fire_trouble", 3, 1, 1, 1, CaddxPropertyType.BIT, "Fire trouble", false),
344 new CaddxProperty("partition_fire", 3, 1, 2, 1, CaddxPropertyType.BIT, "Fire", false),
345 new CaddxProperty("partition_pulsing_buzzer", 3, 1, 3, 1, CaddxPropertyType.BIT, "Pulsing Buzzer", false),
346 new CaddxProperty("partition_tlm_fault_memory", 3, 1, 4, 1, CaddxPropertyType.BIT, "TLM fault memory",
348 new CaddxProperty("partition_armed", 3, 1, 6, 1, CaddxPropertyType.BIT, "Armed", false),
349 new CaddxProperty("partition_instant", 3, 1, 7, 1, CaddxPropertyType.BIT, "Instant", false),
351 // Byte 4 Partition condition flags (2)
352 new CaddxProperty("partition_previous_alarm", 4, 1, 0, 1, CaddxPropertyType.BIT, "Previous Alarm", false),
353 new CaddxProperty("partition_siren_on", 4, 1, 1, 1, CaddxPropertyType.BIT, "Siren on", false),
354 new CaddxProperty("partition_steady_siren_on", 4, 1, 2, 1, CaddxPropertyType.BIT, "Steady siren on", false),
355 new CaddxProperty("partition_alarm_memory", 4, 1, 3, 1, CaddxPropertyType.BIT, "Alarm memory", false),
356 new CaddxProperty("partition_tamper", 4, 1, 4, 1, CaddxPropertyType.BIT, "Tamper", false),
357 new CaddxProperty("partition_cancel_command_entered", 4, 1, 5, 1, CaddxPropertyType.BIT,
358 "Cancel command entered", false),
359 new CaddxProperty("partition_code_entered", 4, 1, 6, 1, CaddxPropertyType.BIT, "Code entered", false),
360 new CaddxProperty("partition_cancel_pending", 4, 1, 7, 1, CaddxPropertyType.BIT, "Cancel pending", false),
362 // Byte 5 Partition condition flags (3)
363 new CaddxProperty("partition_silent_exit_enabled", 5, 1, 1, 1, CaddxPropertyType.BIT, "Silent exit enabled",
365 new CaddxProperty("partition_entryguard", 5, 1, 2, 1, CaddxPropertyType.BIT, "Entryguard (stay mode)",
367 new CaddxProperty("partition_chime_mode_on", 5, 1, 3, 1, CaddxPropertyType.BIT, "Chime mode on", false),
368 new CaddxProperty("partition_entry", 5, 1, 4, 1, CaddxPropertyType.BIT, "Entry", false),
369 new CaddxProperty("partition_delay_expiration_warning", 5, 1, 5, 1, CaddxPropertyType.BIT,
370 "Delay expiration warning", false),
371 new CaddxProperty("partition_exit1", 5, 1, 6, 1, CaddxPropertyType.BIT, "Exit1", false),
372 new CaddxProperty("partition_exit2", 5, 1, 7, 1, CaddxPropertyType.BIT, "Exit2", false),
374 // Byte 6 Partition condition flags (4)
375 new CaddxProperty("partition_led_extinguish", 6, 1, 0, 1, CaddxPropertyType.BIT, "LED extinguish", false),
376 new CaddxProperty("partition_cross_timing", 6, 1, 1, 1, CaddxPropertyType.BIT, "Cross timing", false),
377 new CaddxProperty("partition_recent_closing_being_timed", 6, 1, 2, 1, CaddxPropertyType.BIT,
378 "Recent closing being timed", false),
379 new CaddxProperty("partition_exit_error_triggered", 6, 1, 4, 1, CaddxPropertyType.BIT,
380 "Exit error triggered", false),
381 new CaddxProperty("partition_auto_home_inhibited", 6, 1, 5, 1, CaddxPropertyType.BIT, "Auto home inhibited",
383 new CaddxProperty("partition_sensor_low_battery", 6, 1, 6, 1, CaddxPropertyType.BIT, "Sensor low battery",
385 new CaddxProperty("partition_sensor_lost_supervision", 6, 1, 7, 1, CaddxPropertyType.BIT,
386 "Sensor lost supervision", false),
388 new CaddxProperty("", 7, 1, 0, 0, CaddxPropertyType.INT, "Last user number", false),
390 // Byte 8 Partition condition flags (5)
391 new CaddxProperty("partition_zone_bypassed", 8, 1, 0, 1, CaddxPropertyType.BIT, "Zone bypassed", false),
392 new CaddxProperty("partition_force_arm_triggered_by_auto_arm", 8, 1, 1, 1, CaddxPropertyType.BIT,
393 "Force arm triggered by auto arm", false),
394 new CaddxProperty("partition_ready_to_arm", 8, 1, 2, 1, CaddxPropertyType.BIT, "Ready to arm", false),
395 new CaddxProperty("partition_ready_to_force_arm", 8, 1, 3, 1, CaddxPropertyType.BIT, "Ready to force arm",
397 new CaddxProperty("partition_valid_pin_accepted", 8, 1, 4, 1, CaddxPropertyType.BIT, "Valid PIN accepted",
399 new CaddxProperty("partition_chime_on", 8, 1, 5, 1, CaddxPropertyType.BIT, "Chime on (sounding)", false),
400 new CaddxProperty("partition_error_beep", 8, 1, 6, 1, CaddxPropertyType.BIT, "Error beep (triple beep)",
402 new CaddxProperty("partition_tone_on", 8, 1, 7, 1, CaddxPropertyType.BIT, "Tone on (activation tone)",
405 // Byte 9 Partition condition flags (6)
406 new CaddxProperty("partition_entry1", 9, 1, 0, 1, CaddxPropertyType.BIT, "Entry 1", false),
407 new CaddxProperty("partition_open_period", 9, 1, 1, 1, CaddxPropertyType.BIT, "Open period", false),
408 new CaddxProperty("partition_alarm_sent_using_phone_number_1", 9, 1, 2, 1, CaddxPropertyType.BIT,
409 "Alarm sent using phone number 1", false),
410 new CaddxProperty("partition_alarm_sent_using_phone_number_2", 9, 1, 3, 1, CaddxPropertyType.BIT,
411 "Alarm sent using phone number 2", false),
412 new CaddxProperty("partition_alarm_sent_using_phone_number_3", 9, 1, 4, 1, CaddxPropertyType.BIT,
413 "Alarm sent using phone number 3", false),
414 new CaddxProperty("partition_cancel_report_is_in_the_stack", 9, 1, 5, 1, CaddxPropertyType.BIT,
415 "Cancel report is in the stack", false),
416 new CaddxProperty("partition_keyswitch_armed", 9, 1, 6, 1, CaddxPropertyType.BIT, "Keyswitch armed", false),
417 new CaddxProperty("partition_delay_trip_in_progress", 9, 1, 7, 1, CaddxPropertyType.BIT,
418 "Delay Trip in progress (common zone)", false)),
420 PARTITIONS_SNAPSHOT_MESSAGE(0x07, null, 9, "Partitions Snapshot Message",
421 "This message will contain an abbreviated set of information for all 8 partitions on the system.",
422 CaddxDirection.IN, CaddxSource.PANEL,
426 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
428 // Byte 2 Partition 1 condition flags
429 new CaddxProperty("partition_1_valid", 2, 1, 0, 1, CaddxPropertyType.BIT, "Partition 1 valid partition",
431 new CaddxProperty("", 2, 1, 1, 1, CaddxPropertyType.BIT, "Partition 1 ready", false),
432 new CaddxProperty("", 2, 1, 2, 1, CaddxPropertyType.BIT, "Partition 1 armed", false),
433 new CaddxProperty("", 2, 1, 3, 1, CaddxPropertyType.BIT, "Partition 1 stay mode", false),
434 new CaddxProperty("", 2, 1, 4, 1, CaddxPropertyType.BIT, "Partition 1 chime mode", false),
435 new CaddxProperty("", 2, 1, 5, 1, CaddxPropertyType.BIT, "Partition 1 any entry delay", false),
436 new CaddxProperty("", 2, 1, 6, 1, CaddxPropertyType.BIT, "Partition 1 any exit delay", false),
437 new CaddxProperty("", 2, 1, 7, 1, CaddxPropertyType.BIT, "Partition 1 previous alarm", false),
439 // Byte 3 Partition 2 condition flags
440 new CaddxProperty("partition_2_valid", 3, 1, 0, 1, CaddxPropertyType.BIT, "Partition 2 valid partition",
442 new CaddxProperty("", 3, 1, 1, 1, CaddxPropertyType.BIT, "Partition 2 ready", false),
443 new CaddxProperty("", 3, 1, 2, 1, CaddxPropertyType.BIT, "Partition 2 armed", false),
444 new CaddxProperty("", 3, 1, 3, 1, CaddxPropertyType.BIT, "Partition 2 stay mode", false),
445 new CaddxProperty("", 3, 1, 4, 1, CaddxPropertyType.BIT, "Partition 2 chime mode", false),
446 new CaddxProperty("", 3, 1, 5, 1, CaddxPropertyType.BIT, "Partition 2 any entry delay", false),
447 new CaddxProperty("", 3, 1, 6, 1, CaddxPropertyType.BIT, "Partition 2 any exit delay", false),
448 new CaddxProperty("", 3, 1, 7, 1, CaddxPropertyType.BIT, "Partition 2 previous alarm", false),
450 // Byte 4 Partition 3 condition flags
451 new CaddxProperty("partition_3_valid", 4, 1, 0, 1, CaddxPropertyType.BIT, "Partition 3 valid partition",
453 new CaddxProperty("", 4, 1, 1, 1, CaddxPropertyType.BIT, "Partition 3 ready", false),
454 new CaddxProperty("", 4, 1, 2, 1, CaddxPropertyType.BIT, "Partition 3 armed", false),
455 new CaddxProperty("", 4, 1, 3, 1, CaddxPropertyType.BIT, "Partition 3 stay mode", false),
456 new CaddxProperty("", 4, 1, 4, 1, CaddxPropertyType.BIT, "Partition 3 chime mode", false),
457 new CaddxProperty("", 4, 1, 5, 1, CaddxPropertyType.BIT, "Partition 3 any entry delay", false),
458 new CaddxProperty("", 4, 1, 6, 1, CaddxPropertyType.BIT, "Partition 3 any exit delay", false),
459 new CaddxProperty("", 4, 1, 7, 1, CaddxPropertyType.BIT, "Partition 3 previous alarm", false),
461 // Byte 5 Partition 4 condition flags
462 new CaddxProperty("partition_4_valid", 5, 1, 0, 1, CaddxPropertyType.BIT, "Partition 4 valid partition",
464 new CaddxProperty("", 5, 1, 1, 1, CaddxPropertyType.BIT, "Partition 4 ready", false),
465 new CaddxProperty("", 5, 1, 2, 1, CaddxPropertyType.BIT, "Partition 4 armed", false),
466 new CaddxProperty("", 5, 1, 3, 1, CaddxPropertyType.BIT, "Partition 4 stay mode", false),
467 new CaddxProperty("", 5, 1, 4, 1, CaddxPropertyType.BIT, "Partition 4 chime mode", false),
468 new CaddxProperty("", 5, 1, 5, 1, CaddxPropertyType.BIT, "Partition 4 any entry delay", false),
469 new CaddxProperty("", 5, 1, 6, 1, CaddxPropertyType.BIT, "Partition 4 any exit delay", false),
470 new CaddxProperty("", 5, 1, 7, 1, CaddxPropertyType.BIT, "Partition 4 previous alarm", false),
472 // Byte 6 Partition 5 condition flags
473 new CaddxProperty("partition_5_valid", 6, 1, 0, 1, CaddxPropertyType.BIT, "Partition 5 valid partition",
475 new CaddxProperty("", 6, 1, 1, 1, CaddxPropertyType.BIT, "Partition 5 ready", false),
476 new CaddxProperty("", 6, 1, 2, 1, CaddxPropertyType.BIT, "Partition 5 armed", false),
477 new CaddxProperty("", 6, 1, 3, 1, CaddxPropertyType.BIT, "Partition 5 stay mode", false),
478 new CaddxProperty("", 6, 1, 4, 1, CaddxPropertyType.BIT, "Partition 5 chime mode", false),
479 new CaddxProperty("", 6, 1, 5, 1, CaddxPropertyType.BIT, "Partition 5 any entry delay", false),
480 new CaddxProperty("", 6, 1, 6, 1, CaddxPropertyType.BIT, "Partition 5 any exit delay", false),
481 new CaddxProperty("", 6, 1, 7, 1, CaddxPropertyType.BIT, "Partition 5 previous alarm", false),
483 // Byte 7 Partition 6 condition flags
484 new CaddxProperty("partition_6_valid", 7, 1, 0, 1, CaddxPropertyType.BIT, "Partition 6 valid partition",
486 new CaddxProperty("", 7, 1, 1, 1, CaddxPropertyType.BIT, "Partition 6 ready", false),
487 new CaddxProperty("", 7, 1, 2, 1, CaddxPropertyType.BIT, "Partition 6 armed", false),
488 new CaddxProperty("", 7, 1, 3, 1, CaddxPropertyType.BIT, "Partition 6 stay mode", false),
489 new CaddxProperty("", 7, 1, 4, 1, CaddxPropertyType.BIT, "Partition 6 chime mode", false),
490 new CaddxProperty("", 7, 1, 5, 1, CaddxPropertyType.BIT, "Partition 6 any entry delay", false),
491 new CaddxProperty("", 7, 1, 6, 1, CaddxPropertyType.BIT, "Partition 6 any exit delay", false),
492 new CaddxProperty("", 7, 1, 7, 1, CaddxPropertyType.BIT, "Partition 6 previous alarm", false),
494 // Byte 8 Partition 7 condition flags
495 new CaddxProperty("partition_7_valid", 8, 1, 0, 1, CaddxPropertyType.BIT, "Partition 7 valid partition",
497 new CaddxProperty("", 8, 1, 1, 1, CaddxPropertyType.BIT, "Partition 7 ready", false),
498 new CaddxProperty("", 8, 1, 2, 1, CaddxPropertyType.BIT, "Partition 7 armed", false),
499 new CaddxProperty("", 8, 1, 3, 1, CaddxPropertyType.BIT, "Partition 7 stay mode", false),
500 new CaddxProperty("", 8, 1, 4, 1, CaddxPropertyType.BIT, "Partition 7 chime mode", false),
501 new CaddxProperty("", 8, 1, 5, 1, CaddxPropertyType.BIT, "Partition 7 any entry delay", false),
502 new CaddxProperty("", 8, 1, 6, 1, CaddxPropertyType.BIT, "Partition 7 any exit delay", false),
503 new CaddxProperty("", 8, 1, 7, 1, CaddxPropertyType.BIT, "Partition 7 previous alarm", false),
505 // Byte 9 Partition 8 condition flags
506 new CaddxProperty("partition_8_valid", 9, 1, 0, 1, CaddxPropertyType.BIT, "Partition 8 valid partition",
508 new CaddxProperty("", 9, 1, 1, 1, CaddxPropertyType.BIT, "Partition 8 ready", false),
509 new CaddxProperty("", 9, 1, 2, 1, CaddxPropertyType.BIT, "Partition 8 armed", false),
510 new CaddxProperty("", 9, 1, 3, 1, CaddxPropertyType.BIT, "Partition 8 stay mode", false),
511 new CaddxProperty("", 9, 1, 4, 1, CaddxPropertyType.BIT, "Partition 8 chime mode", false),
512 new CaddxProperty("", 9, 1, 5, 1, CaddxPropertyType.BIT, "Partition 8 any entry delay", false),
513 new CaddxProperty("", 9, 1, 6, 1, CaddxPropertyType.BIT, "Partition 8 any exit delay", false),
514 new CaddxProperty("", 9, 1, 8, 1, CaddxPropertyType.BIT, "Partition 8 previous alarm", false)),
516 SYSTEM_STATUS_MESSAGE(0x08, null, 12, "System Status Message",
517 "This message will contain all information relevant to the entire system.", CaddxDirection.IN,
522 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
525 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "Panel ID number", false),
528 new CaddxProperty("", 3, 1, 0, 1, CaddxPropertyType.BIT, "Line seizure", false),
529 new CaddxProperty("", 3, 1, 1, 1, CaddxPropertyType.BIT, "Off hook", false),
530 new CaddxProperty("", 3, 1, 2, 1, CaddxPropertyType.BIT, "Initial handshake received", false),
531 new CaddxProperty("", 3, 1, 3, 1, CaddxPropertyType.BIT, "Download in progress", false),
532 new CaddxProperty("", 3, 1, 4, 1, CaddxPropertyType.BIT, "Dialer delay in progress", false),
533 new CaddxProperty("", 3, 1, 5, 1, CaddxPropertyType.BIT, "Using backup phone", false),
534 new CaddxProperty("", 3, 1, 6, 1, CaddxPropertyType.BIT, "Listen in active", false),
535 new CaddxProperty("", 3, 1, 7, 1, CaddxPropertyType.BIT, "Two way lockout", false),
538 new CaddxProperty("", 4, 1, 0, 1, CaddxPropertyType.BIT, "Ground fault", false),
539 new CaddxProperty("", 4, 1, 1, 1, CaddxPropertyType.BIT, "Phone fault", false),
540 new CaddxProperty("", 4, 1, 2, 1, CaddxPropertyType.BIT, "Fail to communicate", false),
541 new CaddxProperty("", 4, 1, 3, 1, CaddxPropertyType.BIT, "Fuse fault", false),
542 new CaddxProperty("", 4, 1, 4, 1, CaddxPropertyType.BIT, "Box tamper", false),
543 new CaddxProperty("", 4, 1, 5, 1, CaddxPropertyType.BIT, "Siren tamper / trouble", false),
544 new CaddxProperty("", 4, 1, 6, 1, CaddxPropertyType.BIT, "Low Battery", false),
545 new CaddxProperty("panel_ac_fail", 4, 1, 7, 1, CaddxPropertyType.BIT, "AC fail", false),
548 new CaddxProperty("", 5, 1, 0, 1, CaddxPropertyType.BIT, "Expander box tamper", false),
549 new CaddxProperty("", 5, 1, 1, 1, CaddxPropertyType.BIT, "Expander AC failure", false),
550 new CaddxProperty("", 5, 1, 2, 1, CaddxPropertyType.BIT, "Expander low battery", false),
551 new CaddxProperty("", 5, 1, 3, 1, CaddxPropertyType.BIT, "Expander loss of supervision", false),
552 new CaddxProperty("", 5, 1, 4, 1, CaddxPropertyType.BIT, "Expander auxiliary output over current", false),
553 new CaddxProperty("", 5, 1, 5, 1, CaddxPropertyType.BIT, "Auxiliary communication channel failure", false),
554 new CaddxProperty("", 5, 1, 6, 1, CaddxPropertyType.BIT, "Expander bell fault", false),
557 new CaddxProperty("", 6, 1, 0, 1, CaddxPropertyType.BIT, "6 digit PIN enabled", false),
558 new CaddxProperty("", 6, 1, 1, 1, CaddxPropertyType.BIT, "Programming token in use", false),
559 new CaddxProperty("", 6, 1, 2, 1, CaddxPropertyType.BIT, "PIN required for local download", false),
560 new CaddxProperty("", 6, 1, 3, 1, CaddxPropertyType.BIT, "Global pulsing buzzer", false),
561 new CaddxProperty("", 6, 1, 4, 1, CaddxPropertyType.BIT, "Global Siren on", false),
562 new CaddxProperty("", 6, 1, 5, 1, CaddxPropertyType.BIT, "Global steady siren", false),
563 new CaddxProperty("", 6, 1, 6, 1, CaddxPropertyType.BIT, "Bus device has line seized", false),
564 new CaddxProperty("", 6, 1, 7, 1, CaddxPropertyType.BIT, "Bus device has requested sniff mode", false),
567 new CaddxProperty("", 7, 1, 0, 1, CaddxPropertyType.BIT, "Dynamic battery test", false),
568 new CaddxProperty("panel_ac_power_on", 7, 1, 1, 1, CaddxPropertyType.BIT, "AC power on", false),
569 new CaddxProperty("panel_low_battery_memory", 7, 1, 2, 1, CaddxPropertyType.BIT, "Low battery memory",
571 new CaddxProperty("", 7, 1, 3, 1, CaddxPropertyType.BIT, "Ground fault memory", false),
572 new CaddxProperty("", 7, 1, 4, 1, CaddxPropertyType.BIT, "Fire alarm verification being timed", false),
573 new CaddxProperty("", 7, 1, 5, 1, CaddxPropertyType.BIT, "Smoke power reset", false),
574 new CaddxProperty("", 7, 1, 6, 1, CaddxPropertyType.BIT, "50 Hz line power detected", false),
575 new CaddxProperty("", 7, 1, 7, 1, CaddxPropertyType.BIT, "Timing a high voltage battery charge", false),
578 new CaddxProperty("", 8, 1, 0, 1, CaddxPropertyType.BIT, "Communication since last autotest", false),
579 new CaddxProperty("", 8, 1, 1, 1, CaddxPropertyType.BIT, "Power up delay in progress", false),
580 new CaddxProperty("", 8, 1, 2, 1, CaddxPropertyType.BIT, "Walk test mode", false),
581 new CaddxProperty("", 8, 1, 3, 1, CaddxPropertyType.BIT, "Loss of system time", false),
582 new CaddxProperty("", 8, 1, 4, 1, CaddxPropertyType.BIT, "Enroll requested", false),
583 new CaddxProperty("", 8, 1, 5, 1, CaddxPropertyType.BIT, "Test fixture mode", false),
584 new CaddxProperty("", 8, 1, 6, 1, CaddxPropertyType.BIT, "Control shutdown mode", false),
585 new CaddxProperty("", 8, 1, 7, 1, CaddxPropertyType.BIT, "Timing a cancel window", false),
588 new CaddxProperty("", 9, 1, 7, 1, CaddxPropertyType.BIT, "Call back in progress", false),
591 new CaddxProperty("", 10, 1, 0, 1, CaddxPropertyType.BIT, "Phone line faulted", false),
592 new CaddxProperty("", 10, 1, 1, 1, CaddxPropertyType.BIT, "Voltage present interrupt active", false),
593 new CaddxProperty("", 10, 1, 2, 1, CaddxPropertyType.BIT, "House phone off hook", false),
594 new CaddxProperty("", 10, 1, 3, 1, CaddxPropertyType.BIT, "Phone line monitor enabled", false),
595 new CaddxProperty("", 10, 1, 4, 1, CaddxPropertyType.BIT, "Sniffing", false),
596 new CaddxProperty("", 10, 1, 5, 1, CaddxPropertyType.BIT, "Last read was off hook", false),
597 new CaddxProperty("", 10, 1, 6, 1, CaddxPropertyType.BIT, "Listen in requested", false),
598 new CaddxProperty("", 10, 1, 7, 1, CaddxPropertyType.BIT, "Listen in trigger", false),
601 new CaddxProperty("", 11, 1, 0, 1, CaddxPropertyType.BIT, "Valid partition 1", false),
602 new CaddxProperty("", 11, 1, 1, 1, CaddxPropertyType.BIT, "Valid partition 2", false),
603 new CaddxProperty("", 11, 1, 2, 1, CaddxPropertyType.BIT, "Valid partition 3", false),
604 new CaddxProperty("", 11, 1, 3, 1, CaddxPropertyType.BIT, "Valid partition 4", false),
605 new CaddxProperty("", 11, 1, 4, 1, CaddxPropertyType.BIT, "Valid partition 5", false),
606 new CaddxProperty("", 11, 1, 5, 1, CaddxPropertyType.BIT, "Valid partition 6", false),
607 new CaddxProperty("", 11, 1, 6, 1, CaddxPropertyType.BIT, "Valid partition 7", false),
608 new CaddxProperty("", 11, 1, 7, 1, CaddxPropertyType.BIT, "Valid partition 8", false),
610 // Byte 12 Communicator stack pointer
611 new CaddxProperty("panel_communicator_stack_pointer", 12, 1, 0, 0, CaddxPropertyType.INT,
612 "Communicator stack pointer", false)),
614 X10_MESSAGE_RECEIVED(0x09, null, 4, "X-10 Message Received",
615 "This message contains information about an X-10 command that was requested by any device on the system bus.",
616 CaddxDirection.IN, CaddxSource.PANEL,
620 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
623 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "House code (0=house A)", false),
626 new CaddxProperty("", 3, 1, 0, 0, CaddxPropertyType.INT, "Unit code (0=unit 1)", false),
629 new CaddxProperty("", 4, 1, 0, 0, CaddxPropertyType.INT, "X-10 function code", false)),
631 LOG_EVENT_MESSAGE(0x0a, null, 10, "Log Event Message",
632 "This message will contain all information relating to an event in the log memory.", CaddxDirection.IN,
637 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
639 new CaddxProperty("panel_log_event_number", 2, 1, 0, 0, CaddxPropertyType.INT,
640 "Event number of this message", false),
642 new CaddxProperty("panel_log_event_size", 3, 1, 0, 0, CaddxPropertyType.INT,
643 "Total log size (number of log entries allowed)", false),
646 new CaddxProperty("panel_log_event_type", 4, 1, 0, 7, CaddxPropertyType.INT, "Event type", false),
647 // Bits 0-6 See type definitions in table that follows
648 // Bit 7 Non-reporting event if not set
651 new CaddxProperty("panel_log_event_zud", 5, 1, 0, 0, CaddxPropertyType.INT, "Zone / User / Device number",
654 new CaddxProperty("panel_log_event_partition", 6, 1, 0, 0, CaddxPropertyType.INT,
655 "Partition number (0=partition 1, if relevant)", false),
657 new CaddxProperty("panel_log_event_month", 7, 1, 0, 0, CaddxPropertyType.INT, "Month (1-12)", false),
659 new CaddxProperty("panel_log_event_day", 8, 1, 0, 0, CaddxPropertyType.INT, "Day (1-31)", false),
661 new CaddxProperty("panel_log_event_hour", 9, 1, 0, 0, CaddxPropertyType.INT, "Hour (0-23)", false),
663 new CaddxProperty("panel_log_event_minute", 10, 1, 0, 0, CaddxPropertyType.INT, "Minute (0-59)", false)),
665 KEYPAD_MESSAGE_RECEIVED(0x0b, null, 3, "Keypad Message Received",
666 "This message contains a keystroke from a keypad that is in a Terminal Mode.", CaddxDirection.IN,
671 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
674 new CaddxProperty("", 1, 2, 0, 0, CaddxPropertyType.INT, "Keypad address", false),
677 new CaddxProperty("keypad_key_pressed", 1, 1, 0, 0, CaddxPropertyType.INT, "Key value", false)),
679 PROGRAM_DATA_REPLY(0x10, null, 13, "Program Data Reply",
680 "This message will contain a system device’s buss address, logical location, and program data that was previously requested (via Program Data Request (3Ch)).",
681 CaddxDirection.IN, CaddxSource.PANEL,
685 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
688 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "Device’s buss address", false),
690 // Byte 3 Upper logical location / offset
691 new CaddxProperty("", 3, 1, 0, 3, CaddxPropertyType.INT, "Bits 8-11 of logical location", false),
692 new CaddxProperty("", 3, 1, 4, 4, CaddxPropertyType.INT, "Segment size (0=byte, 1=nibble)", false),
693 new CaddxProperty("", 3, 1, 5, 1, CaddxPropertyType.BIT, "Must be 0", false),
694 new CaddxProperty("", 3, 1, 6, 6, CaddxPropertyType.INT, "Segment offset (0-none, 1=8 bytes)", false),
695 new CaddxProperty("", 3, 1, 7, 1, CaddxPropertyType.BIT, "Must be 0", false),
697 // Byte 4 Bits 0-7 of logical location
698 new CaddxProperty("", 4, 1, 0, 0, CaddxPropertyType.INT, "Bits 0-7 of logical location", false),
700 // Byte 5 Location length / data type
701 new CaddxProperty("", 5, 1, 0, 4, CaddxPropertyType.INT, "Number of segments in location (0=1 segment)",
703 new CaddxProperty("", 5, 1, 5, 7, CaddxPropertyType.INT,
704 "Data type : 0=Binary 1=Decimal 2=Hexadecimal 3=ASCII 4=unused 5=unused 6=unused 7=unused", false),
707 new CaddxProperty("", 6, 1, 0, 0, CaddxPropertyType.INT, "Data byte 0", false),
709 new CaddxProperty("", 7, 1, 0, 0, CaddxPropertyType.INT, "Data byte 1", false),
711 new CaddxProperty("", 8, 1, 0, 0, CaddxPropertyType.INT, "Data byte 2", false),
713 new CaddxProperty("", 9, 1, 0, 0, CaddxPropertyType.INT, "Data byte 3", false),
715 new CaddxProperty("", 10, 1, 0, 0, CaddxPropertyType.INT, "Data byte 4", false),
717 new CaddxProperty("", 11, 1, 0, 0, CaddxPropertyType.INT, "Data byte 5", false),
719 new CaddxProperty("", 12, 1, 0, 0, CaddxPropertyType.INT, "Data byte 6", false),
721 new CaddxProperty("", 13, 1, 0, 0, CaddxPropertyType.INT, "Data byte 7", false)),
723 USER_INFORMATION_REPLY(0x12, null, 7, "User Information Reply",
724 "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)).",
725 CaddxDirection.IN, CaddxSource.PANEL,
729 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
732 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "User Number (1=user 1)", false),
734 // Byte 3 PIN digits 1 & 2
735 new CaddxProperty("", 3, 1, 0, 3, CaddxPropertyType.INT, "PIN digit 1", false),
736 new CaddxProperty("", 3, 1, 4, 7, CaddxPropertyType.INT, "PIN digit 2", false),
738 // Byte 4 PIN digits 3 & 4
739 new CaddxProperty("", 4, 1, 0, 3, CaddxPropertyType.INT, "PIN digit 3", false),
740 new CaddxProperty("", 4, 1, 4, 7, CaddxPropertyType.INT, "PIN digit 4", false),
742 // Byte 5 PIN digits 5 & 6
743 new CaddxProperty("", 5, 1, 0, 3, CaddxPropertyType.INT, "PIN digit 5 (pad with 0 if 4 digit PIN)", false),
744 new CaddxProperty("", 5, 1, 4, 7, CaddxPropertyType.INT, "PIN digit 6 (pad with 0 if 4 digit PIN)", false),
746 // Byte 6* Authority flags
747 new CaddxProperty("", 6, 1, 0, 1, CaddxPropertyType.BIT,
748 "Reserved (if bit 7 is clear) || Output 1 enable (if bit 7 is set)", false),
749 new CaddxProperty("", 6, 1, 1, 1, CaddxPropertyType.BIT,
750 "Arm only (if bit 7 is clear) || Output 2 enable (if bit 7 is set)", false),
751 new CaddxProperty("", 6, 1, 2, 1, CaddxPropertyType.BIT,
752 "Arm only (during close window) (if bit 7 is clear) || Output 3 enable (if bit 7 is set)", false),
753 new CaddxProperty("", 6, 1, 3, 1, CaddxPropertyType.BIT,
754 "Master / program (if bit 7 is clear) || Output 4 enable (if bit 7 is set)", false),
755 new CaddxProperty("", 6, 1, 4, 1, CaddxPropertyType.BIT,
756 "Arm / Disarm (if bit 7 is clear) || Arm / Disarm (if bit 7 is set)", false),
757 new CaddxProperty("", 6, 1, 5, 1, CaddxPropertyType.BIT,
758 "Bypass enable (if bit 7 is clear) || Bypass enable (if bit 7 is set)", false),
759 new CaddxProperty("", 6, 1, 6, 1, CaddxPropertyType.BIT,
760 "Open / close report enable (if bit 7 is clear) || Open / close report enable (if bit 7 is set)",
762 new CaddxProperty("", 6, 1, 7, 1, CaddxPropertyType.BIT,
763 "Must be a 0 (if bit 7 is clear) || Must be a 1 (if bit 7 is set)", false),
765 // Byte 7 Authorized partition(s) mask
766 new CaddxProperty("", 7, 1, 0, 1, CaddxPropertyType.BIT, "Authorized for partition 1", false),
767 new CaddxProperty("", 7, 1, 1, 1, CaddxPropertyType.BIT, "Authorized for partition 2", false),
768 new CaddxProperty("", 7, 1, 2, 1, CaddxPropertyType.BIT, "Authorized for partition 3", false),
769 new CaddxProperty("", 7, 1, 3, 1, CaddxPropertyType.BIT, "Authorized for partition 4", false),
770 new CaddxProperty("", 7, 1, 4, 1, CaddxPropertyType.BIT, "Authorized for partition 5", false),
771 new CaddxProperty("", 7, 1, 5, 1, CaddxPropertyType.BIT, "Authorized for partition 6", false),
772 new CaddxProperty("", 7, 1, 6, 1, CaddxPropertyType.BIT, "Authorized for partition 7", false),
773 new CaddxProperty("", 7, 1, 7, 1, CaddxPropertyType.BIT, "Authorized for partition 8", false)),
775 REQUEST_FAILED(0x1c, null, 1, "Command / Request Failed",
776 "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.",
777 CaddxDirection.IN, CaddxSource.PANEL,
781 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false)),
783 POSITIVE_ACKNOWLEDGE(0x1d, null, 1, "Positive Acknowledge",
784 "This message will acknowledge receipt of a message that had the ‘Acknowledge Required’ flag set in the command byte.",
785 CaddxDirection.IN, CaddxSource.PANEL,
788 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false)),
790 NEGATIVE_ACKNOWLEDGE(0x1e, null, 1, "Negative Acknowledge",
791 "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.",
792 CaddxDirection.IN, CaddxSource.PANEL,
796 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false)),
798 MESSAGE_REJECTED(0x1f, null, 1, "Message Rejected",
799 "This message is sent in place of a ‘Positive Acknowledge’ message when the message was received properly formatted, but not supported or disabled.",
800 CaddxDirection.IN, CaddxSource.PANEL,
804 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false)),
806 INTERFACE_CONFIGURATION_REQUEST(0x21, new int[] { 0x01, 0x1c, 0x1f }, 1, "Interface Configuration Request",
807 "This request will cause the return of the Interface Configuration Message (01h) containing information about the options selected on the interface.",
808 CaddxDirection.OUT, CaddxSource.NONE,
812 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false)),
814 ZONE_NAME_REQUEST(0x23, new int[] { 0x03, 0x1c, 0x1f }, 2, "Zone Name Request",
815 "This request will cause the return of the Zone Name Message (03h) for the zone number that was requested.",
816 CaddxDirection.OUT, CaddxSource.NONE,
820 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
823 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "Zone number (0= zone 1)", true)),
825 ZONE_STATUS_REQUEST(0x24, new int[] { 0x04, 0x1c, 0x1f }, 2, "Zone Status Request",
826 "This request will cause the return of the Zone Status Message (04h) for the zone number that was requested.",
827 CaddxDirection.OUT, CaddxSource.NONE,
831 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
834 new CaddxProperty("zone_number", 2, 1, 0, 0, CaddxPropertyType.INT, "Zone number (0= zone 1)", true)),
836 ZONES_SNAPSHOT_REQUEST(0x25, new int[] { 0x05, 0x1c, 0x1f }, 2, "Zones Snapshot Request",
837 "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.",
838 CaddxDirection.OUT, CaddxSource.NONE,
842 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
845 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "Zone number offset (0= start at zone 1)", true)),
847 PARTITION_STATUS_REQUEST(0x26, new int[] { 0x06, 0x1c, 0x1f }, 2, "Partition Status Request",
848 "This request will cause the return of the Partition Status Message (06h) for the partition number that was requested.",
849 CaddxDirection.OUT, CaddxSource.NONE,
853 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
856 new CaddxProperty("partition_number", 2, 1, 0, 0, CaddxPropertyType.INT,
857 "Partition number (0= partition 1)", true)),
859 PARTITIONS_SNAPSHOT_REQUEST(0x27, new int[] { 0x07, 0x1c, 0x1f }, 1, "Partitions Snapshot Request",
860 "This request will cause the return of the Partitions Snapshot Message (07h) containing all partitions.",
861 CaddxDirection.OUT, CaddxSource.NONE,
865 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false)),
867 SYSTEM_STATUS_REQUEST(0x28, new int[] { 0x08, 0x1c, 0x1f }, 1, "System Status Request",
868 "This request will cause the return of the System Status Message (08h).", CaddxDirection.OUT,
873 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false)),
875 SEND_X_10_MESSAGE(0x29, new int[] { 0x1d, 0x1c, 0x1f }, 4, "Send X-10 Message",
876 "This message will contain information about an X-10 command that should be resent on the system bus.",
877 CaddxDirection.OUT, CaddxSource.NONE,
881 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
884 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "House code (0=house A) ", true),
887 new CaddxProperty("", 3, 1, 0, 0, CaddxPropertyType.INT, "Unit code (0=unit 1)", true),
890 new CaddxProperty("", 4, 1, 0, 0, CaddxPropertyType.INT, "X-10 function code (see table at message # 0Ah)",
893 LOG_EVENT_REQUEST(0x2a, new int[] { 0x0a, 0x1c, 0x1f }, 2, "Log Event Request",
894 "This request will cause the return of the Log Event Message (0Ah).", CaddxDirection.OUT, CaddxSource.NONE,
895 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
896 new CaddxProperty("panel_log_event_number", 2, 1, 0, 0, CaddxPropertyType.INT, "Event number requested",
899 SEND_KEYPAD_TEXT_MESSAGE(0x2b, new int[] { 0x1d, 0x1c, 0x1f }, 12, "Send Keypad Text Message",
900 "This message will contain ASCII text for a specific keypad on the bus that will be displayed during Terminal Mode.",
901 CaddxDirection.OUT, CaddxSource.NONE,
905 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
906 // Byte 2 Keypad address
907 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "Keypad address", false),
908 // Byte 3 Keypad type (0=NX-148e)(all others not supported)
909 new CaddxProperty("", 3, 1, 0, 0, CaddxPropertyType.INT, "Keypad type", false),
910 // Byte 4 Display storage location (0=top left corner
911 new CaddxProperty("", 4, 1, 0, 0, CaddxPropertyType.INT, "Display storage location", false),
912 // Byte 5 ASCII character for location +0
913 new CaddxProperty("", 5, 1, 0, 0, CaddxPropertyType.INT, "ASCII character for location +0", false),
914 // Byte 6 ASCII character for location +1
915 new CaddxProperty("", 6, 1, 0, 0, CaddxPropertyType.INT, "ASCII character for location +1", false),
916 // Byte 7 ASCII character for location +2
917 new CaddxProperty("", 7, 1, 0, 0, CaddxPropertyType.INT, "ASCII character for location +2", false),
918 // Byte 8 ASCII character for location +3
919 new CaddxProperty("", 8, 1, 0, 0, CaddxPropertyType.INT, "ASCII character for location +3", false),
920 // Byte 9 ASCII character for location +4
921 new CaddxProperty("", 9, 1, 0, 0, CaddxPropertyType.INT, "ASCII character for location +4", false),
922 // Byte 10 ASCII character for location +5
923 new CaddxProperty("", 10, 1, 0, 0, CaddxPropertyType.INT, "ASCII character for location +5", false),
924 // Byte 11 ASCII character for location +6
925 new CaddxProperty("", 11, 1, 0, 0, CaddxPropertyType.INT, "ASCII character for location +6", false),
926 // Byte 12 ASCII character for location +7
927 new CaddxProperty("", 12, 1, 0, 0, CaddxPropertyType.INT, "ASCII character for location +7", false)),
929 KEYPAD_TERMINAL_MODE_REQUEST(0x2c, new int[] { 0x1d, 0x1c, 0x1f }, 3, "Keypad Terminal Mode Request",
930 "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.",
931 CaddxDirection.OUT, CaddxSource.NONE,
935 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
936 // Byte 2 Keypad address
937 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "Keypad address", false),
939 new CaddxProperty("", 3, 1, 0, 0, CaddxPropertyType.INT, "Number of seconds for Terminal Mode", false)),
941 PROGRAM_DATA_REQUEST(0x30, new int[] { 0x10, 0x1c, 0x1f }, 4, "Program Data Request",
942 "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).",
943 CaddxDirection.OUT, CaddxSource.NONE,
947 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
948 // Byte 2 Device’s buss address
949 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "Device’s buss address", false),
950 // Byte 3 Upper logical location / offset
951 // Bits 0-3 Bits 8-11 of logical location
952 new CaddxProperty("", 3, 1, 0, 4, CaddxPropertyType.INT, "Bits 8-11 of logical location", false),
953 // Bits 4,5 Must be 0
954 new CaddxProperty("", 3, 1, 4, 2, CaddxPropertyType.BIT, "Must be 0", false),
955 // Bit 6 Segment offset (0-none, 1=8 bytes)
956 new CaddxProperty("", 3, 1, 6, 1, CaddxPropertyType.BIT, "Segment offset (0-none, 1=8 bytes)", false),
958 new CaddxProperty("", 3, 1, 7, 1, CaddxPropertyType.BIT, "Must be 0", false),
959 // Byte 4 Bits 0-7 of logical location
960 new CaddxProperty("", 4, 1, 0, 0, CaddxPropertyType.INT, "Bits 0-7 of logical location", false)),
962 PROGRAM_DATA_COMMAND(0x31, new int[] { 0x1d, 0x1c, 0x1f }, 13, "Program Data Command",
963 "This message will contain a system device’s buss address and the logical location where the included data should be stored.",
964 CaddxDirection.OUT, CaddxSource.NONE,
967 // Byte 1 Message number
968 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
969 // Byte 2 Device’s buss address
970 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "Device’s buss address", false),
971 // Byte 3 Upper logical location / offset
972 // Bits 0-3 Bits 8-11 of logical location
973 new CaddxProperty("", 3, 1, 0, 4, CaddxPropertyType.BIT, "Bits 8-11 of logical location", false),
974 // Bit 4 Segment size (0=byte, 1=nibble)
975 new CaddxProperty("", 3, 1, 4, 1, CaddxPropertyType.BIT, "Segment size (0=byte, 1=nibble)", false),
977 new CaddxProperty("", 3, 1, 5, 1, CaddxPropertyType.BIT, "Must be 1", false),
978 // Bit 6 Segment offset (0-none, 1=8 bytes)
979 new CaddxProperty("", 3, 1, 6, 1, CaddxPropertyType.BIT, "Segment offset (0-none, 1=8 bytes)", false),
981 new CaddxProperty("", 3, 1, 7, 1, CaddxPropertyType.BIT, "Must be 0", false),
982 // Byte 4 Bits 0-7 of logical location
983 new CaddxProperty("", 4, 1, 0, 0, CaddxPropertyType.INT, "Bits 0-7 of logical location", false),
984 // Byte 5 Location length / data type
985 // Bits 0-4 Number of segments in location (0=1 segment)
986 new CaddxProperty("", 5, 1, 0, 5, CaddxPropertyType.BIT, "Number of segments in location (0=1 segment)",
988 // Bits 5-7 Data type : 5=unused
989 new CaddxProperty("", 5, 1, 5, 3, CaddxPropertyType.BIT,
990 "Data type: 0=Binary, 1=Decimal, 2=Hexadecimal, 3=ASCII, 4=unused, 5=unused, 6=unused, 7=unused",
992 // Byte 6 Data byte 1 to store
993 new CaddxProperty("", 6, 1, 0, 0, CaddxPropertyType.INT, "Data byte 1 to store", false),
994 // Byte 7 Data byte 2 to store
995 new CaddxProperty("", 7, 1, 0, 0, CaddxPropertyType.INT, "Data byte 2 to store", false),
996 // Byte 8 Data byte 3 to store
997 new CaddxProperty("", 8, 1, 0, 0, CaddxPropertyType.INT, "Data byte 3 to store", false),
998 // Byte 9 Data byte 4 to store
999 new CaddxProperty("", 9, 1, 0, 0, CaddxPropertyType.INT, "Data byte 4 to store", false),
1000 // Byte 10 Data byte 5 to store
1001 new CaddxProperty("", 10, 1, 0, 0, CaddxPropertyType.INT, "Data byte 5 to store", false),
1002 // Byte 11 Data byte 6 to store
1003 new CaddxProperty("", 11, 1, 0, 0, CaddxPropertyType.INT, "Data byte 6 to store", false),
1004 // Byte 12 Data byte 7 to store
1005 new CaddxProperty("", 12, 1, 0, 0, CaddxPropertyType.INT, "Data byte 7 to store", false),
1006 // Byte 13 Data byte 8 to store
1007 new CaddxProperty("", 13, 1, 0, 0, CaddxPropertyType.INT, "Data byte 8 to store", false)),
1009 USER_INFORMATION_REQUEST_WITH_PIN(0x32, new int[] { 0x12, 0x1c, 0x1f }, 5, "User Information Request with PIN",
1010 "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).",
1011 CaddxDirection.OUT, CaddxSource.NONE,
1014 // Byte 1 Message number
1015 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
1016 // Byte 2 (Master) PIN digits 1 & 2
1017 // Bits 0-3 PIN digit 1
1018 new CaddxProperty("", 2, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 1", false),
1019 // Bits 4-7 PIN digit 2
1020 new CaddxProperty("", 2, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 2", false),
1021 // Byte 3 (Master) PIN digits 3 & 4
1022 // Bits 0-3 PIN digit 3
1023 new CaddxProperty("", 3, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 3", false),
1024 // Bits 4-7 PIN digit 4
1025 new CaddxProperty("", 3, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 4", false),
1026 // Byte 4 (Master) PIN digits 5 & 6
1027 // Bits 0-3 PIN digit 5 (pad with 0 if 4 digit PIN)
1028 new CaddxProperty("", 4, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 5 (pad with 0 if 4 digit PIN)", false),
1029 // Bits 4-7 PIN digit 6 (pad with 0 if 4 digit PIN)
1030 new CaddxProperty("", 4, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 6 (pad with 0 if 4 digit PIN)", false),
1031 // Byte 5 User number (1=user 1)
1032 new CaddxProperty("", 5, 1, 0, 0, CaddxPropertyType.INT, "User number (1=user 1)", false)),
1034 USER_INFORMATION_REQUEST_WITHOUT_PIN(0x33, new int[] { 0x12, 0x1c, 0x1f }, 2,
1035 "User Information Request without PIN",
1036 "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).",
1037 CaddxDirection.OUT, CaddxSource.NONE,
1040 // Byte 1 Message number
1041 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
1042 // Byte 2 User number (1=user 1)
1043 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "User number (1=user 1)", false)),
1045 SET_USER_CODE_COMMAND_WITH_PIN(0x34, new int[] { 0x12, 0x1c, 0x1f }, 8, "Set User Code Command with PIN",
1046 "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.",
1047 CaddxDirection.OUT, CaddxSource.NONE,
1050 // Byte 1 Message number
1051 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
1052 // Byte 2 (Master) PIN digits 1 & 2
1053 // Bits 0-3 PIN digit 1
1054 new CaddxProperty("", 2, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 1", false),
1055 // Bits 4-7 PIN digit 2
1056 new CaddxProperty("", 2, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 2", false),
1057 // Byte 3 (Master) PIN digits 3 & 4
1058 // Bits 0-3 PIN digit 3
1059 new CaddxProperty("", 3, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 3", false),
1060 // Bits 4-7 PIN digit 4
1061 new CaddxProperty("", 3, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 4", false),
1062 // Byte 4 (Master) PIN digits 5 & 6
1063 // Bits 0-3 PIN digit 5 (pad with 0 if 4 digit PIN)
1064 new CaddxProperty("", 4, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 5 (pad with 0 if 4 digit PIN)", false),
1065 // Bits 4-7 PIN digit 6 (pad with 0 if 4 digit PIN)
1066 new CaddxProperty("", 4, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 6 (pad with 0 if 4 digit PIN)", false),
1067 // Byte 5 User number (1=user 1)
1068 new CaddxProperty("", 5, 1, 0, 0, CaddxPropertyType.INT, "User number (1=user 1)", false),
1069 // Byte 6 PIN digits 1 & 2
1070 // Bits 0-3 PIN digit 1
1071 new CaddxProperty("", 6, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 1", false),
1072 // Bits 4-7 PIN digit 2
1073 new CaddxProperty("", 6, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 2", false),
1074 // Byte 7 PIN digits 3 & 4
1075 // Bits 0-3 PIN digit 3
1076 new CaddxProperty("", 7, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 3", false),
1077 // Bits 4-7 PIN digit 4
1078 new CaddxProperty("", 7, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 4", false),
1079 // Byte 8 PIN digits 5 & 6
1080 // Bits 0-3 PIN digit 5 (pad with 0 if 4 digit PIN)
1081 new CaddxProperty("", 8, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 5 (pad with 0 if 4 digit PIN)", false),
1082 // Bits 4-7 PIN digit 6 (pad with 0 if 4 digit PIN)
1083 new CaddxProperty("", 8, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 6 (pad with 0 if 4 digit PIN)", false)),
1085 SET_USER_CODE_COMMAND_WITHOUT_PIN(0x35, new int[] { 0x12, 0x1c, 0x1f }, 5, "Set User Code Command without PIN",
1086 "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.",
1087 CaddxDirection.OUT, CaddxSource.NONE,
1090 // Byte 1 Message number
1091 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
1092 // Byte 2 User number (1=user 1)
1093 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "User number (1=user 1)", false),
1094 // Byte 3 PIN digits 1 & 2
1095 // Bits 0-3 PIN digit 1
1096 new CaddxProperty("", 3, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 1", false),
1097 // Bits 4-7 PIN digit 2
1098 new CaddxProperty("", 3, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 2", false),
1099 // Byte 4 PIN digits 3 & 4
1100 // Bits 0-3 PIN digit 3
1101 new CaddxProperty("", 4, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 3", false),
1102 // Bits 4-7 PIN digit 4
1103 new CaddxProperty("", 4, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 4", false),
1104 // Byte 5 PIN digits 5 & 6
1105 // Bits 0-3 PIN digit 5 (pad with 0 if 4 digit PIN)
1106 new CaddxProperty("", 5, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 5 (pad with 0 if 4 digit PIN)", false),
1107 // Bits 4-7 PIN digit 6 (pad with 0 if 4 digit PIN)
1108 new CaddxProperty("", 5, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 6 (pad with 0 if 4 digit PIN)", false)),
1110 SET_USER_AUTHORIZATION_COMMAND_WITH_PIN(0x36, new int[] { 0x1d, 0x1c, 0x1f }, 7,
1111 "Set User Authorization Command with PIN",
1112 "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.",
1113 CaddxDirection.OUT, CaddxSource.NONE,
1116 // Byte 1 Message number
1117 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
1119 // Byte 2 (Master) PIN digits 1 & 2
1120 new CaddxProperty("", 2, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 1", false),
1121 new CaddxProperty("", 2, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 2", false),
1123 // Byte 3 (Master) PIN digits 3 & 4
1124 new CaddxProperty("", 3, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 3", false),
1125 new CaddxProperty("", 3, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 4", false),
1127 // Byte 4 (Master) PIN digits 5 & 6
1128 new CaddxProperty("", 4, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 5 (pad with 0 if 4 digit PIN)", false),
1129 new CaddxProperty("", 4, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 6 (pad with 0 if 4 digit PIN)", false),
1131 // Byte 5 User number (1=user 1)
1132 new CaddxProperty("", 5, 1, 0, 0, CaddxPropertyType.INT, "User number (1=user 1)", false),
1134 // Byte 6 Authority flags
1135 new CaddxProperty("", 6, 1, 0, 1, CaddxPropertyType.BIT,
1136 "Reserved (if bit 7 is clear) || Output 1 enable (if bit 7 is set)", false),
1137 new CaddxProperty("", 6, 1, 1, 1, CaddxPropertyType.BIT,
1138 "Arm only (if bit 7 is clear) || Output 2 enable (if bit 7 is set)", false),
1139 new CaddxProperty("", 6, 1, 2, 1, CaddxPropertyType.BIT,
1140 "Arm only (during close window) (if bit 7 is clear) || Output 3 enable (if bit 7 is set)", false),
1141 new CaddxProperty("", 6, 1, 3, 1, CaddxPropertyType.BIT,
1142 "Master / program (if bit 7 is clear) || Output 4 enable (if bit 7 is set)", false),
1143 new CaddxProperty("", 6, 1, 4, 1, CaddxPropertyType.BIT,
1144 "Arm / Disarm (if bit 7 is clear) || Arm / Disarm (if bit 7 is set)", false),
1145 new CaddxProperty("", 6, 1, 5, 1, CaddxPropertyType.BIT,
1146 "Bypass enable (if bit 7 is clear) || Bypass enable (if bit 7 is set)", false),
1147 new CaddxProperty("", 6, 1, 6, 1, CaddxPropertyType.BIT,
1148 "Open / close report enable (if bit 7 is clear) || Open / close report enable (if bit 7 is set)",
1150 new CaddxProperty("", 6, 1, 7, 1, CaddxPropertyType.BIT,
1151 "Must be a 0 (if bit 7 is clear) || Must be a 1 (if bit 7 is set)", false),
1153 // Byte 7 Authorized partition(s) mask
1154 new CaddxProperty("", 7, 1, 0, 1, CaddxPropertyType.BIT, "Authorized for partition 1", false),
1155 new CaddxProperty("", 7, 1, 1, 1, CaddxPropertyType.BIT, "Authorized for partition 2", false),
1156 new CaddxProperty("", 7, 1, 2, 1, CaddxPropertyType.BIT, "Authorized for partition 3", false),
1157 new CaddxProperty("", 7, 1, 3, 1, CaddxPropertyType.BIT, "Authorized for partition 4", false),
1158 new CaddxProperty("", 7, 1, 4, 1, CaddxPropertyType.BIT, "Authorized for partition 5", false),
1159 new CaddxProperty("", 7, 1, 5, 1, CaddxPropertyType.BIT, "Authorized for partition 6", false),
1160 new CaddxProperty("", 7, 1, 6, 1, CaddxPropertyType.BIT, "Authorized for partition 7", false),
1161 new CaddxProperty("", 7, 1, 7, 1, CaddxPropertyType.BIT, "Authorized for partition 8", false)),
1163 SET_USER_AUTHORIZATION_COMMAND_WITHOUT_PIN(0x37, new int[] { 0x1d, 0x1c, 0x1f }, 4,
1164 "Set User Authorization Command without PIN",
1165 "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.",
1166 CaddxDirection.OUT, CaddxSource.NONE,
1169 // Byte 1 Message number
1170 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
1172 // Byte 2 User number (1=user 1)
1173 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "User number (1=user 1)", false),
1175 // Byte 3 Authority flags
1176 new CaddxProperty("", 3, 1, 0, 1, CaddxPropertyType.BIT,
1177 "Reserved (if bit 7 is clear) || Output 1 enable (if bit 7 is set)", false),
1178 new CaddxProperty("", 3, 1, 1, 1, CaddxPropertyType.BIT,
1179 "Arm only (if bit 7 is clear) || Output 2 enable (if bit 7 is set)", false),
1180 new CaddxProperty("", 3, 1, 2, 1, CaddxPropertyType.BIT,
1181 "Arm only (during close window) (if bit 7 is clear) || Output 3 enable (if bit 7 is set)", false),
1182 new CaddxProperty("", 3, 1, 3, 1, CaddxPropertyType.BIT,
1183 "Master / program (if bit 7 is clear) || Output 4 enable (if bit 7 is set)", false),
1184 new CaddxProperty("", 3, 1, 4, 1, CaddxPropertyType.BIT,
1185 "Arm / Disarm (if bit 7 is clear) || Arm / Disarm (if bit 7 is set)", false),
1186 new CaddxProperty("", 3, 1, 5, 1, CaddxPropertyType.BIT,
1187 "Bypass enable (if bit 7 is clear) || Bypass enable (if bit 7 is set)", false),
1188 new CaddxProperty("", 3, 1, 6, 1, CaddxPropertyType.BIT,
1189 "Open / close report enable (if bit 7 is clear) || Open / close report enable (if bit 7 is set)",
1191 new CaddxProperty("", 3, 1, 7, 1, CaddxPropertyType.BIT,
1192 "Must be a 0 (if bit 7 is clear) || Must be a 1 (if bit 7 is set)", false),
1194 // Byte 4 Authorized partition(s) mask
1195 new CaddxProperty("", 4, 1, 0, 1, CaddxPropertyType.BIT, "Authorized for partition 1", false),
1196 new CaddxProperty("", 4, 1, 1, 1, CaddxPropertyType.BIT, "Authorized for partition 2", false),
1197 new CaddxProperty("", 4, 1, 2, 1, CaddxPropertyType.BIT, "Authorized for partition 3", false),
1198 new CaddxProperty("", 4, 1, 3, 1, CaddxPropertyType.BIT, "Authorized for partition 4", false),
1199 new CaddxProperty("", 4, 1, 4, 1, CaddxPropertyType.BIT, "Authorized for partition 5", false),
1200 new CaddxProperty("", 4, 1, 5, 1, CaddxPropertyType.BIT, "Authorized for partition 6", false),
1201 new CaddxProperty("", 4, 1, 6, 1, CaddxPropertyType.BIT, "Authorized for partition 7", false),
1202 new CaddxProperty("", 4, 1, 7, 1, CaddxPropertyType.BIT, "Authorized for partition 8", false)),
1204 STORE_COMMUNICATION_EVENT_COMMAND(0x3a, new int[] { 0x1d, 0x1c, 0x1f }, 6, "Store Communication Event Command",
1205 "This message will submit an event to the control’s communication stack for possible transmission over its telephone or alternate communications path.",
1206 CaddxDirection.OUT, CaddxSource.NONE),
1208 SET_CLOCK_CALENDAR_COMMAND(0x3b, new int[] { 0x1d, 0x1c, 0x1f }, 7, "Set Clock / Calendar Command",
1209 "This message will set the clock / calendar in the system.", CaddxDirection.OUT, CaddxSource.NONE,
1212 // Byte 1 Message number
1213 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
1215 // Byte 2 Year (00-99)
1216 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "Year (00-99)", false),
1218 // Byte 3 Month (1-12)
1219 new CaddxProperty("", 3, 1, 0, 0, CaddxPropertyType.INT, "Month (1-12)", false),
1221 // Byte 4 Day (1-31)
1222 new CaddxProperty("", 4, 1, 0, 0, CaddxPropertyType.INT, "Day (1-31)", false),
1224 // Byte 5 Hour (0-23)
1225 new CaddxProperty("", 5, 1, 0, 0, CaddxPropertyType.INT, "Hour (0-23)", false),
1227 // Byte 6 Minute (0-59)
1228 new CaddxProperty("", 6, 1, 0, 0, CaddxPropertyType.INT, "Minute (0-59)", false),
1231 new CaddxProperty("", 7, 1, 0, 0, CaddxPropertyType.INT, "Day", false)),
1233 PRIMARY_KEYPAD_FUNCTION_WITH_PIN(0x3c, new int[] { 0x1d, 0x1c, 0x1f }, 6, "Primary Keypad Function with PIN",
1234 "This message will contain a value that defines with function to perform, the partitions to use and a PIN value for the validation.",
1235 CaddxDirection.OUT, CaddxSource.NONE,
1238 // Byte 1 Message number
1239 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
1241 // Byte 2 PIN digits 1 & 2
1242 new CaddxProperty("", 2, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 1", false),
1243 new CaddxProperty("", 2, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 2", false),
1245 // Byte 3 PIN digits 3 & 4
1246 new CaddxProperty("", 3, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 3", false),
1247 new CaddxProperty("", 3, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 4", false),
1249 // Byte 4 PIN digits 5 & 6
1250 new CaddxProperty("", 4, 1, 0, 4, CaddxPropertyType.BIT, "PIN digit 5 (pad with 0 if 4 digit PIN)", false),
1251 new CaddxProperty("", 4, 1, 4, 4, CaddxPropertyType.BIT, "PIN digit 6 (pad with 0 if 4 digit PIN)", false),
1253 // Byte 5 Keypad function [00h Turn off any sounder or alarm, 01h Disarm, 02h Arm in away mode, 03h Arm
1254 // in stay mode, 04h Cancel, 05h Initiate auto-arm, 06h Start walk-test mode, 07h Stop walk-test mode,
1255 // 08h-FFh Reserved]
1256 new CaddxProperty("", 5, 1, 0, 0, CaddxPropertyType.INT,
1257 "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]",
1260 // Byte 6 Partition mask
1261 new CaddxProperty("", 6, 1, 0, 1, CaddxPropertyType.BIT, "Perform on partition 1 (if PIN has access)",
1263 new CaddxProperty("", 6, 1, 1, 1, CaddxPropertyType.BIT, "Perform on partition 2 (if PIN has access)",
1265 new CaddxProperty("", 6, 1, 2, 1, CaddxPropertyType.BIT, "Perform on partition 3 (if PIN has access)",
1267 new CaddxProperty("", 6, 1, 3, 1, CaddxPropertyType.BIT, "Perform on partition 4 (if PIN has access)",
1269 new CaddxProperty("", 6, 1, 4, 1, CaddxPropertyType.BIT, "Perform on partition 5 (if PIN has access)",
1271 new CaddxProperty("", 6, 1, 5, 1, CaddxPropertyType.BIT, "Perform on partition 6 (if PIN has access)",
1273 new CaddxProperty("", 6, 1, 6, 1, CaddxPropertyType.BIT, "Perform on partition 7 (if PIN has access)",
1275 new CaddxProperty("", 6, 1, 7, 1, CaddxPropertyType.BIT, "Perform on partition 8 (if PIN has access)",
1278 PRIMARY_KEYPAD_FUNCTION_WITHOUT_PIN(0x3d, new int[] { 0x1d, 0x1c, 0x1f }, 4, "Primary Keypad Function without PIN",
1279 "This message will contain a value that defines with function to perform, the partitions and user number to assign to the function.",
1280 CaddxDirection.OUT, CaddxSource.NONE,
1283 // Byte 1 Message number
1284 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
1286 // Byte 2 "Keypad function [00h Turn off any sounder or alarm, 01h Disarm, 02h Arm in away mode, 03h Arm
1287 // in stay mode, 04h Cancel, 05h Initiate auto-arm, 06h Start walk-test mode, 07h Stop walk-test mode,
1288 // 08h-FFh Reserved]",
1289 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT,
1290 "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]",
1293 // Byte 3 Partition mask
1294 new CaddxProperty("", 3, 1, 0, 1, CaddxPropertyType.BIT, "Perform on partition 1 (if PIN has access)",
1296 new CaddxProperty("", 3, 1, 1, 1, CaddxPropertyType.BIT, "Perform on partition 2 (if PIN has access)",
1298 new CaddxProperty("", 3, 1, 2, 1, CaddxPropertyType.BIT, "Perform on partition 3 (if PIN has access)",
1300 new CaddxProperty("", 3, 1, 3, 1, CaddxPropertyType.BIT, "Perform on partition 4 (if PIN has access)",
1302 new CaddxProperty("", 3, 1, 4, 1, CaddxPropertyType.BIT, "Perform on partition 5 (if PIN has access)",
1304 new CaddxProperty("", 3, 1, 5, 1, CaddxPropertyType.BIT, "Perform on partition 6 (if PIN has access)",
1306 new CaddxProperty("", 3, 1, 6, 1, CaddxPropertyType.BIT, "Perform on partition 7 (if PIN has access)",
1308 new CaddxProperty("", 3, 1, 7, 1, CaddxPropertyType.BIT, "Perform on partition 8 (if PIN has access)",
1311 // Byte 4 User number
1312 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "User number", false)),
1314 SECONDARY_KEYPAD_FUNCTION(0x3e, new int[] { 0x1d, 0x1c, 0x1f }, 3, "Secondary Keypad Function",
1315 "This message will contain a value that defines with function to perform, and the partitions to use.",
1316 CaddxDirection.OUT, CaddxSource.NONE,
1319 // Byte 1 Message number
1320 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
1322 // Byte 2 "Keypad function [00h Stay (1 button arm / toggle interiors), 01h Chime (toggle chime mode),
1323 // 02h Exit (1 button arm / toggle instant), 03h Bypass interiors, 04h Fire panic, 05h Medical panic,
1324 // 06h Police panic, 07h Smoke detector reset, 08h Auto callback download, 09h Manual pickup download,
1325 // 0Ah Enable silent exit (for this arm cycle), 0Bh Perform test, 0Ch Group bypass, 0Dh Auxiliary
1326 // function 1, 0Eh Auxiliary function 2, 0Fh Start keypad sounder, 10h-FFh Reserved]",
1327 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT,
1328 "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]",
1331 // Byte 3 Partition mask
1332 new CaddxProperty("", 3, 1, 0, 1, CaddxPropertyType.BIT, "Perform on partition 1", false),
1333 new CaddxProperty("", 3, 1, 1, 1, CaddxPropertyType.BIT, "Perform on partition 2", false),
1334 new CaddxProperty("", 3, 1, 2, 1, CaddxPropertyType.BIT, "Perform on partition 3", false),
1335 new CaddxProperty("", 3, 1, 3, 1, CaddxPropertyType.BIT, "Perform on partition 4", false),
1336 new CaddxProperty("", 3, 1, 4, 1, CaddxPropertyType.BIT, "Perform on partition 5", false),
1337 new CaddxProperty("", 3, 1, 5, 1, CaddxPropertyType.BIT, "Perform on partition 6", false),
1338 new CaddxProperty("", 3, 1, 6, 1, CaddxPropertyType.BIT, "Perform on partition 7", false),
1339 new CaddxProperty("", 3, 1, 7, 1, CaddxPropertyType.BIT, "Perform on partition 8", false)),
1341 ZONE_BYPASS_TOGGLE(0x3f, new int[] { 0x1d, 0x1c, 0x1f }, 2, "Zone Bypass Toggle",
1342 "This message will contain a number of a zone that should be (un)bypassed.", CaddxDirection.OUT,
1346 // Byte 1 Message number
1347 new CaddxProperty("", 1, 1, 0, 0, CaddxPropertyType.INT, "Message number", false),
1349 // Byte 2 Zone number (0= zone 1)
1350 new CaddxProperty("", 2, 1, 0, 0, CaddxPropertyType.INT, "Zone number (0= zone 1)", false));
1352 public final String name;
1353 public final String description;
1354 public final int number;
1355 public final int @Nullable [] replyMessageNumbers;
1356 public final int length;
1357 public final CaddxDirection direction;
1358 public final CaddxSource source;
1359 public final CaddxProperty[] properties;
1361 CaddxMessageType(int number, int @Nullable [] replyMessageNumbers, int length, String name, String description,
1362 CaddxDirection direction, CaddxSource source, CaddxProperty... properties) {
1364 this.description = description;
1365 this.direction = direction;
1366 this.source = source;
1367 this.number = number;
1368 this.replyMessageNumbers = replyMessageNumbers;
1369 this.length = length;
1370 this.properties = properties;
1373 private static final Map<Integer, CaddxMessageType> BY_MESSAGE_TYPE = new HashMap<>();
1376 for (CaddxMessageType mt : values()) {
1377 BY_MESSAGE_TYPE.put(mt.number, mt);
1381 public static @Nullable CaddxMessageType valueOfMessageType(int number) {
1382 return BY_MESSAGE_TYPE.get(number);