PROGRAM_NAME='BRINKS, BHS-2000, RS-232, ADVANCED, 10-95, BA **NDA**' (* DATE:05/20/99 TIME:15:23:53 *) (***********************************************************) (* The following code block is provided as a guide to *) (* programming the device(s) listed above. This is a *) (* sample only, and will most likely require modification *) (* to be integrated into a master program. *) (* *) (* Device-specific protocols should be obtained directly *) (* from the equipment manufacturer to ensure compliance *) (* with the most current versions. Within the limits *) (* imposed by any non-disclosure agreements, AMX will *) (* provide protocols upon request. *) (* *) (* If further programming assistance is required, please *) (* contact your AMX customer support team. *) (* *) (***********************************************************) (* GENERAL FUNCTION LIST - *) (* ARM, BYPASS, KEYPAD, STATUS *) (***********************************************************) (* NOTES - *) (* *) (* THIS PROGRAM WAS INTENDED TO BE USED WITH A TOUCH PANEL *) (* WHICH HAS BEEN LOADED WITH THE CORRESPONDING TOUCH *) (* PANEL "EQUIP" FILE. OTHERWISE, THE "UPDATE KEYPAD" *) (* SUBROUTINE WILL NOT FUNCTION PROPERLY. *) (* *) (***********************************************************) (* DEVICE NUMBER DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_DEVICE SECURE = 1 (* RS-232 CARD OR BOX *) PNL = 128 (* TOUCH PANEL *) (***********************************************************) (* CONSTANT DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_CONSTANT POLLING_TIME = 2 (* DELAY TIME BETWEEN POLLS OF THE BRINKS BUSS *) (***********************************************************) (* VARIABLE DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_VARIABLE SECURE_BUFFER[100] (* BUFFER FOR STRINGS FROM BRINKS BUSS *) CMD_TYPE (* COMMAND TYPE OF THE CURRENT COMMAND *) CHANGE_TYPE (* TYPE OF STATUS CHANGE MESSAGE *) CHANGE_ID (* WHICH ZONE STATUS CHANGE AFFECTED *) KEYPAD_STATUS[12] (* ARRAY CONTAINING CURRENT KEYPAD DISPLAY INFO. *) NEW_KP_STATUS[12] (* ARRAY CONTAINING UPDATED KEYPAD DISPLAY INFO. *) KEYPAD_FLAG (* FLAG TO ENABLE POLLING BRINKS BUSS *) (***********************************************************) (* LATCHING DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_LATCHING (***********************************************************) (* MUTUALLY EXCLUSIVE DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_MUTUALLY_EXCLUSIVE (***********************************************************) (* SUBROUTINE DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_CALL 'UPDATE KEYPAD' LOCAL_VAR STR[32] DIGIT { (* LINE #1 *) IF (KEYPAD_STATUS[3] BAND $01) STR = 'NOT' ELSE STR = ' ' IF (KEYPAD_STATUS[4] BAND $04) STR = "STR,' READY'" ELSE STR = "STR,' '" IF (KEYPAD_STATUS[3] BAND $08) STR = "STR,' ALL'" ELSE STR = "STR,' '" IF (KEYPAD_STATUS[8] BAND $08) STR = "STR,' ON'" ELSE STR = "STR,' '" IF (KEYPAD_STATUS[7] BAND $04) STR = "STR,' INSTANT'" ELSE STR = "STR,' '" SEND_COMMAND PNL,"'TEXT1-',STR" (* LINE #2 *) IF (KEYPAD_STATUS[9] BAND $04) STR = 'DOOR CHIME' ELSE STR = ' ' IF (KEYPAD_STATUS[8] BAND $01) STR = "STR,' NO AC'" ELSE STR = "STR,' '" IF (KEYPAD_STATUS[3] BAND $04) STR = "STR,' MOTION OFF'" ELSE STR = "STR,' '" SEND_COMMAND PNL,"'TEXT2-',STR" (* LINE #3 *) IF (KEYPAD_STATUS[8] BAND $02) STR = 'TROUBLE' ELSE STR = ' ' IF (KEYPAD_STATUS[3] BAND $02) STR = "STR,' TEST'" ELSE STR = "STR,' '" IF (KEYPAD_STATUS[4] BAND $02) STR = "STR,' LINE CUT'" ELSE STR = "STR,' '" IF (KEYPAD_STATUS[4] BAND $08) STR = "STR,' LOW BATT'" ELSE STR = "STR,' '" SEND_COMMAND PNL,"'TEXT3-',STR" (* LINE #4 *) IF (KEYPAD_STATUS[7] BAND $08) STR = 'ALARM' ELSE STR = ' ' IF (KEYPAD_STATUS[2] BAND $01) STR = "STR,' MEMORY'" ELSE STR = "STR,' '" IF (KEYPAD_STATUS[4] BAND $01) STR = "STR,' AUXILIARY CODES '" ELSE STR = "STR,' '" SEND_COMMAND PNL,"'TEXT4-',STR" (* LINE #5 *) IF (KEYPAD_STATUS[8] BAND $04) STR = 'CANCELED' ELSE STR = ' ' IF (KEYPAD_STATUS[2] BAND $08) STR = "STR,' BYPASS'" ELSE STR = "STR,' '" IF (KEYPAD_STATUS[9] BAND $02) STR = "STR,' ENTER'" ELSE STR = "STR,' '" IF (KEYPAD_STATUS[5] BAND $02) STR = "STR,' MASTER'" ELSE STR = "STR,' '" IF (KEYPAD_STATUS[6] BAND $01) STR = "STR,' 1-6'" ELSE STR = "STR,' '" SEND_COMMAND PNL,"'TEXT5-',STR" (* LINE #6 *) IF (KEYPAD_STATUS[1] BAND $04) STR = 'CALL BRINKS ' ELSE STR = ' ' IF (KEYPAD_STATUS[5] BAND $01) STR = "STR,'ZONE #'" ELSE STR = "STR,' '" IF (KEYPAD_STATUS[5] BAND $04) STR = "STR,' NEW'" ELSE STR = "STR,' '" IF (KEYPAD_STATUS[6] BAND $08) STR = "STR,' CODE'" ELSE STR = "STR,' '" SEND_COMMAND PNL,"'TEXT6-',STR" (* DIGIT'S *) DIGIT = (((KEYPAD_STATUS[2] BAND $02) / 2) + (KEYPAD_STATUS[6] BAND $02)) SELECT (* CONVERT 7-SEGMENT TO ASCII *) { ACTIVE (DIGIT=1): STR = 'C' ACTIVE (DIGIT=2): STR = '1' ACTIVE (DIGIT=3): STR = '0' ACTIVE (1): STR = ' ' } DIGIT = ((KEYPAD_STATUS[1] BAND $01) + ((KEYPAD_STATUS[2] BAND $04) / 2) + ((KEYPAD_STATUS[1] BAND $08) / 2) + ((KEYPAD_STATUS[1] BAND $02) * 4) + ((KEYPAD_STATUS[5] BAND $08) * 2) + ((KEYPAD_STATUS[6] BAND $04) * 8) + ((KEYPAD_STATUS[9] BAND $08) * 8)) SELECT (* CONVERT 7-SEGMENT TO ASCII *) { ACTIVE (DIGIT=6): STR = "STR,'1'" ACTIVE (DIGIT=7): STR = "STR,'7'" ACTIVE (DIGIT=56): STR = "STR,'L'" ACTIVE (DIGIT=63): STR = "STR,'0'" ACTIVE (DIGIT=79): STR = "STR,'3'" ACTIVE (DIGIT=91): STR = "STR,'2'" ACTIVE (DIGIT=102): STR = "STR,'4'" ACTIVE (DIGIT=103): STR = "STR,'9'" ACTIVE (DIGIT=109): STR = "STR,'5'" ACTIVE (DIGIT=113): STR = "STR,'F'" ACTIVE (DIGIT=115): STR = "STR,'P'" ACTIVE (DIGIT=118): STR = "STR,'H'" ACTIVE (DIGIT=119): STR = "STR,'A'" ACTIVE (DIGIT=125): STR = "STR,'6'" ACTIVE (DIGIT=127): STR = "STR,'8'" ACTIVE (1): STR = "STR,' '" } SEND_COMMAND PNL,"'TEXT7-',STR" (* "ON" LED *) [PNL,29] = KEYPAD_STATUS[12] BAND $01 } (***********************************************************) (* STARTUP CODE GOES BELOW *) (***********************************************************) DEFINE_START CREATE_BUFFER SECURE,SECURE_BUFFER ON[KEYPAD_FLAG] (***********************************************************) (* THE ACTUAL PROGRAM GOES BELOW *) (***********************************************************) DEFINE_PROGRAM (*** PROCESS INPUT FROM BRINKS BUSS ***) IF (LENGTH_STRING(SECURE_BUFFER)) { CMD_TYPE = GET_BUFFER_CHAR(SECURE_BUFFER) SELECT { ACTIVE(CMD_TYPE = $15): (* STATUS CHANGE MESSAGE *) { CHANGE_TYPE = GET_BUFFER_CHAR(SECURE_BUFFER) CHANGE_ID = GET_BUFFER_CHAR(SECURE_BUFFER) (* ADD CODE HERE TO PROCESS CHANGE TYPE *) } ACTIVE(CMD_TYPE = $16): (* REQUEST FOR RESPONSE *) { SEND_STRING SECURE,"$06,$00,$FF" CANCEL_WAIT 'POLL KEYPAD' WAIT POLLING_TIME 'POLL KEYPAD' ON[KEYPAD_FLAG] } ACTIVE(CMD_TYPE = $1A): (* KEYPAD STATE MESSAGE *) { NEW_KP_STATUS = LEFT_STRING(SECURE_BUFFER,12) IF (NEW_KP_STATUS <> KEYPAD_STATUS) { KEYPAD_STATUS = NEW_KP_STATUS CALL 'UPDATE KEYPAD' } } } } (*** KEYPAD BUTTONS ***) PUSH[PNL,11] (* 1 *) PUSH[PNL,12] (* 2 *) PUSH[PNL,13] (* 3 *) PUSH[PNL,14] (* 4 *) PUSH[PNL,15] (* 5 *) PUSH[PNL,16] (* 6 *) PUSH[PNL,17] (* 7 *) PUSH[PNL,18] (* 8 *) PUSH[PNL,19] (* 9 *) PUSH[PNL,20] (* 0 *) PUSH[PNL,21] (* ON *) PUSH[PNL,22] (* OPTIONS *) PUSH[PNL,23] (* MOTION OFF *) PUSH[PNL,24] (* INSTANT *) PUSH[PNL,25] (* CANCEL *) PUSH[PNL,26] (* FIRE PANIC BUTTON *) PUSH[PNL,27] (* MEDICAL PANIC BUTTON *) PUSH[PNL,28] (* POLICE PANIC BUTTON *) { SEND_STRING SECURE,"$02,(PUSH_CHANNEL-10),$FF" CANCEL_WAIT 'POLL KEYPAD' WAIT POLLING_TIME 'POLL KEYPAD' ON[KEYPAD_FLAG] TO[PNL,PUSH_CHANNEL] } (*** POLL FOR KEYPAD STATE ***) IF (KEYPAD_FLAG) { SEND_STRING SECURE,"$19,$00,$FF" OFF[KEYPAD_FLAG] WAIT POLLING_TIME 'POLL KEYPAD' ON[KEYPAD_FLAG] } (* THE FOLLOWING "PUSH" IS A TEST TO DISPLAY EVERY POSSIBLE *) (* MESSAGE ON THE TOUCH PANEL AT THE SAME TIME. IT IS NOT *) (* NEEDED FOR NORMAL OPERATION AND CAN THUS BE DISCARDED. *) PUSH[PNL,29] (* TEST THE AMX DISPLAY *) WAIT 40 'DISPLAY' { CANCEL_WAIT 'POLL KEYPAD' OFF[KEYPAD_FLAG] WAIT 100 'POLL KEYPAD' ON[KEYPAD_FLAG] SECURE_BUFFER = "$1A,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF" } RELEASE[PNL,29] CANCEL_WAIT 'DISPLAY' (***********************************************************) (* END OF PROGRAM *) (* DO NOT PUT ANY CODE BELOW THIS COMMENT *) (***********************************************************)