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.dscalarm.internal;
15 import java.util.EnumMap;
17 import org.slf4j.Logger;
18 import org.slf4j.LoggerFactory;
21 * A class that processes DSC Alarm Messages.
23 * @author Russell Stephens - Initial Contribution
25 public class DSCAlarmMessage {
27 private final Logger logger = LoggerFactory.getLogger(DSCAlarmMessage.class);
29 private static final EnumMap<DSCAlarmCode, MessageParameters> DSCALARM_MESSAGE_PARAMETERS = new EnumMap<>(
32 public enum DSCAlarmMessageType {
39 public enum DSCAlarmMessageInfoType {
53 private DSCAlarmMessageType messageType = DSCAlarmMessageType.PANEL_EVENT;
55 private String message = "";
56 private String name = "";
57 private String description = "";
58 private String codeReceived = "";
59 private String timeStamp = "";
60 private String partition = "0";
61 private String zone = "0";
62 private String data = "";
63 private String mode = "";
64 private String user = "";
65 private String error = "";
71 * - the message received
73 public DSCAlarmMessage(String message) {
74 this.message = message;
75 processDSCAlarmMessage();
79 * Processes the incoming DSC Alarm message and extracts the information.
81 private void processDSCAlarmMessage() {
82 DSCAlarmCode dscAlarmCode;
84 if (message.length() > 3) {
86 if (message.length() >= 8 && message.charAt(2) == ':' && message.charAt(5) == ':') {
87 timeStamp = message.substring(0, 8);
88 message = message.substring(9, message.length() - 2);
90 message = message.substring(0, message.length() - 2);
93 codeReceived = message.substring(0, 3);
95 if (message.length() >= 4) {
96 data = message.substring(3);
98 } catch (Exception e) {
99 logger.error("processDSCAlarmMessage(): Error processing message: ({}) ", message, e);
103 dscAlarmCode = DSCAlarmCode.getDSCAlarmCodeValue(codeReceived);
105 if (dscAlarmCode != null) {
106 name = dscAlarmCode.getName();
107 description = dscAlarmCode.getDescription();
109 MessageParameters messageParms = DSCALARM_MESSAGE_PARAMETERS.get(dscAlarmCode);
111 if (messageParms != null) {
112 boolean hasPartition = messageParms.hasPartition();
113 boolean hasZone = messageParms.hasZone();
116 partition = message.substring(3, 4);
121 zone = message.substring(4);
123 zone = message.substring(3);
127 messageType = messageParms.getType();
130 switch (dscAlarmCode) {
131 case SystemError: /* 502 */
132 int systemErrorCode = 0;
133 systemErrorCode = Integer.parseInt(data);
134 switch (systemErrorCode) {
136 error = "Receive Buffer Overrun";
139 error = "Receive Buffer Overflow";
142 error = "Transmit Buffer Overflow";
145 error = "Keybus Transmit Buffer Overrun";
148 error = "Keybus Transmit Time Timeout";
151 error = "Keybus Transmit Mode Timeout";
154 error = "Keybus Transmit Keystring Timeout";
157 error = "Keybus Interface Not Functioning";
160 error = "Keybus Busy - Attempting to Disarm or Arm with user code";
163 error = "Keybus Busy – Lockout";
166 error = "Keybus Busy – Installers Mode";
169 error = "Keybus Busy - General Busy";
172 error = "API Command Syntax Error";
175 error = "API Command Partition Error - Requested Partition is out of bounds";
178 error = "API Command Not Supported";
181 error = "API System Not Armed - Sent in response to a disarm command";
184 error = "API System Not Ready to Arm - System is either not-secure, in exit-delay, or already armed";
187 error = "API Command Invalid Length";
190 error = "API User Code not Required";
193 error = "API Invalid Characters in Command - No alpha characters are allowed except for checksum";
196 error = "API Virtual Keypad is Disabled";
199 error = "API Not Valid Parameter";
202 error = "API Keypad Does Not Come Out of Blank Mode";
205 error = "API IT-100 is Already in Thermostat Menu";
208 error = "API IT-100 is NOT in Thermostat Menu";
211 error = "API No Response From Thermostat or Escort Module";
220 case PartitionArmed: /* 652 */
221 mode = message.substring(4);
222 if (mode.equals("0")) {
224 } else if (mode.equals("1")) {
226 } else if (mode.equals("2")) {
228 } else if (mode.equals("3")) {
231 messageType = DSCAlarmMessageType.PARTITION_EVENT;
233 case UserClosing: /* 700 */
234 user = message.substring(4);
235 name = name.concat(": " + user);
236 description = codeReceived + ": Partition " + String.valueOf(partition)
237 + " has been armed by user " + user + ".";
238 messageType = DSCAlarmMessageType.PARTITION_EVENT;
240 case UserOpening: /* 750 */
241 user = message.substring(4);
242 name = name.concat(": " + user);
243 description = codeReceived + ": Partition " + String.valueOf(partition)
244 + " has been disarmed by user " + user + ".";
245 messageType = DSCAlarmMessageType.PARTITION_EVENT;
253 "parseAPIMessage(): Message Received ({}) - Code: {}, Name: {}, Description: {}, Data: {}\r\n",
254 message, codeReceived, name, description, data);
259 dscAlarmCode = DSCAlarmCode.getDSCAlarmCodeValue(codeReceived);
260 name = dscAlarmCode.getName();
261 description = dscAlarmCode.getDescription();
262 logger.debug("parseAPIMessage(): Invalid Message Received");
267 * Returns the DSCAlarm Message Type.
269 * @return messageType
271 public DSCAlarmMessageType getDSCAlarmMessageType() {
276 * Returns Information from A DSC Alarm Message
278 * @param dscAlarmMessageInfoType
281 public String getMessageInfo(DSCAlarmMessageInfoType dscAlarmMessageInfoType) {
284 switch (dscAlarmMessageInfoType) {
326 * Returns a string representation of an APIMessage.
328 * @return APIMessage string
331 public String toString() {
332 StringBuilder sb = new StringBuilder();
334 sb.append("Code: \"");
335 sb.append(codeReceived);
338 sb.append(", Name: \"");
342 sb.append(", Description: \"");
343 sb.append(description);
346 if (!timeStamp.equals("")) {
347 sb.append(", Time Stamp: ");
348 sb.append(timeStamp);
351 if (!partition.equals("0")) {
352 sb.append(", Partition: ");
353 sb.append(partition);
356 if (!zone.equals("0")) {
357 sb.append(", Zone: ");
361 if (!data.equals("")) {
362 sb.append(", Data: ");
366 if (!mode.equals("")) {
367 sb.append(", Mode: ");
371 if (!user.equals("")) {
372 sb.append(", user: ");
376 if (!error.equals("")) {
377 sb.append(", error: ");
381 return sb.toString();
384 public static class MessageParameters {
385 private boolean partition;
386 private boolean zone;
387 private DSCAlarmMessageType type;
389 MessageParameters(DSCAlarmMessageType type, boolean partition, boolean zone) {
391 this.partition = partition;
395 public DSCAlarmMessageType getType() {
399 public boolean hasPartition() {
403 public boolean hasZone() {
409 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.CommandAcknowledge,
410 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
411 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.CommandError,
412 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
413 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.SystemError,
414 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
415 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.LoginResponse,
416 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
417 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.KeypadLEDState,
418 new MessageParameters(DSCAlarmMessageType.KEYPAD_EVENT, false, false));
419 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.KeypadLEDFlashState,
420 new MessageParameters(DSCAlarmMessageType.KEYPAD_EVENT, false, false));
421 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.TimeDateBroadcast,
422 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
423 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.RingDetected,
424 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
425 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.IndoorTemperatureBroadcast,
426 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
427 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.OutdoorTemperatureBroadcast,
428 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
429 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.ThermostatSetPoints,
430 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
431 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.BroadcastLabels,
432 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
433 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.BaudRateSet,
434 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
436 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.ZoneAlarm,
437 new MessageParameters(DSCAlarmMessageType.ZONE_EVENT, true, true));
438 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.ZoneAlarmRestore,
439 new MessageParameters(DSCAlarmMessageType.ZONE_EVENT, true, true));
440 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.ZoneTamper,
441 new MessageParameters(DSCAlarmMessageType.ZONE_EVENT, true, true));
442 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.ZoneTamperRestore,
443 new MessageParameters(DSCAlarmMessageType.ZONE_EVENT, true, true));
444 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.ZoneFault,
445 new MessageParameters(DSCAlarmMessageType.ZONE_EVENT, false, true));
446 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.ZoneFaultRestore,
447 new MessageParameters(DSCAlarmMessageType.ZONE_EVENT, false, true));
448 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.ZoneOpen,
449 new MessageParameters(DSCAlarmMessageType.ZONE_EVENT, false, true));
450 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.ZoneRestored,
451 new MessageParameters(DSCAlarmMessageType.ZONE_EVENT, false, true));
452 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.EnvisalinkZoneTimerDump,
453 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
454 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.DuressAlarm,
455 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
456 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.FireKeyAlarm,
457 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
458 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.FireKeyRestored,
459 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
460 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.AuxiliaryKeyAlarm,
461 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
462 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.AuxiliaryKeyRestored,
463 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
464 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.PanicKeyAlarm,
465 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
466 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.PanicKeyRestored,
467 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
468 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.AuxiliaryInputAlarm,
469 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
470 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.AuxiliaryInputAlarmRestored,
471 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
472 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.PartitionReady,
473 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
474 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.PartitionNotReady,
475 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
476 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.PartitionArmed,
477 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
478 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.PartitionReadyForceArming,
479 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
480 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.PartitionInAlarm,
481 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
482 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.PartitionDisarmed,
483 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
484 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.ExitDelayInProgress,
485 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
486 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.EntryDelayInProgress,
487 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
488 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.KeypadLockout,
489 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
490 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.PartitionFailedToArm,
491 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
492 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.PGMOutputInProgress,
493 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
494 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.ChimeEnabled,
495 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
496 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.ChimeDisabled,
497 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
498 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.InvalidAccessCode,
499 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
500 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.FunctionNotAvailable,
501 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
502 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.FailureToArm,
503 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
504 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.PartitionBusy,
505 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
506 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.SystemArmingInProgress,
507 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, true, false));
508 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.SystemInInstallerMode,
509 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
511 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.UserClosing,
512 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
513 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.SpecialClosing,
514 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
515 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.PartialClosing,
516 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
517 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.UserOpening,
518 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
519 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.SpecialOpening,
520 new MessageParameters(DSCAlarmMessageType.PARTITION_EVENT, true, false));
522 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.PanelBatteryTrouble,
523 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
524 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.PanelBatteryTroubleRestore,
525 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
526 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.PanelACTrouble,
527 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
528 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.PanelACRestore,
529 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
530 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.SystemBellTrouble,
531 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
532 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.SystemBellTroubleRestore,
533 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
534 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.TLMLine1Trouble,
535 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
536 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.TLMLine1TroubleRestore,
537 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
538 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.TLMLine2Trouble,
539 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
540 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.TLMLine2TroubleRestore,
541 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
542 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.FTCTrouble,
543 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
544 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.BufferNearFull,
545 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
546 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.GeneralDeviceLowBattery,
547 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, true));
548 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.GeneralDeviceLowBatteryRestore,
549 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, true));
550 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.WirelessKeyLowBatteryTrouble,
551 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, true));
552 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.WirelessKeyLowBatteryTroubleRestore,
553 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, true));
554 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.HandheldKeypadLowBatteryTrouble,
555 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, true));
556 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.HandheldKeypadLowBatteryTroubleRestore,
557 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, true));
558 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.GeneralSystemTamper,
559 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
560 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.GeneralSystemTamperRestore,
561 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
562 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.HomeAutomationTrouble,
563 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
564 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.HomeAutomationTroubleRestore,
565 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
566 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.TroubleLEDOn,
567 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, true, false));
568 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.TroubleLEDOff,
569 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, true, false));
570 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.FireTroubleAlarm,
571 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
572 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.FireTroubleAlarmRestore,
573 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
574 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.VerboseTroubleStatus,
575 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
576 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.KeybusFault,
577 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
578 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.KeybusFaultRestore,
579 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
581 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.CodeRequired,
582 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
583 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.LCDUpdate,
584 new MessageParameters(DSCAlarmMessageType.KEYPAD_EVENT, false, false));
585 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.LCDCursor,
586 new MessageParameters(DSCAlarmMessageType.KEYPAD_EVENT, false, false));
587 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.LEDStatus,
588 new MessageParameters(DSCAlarmMessageType.KEYPAD_EVENT, false, false));
589 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.BeepStatus,
590 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
591 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.ToneStatus,
592 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
593 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.BuzzerStatus,
594 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
595 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.DoorChimeStatus,
596 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
597 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.SoftwareVersion,
598 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
599 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.CommandOutputPressed,
600 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
601 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.MasterCodeRequired,
602 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));
603 DSCALARM_MESSAGE_PARAMETERS.put(DSCAlarmCode.InstallersCodeRequired,
604 new MessageParameters(DSCAlarmMessageType.PANEL_EVENT, false, false));