00001 #ifndef IPC_IDL
00002 #include "ipc/ipc.idl"
00003 #define IPC_IDL
00004 #endif
00005
00006 #include "sctConf/configuration.idl"
00007
00008 module Sct_SctApi {
00009 typedef sequence <long> DataBlock;
00010 typedef sequence <short> CharBlock;
00011
00012 enum BankType {PHYICS_CONFIG, CALIBRATION_CONFIG, SCAN_CONFIG};
00013
00014 interface Trigger : ipc::freeable {
00015 void print();
00016
00017 void singleL1A();
00018 void doubleL1A(in unsigned short delay);
00019 void calL1A(in unsigned short delay);
00020 void pulseL1A(in unsigned short delay);
00021 void softL1A(in unsigned short delay);
00022 void softCalL1A(in unsigned short delay, in unsigned short delay2);
00023 void softPulseL1A(in unsigned short delay, in unsigned short delay2);
00024 void bcL1A(in unsigned short delay);
00025 void bcCalL1A(in unsigned short delay, in unsigned short delay2);
00026 void bcPulseL1A(in unsigned short delay, in unsigned short delay2);
00027
00028 void setCommIncr(in unsigned short command, in unsigned short incr);
00029 void getCommIncr(out unsigned short command, out unsigned short incr);
00030 };
00031
00032 typedef sequence <double> ScanPoints;
00033
00034 interface Scan : ipc::freeable {
00035 enum ScanOptions {format, full, bits32, loopCalLine, distSlave, debug};
00036
00037 void print();
00038
00039 void configure(in unsigned short type, in double start, in double stop, in double step);
00040 void configure2(in unsigned short type, in double start, in double stop, in double step);
00041
00042 Trigger getTrigger1();
00043 Trigger getTrigger2();
00044
00045 void setTrigger1(in Trigger trig);
00046 void setTrigger2(in Trigger trig);
00047
00048 void setScanVariable1(in unsigned short var);
00049 void setScanVariable2(in unsigned short var);
00050 unsigned short getScanVariable1();
00051 unsigned short getScanVariable2();
00052
00053 void setNTrigs(in unsigned long nTrigs);
00054 unsigned short getNTrigs();
00055
00056 ScanPoints getScanPoints1();
00057 ScanPoints getScanPoints2();
00058 void setScanPoints1(in ScanPoints scans);
00059 void setScanPoints2(in ScanPoints scans);
00060
00061 long getOption(in ScanOptions opt);
00062 void setOption(in ScanOptions opt, in long val);
00063
00064 unsigned long getScanNumber();
00065 void setScanNumber(in unsigned long scan);
00066
00067 unsigned long getRunNumber();
00068 void setRunNumber(in unsigned long run);
00069
00070 sctConf::ModuleList getModuleList(in unsigned long group);
00071 unsigned long getNGroups();
00072 };
00073
00074 typedef sequence <Scan> ScanList;
00075
00076 interface SctApi : ipc::freeable {
00077 void initialiseAll(in unsigned long runNumber);
00078
00079 void shutdownAll();
00080
00081 void status();
00082 void setRunNumber(in unsigned long newRun);
00083 void setScanNumber(in unsigned long newScan);
00084
00085 void awaitResponse(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00086 DataBlock getResponse(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00087 out unsigned long length);
00088
00089
00090 void flashLED(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00091 in unsigned short slaveNumber, in unsigned long period, in unsigned long flashes);
00092 void echo(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00093 in unsigned long length, in DataBlock data);
00094
00095 void createDebugPrimList();
00096 void addDebugPrimList(in unsigned long length, in long index, in long id, in long version,
00097 in DataBlock body);
00098 void sendDebugPrimList(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00099 void sendDebugSlavePrimList(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00100 in unsigned long slave, in boolean await, in boolean response);
00101
00102
00103
00104
00105 void loadConfiguration(in string filename);
00106 void storeModuleConfigurations();
00107
00108 void configureAllModules();
00109
00110
00112 sctConf::ABCDModule retrieveModule(in unsigned long mid);
00113
00114
00115 short dspBlockDump(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00116 in long dspStart, in long numWords, in long dspNumber);
00117 DataBlock dspBlockRead(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00118 in long dspStart, in long numWords, in long dspNumber, out long length);
00119 short dspBlockWrite(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00120 in DataBlock buffer, in unsigned long dspAddress, in long numWords, in long dspNumber);
00121 unsigned long dspSingleRead(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00122 in unsigned long dspAddr, in long dspNumber);
00123 void dspSingleWrite(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00124 in unsigned long dspAddr, in unsigned long val, in long dspNumber);
00125
00126 DataBlock readSlaveDsp(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00127 in short s, in unsigned long add, in unsigned long words);
00128
00129
00130
00131
00132
00133
00134 unsigned long findModuleSerial(in string sn);
00135 string convertToString(in unsigned long mid);
00136 unsigned long findModule(in unsigned short mur, in unsigned short number);
00137
00138
00139
00140 unsigned long findBarrelModule(in unsigned long barrel, in unsigned long row, in short number);
00141 void convertToBarrelModule(in unsigned long mid, out unsigned long barrel, out unsigned long row, out short number);
00142
00143 unsigned long findEndcapModule(in long disk, in long ring, in long number);
00144 void convertToEndcapModule(in unsigned long mid, out unsigned long disk, out unsigned long ring, out unsigned long number);
00145
00147 void getABCDModules(in unsigned long bank);
00148 void getABCDModule(in unsigned long mid, in unsigned long bank);
00149
00150 void setABCDModule(in unsigned long mid, in unsigned long bank);
00151 void setABCDModules(in unsigned long bank);
00152
00153 void sendABCDModule(in unsigned long mid, in unsigned long bank, in unsigned long type);
00154 void sendABCDModules(in unsigned long bank);
00155
00156 void modifyABCDMask(in unsigned long mid, in DataBlock mask);
00157 void modifyABCDTrims(in unsigned long mid, in CharBlock trims);
00158 void modifyABCDRC(in unsigned long mid, in unsigned long chip, in unsigned short index, in double p0, in double p1, in double p2 );
00159
00160
00161 void modifyABCDVar(in unsigned long typ, in double var);
00162 void modifyABCDModuleVar(in unsigned long mid, in unsigned long typ, in double var);
00163 void modifyABCDChipVar(in unsigned long mid, in unsigned long chip, in unsigned long typ, in double var);
00164
00165 void modifyBOCParam(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00166 in unsigned long channel, in unsigned long type, in unsigned long val);
00167
00168 void lasersOff();
00169
00170
00171 void freeTriggers(in unsigned long partition, in unsigned long crate,
00172 in double freq);
00173 void stopTriggers(in unsigned long partition, in unsigned long crate);
00174 void timL1A(in unsigned long partition, in unsigned long crate);
00175 void timCalL1A(in unsigned long partition, in unsigned long crate, in short delay);
00176 void sendTriggerAll(in Trigger trig);
00177 void sendTrigger(in unsigned long partition, in unsigned long crate, in unsigned long rod, in Trigger trig);
00178
00179
00180 oneway void doScan(in Scan thisScan);
00181 void doRawScan(in Scan thisScan, in long delay);
00182
00183 void printBOCSetup(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00184 void printABCDModule(in unsigned long mid);
00185 void printABCDRodModule(in unsigned long mid, in short bank);
00186
00187 void decodeEvent(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00188 in short sl, in short index, in boolean extFlag, in boolean errorType);
00189
00190 void rawData(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00191 in long delay, in long units, in boolean setMask);
00192 void rawDataWithTrigger(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00193 in long delay, in long units, in boolean setMask, in Trigger trig);
00194 void sendL1A(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00195
00196 CharBlock probe(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00197 CharBlock probeHarness(in unsigned long partition, in unsigned long crate, in unsigned long rod, in unsigned long harness);
00198
00199 CharBlock probeWithTrigger(in unsigned long partition, in unsigned long crate, in unsigned long rod, in Trigger trig);
00200 CharBlock probeHarnessWithTrigger(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00201 in Trigger trig, in unsigned long harness);
00202
00203 void requestHardReset(in unsigned long mid);
00204 void requestIVCurve(in unsigned long mid, in float start, in float stop, in float step,
00205 in unsigned short delay, in float currentLim);
00206 void setSelect(in unsigned long mid, in boolean value);
00207 void changeRunState(in long state);
00208 void ddcGetChannelParameter(in long crate, in long channel, in string dpeName,
00209 out long dpeValue, in long timeout);
00210
00211 Scan defaultScan();
00212 Trigger defaultTrigger();
00213
00214 ScanList knownScans();
00215 };
00216
00217 };