#include #include #include #include #include #include #include #include #include #include #define ansi_escape ((char)0x1b) #define ansi_black() printf("%c%s",ansi_escape,"[30m") #define ansi_red() printf("%c%s",ansi_escape,"[31m") #define ansi_green() printf("%c%s",ansi_escape,"[32m") #define ansi_blue() printf("%c%s",ansi_escape,"[34m") #define ansi_normal() printf("%c%s",ansi_escape,"[0m") /* These flags are ALWAYS initialized to 0. Any new flags * should be defined such that 0 is the default value */ enum flag_types{ FLAG_NONE, N_FLAGS }; enum scaler_types{ OR_TRIGGER, LATCHED_TRIGGER, LEVEL_1_ACCEPT, LEVEL_2_ACCEPT, LEVEL_3_ACCEPT, FAST_RESET, CLEAR, LEVEL_2_PASS, LEVEL_2_FAIL, LEVEL_3_PASS, LEVEL_3_FAIL, LATE_FAIL, SYNC_SCHEDULED, SYNC_FORCED, PROGRAM_1_EVENT, PROGRAM_2_EVENT }; /* Global Variables */ extern Tcl_Interp* interp; extern int flags[N_FLAGS]; extern int trig_enable[13]; extern int trig_prescale[13]; extern int sync_enable, sync_period ,busytimer, busytimerenable,busyfrontendenable; extern int scaler_assignments[19]; // only 13-18 are used extern int roc_lock[6]; extern int mlu_in[13]; extern int mlu_out[32]; extern char *filename; extern unsigned long TS_MLU[4096]; typedef int MyTcl_CmdProc(ClientData clientData,Tcl_Interp *interp,int argc,const char *argv[]); MyTcl_CmdProc SaveToFile; MyTcl_CmdProc ReadFromFile; MyTcl_CmdProc SetMLUValue; MyTcl_CmdProc GetMLUValue; MyTcl_CmdProc ConfigProduction; MyTcl_CmdProc ConfigPS; MyTcl_CmdProc ConfigTAC; void SetTrigEnable(char* name, int val); void SetTrigPrescale(char* name, int val); void SetSyncEnable(char* name, int val); void SetSyncPeriod(char* name, int val); void SetScaler(char* name, int val); void SetBusyTimer(char* name, int val); void SetBusyTimerEnable(char* name, int val); void SetFrontEndBusyEnable(char* name, int val); void SetBranch5Enable(char* name, int val); void SetBranchEnable(char* name, int val); void SetROCLock(char* name, int val); int StandardMLUProgram(void); void Tcl_Evaluate(char* cmd); void Tcl_EvaluateFile(char* file);