PROGRAM_NAME='ASPI, ECHOFREE EF1210, RS-232, 05-17-00, MJR' (* DATE:05/19/00 TIME:15:43:22 *) (***********************************************************) (* 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, PANJA will *) (* provide protocols upon request. *) (* *) (* If further programming assistance is required, please *) (* contact your PANJA customer support team. *) (* *) (***********************************************************) (* System Type : AXCENT-3 *) (***********************************************************) (* FIND.NOTES - SEARCH FOR FIND FOR NOTES IN CODE. *) (* THE UNIT RESPONDS UNEXPECTEDLY FROM ANY *) (* REFERENCE ASSIGNMENT COMMAND. IT SOMETIMES *) (* CAUSES THE UNIT TO START SENDING EITHER *) (* AN INFINITE STRING OF ZEROS OR RANDOM *) (* REQUEST REPLIES IN AN INFINITE LOOP. THE *) (* UNIT STILL RESPONDS AT THIS POINT, BUT *) (* FEEDBACK CAN BE EXTREMELY EFFECTED. *) (***********************************************************) (* DEVICE NUMBER DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_DEVICE DSP = 1 (* ASPI ECHOFREE EF1210 DSP *) (* 9600,N,8,1 FG10-752-04 *) TP = 128 (* AXT-CG10 *) (***********************************************************) (* CONSTANT DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_CONSTANT #IF_NOT_DEFINED DS_FUNCTION_CONST #DEFINE DS_FUNCTION_CONST DS_MUTE = 43 DS_MUTE_CH1 = 44 DS_MUTE_CH2 = 45 DS_MUTE_CH3 = 46 DS_MUTE_CH4 = 47 DS_MUTE_CH5 = 48 DS_MUTE_CH6 = 49 DS_MUTE_CH7 = 50 DS_MUTE_CH8 = 51 DS_ACKMOD = 52 DS_AEC = 53 DS_AEC_CH1 = 54 DS_AEC_CH2 = 55 DS_AEC_CH3 = 56 DS_AEC_CH4 = 57 DS_AEC_CH5 = 58 DS_AEC_CH6 = 59 DS_AEC_CH7 = 60 DS_AEC_CH8 = 61 DS_AEC_SET = 62 DS_AEC_SET_CH1 = 63 DS_AEC_SET_CH2 = 64 DS_AEC_SET_CH3 = 65 DS_AEC_SET_CH4 = 66 DS_AEC_SET_CH5 = 67 DS_AEC_SET_CH6 = 68 DS_AEC_SET_CH7 = 69 DS_AEC_SET_CH8 = 70 DS_ERROR = 71 DS_CODEC_GAIN = 72 DS_MIC_GAIN = 73 DS_PLYBK_GAIN = 74 DS_REF_GAIN = 75 DS_ZONE_GAIN = 76 DS_LOCKFP = 77 DS_NOISE_CANC = 78 DS_NOISE_CANC_CH1 = 79 DS_NOISE_CANC_CH2 = 80 DS_NOISE_CANC_CH3 = 81 DS_NOISE_CANC_CH4 = 82 DS_NOISE_CANC_CH5 = 83 DS_NOISE_CANC_CH6 = 84 DS_NOISE_CANC_CH7 = 85 DS_NOISE_CANC_CH8 = 86 DS_SET_NOISE_CANC = 87 DS_SET_NOISE_CANC_CH1 = 88 DS_SET_NOISE_CANC_CH2 = 89 DS_SET_NOISE_CANC_CH3 = 90 DS_SET_NOISE_CANC_CH4 = 91 DS_SET_NOISE_CANC_CH5 = 92 DS_SET_NOISE_CANC_CH6 = 93 DS_SET_NOISE_CANC_CH7 = 94 DS_SET_NOISE_CANC_CH8 = 95 DS_PING = 96 DS_REFASGN = 97 DS_REFASGN_A = 98 DS_REFASGN_A_CH1 = 99 DS_REFASGN_A_CH2 = 100 DS_REFASGN_A_CH3 = 101 DS_REFASGN_A_CH4 = 102 DS_REFASGN_A_CH5 = 103 DS_REFASGN_A_CH6 = 104 DS_REFASGN_A_CH7 = 105 DS_REFASGN_A_CH8 = 106 DS_REFASGN_B = 107 DS_REFASGN_B_CH1 = 108 DS_REFASGN_B_CH2 = 109 DS_REFASGN_B_CH3 = 110 DS_REFASGN_B_CH4 = 111 DS_REFASGN_B_CH5 = 112 DS_REFASGN_B_CH6 = 113 DS_REFASGN_B_CH7 = 114 DS_REFASGN_B_CH8 = 115 DS_RESET = 116 DS_RESTORE = 117 DS_SAVE = 118 DS_SELECT_INP = 119 DS_SELECT_INP_CH1 = 120 DS_SELECT_INP_CH2 = 121 DS_SELECT_INP_CH3 = 122 DS_SELECT_INP_CH4 = 123 DS_SELECT_INP_CH5 = 124 DS_SELECT_INP_CH6 = 125 DS_SELECT_INP_CH7 = 126 DS_SELECT_INP_CH8 = 127 DS_SELECT_REM = 128 DS_SAMP_RATE = 129 DS_SW_VER = 130 DS_GAIN_STOP = 256 #END_IF #IF_NOT_DEFINED DS_DATA_CONST #DEFINE DS_DATA_CONST DS_OFF = '0' DS_ON = '1' DS_TOGGLE = '2' DS_REQUEST = '?' DS_UP = '24' DS_DN = '25' #END_IF #IF_NOT_DEFINED ASPDS_DEFEAT_FEEDBACK ASPDS_DEFEAT_FEEDBACK = 0 #END_IF (* LEVEL RANGE CONSTANTS *) DS_CODEC_GAIN_UP = 131 DS_CODEC_GAIN_DN = 132 DS_MIC_GAIN_UP = 133 DS_MIC_GAIN_DN = 134 DS_PLYBK_GAIN_UP = 135 DS_PLYBK_GAIN_DN = 136 DS_REF_GAIN_UP = 137 DS_REF_GAIN_DN = 138 DS_ZONE_A_GAIN_UP = 139 DS_ZONE_A_GAIN_DN = 140 DS_ZONE_B_GAIN_UP = 141 DS_ZONE_B_GAIN_DN = 142 CODEC_GAIN_MIN = 0 CODEC_GAIN_MAX = 20 CODEC_GAIN_STEP = 2 MIC_GAIN_MIN = 0 MIC_GAIN_MAX = 31 MIC_GAIN_STEP = 3 PLYBK_GAIN_MIN = 0 PLYBK_GAIN_MAX = 15 PLYBK_GAIN_STEP = 1 REF_GAIN_MIN = 0 REF_GAIN_MAX = 20 REF_GAIN_STEP = 2 ZONE_GAIN_MIN = 0 ZONE_GAIN_MAX = 13 ZONE_GAIN_STEP = 2 DEV_TYPE = 67 (* ASCII 'C' *) DEV_ID1 = 48 (* ASCII '0' *) DEV_ID2 = 48 (* ASCII '0' *) REF_A = 65 (* ASCII 'A' *) REF_B = 66 (* ASCII 'B' *) ZONE_A = 65 (* ASCII 'A' *) ZONE_B = 66 (* ASCII 'B' *) (***********************************************************) (* VARIABLE DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_VARIABLE DSP_BUFFER[255] TEMP_DSP_BUFFER[255] TRASH[255] FB_CHAN FB_REF[1] QUEUE[255] (* GAIN LEVELS *) CODEC_GAIN_LEVEL MIC_GAIN_LEVEL[8] PLYBK_GAIN_LEVEL REF_GAIN_LEVEL_A REF_GAIN_LEVEL_B ZONE_GAIN_LEVEL_A ZONE_GAIN_LEVEL_B CUR_CHAN CUR_REF (***********************************************************) (* LATCHING DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_LATCHING (***********************************************************) (* MUTUALLY EXCLUSIVE DEFINITIONS GO BELOW *) (***********************************************************) DEFINE_MUTUALLY_EXCLUSIVE (***********************************************************) (* SUBROUTINE DEFINITIONS GO BELOW *) (***********************************************************) (* STACKS EACH COMMAND FROM FUNCTION CALL ONTO THE QUEUE *) DEFINE_CALL 'ADD TO QUEUE' (STR[50]) { QUEUE = "QUEUE,STR,13" } (* REMOVES NEXT COMMAND IN QUEUE AND SENDS IT TO THE DEVICE *) DEFINE_CALL 'SEND TO DEV' (DEV) LOCAL_VAR CMD[50] { IF (LENGTH_STRING(QUEUE)) { CMD = REMOVE_STRING(QUEUE,"13",1) SEND_STRING DEV,"CMD" } } (******************************************) (* NAME: ASPI ECHOFREE DSP FUNCTION *) (* PURPOSE: SYSTEM CALL LIKE FORMAT *) (* FOR FUNCTION OF ECHOFREE 1210 *) (******************************************) (* DEV_TYPE IS ALWAYS 'C' FOR THE EF1210 *) (* DEV_ID IS SET ON DIP SWITCHES ON REAR PANEL *) (* CMD_TYPE IS EITHER OFF, ON, TOGGLE, OR REQUEST *) (* CHAN IS THE CHANNEL NUMBER TO PERFORM THE COMMAND ON *) (* DATA PARAMETER CAN BE ANY EXTRA INFORMATION NEEDED FOR THE GIVEN COMMAND *) DEFINE_CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,FUNC,CMD_TYPE[2],CHAN,DATA) { SELECT { ACTIVE (FUNC = DS_MUTE) : { SELECT { ACTIVE (CMD_TYPE = DS_OFF) : { OFF[DEV,DS_MUTE + CHAN] } ACTIVE (CMD_TYPE = DS_ON) : { ON[DEV,DS_MUTE + CHAN] } ACTIVE (CMD_TYPE = DS_TOGGLE) : { [DEV,DS_MUTE + CHAN] = ![DEV,DS_MUTE + CHAN] } } CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'MUTEI',ITOA(CHAN),CMD_TYPE") } ACTIVE (FUNC = DS_ACKMOD) : { CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'ACKMOD',CMD_TYPE") } ACTIVE (FUNC = DS_AEC) : { SELECT { ACTIVE (CMD_TYPE = DS_OFF) : { OFF[DEV,DS_AEC + CHAN] } ACTIVE (CMD_TYPE = DS_ON) : { ON[DEV,DS_AEC + CHAN] } ACTIVE (CMD_TYPE = DS_TOGGLE) : { [DEV,DS_AEC + CHAN] = ![DEV,DS_AEC + CHAN] } } CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'AEC',ITOA(CHAN),CMD_TYPE") } (* DS_OFF SETS SUPPRESSION MODE TO NORMAL, DS_ON SETS IT TO AGGRESSIVE *) ACTIVE (FUNC = DS_AEC_SET) : { SELECT { ACTIVE (CMD_TYPE = DS_OFF) : { OFF[DEV,DS_AEC_SET + CHAN] } ACTIVE (CMD_TYPE = DS_ON) : { ON[DEV,DS_AEC_SET + CHAN] } ACTIVE (CMD_TYPE = DS_TOGGLE) : { [DEV,DS_AEC_SET + CHAN] = ![DEV,DS_AEC_SET + CHAN] } } CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'AECS',ITOA(CHAN),CMD_TYPE") } ACTIVE (FUNC = DS_ERROR) : { CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'ERROR',CMD_TYPE") } ACTIVE (FUNC = DS_CODEC_GAIN): { SELECT { ACTIVE (CMD_TYPE = DS_REQUEST) : { CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'GAINC',CMD_TYPE") } ACTIVE (CMD_TYPE = DS_UP) : { OFF[DEV,DS_CODEC_GAIN_DN] ON[DEV,DS_CODEC_GAIN_UP] CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'GAINC',ITOA(DATA)") } ACTIVE (CMD_TYPE = DS_DN) : { OFF[DEV,DS_CODEC_GAIN_UP] ON[DEV,DS_CODEC_GAIN_DN] CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'GAINC',ITOA(DATA)") } } } ACTIVE (FUNC = DS_MIC_GAIN): { SELECT { ACTIVE (CMD_TYPE = DS_REQUEST) : { CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'GAINI',ITOA(CHAN),CMD_TYPE") } ACTIVE (CMD_TYPE = DS_UP) : { OFF[DEV,DS_MIC_GAIN_DN] ON[DEV,DS_MIC_GAIN_UP] CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'GAINI',ITOA(CHAN),ITOA(DATA)") } ACTIVE (CMD_TYPE = DS_DN) : { OFF[DEV,DS_MIC_GAIN_UP] ON[DEV,DS_MIC_GAIN_DN] CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'GAINI',ITOA(CHAN),ITOA(DATA)") } } } ACTIVE (FUNC = DS_PLYBK_GAIN) : { SELECT { ACTIVE (CMD_TYPE = DS_REQUEST) : { CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'GAINP',CMD_TYPE") } ACTIVE (CMD_TYPE = DS_UP) : { OFF[DEV,DS_PLYBK_GAIN_DN] ON[DEV,DS_PLYBK_GAIN_UP] CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'GAINP',ITOA(DATA)") } ACTIVE (CMD_TYPE = DS_DN) : { OFF[DEV,DS_PLYBK_GAIN_UP] ON[DEV,DS_PLYBK_GAIN_DN] CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'GAINP',ITOA(DATA)") } } } ACTIVE (FUNC = DS_REF_GAIN) : { SELECT { ACTIVE (CMD_TYPE = DS_REQUEST) : { CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'GAINR',CHAN,CMD_TYPE") } ACTIVE (CMD_TYPE = DS_UP) : { OFF[DEV,DS_REF_GAIN_DN] ON[DEV,DS_REF_GAIN_UP] (* CHAN IS EITHER 'A' OR 'B' IN THIS CASE *) CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'GAINR',CHAN,ITOA(DATA)") } ACTIVE (CMD_TYPE = DS_DN) : { OFF[DEV,DS_REF_GAIN_UP] ON[DEV,DS_REF_GAIN_DN] (* CHAN IS EITHER 'A' OR 'B' IN THIS CASE *) CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'GAINR',CHAN,ITOA(DATA)") } } } ACTIVE (FUNC = DS_ZONE_GAIN) : { SELECT { ACTIVE (CMD_TYPE = DS_REQUEST) : { CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'GAINZ',ITOA(CHAN),CMD_TYPE") } ACTIVE (CMD_TYPE = DS_UP) : { IF (CHAN = ZONE_A) { OFF[DEV,DS_ZONE_A_GAIN_DN] ON[DEV,DS_ZONE_A_GAIN_UP] } IF (CHAN = ZONE_B) { OFF[DEV,DS_ZONE_B_GAIN_DN] ON[DEV,DS_ZONE_B_GAIN_UP] } (* CHAN IS EITHER 'A' OR 'B' IN THIS CASE *) CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'GAINZ',CHAN,ITOA(DATA)") } ACTIVE (CMD_TYPE = DS_DN) : { IF (CHAN = ZONE_A) { OFF[DEV,DS_ZONE_A_GAIN_UP] ON[DEV,DS_ZONE_A_GAIN_DN] } IF (CHAN = ZONE_B) { OFF[DEV,DS_ZONE_B_GAIN_UP] ON[DEV,DS_ZONE_B_GAIN_DN] } (* CHAN IS EITHER 'A' OR 'B' IN THIS CASE *) CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'GAINZ',CHAN,ITOA(DATA)") } } } ACTIVE (FUNC = DS_GAIN_STOP) : { OFF[DEV,DS_CODEC_GAIN_UP] OFF[DEV,DS_CODEC_GAIN_DN] OFF[DEV,DS_MIC_GAIN_UP] OFF[DEV,DS_MIC_GAIN_DN] OFF[DEV,DS_PLYBK_GAIN_UP] OFF[DEV,DS_PLYBK_GAIN_DN] OFF[DEV,DS_REF_GAIN_UP] OFF[DEV,DS_REF_GAIN_DN] OFF[DEV,DS_ZONE_A_GAIN_UP] OFF[DEV,DS_ZONE_A_GAIN_DN] OFF[DEV,DS_ZONE_B_GAIN_UP] OFF[DEV,DS_ZONE_B_GAIN_DN] } ACTIVE (FUNC = DS_LOCKFP) : { SELECT { ACTIVE (CMD_TYPE = DS_OFF) : { OFF[DEV,DS_LOCKFP] } ACTIVE (CMD_TYPE = DS_ON) : { ON[DEV,DS_LOCKFP] } ACTIVE (CMD_TYPE = DS_TOGGLE) : { [DEV,DS_LOCKFP] = ![DEV,DS_LOCKFP] } } CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'LOCKFP',CMD_TYPE") } ACTIVE (FUNC = DS_NOISE_CANC) : { SELECT { ACTIVE (CMD_TYPE = DS_OFF) : { OFF[DEV,DS_NOISE_CANC + CHAN] } ACTIVE (CMD_TYPE = DS_ON) : { ON[DEV,DS_NOISE_CANC + CHAN] } ACTIVE (CMD_TYPE = DS_TOGGLE) : { [DEV,DS_NOISE_CANC + CHAN] = ![DEV,DS_NOISE_CANC + CHAN] } } CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'NC',ITOA(CHAN),CMD_TYPE") } ACTIVE (FUNC = DS_SET_NOISE_CANC) : { SELECT { ACTIVE (CMD_TYPE = DS_OFF) : { OFF[DEV,DS_NOISE_CANC + CHAN] CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'NCL',ITOA(CHAN),'10'") } ACTIVE (CMD_TYPE = DS_ON) : { ON[DEV,DS_NOISE_CANC + CHAN] CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'NCL',ITOA(CHAN),'6'") } ACTIVE (CMD_TYPE = DS_REQUEST) : { CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'NCL',ITOA(CHAN),CMD_TYPE") } } } (* A DEV_TYPE SET TO '*' WILL PING ALL DEVICES ON THE ASPI BUS *) ACTIVE (FUNC = DS_PING) : CALL 'ADD TO QUEUE' ("DEV_TYPE,'**PING'") (* DEFAULT REFERENCE ASSIGNMENT IS ALL CHANNELS SET TO REFERENCE INPUT A *) (* REF IS PASSED AS DATA *) ACTIVE (FUNC = DS_REFASGN) : { SELECT { ACTIVE (DATA = REF_A) : { ON[DEV,DS_REFASGN_A + CHAN] CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'REFASGN',ITOA(CHAN),DATA") } ACTIVE (DATA = REF_B) : { ON[DEV,DS_REFASGN_B + CHAN] CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'REFASGN',ITOA(CHAN),DATA") } ACTIVE (CMD_TYPE = DS_REQUEST) : { CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'REFASGN',ITOA(CHAN),CMD_TYPE") } } } ACTIVE (FUNC = DS_RESET) : CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'RESETF'") (* ITOA(DATA) IS THE MEMORY SLOT FROM 0-3 *) ACTIVE (FUNC = DS_RESTORE) : CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'RESTNV',ITOA(DATA)") (* ITOA(DATA) IS THE MEMORY SLOT FROM 0-3 *) ACTIVE (FUNC = DS_SAVE) : CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'SAVENV',ITOA(DATA)") ACTIVE (FUNC = DS_SELECT_INP) : { SELECT { ACTIVE (CMD_TYPE = DS_REQUEST) : { CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'SELECTI',CMD_TYPE") } ACTIVE (1) : { OFF[DEV,DS_SELECT_INP_CH1] OFF[DEV,DS_SELECT_INP_CH2] OFF[DEV,DS_SELECT_INP_CH3] OFF[DEV,DS_SELECT_INP_CH4] OFF[DEV,DS_SELECT_INP_CH5] OFF[DEV,DS_SELECT_INP_CH6] OFF[DEV,DS_SELECT_INP_CH7] OFF[DEV,DS_SELECT_INP_CH8] ON[DEV,DS_SELECT_INP + CHAN] CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'SELECTI',ITOA(CHAN)") } } } ACTIVE (FUNC = DS_SELECT_REM) : { SELECT { ACTIVE (CMD_TYPE = DS_ON) : { CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'SELECTR',CHAN") } ACTIVE (CMD_TYPE = DS_REQUEST) : { CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'SELECTR',CMD_TYPE") } } } (* ITOA(DATA) PARAMETER IS EITHER '16' OR '48', SPECIFYING THE SAMPLE RATE *) (* 16 IS DS_ON AND 48 IS DS_OFF. *) ACTIVE (FUNC = DS_SAMP_RATE) : { SELECT { ACTIVE (CMD_TYPE = DS_ON) : { ON[DEV,DS_SAMP_RATE] CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'SR',ITOA(DATA)") } ACTIVE (CMD_TYPE = DS_OFF) : { OFF[DEV,DS_SAMP_RATE] CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'SR',ITOA(DATA)") } ACTIVE (CMD_TYPE = DS_REQUEST) : { CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'SR',CMD_TYPE") } } } ACTIVE (FUNC = DS_SW_VER) : CALL 'ADD TO QUEUE' ("DEV_TYPE,DEV_ID1,DEV_ID2,'SWVER',CMD_TYPE") } } (***************************************) (* NAME: ASPDS001 *) (* PURPOSE: SYSTEM CALL LIKE FORMAT *) (* FOR ECHOFREE EF1210 *) (* *) (* THIS CALL CONTROLS THE GAIN LEVELS *) (* AND MUTE FUNCTION. *) (* PARAMETERS : *) (* DEV : DEVICE (AMX CARD #) *) (* PANEL : AMX CONTROL PANEL # *) (* DEV_TYPE : ASPI DEVICE TYPE *) (* 'C' FOR EF1210 *) (* DEV_ID : DEVICE ID ON ASPI *) (* BUS (0-31). *) (* CHAN : CURRENT INPUT CHANNEL *) (* REF : CURRENT REFERENCE A-B *) (* CGAINUPB : CODEC OUTPUT GAIN UP *) (* BUTTON *) (* CGAINDNB : CODEC OUTPUT GAIN DN *) (* BUTTON *) (* PGAINUPB : PLAYBACK INPUT GAIN *) (* UP BUTTON *) (* PGAINDNB : PLAYBACK INPUT GAIN *) (* DN BUTTON *) (* RGAINUPB : REFERENCE INPUT GAIN *) (* UP BUTTON *) (* RGAINDNB : REFERENCE INPUT GAIN *) (* DN BUTTON *) (* ZGAINAUPB: ZONE A OUTPUT GAIN *) (* UP BUTTON *) (* ZGAINADNB: ZONE A OUTPUT GAIN *) (* DN BUTTON *) (* ZGAINBUPB: ZONE B OUTPUT GAIN *) (* UP BUTTON *) (* ZGAINBDNB: ZONE B OUTPUT GAIN *) (* DN BUTTON *) (* MGAINUPB : MIC/LINE GAIN UP *) (* MGAINDNB : MIC/LINE GAIN DOWN *) (***************************************) DEFINE_CALL 'ASPDS001' (DEV,PANEL,DEV_TYPE,DEV_ID1,DEV_ID2,CHAN,REF,CGAINUPB, CGAINDNB,PGAINUPB,PGAINDNB,RGAINUPB,RGAINDNB, ZGAINAUPB,ZGAINADNB,ZGAINBUPB,ZGAINBDNB, MUTEONB,MUTEOFB,MGAINUPB,MGAINDNB) { PUSH[PANEL,CGAINUPB] (* CODEC OUTPUT GAIN UP *) IF (CODEC_GAIN_LEVEL < CODEC_GAIN_MAX) { CODEC_GAIN_LEVEL = CODEC_GAIN_LEVEL + 1 CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_CODEC_GAIN,DS_UP,CHAN,CODEC_GAIN_LEVEL) } RELEASE[PANEL,CGAINUPB] { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_GAIN_STOP,DS_UP,0,0) CANCEL_WAIT 'CODEC GAIN RAMP' } PUSH[PANEL,CGAINDNB] (* CODEC OUTPUT GAIN DOWN *) IF (CODEC_GAIN_LEVEL > CODEC_GAIN_MIN) { CODEC_GAIN_LEVEL = CODEC_GAIN_LEVEL - 1 CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_CODEC_GAIN,DS_DN,CHAN,CODEC_GAIN_LEVEL) } RELEASE[PANEL,CGAINDNB] { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_GAIN_STOP,DS_DN,0,0) CANCEL_WAIT 'CODEC GAIN RAMP' } SELECT { ACTIVE ([DEV,DS_CODEC_GAIN_UP]) : WAIT 5 'CODEC GAIN RAMP' IF (CODEC_GAIN_LEVEL < CODEC_GAIN_MAX) { CODEC_GAIN_LEVEL = CODEC_GAIN_LEVEL + CODEC_GAIN_STEP IF (CODEC_GAIN_LEVEL > CODEC_GAIN_MAX) CODEC_GAIN_LEVEL = CODEC_GAIN_MAX CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_CODEC_GAIN,DS_UP,CHAN,CODEC_GAIN_LEVEL) } ACTIVE ([DEV,DS_CODEC_GAIN_DN]) : WAIT 5 'CODEC GAIN RAMP' IF (CODEC_GAIN_LEVEL > CODEC_GAIN_MIN) { CODEC_GAIN_LEVEL = CODEC_GAIN_LEVEL - CODEC_GAIN_STEP IF (CODEC_GAIN_LEVEL > 256) CODEC_GAIN_LEVEL = CODEC_GAIN_MIN CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_CODEC_GAIN,DS_DN,CHAN,CODEC_GAIN_LEVEL) } } PUSH[PANEL,PGAINUPB] (* PLAYBACK INPUT GAIN UP *) IF (PLYBK_GAIN_LEVEL < PLYBK_GAIN_MAX) { PLYBK_GAIN_LEVEL = PLYBK_GAIN_LEVEL + 1 CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_PLYBK_GAIN,DS_UP,CHAN,PLYBK_GAIN_LEVEL) } RELEASE[PANEL,PGAINUPB] { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_GAIN_STOP,DS_ON,0,0) CANCEL_WAIT 'PLYBK GAIN RAMP' } PUSH[PANEL,PGAINDNB] (* PLAYBACK INPUT GAIN DOWN *) IF (PLYBK_GAIN_LEVEL > PLYBK_GAIN_MIN) { PLYBK_GAIN_LEVEL = PLYBK_GAIN_LEVEL - 1 CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_PLYBK_GAIN,DS_DN,CHAN,PLYBK_GAIN_LEVEL) } RELEASE[PANEL,PGAINDNB] { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_GAIN_STOP,DS_ON,0,0) CANCEL_WAIT 'PLYBK GAIN RAMP' } SELECT { ACTIVE ([DEV,DS_PLYBK_GAIN_UP]) : WAIT 5 'PLYBK GAIN RAMP' IF (PLYBK_GAIN_LEVEL < PLYBK_GAIN_MAX) { PLYBK_GAIN_LEVEL = PLYBK_GAIN_LEVEL + PLYBK_GAIN_STEP IF (PLYBK_GAIN_LEVEL > PLYBK_GAIN_MAX) PLYBK_GAIN_LEVEL = PLYBK_GAIN_MAX CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_PLYBK_GAIN,DS_UP,CHAN,PLYBK_GAIN_LEVEL) } ACTIVE ([DEV,DS_PLYBK_GAIN_DN]) : WAIT 5 'PLYBK GAIN RAMP' IF (PLYBK_GAIN_LEVEL > PLYBK_GAIN_MIN) { PLYBK_GAIN_LEVEL = PLYBK_GAIN_LEVEL - PLYBK_GAIN_STEP IF (PLYBK_GAIN_LEVEL > 256) PLYBK_GAIN_LEVEL = PLYBK_GAIN_MIN CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_PLYBK_GAIN,DS_DN,CHAN,PLYBK_GAIN_LEVEL) } } PUSH[PANEL,RGAINUPB] (* REFERENCE INPUT GAIN UP *) SELECT { ACTIVE (REF = REF_A) : { IF (REF_GAIN_LEVEL_A < REF_GAIN_MAX) { REF_GAIN_LEVEL_A = REF_GAIN_LEVEL_A + 1 CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REF_GAIN,DS_UP,REF_A,REF_GAIN_LEVEL_A) } } ACTIVE (REF = REF_B) : { IF (REF_GAIN_LEVEL_B < REF_GAIN_MAX) { REF_GAIN_LEVEL_B = REF_GAIN_LEVEL_B + 1 CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REF_GAIN,DS_UP,REF_B,REF_GAIN_LEVEL_B) } } } RELEASE[PANEL,RGAINUPB] { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_GAIN_STOP,DS_OFF,0,0) CANCEL_WAIT 'REF A GAIN RAMP' CANCEL_WAIT 'REF B GAIN RAMP' } PUSH[PANEL,RGAINDNB] (* REFERENCE INPUT GAIN DOWN *) SELECT { ACTIVE (REF = REF_A) : { IF (REF_GAIN_LEVEL_A > REF_GAIN_MIN) { REF_GAIN_LEVEL_A = REF_GAIN_LEVEL_A - 1 CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REF_GAIN,DS_DN,REF_A,REF_GAIN_LEVEL_A) } } ACTIVE (REF = REF_B) : { IF (REF_GAIN_LEVEL_B > REF_GAIN_MIN) { REF_GAIN_LEVEL_B = REF_GAIN_LEVEL_B - 1 CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REF_GAIN,DS_DN,REF_B,REF_GAIN_LEVEL_B) } } } RELEASE[PANEL,RGAINDNB] { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_GAIN_STOP,DS_OFF,0,0) CANCEL_WAIT 'REF A GAIN RAMP' CANCEL_WAIT 'REF B GAIN RAMP' } SELECT { ACTIVE ([DEV,DS_REF_GAIN_UP]) : { SELECT { ACTIVE (REF = REF_A) : { WAIT 5 'REF A GAIN RAMP' IF (REF_GAIN_LEVEL_A < REF_GAIN_MAX) { REF_GAIN_LEVEL_A = REF_GAIN_LEVEL_A + REF_GAIN_STEP IF (REF_GAIN_LEVEL_A > REF_GAIN_MAX) REF_GAIN_LEVEL_A = REF_GAIN_MAX CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REF_GAIN,DS_UP,REF_A,REF_GAIN_LEVEL_A) } } ACTIVE (REF = REF_B) : { WAIT 5 'REF B GAIN RAMP' IF (REF_GAIN_LEVEL_B < REF_GAIN_MAX) { REF_GAIN_LEVEL_B = REF_GAIN_LEVEL_B + REF_GAIN_STEP IF (REF_GAIN_LEVEL_B > REF_GAIN_MAX) REF_GAIN_LEVEL_B = REF_GAIN_MAX CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REF_GAIN,DS_UP,REF_B,REF_GAIN_LEVEL_B) } } } } ACTIVE ([DEV,DS_REF_GAIN_DN]) : { SELECT { ACTIVE (REF = REF_A) : { WAIT 5 'REF A GAIN RAMP' IF (REF_GAIN_LEVEL_A > REF_GAIN_MIN) { REF_GAIN_LEVEL_A = REF_GAIN_LEVEL_A - REF_GAIN_STEP IF (REF_GAIN_LEVEL_A > 256) REF_GAIN_LEVEL_A = REF_GAIN_MIN CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REF_GAIN,DS_DN,REF_A,REF_GAIN_LEVEL_A) } } ACTIVE (REF = REF_B) : { WAIT 5 'REF B GAIN RAMP' IF (REF_GAIN_LEVEL_B > REF_GAIN_MIN) { REF_GAIN_LEVEL_B = REF_GAIN_LEVEL_B - REF_GAIN_STEP IF (REF_GAIN_LEVEL_B > 256) REF_GAIN_LEVEL_B = REF_GAIN_MIN CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REF_GAIN,DS_DN,REF_B,REF_GAIN_LEVEL_B) } } } } } PUSH[PANEL,ZGAINAUPB] (* ZONE A OUTPUT GAIN UP *) IF (ZONE_GAIN_LEVEL_A < ZONE_GAIN_MAX) { ZONE_GAIN_LEVEL_A = ZONE_GAIN_LEVEL_A + 1 CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_ZONE_GAIN,DS_UP,ZONE_A,ZONE_GAIN_LEVEL_A) } RELEASE[PANEL,ZGAINAUPB] { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_GAIN_STOP,DS_ON,0,0) CANCEL_WAIT 'ZONE A GAIN RAMP' } PUSH[PANEL,ZGAINADNB] (* ZONE A OUTPUT GAIN DOWN *) IF (ZONE_GAIN_LEVEL_A > ZONE_GAIN_MIN) { ZONE_GAIN_LEVEL_A = ZONE_GAIN_LEVEL_A - 1 CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_ZONE_GAIN,DS_DN,ZONE_A,ZONE_GAIN_LEVEL_A) } RELEASE[PANEL,ZGAINADNB] { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_GAIN_STOP,DS_ON,0,0) CANCEL_WAIT 'ZONE A GAIN RAMP' } SELECT { ACTIVE ([DEV,DS_ZONE_A_GAIN_UP]) : WAIT 5 'ZONE A GAIN RAMP' IF (ZONE_GAIN_LEVEL_A < ZONE_GAIN_MAX) { ZONE_GAIN_LEVEL_A = ZONE_GAIN_LEVEL_A + ZONE_GAIN_STEP IF (ZONE_GAIN_LEVEL_A > ZONE_GAIN_MAX) ZONE_GAIN_LEVEL_A = ZONE_GAIN_MAX CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_ZONE_GAIN,DS_UP,ZONE_A,ZONE_GAIN_LEVEL_A) } ACTIVE ([DEV,DS_ZONE_A_GAIN_DN]) : WAIT 5 'ZONE A GAIN RAMP' IF (ZONE_GAIN_LEVEL_A > ZONE_GAIN_MIN) { ZONE_GAIN_LEVEL_A = ZONE_GAIN_LEVEL_A - ZONE_GAIN_STEP IF (ZONE_GAIN_LEVEL_A > 256) ZONE_GAIN_LEVEL_A = ZONE_GAIN_MIN CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_ZONE_GAIN,DS_DN,ZONE_A,ZONE_GAIN_LEVEL_A) } } PUSH[PANEL,ZGAINBUPB] (* ZONE B OUTPUT GAIN UP *) IF (ZONE_GAIN_LEVEL_B < ZONE_GAIN_MAX) { ZONE_GAIN_LEVEL_B = ZONE_GAIN_LEVEL_B + 1 CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_ZONE_GAIN,DS_UP,ZONE_B,ZONE_GAIN_LEVEL_B) } RELEASE[PANEL,ZGAINBUPB] { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_GAIN_STOP,DS_ON,0,0) CANCEL_WAIT 'ZONE B GAIN RAMP' } PUSH[PANEL,ZGAINBDNB] (* ZONE B OUTPUT GAIN DOWN *) IF (ZONE_GAIN_LEVEL_B > ZONE_GAIN_MIN) { ZONE_GAIN_LEVEL_B = ZONE_GAIN_LEVEL_B - 1 CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_ZONE_GAIN,DS_DN,ZONE_B,ZONE_GAIN_LEVEL_B) } RELEASE[PANEL,ZGAINBDNB] { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_GAIN_STOP,DS_ON,0,0) CANCEL_WAIT 'ZONE B GAIN RAMP' } SELECT { ACTIVE ([DEV,DS_ZONE_B_GAIN_UP]) : WAIT 5 'ZONE B GAIN RAMP' IF (ZONE_GAIN_LEVEL_B < ZONE_GAIN_MAX) { ZONE_GAIN_LEVEL_B = ZONE_GAIN_LEVEL_B + ZONE_GAIN_STEP IF (ZONE_GAIN_LEVEL_B > ZONE_GAIN_MAX) ZONE_GAIN_LEVEL_B = ZONE_GAIN_MAX CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_ZONE_GAIN,DS_UP,ZONE_B,ZONE_GAIN_LEVEL_B) } ACTIVE ([DEV,DS_ZONE_B_GAIN_DN]) : WAIT 5 'ZONE B GAIN RAMP' IF (ZONE_GAIN_LEVEL_B > ZONE_GAIN_MIN) { ZONE_GAIN_LEVEL_B = ZONE_GAIN_LEVEL_B - ZONE_GAIN_STEP IF (ZONE_GAIN_LEVEL_B > 256) ZONE_GAIN_LEVEL_B = ZONE_GAIN_MIN CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_ZONE_GAIN,DS_DN,ZONE_B,ZONE_GAIN_LEVEL_B) } } PUSH[PANEL,MUTEONB] (* MUTE ON *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MUTE,DS_ON,CHAN,0) } PUSH[PANEL,MUTEOFB] (* MUTE OFF *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MUTE,DS_OFF,CHAN,0) } PUSH[PANEL,MGAINUPB] (* MIC/LINE INPUT GAIN UP *) IF (MIC_GAIN_LEVEL[CHAN] < MIC_GAIN_MAX) { MIC_GAIN_LEVEL[CHAN] = MIC_GAIN_LEVEL[CHAN] + 1 CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MIC_GAIN,DS_UP,CHAN,MIC_GAIN_LEVEL[CHAN]) } RELEASE[PANEL,MGAINUPB] { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_GAIN_STOP,DS_ON,0,0) CANCEL_WAIT 'MIC GAIN RAMP' } PUSH[PANEL,MGAINDNB] (* MIC/LINE INPUT GAIN DOWN *) IF (MIC_GAIN_LEVEL[CHAN] > MIC_GAIN_MIN) { MIC_GAIN_LEVEL[CHAN] = MIC_GAIN_LEVEL[CHAN] - 1 CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MIC_GAIN,DS_DN,CHAN,MIC_GAIN_LEVEL[CHAN]) } RELEASE[PANEL,MGAINDNB] { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_GAIN_STOP,DS_ON,0,0) CANCEL_WAIT 'MIC GAIN RAMP' } SELECT { ACTIVE ([DEV,DS_MIC_GAIN_UP]) : WAIT 5 'MIC GAIN RAMP' IF (MIC_GAIN_LEVEL[CHAN] < MIC_GAIN_MAX) { MIC_GAIN_LEVEL[CHAN] = MIC_GAIN_LEVEL[CHAN] + MIC_GAIN_STEP IF (MIC_GAIN_LEVEL[CHAN] > MIC_GAIN_MAX) MIC_GAIN_LEVEL[CHAN] = MIC_GAIN_MAX CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MIC_GAIN,DS_UP,CHAN,MIC_GAIN_LEVEL[CHAN]) } ACTIVE ([DEV,DS_MIC_GAIN_DN]) : WAIT 5 'MIC GAIN RAMP' IF (MIC_GAIN_LEVEL[CHAN] > MIC_GAIN_MIN) { MIC_GAIN_LEVEL[CHAN] = MIC_GAIN_LEVEL[CHAN] - MIC_GAIN_STEP IF (MIC_GAIN_LEVEL[CHAN] > MIC_GAIN_MAX) MIC_GAIN_LEVEL[CHAN] = MIC_GAIN_MIN CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MIC_GAIN,DS_DN,CHAN,MIC_GAIN_LEVEL[CHAN]) } } (* FEEDBACK *) IF (!ASPDS_DEFEAT_FEEDBACK) { [PANEL,CGAINUPB] = [DEV,DS_CODEC_GAIN_UP] [PANEL,CGAINDNB] = [DEV,DS_CODEC_GAIN_DN] [PANEL,PGAINUPB] = [DEV,DS_PLYBK_GAIN_UP] [PANEL,PGAINDNB] = [DEV,DS_PLYBK_GAIN_DN] [PANEL,RGAINUPB] = [DEV,DS_REF_GAIN_UP] [PANEL,RGAINDNB] = [DEV,DS_REF_GAIN_DN] [PANEL,ZGAINAUPB] = [DEV,DS_ZONE_A_GAIN_UP] [PANEL,ZGAINADNB] = [DEV,DS_ZONE_A_GAIN_DN] [PANEL,ZGAINBUPB] = [DEV,DS_ZONE_B_GAIN_UP] [PANEL,ZGAINBDNB] = [DEV,DS_ZONE_B_GAIN_DN] [PANEL,MUTEONB] = [DEV,DS_MUTE + CHAN] [PANEL,MUTEOFB] = ![DEV,DS_MUTE + CHAN] [PANEL,MGAINUPB] = [DEV,DS_MIC_GAIN_UP] [PANEL,MGAINDNB] = [DEV,DS_MIC_GAIN_DN] } } (**************************************) (* NAME: ASPDS002 *) (* PURPOSE: SYSTEM CALL LIKE FORMAT *) (* FOR ECHOFREE EF1210 *) (* *) (* THIS CALL CONTROLS THE CHANNEL *) (* SPECIFIC FUNCTIONS. *) (* PARAMETERS : *) (* DEV : DEVICE (AMX CARD #) *) (* PANEL : AMX CONTROL PANEL # *) (* DEV_TYPE : ASPI DEVICE TYPE *) (* 'C' FOR EF1210 *) (* DEV_ID : DEVICE ID ON ASPI *) (* BUS (0-31). *) (* CHAN : CURRENT INPUT CHANNEL*) (* REF : CURRENT REF INPUT *) (* AECONB : ENABLE ACOUSTIC ECHO *) (* CANCELLER ON CHAN *) (* AECOFB : DISABLE ACOUSTIC ECHO*) (* CANCELLER ON CHAN *) (* AGGONB : SET SUPPRESION MODE *) (* ON CHAN TO AGGRESSIVE*) (* AGGOFB : SET SUPPRESION MODE *) (* ON CHAN TO NORMAL *) (* NCONB : ENABLE NOISE *) (* CANCELLATION ON CHAN *) (* NCOFB : DISABLE NOISE *) (* CANCELLATION ON CHAN *) (* NCL6B : SET NOISE *) (* CANCELLATION TO 6dB *) (* ON CHAN *) (* NCL10B : SET NOISE *) (* CANCELLATION TO 10dB *) (* ON CHAN *) (* REFASGNB : ASSIGN CURRENT *) (* REFERENCE A TO CHAN *) (**************************************) DEFINE_CALL 'ASPDS002' (DEV,PANEL,DEV_TYPE,DEV_ID1,DEV_ID2,CHAN,REF,AECONB,AECOFB, AGGONB,AGGOFB,NCONB,NCOFB,NCL6B,NCL10B,REFASGNB) { PUSH[PANEL,AECONB] (* ENABLE ACOUSTIC ECHO CANCELLER ON CHAN *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_AEC,DS_ON,CHAN,0) } PUSH[PANEL,AECOFB] (* DISABLE ACOUSTIC ECHO CANCELLER ON CHAN *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_AEC,DS_OFF,CHAN,0) } PUSH[PANEL,AGGONB] (* SET SUPPRESION MODE ON CHAN TO AGGRESSIVE *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_AEC_SET,DS_ON,CHAN,0) } PUSH[PANEL,AGGOFB] (* SET SUPPRESION MODE ON CHAN TO NORMAL *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_AEC_SET,DS_OFF,CHAN,0) } PUSH[PANEL,NCONB] (* ENABLE NOISE CANCELLATION ON CHAN *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_NOISE_CANC,DS_ON,CHAN,0) } PUSH[PANEL,NCOFB] (* DISABLE NOISE CANCELLATION ON CHAN *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_NOISE_CANC,DS_OFF,CHAN,0) } PUSH[PANEL,NCL6B] (* SET NOISE CANCELLATION TO 6dB ON CHAN *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SET_NOISE_CANC,DS_ON,CHAN,0) } PUSH[PANEL,NCL10B] (* SET NOISE CANCELLATION TO 10dB ON CHAN *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SET_NOISE_CANC,DS_OFF,CHAN,0) } PUSH[PANEL,REFASGNB] (* ASSIGN CURRENT REFERENCE TO CHAN *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REFASGN,DS_ON,CHAN,REF) } (* FEEDBACK *) IF (!ASPDS_DEFEAT_FEEDBACK) { [PANEL,AECONB] = [DEV,DS_AEC + CHAN] [PANEL,AECOFB] = ![DEV,DS_AEC + CHAN] [PANEL,AGGONB] = [DEV,DS_AEC_SET + CHAN] [PANEL,AGGOFB] = ![DEV,DS_AEC_SET + CHAN] [PANEL,NCONB] = [DEV,DS_NOISE_CANC + CHAN] [PANEL,NCOFB] = ![DEV,DS_NOISE_CANC + CHAN] [PANEL,NCL6B] = [DEV,DS_SET_NOISE_CANC + CHAN] [PANEL,NCL10B] = ![DEV,DS_SET_NOISE_CANC + CHAN] IF (CUR_REF = REF_A) [PANEL,REFASGNB] = [DEV,DS_REFASGN_A + CHAN] IF (CUR_REF = REF_B) [PANEL,REFASGNB] = [DEV,DS_REFASGN_B + CHAN] } } (**************************************) (* NAME: ASPDS003 *) (* PURPOSE: SYSTEM CALL LIKE FORMAT *) (* FOR ECHOFREE EF1210 *) (* *) (* THIS CALL CONTROLS FRONT PANEL *) (* CONTROLS AND SAMPLE RATE. *) (* PARAMETERS : *) (* DEV : DEVICE (AMX CARD #) *) (* PANEL : AMX CONTROL PANEL # *) (* DEV_TYPE : ASPI DEVICE TYPE *) (* 'C' FOR EF1210 *) (* DEV_ID : DEVICE ID ON ASPI *) (* BUS (0-31). *) (* CHAN : CURRENT INPUT CHANNEL*) (* LOCKFPONB: LOCK FRONT PANEL *) (* LOCKFPOFB: UN-LOCK FRONT PANEL *) (* SELREMAB : SELECT FRONT PANEL *) (* REMOTE METER TO *) (* DISPLAY REF INPUT A *) (* OF CURRENT REFERENCE *) (* SELREMBB : SELECT FRONT PANEL *) (* REMOTE METER TO *) (* DISPLAY REF INPUT B *) (* OF CURRENT REFERENCE *) (* SR16B : CHANGE SAMPLE RATE *) (* TO 16kHz MODE *) (* SR48B : CHANGE SAMPLE RATE *) (* TO 48kHz MODE *) (**************************************) DEFINE_CALL 'ASPDS003' (DEV,PANEL,DEV_TYPE,DEV_ID1,DEV_ID2,CHAN,LOCKFPONB, LOCKFPOFB,SELREMAB,SELREMBB,SR16B,SR48B) { PUSH[PANEL,LOCKFPONB] (* LOCK FRONT PANEL BUTTONS *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_LOCKFP,DS_ON,CHAN,0) } PUSH[PANEL,LOCKFPOFB] (* UN-LOCK FRONT PANEL BUTTONS *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_LOCKFP,DS_OFF,CHAN,0) } PUSH[PANEL,SELREMAB] (* SET FRONT PANEL REMOTE INPUT METER TO DISPLAY REMOTE INPUT OF REFERENCE A *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SELECT_REM,DS_ON,REF_A,0) CUR_REF = REF_A } PUSH[PANEL,SELREMBB] (* SET FRONT PANEL REMOTE INPUT METER TO DISPLAY REMOTE INPUT OF REFERENCE B *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SELECT_REM,DS_ON,REF_B,0) CUR_REF = REF_B } PUSH[PANEL,SR16B] (* CHANGE SAMPLE RATE TO 16kHz MODE *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SAMP_RATE,DS_ON,CHAN,16) } PUSH[PANEL,SR48B] (* CHANGE SAMPLE RATE TO 48kHz MODE *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SAMP_RATE,DS_OFF,CHAN,48) } (* FEEDBACK *) IF (!ASPDS_DEFEAT_FEEDBACK) { [PANEL,LOCKFPONB] = [DEV,DS_LOCKFP] [PANEL,LOCKFPOFB] = ![DEV,DS_LOCKFP] [PANEL,SELREMAB] = (CUR_REF = REF_A) [PANEL,SELREMBB] = (CUR_REF = REF_B) [PANEL,SR16B] = [DEV,DS_SAMP_RATE] [PANEL,SR48B] = ![DEV,DS_SAMP_RATE] } } (**************************************) (* NAME: ASPDS004 *) (* PURPOSE: SYSTEM CALL LIKE FORMAT *) (* FOR ECHOFREE EF1210 *) (* *) (* THIS CALL CONTROLS INPUT SELECTION *) (* DISPLAYED ON FRONT PANEL. *) (* PARAMETERS : *) (* DEV : DEVICE (AMX CARD #) *) (* PANEL : AMX CONTROL PANEL # *) (* DEV_TYPE : ASPI DEVICE TYPE *) (* 'C' FOR EF1210 *) (* DEV_ID : DEVICE ID ON ASPI *) (* BUS (0-31). *) (* SELINP1B : SELECT FRONT PANEL *) (* INPUT METER TO *) (* DISPLAY INPUT CHAN 1 *) (* SELINP2B : SELECT FRONT PANEL *) (* INPUT METER TO *) (* DISPLAY INPUT CHAN 2 *) (* SELINP3B : SELECT FRONT PANEL *) (* INPUT METER TO *) (* DISPLAY INPUT CHAN 3 *) (* SELINP4B : SELECT FRONT PANEL *) (* INPUT METER TO *) (* DISPLAY INPUT CHAN 4 *) (* SELINP5B : SELECT FRONT PANEL *) (* INPUT METER TO *) (* DISPLAY INPUT CHAN 5 *) (* SELINP6B : SELECT FRONT PANEL *) (* INPUT METER TO *) (* DISPLAY INPUT CHAN 6 *) (* SELINP7B : SELECT FRONT PANEL *) (* INPUT METER TO *) (* DISPLAY INPUT CHAN 7 *) (* SELINP8B : SELECT FRONT PANEL *) (* INPUT METER TO *) (* DISPLAY INPUT CHAN 8 *) (**************************************) DEFINE_CALL 'ASPDS004' (DEV,PANEL,DEV_TYPE,DEV_ID1,DEV_ID2,SELINP1B,SELINP2B, SELINP3B,SELINP4B,SELINP5B,SELINP6B,SELINP7B,SELINP8B) { PUSH[PANEL,SELINP1B] (* SET FRONT PANEL INPUT METER TO DISPLAY INPUT CHAN 1 *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SELECT_INP,DS_ON,1,0) CUR_CHAN = 1 } PUSH[PANEL,SELINP2B] (* SET FRONT PANEL INPUT METER TO DISPLAY INPUT CHAN 2 *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SELECT_INP,DS_ON,2,0) CUR_CHAN = 2 } PUSH[PANEL,SELINP3B] (* SET FRONT PANEL INPUT METER TO DISPLAY INPUT CHAN 3 *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SELECT_INP,DS_ON,3,0) CUR_CHAN = 3 } PUSH[PANEL,SELINP4B] (* SET FRONT PANEL INPUT METER TO DISPLAY INPUT CHAN 4 *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SELECT_INP,DS_ON,4,0) CUR_CHAN = 4 } PUSH[PANEL,SELINP5B] (* SET FRONT PANEL INPUT METER TO DISPLAY INPUT CHAN 5 *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SELECT_INP,DS_ON,5,0) CUR_CHAN = 5 } PUSH[PANEL,SELINP6B] (* SET FRONT PANEL INPUT METER TO DISPLAY INPUT CHAN 6 *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SELECT_INP,DS_ON,6,0) CUR_CHAN = 6 } PUSH[PANEL,SELINP7B] (* SET FRONT PANEL INPUT METER TO DISPLAY INPUT CHAN 7 *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SELECT_INP,DS_ON,7,0) CUR_CHAN = 7 } PUSH[PANEL,SELINP8B] (* SET FRONT PANEL INPUT METER TO DISPLAY INPUT CHAN 8 *) { CALL 'ASPDS00F' (DEV,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SELECT_INP,DS_ON,8,0) CUR_CHAN = 8 } (* FEEDBACK *) IF (!ASPDS_DEFEAT_FEEDBACK) { [PANEL,SELINP1B] = (CUR_CHAN = 1) [PANEL,SELINP2B] = (CUR_CHAN = 2) [PANEL,SELINP3B] = (CUR_CHAN = 3) [PANEL,SELINP4B] = (CUR_CHAN = 4) [PANEL,SELINP5B] = (CUR_CHAN = 5) [PANEL,SELINP6B] = (CUR_CHAN = 6) [PANEL,SELINP7B] = (CUR_CHAN = 7) [PANEL,SELINP8B] = (CUR_CHAN = 8) } } (***********************************************************) (* STARTUP CODE GOES BELOW *) (***********************************************************) DEFINE_START SEND_COMMAND DSP,"'SET BAUD 9600,N,8,1'" CREATE_BUFFER DSP,DSP_BUFFER (* GET INITIAL STATE WITH STATUS REQUESTS OF EVERYTHING *) WAIT 1 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MUTE,DS_REQUEST,1,0) WAIT 2 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MUTE,DS_REQUEST,2,0) WAIT 3 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MUTE,DS_REQUEST,3,0) WAIT 4 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MUTE,DS_REQUEST,4,0) WAIT 5 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MUTE,DS_REQUEST,5,0) WAIT 6 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MUTE,DS_REQUEST,6,0) WAIT 7 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MUTE,DS_REQUEST,7,0) WAIT 8 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MUTE,DS_REQUEST,8,0) WAIT 9 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_AEC,DS_REQUEST,1,0) WAIT 10 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_AEC,DS_REQUEST,2,0) WAIT 11 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_AEC,DS_REQUEST,3,0) WAIT 12 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_AEC,DS_REQUEST,4,0) WAIT 13 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_AEC,DS_REQUEST,5,0) WAIT 14 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_AEC,DS_REQUEST,6,0) WAIT 15 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_AEC,DS_REQUEST,7,0) WAIT 16 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_AEC,DS_REQUEST,8,0) WAIT 17 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_AEC_SET,DS_REQUEST,1,0) WAIT 18 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_AEC_SET,DS_REQUEST,2,0) WAIT 19 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_AEC_SET,DS_REQUEST,3,0) WAIT 20 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_AEC_SET,DS_REQUEST,4,0) WAIT 21 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_AEC_SET,DS_REQUEST,5,0) WAIT 22 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_AEC_SET,DS_REQUEST,6,0) WAIT 23 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_AEC_SET,DS_REQUEST,7,0) WAIT 24 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_AEC_SET,DS_REQUEST,8,0) WAIT 25 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_CODEC_GAIN,DS_REQUEST,0,0) WAIT 26 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MIC_GAIN,DS_REQUEST,1,0) WAIT 27 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MIC_GAIN,DS_REQUEST,2,0) WAIT 28 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MIC_GAIN,DS_REQUEST,3,0) WAIT 29 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MIC_GAIN,DS_REQUEST,4,0) WAIT 30 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MIC_GAIN,DS_REQUEST,5,0) WAIT 31 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MIC_GAIN,DS_REQUEST,6,0) WAIT 32 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MIC_GAIN,DS_REQUEST,7,0) WAIT 33 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_MIC_GAIN,DS_REQUEST,8,0) WAIT 34 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_PLYBK_GAIN,DS_REQUEST,0,0) WAIT 35 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REF_GAIN,DS_REQUEST,REF_A,0) WAIT 36 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REF_GAIN,DS_REQUEST,REF_B,0) WAIT 37 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_ZONE_GAIN,DS_REQUEST,ZONE_A,0) WAIT 38 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_ZONE_GAIN,DS_REQUEST,ZONE_B,0) WAIT 39 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_LOCKFP,DS_REQUEST,0,0) WAIT 40 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_NOISE_CANC,DS_REQUEST,1,0) WAIT 41 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_NOISE_CANC,DS_REQUEST,2,0) WAIT 42 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_NOISE_CANC,DS_REQUEST,3,0) WAIT 43 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_NOISE_CANC,DS_REQUEST,4,0) WAIT 44 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_NOISE_CANC,DS_REQUEST,5,0) WAIT 45 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_NOISE_CANC,DS_REQUEST,6,0) WAIT 46 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_NOISE_CANC,DS_REQUEST,7,0) WAIT 47 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_NOISE_CANC,DS_REQUEST,8,0) WAIT 48 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SET_NOISE_CANC,DS_REQUEST,1,0) WAIT 49 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SET_NOISE_CANC,DS_REQUEST,2,0) WAIT 50 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SET_NOISE_CANC,DS_REQUEST,3,0) WAIT 51 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SET_NOISE_CANC,DS_REQUEST,4,0) WAIT 52 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SET_NOISE_CANC,DS_REQUEST,5,0) WAIT 53 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SET_NOISE_CANC,DS_REQUEST,6,0) WAIT 54 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SET_NOISE_CANC,DS_REQUEST,7,0) WAIT 55 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SET_NOISE_CANC,DS_REQUEST,8,0) WAIT 56 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REFASGN,DS_REQUEST,1,REF_A) WAIT 57 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REFASGN,DS_REQUEST,2,REF_A) WAIT 58 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REFASGN,DS_REQUEST,3,REF_A) WAIT 59 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REFASGN,DS_REQUEST,4,REF_A) WAIT 60 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REFASGN,DS_REQUEST,5,REF_A) WAIT 61 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REFASGN,DS_REQUEST,6,REF_A) WAIT 62 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REFASGN,DS_REQUEST,7,REF_A) WAIT 63 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REFASGN,DS_REQUEST,8,REF_A) WAIT 64 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REFASGN,DS_REQUEST,1,REF_B) WAIT 65 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REFASGN,DS_REQUEST,2,REF_B) WAIT 66 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REFASGN,DS_REQUEST,3,REF_B) WAIT 67 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REFASGN,DS_REQUEST,4,REF_B) WAIT 68 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REFASGN,DS_REQUEST,5,REF_B) WAIT 69 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REFASGN,DS_REQUEST,6,REF_B) WAIT 70 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REFASGN,DS_REQUEST,7,REF_B) WAIT 71 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_REFASGN,DS_REQUEST,8,REF_B) WAIT 72 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SELECT_INP,DS_REQUEST,0,0) WAIT 73 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SELECT_REM,DS_REQUEST,0,0) WAIT 74 CALL 'ASPDS00F' (DSP,DEV_TYPE,DEV_ID1,DEV_ID2,DS_SAMP_RATE,DS_REQUEST,0,0) (***********************************************************) (* THE ACTUAL PROGRAM GOES BELOW *) (***********************************************************) DEFINE_PROGRAM (* Controls GAIN LEVELS and MUTE. *) (* CALL 'ASPDS001' (DEV,PANEL,DEV_TYPE,DEV_ID1,DEV_ID2,CHAN,REF, *) (* CGAINUPB,CGAINDNB,PGAINUPB,PGAINDNB,RGAINUPB, *) (* RGAINDNB,ZGAINAUPB,ZGAINADNB,ZGAINBUPB, *) (* ZGAINBDNB,MUTEONB,MUTEOFB,MGAINUPB,MGAINDNB) *) CALL 'ASPDS001' (DSP,TP,DEV_TYPE,DEV_ID1,DEV_ID2,CUR_CHAN,CUR_REF,36, 37,28,29,30,31,32,33,34,35,38,39,26,27) (* Controls ACOUSTIC ECHO CANCELLER, SUPPRESSION, NOISE *) (* CANCELLATION, and REF REASSIGN *) (* CALL 'ASPDS002' (DEV,PANEL,DEV_TYPE,DEV_ID1,DEV_ID2,CHAN,REF, *) (* AECONB,AECOFB,AGGONB,AGGOFB,NCONB,NCOFB,NCL6B, *) (* NCL10B,REFASGNB) *) CALL 'ASPDS002' (DSP,TP,DEV_TYPE,DEV_ID1,DEV_ID2,CUR_CHAN,CUR_REF,12, 13,14,15,16,17,18,19,11) (* Controls FRONT PANEL and SAMPLE RATE. *) (* CALL 'ASPDS003' (DEV,PANEL,DEV_TYPE,DEV_ID1,DEV_ID2,CHAN,REF, *) (* LOCKFPONB,LOCKFPOFB,SELREMAB,SELREMBB,SR16B, *) (* SR48B) *) CALL 'ASPDS003' (DSP,TP,DEV_TYPE,DEV_ID1,DEV_ID2,CUR_CHAN,20,21,9,10, 24,25) (* Controls INPUT SELECTION DISPLAY ON FRONT PANEL. *) (* CALL 'ASPDS004' (DEV,PANEL,DEV_TYPE,DEV_ID1,DEV_ID2,CHAN, *) (* SELINP1B,SELINP2B,SELINP3B,SELINP4B,SELINP5B, *) (* SELINP6B,SELINP7B,SELINP8B) *) CALL 'ASPDS004' (DSP,TP,DEV_TYPE,DEV_ID1,DEV_ID2,1,2,3,4,5,6,7,8) (* UNIT DOES NOT NEED A WAIT BETWEEN ACCEPTING COMMAND STRINGS *) CALL 'SEND TO DEV' (DSP) (* BUFFER PROCESSING *) TEMP_DSP_BUFFER = REMOVE_STRING(DSP_BUFFER,"13",1) IF (LENGTH_STRING(TEMP_DSP_BUFFER)) { SEND_STRING 0,"TEMP_DSP_BUFFER,13,10" SET_LENGTH_STRING(TEMP_DSP_BUFFER,(LENGTH_STRING(TEMP_DSP_BUFFER) - 1)) SELECT { (* SET SUPPRESSION MODE ON CHANNEL TO NORMAL OR AGGRESSIVE *) ACTIVE (FIND_STRING(TEMP_DSP_BUFFER,"'AECS'",1)) : { TRASH = REMOVE_STRING(TEMP_DSP_BUFFER,"'AECS'",1) FB_CHAN = TEMP_DSP_BUFFER[1] - 48 IF (TEMP_DSP_BUFFER[2] = '0') OFF[DSP,DS_AEC_SET + FB_CHAN] IF (TEMP_DSP_BUFFER[2] = '1') ON[DSP,DS_AEC_SET + FB_CHAN] } (* ACOUSTIC ECHO CANCELLER ON CHANNEL *) ACTIVE (FIND_STRING(TEMP_DSP_BUFFER,"'AEC'",1)) : { TRASH = REMOVE_STRING(TEMP_DSP_BUFFER,"'AEC'",1) FB_CHAN = TEMP_DSP_BUFFER[1] - 48 IF (TEMP_DSP_BUFFER[2] = '0') OFF[DSP,DS_AEC + FB_CHAN] IF (TEMP_DSP_BUFFER[2] = '1') ON[DSP,DS_AEC + FB_CHAN] } (* CODEC OUTPUT GAIN *) ACTIVE (FIND_STRING(TEMP_DSP_BUFFER,"'GAINC'",1)) : { TRASH = REMOVE_STRING(TEMP_DSP_BUFFER,"'GAINC'",1) CODEC_GAIN_LEVEL = ATOI(TEMP_DSP_BUFFER) } (* MIC/LINE INPUT GAIN ON CHANNEL *) ACTIVE (FIND_STRING(TEMP_DSP_BUFFER,"'GAINI'",1)) : { TRASH = REMOVE_STRING(TEMP_DSP_BUFFER,"'GAINI'",1) FB_CHAN = TEMP_DSP_BUFFER[1] - 48 TRASH = LEFT_STRING(TEMP_DSP_BUFFER,1) TRASH = REMOVE_STRING(TEMP_DSP_BUFFER,"TRASH",1) MIC_GAIN_LEVEL[FB_CHAN] = ATOI(TEMP_DSP_BUFFER) } (* PLAYBACK INPUT GAIN ON AUX IN INPUT *) ACTIVE (FIND_STRING(TEMP_DSP_BUFFER,"'GAINP'",1)) : { TRASH = REMOVE_STRING(TEMP_DSP_BUFFER,"'GAINP'",1) PLYBK_GAIN_LEVEL = ATOI(TEMP_DSP_BUFFER) } (* REFERENCE INPUT GAIN ON REFERENCE *) ACTIVE (FIND_STRING(TEMP_DSP_BUFFER,"'GAINR'",1)) : { TRASH = REMOVE_STRING(TEMP_DSP_BUFFER,"'GAINR'",1) FB_REF = LEFT_STRING(TEMP_DSP_BUFFER,1) TRASH = REMOVE_STRING(TEMP_DSP_BUFFER,"FB_REF",1) IF (FB_REF = ZONE_A) REF_GAIN_LEVEL_A = ATOI(TEMP_DSP_BUFFER) IF (FB_REF = ZONE_B) REF_GAIN_LEVEL_B = ATOI(TEMP_DSP_BUFFER) } (* ZONE OUTPUT GAIN ON OUTPUT *) ACTIVE (FIND_STRING(TEMP_DSP_BUFFER,"'GAINZ'",1)) : { TRASH = REMOVE_STRING(TEMP_DSP_BUFFER,"'GAINZ'",1) FB_REF = LEFT_STRING(TEMP_DSP_BUFFER,1) TRASH = REMOVE_STRING(TEMP_DSP_BUFFER,"FB_REF",1) IF (FB_REF = ZONE_A) ZONE_GAIN_LEVEL_A = ATOI(TEMP_DSP_BUFFER) IF (FB_REF = ZONE_B) ZONE_GAIN_LEVEL_B = ATOI(TEMP_DSP_BUFFER) } (* LOCK/UNLOCK FRONT PANEL *) ACTIVE (FIND_STRING(TEMP_DSP_BUFFER,"'LOCKFP'",1)) : { TRASH = REMOVE_STRING(TEMP_DSP_BUFFER,"'LOCKFP'",1) FB_CHAN = TEMP_DSP_BUFFER[1] - 48 IF (FB_CHAN = 0) OFF[DSP,DS_LOCKFP] IF (FB_CHAN = 1) ON[DSP,DS_LOCKFP] } (* MUTE CHANNEL *) ACTIVE (FIND_STRING(TEMP_DSP_BUFFER,"'MUTEI'",1)) : { TRASH = REMOVE_STRING(TEMP_DSP_BUFFER,"'MUTEI'",1) FB_CHAN = TEMP_DSP_BUFFER[1] - 48 IF (TEMP_DSP_BUFFER[2] = '0') OFF[DSP,DS_MUTE + FB_CHAN] IF (TEMP_DSP_BUFFER[2] = '1') ON[DSP,DS_MUTE + FB_CHAN] } (* NOISE CANCELLATION LEVEL ON CHANNEL *) ACTIVE (FIND_STRING(TEMP_DSP_BUFFER,"'NCL'",1)) : { TRASH = REMOVE_STRING(TEMP_DSP_BUFFER,"'NCL'",1) FB_CHAN = TEMP_DSP_BUFFER[1] - 48 IF (TEMP_DSP_BUFFER[2] = '10') OFF[DSP,DS_SET_NOISE_CANC + FB_CHAN] IF (TEMP_DSP_BUFFER[2] = '6') ON[DSP,DS_SET_NOISE_CANC + FB_CHAN] } (* NOISE CANCELLATION ON CHANNEL *) ACTIVE (FIND_STRING(TEMP_DSP_BUFFER,"'NC'",1)) : { TRASH = REMOVE_STRING(TEMP_DSP_BUFFER,"'NC'",1) FB_CHAN = TEMP_DSP_BUFFER[1] - 48 IF (TEMP_DSP_BUFFER[2] = '0') OFF[DSP,DS_NOISE_CANC + FB_CHAN] IF (TEMP_DSP_BUFFER[2] = '1') ON[DSP,DS_NOISE_CANC + FB_CHAN] } (* REFERENCE ASSIGNMENT *) ACTIVE (FIND_STRING(TEMP_DSP_BUFFER,"'REFASGN'",1)) : { TRASH = REMOVE_STRING(TEMP_DSP_BUFFER,"'REFASGN'",1) FB_CHAN = TEMP_DSP_BUFFER[1] IF (TEMP_DSP_BUFFER[2] = 'A') ON[DSP,DS_REFASGN_A + FB_CHAN] IF (TEMP_DSP_BUFFER[2] = 'B') ON[DSP,DS_REFASGN_B + FB_CHAN] } (* DISPLAYED INPUT CHANNEL ON FRONT PANEL INPUT METER *) ACTIVE (FIND_STRING(TEMP_DSP_BUFFER,"'SELECTI'",1)) : { TRASH = REMOVE_STRING(TEMP_DSP_BUFFER,"'SELECTI'",1) CUR_CHAN = ATOI(TEMP_DSP_BUFFER) } (* DISPLAYED REMOTE INPUT ON FRONT PANEL REMOTE METER *) ACTIVE (FIND_STRING(TEMP_DSP_BUFFER,"'SELECTR'",1)) : { TRASH = REMOVE_STRING(TEMP_DSP_BUFFER,"'SELECTR'",1) CUR_REF = TEMP_DSP_BUFFER[1] } (* SAMPLE RATE *) ACTIVE (FIND_STRING(TEMP_DSP_BUFFER,"'SR'",1)) : { TRASH = REMOVE_STRING(TEMP_DSP_BUFFER,"'SR'",1) IF (TEMP_DSP_BUFFER = '16') ON[DSP,DS_SAMP_RATE] IF (TEMP_DSP_BUFFER = '48') OFF[DSP,DS_SAMP_RATE] } } } SEND_LEVEL TP,6,(CODEC_GAIN_LEVEL * 255) / 20 SEND_LEVEL TP,1,(MIC_GAIN_LEVEL[CUR_CHAN] * 255) / 31 SEND_LEVEL TP,2,(PLYBK_GAIN_LEVEL * 255) / 15 IF (CUR_REF = REF_A) SEND_LEVEL TP,3,(REF_GAIN_LEVEL_A * 255) / 20 IF (CUR_REF = REF_B) SEND_LEVEL TP,3,(REF_GAIN_LEVEL_B * 255) / 20 SEND_LEVEL TP,4,(ZONE_GAIN_LEVEL_A * 255) / 13 SEND_LEVEL TP,5,(ZONE_GAIN_LEVEL_B * 255) / 13 (***********************************************************) (* END OF PROGRAM *) (* DO NOT PUT ANY CODE BELOW THIS COMMENT *) (***********************************************************)