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 exception SctApiException {
00010 string detail;
00011 };
00012
00013 typedef sequence <long> DataBlock;
00014 typedef sequence <short> CharBlock;
00015 typedef sequence <CharBlock> CharMatrix;
00016 typedef sequence <string> DefectList;
00017 typedef sequence <sctConf::BOCChannelConfig> BOCChannelList;
00018 typedef sequence <string> NameList;
00019 typedef sequence <double> BOCMonitorSequence;
00020
00021 struct NameValue {
00022 string name;
00023 float value;
00024 };
00025
00026 typedef sequence <NameValue> NameValueList;
00027
00028 enum BankType {PHYSICS_CONFIG, SCAN_CONFIG, CALIBRATION_CONFIG};
00029
00030 interface Trigger : ipc::freeable {
00031 void print();
00032
00033 void singleL1A();
00034 void doubleL1A(in unsigned short delay);
00035 void delayedL1A(in unsigned short delay);
00036 void calL1A(in unsigned short delay);
00037 void pulseL1A(in unsigned short delay);
00038 void softL1A(in unsigned short delay);
00039 void softCalL1A(in unsigned short delay, in unsigned short delay2);
00040 void softPulseL1A(in unsigned short delay, in unsigned short delay2);
00041 void bcL1A(in unsigned short delay);
00042 void bcCalL1A(in unsigned short delay, in unsigned short delay2);
00043 void bcPulseL1A(in unsigned short delay, in unsigned short delay2);
00044
00045 void setCommIncr(in unsigned short command, in unsigned short incr);
00046 void getCommIncr(out unsigned short command, out unsigned short incr);
00047 };
00048
00049 typedef sequence <double> ScanPoints;
00050 typedef sequence <unsigned long> TrigPoints;
00051
00052 interface Scan : ipc::freeable {
00053 enum ScanOptions {full, bits32, loopCalLine, distSlave, debug, tim, nth, nth_rem};
00054
00055 void print();
00056
00057 void configure(in unsigned short type, in double start, in double stop, in double step);
00058 void configure2(in unsigned short type, in double start, in double stop, in double step);
00059
00060 Trigger getTrigger1();
00061 Trigger getTrigger2();
00062
00063
00064 void setTrigger1(in Trigger trig)
00065 raises(SctApiException);
00066 void setTrigger2(in Trigger trig)
00067 raises(SctApiException);
00068
00069 void setScanVariable1(in unsigned short var);
00070 void setScanVariable2(in unsigned short var);
00071 unsigned short getScanVariable1();
00072 unsigned short getScanVariable2();
00073
00074 void setNTrigs(in unsigned long nTrigs);
00075 unsigned long getNTrigs();
00076
00077 TrigPoints getVariableTrigs();
00078 void setVariableTrigs(in TrigPoints trigs);
00079 void setVariableTrigRange(in unsigned short start, in unsigned short end, in unsigned long value);
00080
00081 ScanPoints getScanPoints1();
00082 ScanPoints getScanPoints2();
00083 void setScanPoints1(in ScanPoints scans);
00084 void setScanPoints2(in ScanPoints scans);
00085
00086 long getOption(in ScanOptions opt);
00087 void setOption(in ScanOptions opt, in long val);
00088
00089 unsigned long getScanNumber();
00090 unsigned long getRunNumber();
00091
00092 sctConf::ModuleList getModuleList(in unsigned long group);
00093 unsigned long getNGroups();
00094
00096 string getStartTime();
00098 string getEndTime();
00099 };
00100
00101 typedef sequence <Scan> ScanList;
00102
00103 struct AutoConfigResult {
00104 unsigned long partition;
00105 unsigned long crate;
00106 unsigned long rod;
00107
00108 unsigned long tx;
00109 unsigned long rx;
00110 };
00111
00112 typedef sequence <AutoConfigResult> AutoResultList;
00113
00114 interface SctApi : ipc::freeable {
00115 const string serverName = "SctApi";
00116 const string instanceName = "SctApiImpl";
00117
00118 void initialiseAll(in unsigned long runNumber)
00119 raises(SctApiException);
00120
00121 void shutdownAll()
00122 raises(SctApiException);
00123
00124 void status();
00125 void setRunNumber(in unsigned long newRun);
00126 void setScanNumber(in unsigned long newScan);
00127 unsigned long getRunNumber();
00128 unsigned long getScanNumber();
00129
00130 void unsetDebugOption(in string opt);
00131 void setDebugOption(in string opt);
00132
00133 DefectList listEnabledDebugOptions();
00134 DefectList listDebugOptions();
00135
00136 void standardRegisterDump(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00137
00138 void standardRegisterDumpAll();
00139
00140 sctConf::ModuleList getModuleList();
00141
00142 boolean isRODPresent(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00143
00144 void awaitResponse(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00145 DataBlock getResponse(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00146
00147 void configureBOC(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00148
00149 BOCMonitorSequence getBOCMonitorArray(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00150
00151 void flashLED(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00152 in unsigned short slaveNumber, in unsigned long period, in unsigned long flashes)
00153 raises(SctApiException);
00154 void echo(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00155 in DataBlock data)
00156 raises(SctApiException);
00157
00158 void createDebugPrimList()
00159 raises(SctApiException);
00160 void addDebugPrimList(in long index, in long id, in long version, in DataBlock body)
00161 raises(SctApiException);
00162 void sendDebugPrimList(in unsigned long partition, in unsigned long crate, in unsigned long rod)
00163 raises(SctApiException);
00164 void sendDebugSlavePrimList(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00165 in unsigned long slave, in boolean await, in boolean response)
00166 raises(SctApiException);
00167
00168
00169
00170
00171 void loadConfiguration(in string filename)
00172 raises(SctApiException);
00173 void storeModuleConfigurations()
00174 raises(SctApiException);
00175
00176 void configureAllModules()
00177 raises(SctApiException);
00178
00179
00181 sctConf::ABCDModule retrieveModule(in unsigned long mid);
00182
00183
00184 short dspBlockDump(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00185 in long dspStart, in long numWords, in long dspNumber);
00186 DataBlock dspBlockRead(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00187 in long dspStart, in long numWords, in long dspNumber);
00188 short dspBlockWrite(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00189 in DataBlock buffer, in unsigned long dspAddress, in long dspNumber);
00190
00191 unsigned long dspSingleRead(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00192 in unsigned long dspAddr, in long dspNumber);
00193 void dspSingleWrite(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00194 in unsigned long dspAddr, in unsigned long val, in long dspNumber);
00195
00196 DataBlock readSlaveDsp(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00197 in short s, in unsigned long add, in unsigned long words);
00198
00199
00200
00201
00202
00203
00204 unsigned long findModuleSerial(in string sn);
00205 string convertToString(in unsigned long mid);
00206 unsigned long findModule(in unsigned short mur, in unsigned short number);
00207
00208 unsigned long findModuleRod(in unsigned long partition, in unsigned long crate, in unsigned long rod, in unsigned long channel);
00209
00210
00211
00212 unsigned long findBarrelModule(in unsigned long barrel, in unsigned long row, in short number);
00213 void convertToBarrelModule(in unsigned long mid, out unsigned long barrel, out unsigned long row, out short number);
00214
00215 unsigned long findEndcapModule(in long disk, in long ring, in long number);
00216 void convertToEndcapModule(in unsigned long mid, out long disk, out unsigned long ring, out unsigned long number);
00217
00219 void getABCDModules(in BankType bank)
00220 raises(SctApiException);
00221 void getABCDModule(in unsigned long mid, in BankType bank)
00222 raises(SctApiException);
00223
00224 sctConf::ABCDModule getABCDModuleRaw(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00225 in unsigned long slot, in BankType bank)
00226 raises(SctApiException);
00227
00228 void setABCDModule(in unsigned long mid, in BankType bank)
00229 raises(SctApiException);
00230 void setABCDModules(in BankType bank)
00231 raises(SctApiException);
00232
00233 void sendABCDModule(in unsigned long mid, in BankType bank, in unsigned long type)
00234 raises(SctApiException);
00235 void sendABCDModules(in BankType bank)
00236 raises(SctApiException);
00237
00238 void modifyABCDMask(in unsigned long mid, in DataBlock mask);
00239 void modifyABCDTrims(in unsigned long mid, in CharBlock trims);
00240 void modifyABCDRC(in unsigned long mid, in unsigned long chip, in unsigned short index, in double p0, in double p1, in double p2 );
00241
00242
00243 void modifyABCDVar(in unsigned long typ, in double var);
00244 void modifyABCDModuleVar(in unsigned long mid, in unsigned long typ, in double var);
00245 void modifyABCDChipVar(in unsigned long mid, in unsigned long chip, in unsigned long typ, in double var);
00246
00247 void modifyABCDVarROD(in unsigned long typ, in double var, in BankType bank);
00248 void modifyABCDModuleVarROD(in unsigned long mid, in unsigned long typ, in double var, in BankType bank);
00249
00250 void modifyBOCParam(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00251 in unsigned long channel, in unsigned long type, in unsigned long val);
00252
00253 void lasersOff();
00254
00255
00256 void timSetFrequency(in unsigned long partition, in unsigned long crate, in double trigFreq, in double rstFreq);
00257 void freeTriggers(in unsigned long partition, in unsigned long crate);
00258 void stopTriggers(in unsigned long partition, in unsigned long crate);
00259 void timL1A(in unsigned long partition, in unsigned long crate);
00260 void timCalL1A(in unsigned long partition, in unsigned long crate, in short delay);
00261 short timReadRegister(in unsigned long partition, in unsigned long crate, in short value);
00262 void timWriteRegister(in unsigned long partition, in unsigned long crate, in short reg, in short value);
00263
00264 void sendTimTrigger(in unsigned long partition, in unsigned long crate, in Trigger trig);
00265 void sendTrigger(in unsigned long partition, in unsigned long crate, in unsigned long rod, in Trigger trig);
00266
00267
00268 void doScan(in Scan thisScan)
00269 raises(SctApiException);
00270 void doRawScan(in Scan thisScan, in long delay, in long width, in boolean configure, in boolean clockByTwo)
00271 raises(SctApiException);
00272
00273 void printBOCSetup(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00274 BOCChannelList currentBOCSetup(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00275
00276 sctConf::BOCGlobalConfig currentBOCRegisters(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00277
00278 void printABCDModule(in unsigned long mid);
00279 void printABCDRodModule(in unsigned long mid, in BankType bank);
00280
00281 void decodeEvent(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00282 in short sl, in short index, in boolean extFlag, in boolean errorType);
00283
00284 void rawData(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00285 in long delay, in long units, in boolean setMask);
00286 void rawDataWithTrigger(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00287 in long delay, in long units, in boolean setMask, in Trigger trig);
00288 void sendL1A(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00289
00290 CharBlock probe(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00291 CharBlock probeHarness(in unsigned long partition, in unsigned long crate, in unsigned long rod, in unsigned long harness);
00292
00293 CharBlock probeWithTrigger(in unsigned long partition, in unsigned long crate, in unsigned long rod, in Trigger trig);
00294 CharBlock probeHarnessWithTrigger(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00295 in Trigger trig, in unsigned long harness);
00296 CharMatrix probeScanHarnessWithTrigger(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00297 in Scan trig, in unsigned long harness);
00298
00299 boolean checkAllModulesProbe(in string chars)
00300 raises(SctApiException);
00301
00302 AutoResultList autoConfigureScan()
00303 raises(SctApiException);
00304
00305 unsigned long getRodSlot(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00306
00307 void testLinkOutSelect(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00308 in unsigned long link);
00309
00310 unsigned long testLinkOutRetrieve(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00311
00312
00313
00314 void requestHardReset(in unsigned long mid);
00315 void requestIVCurve(in unsigned long mid, in float start, in float stop, in float step,
00316 in unsigned short delay, in float currentLim);
00317 void setSelect(in unsigned long mid, in boolean value);
00318 void setSelectAllInCrate(in long crate, in boolean value);
00319 void changeRunState(in long state);
00320
00321
00322
00323
00324
00325 void ddcSetSingleTimeout(in short timeout);
00326 short ddcGetSingleTimeout();
00327 void ddcSetMultipleTimeout(in short timeout);
00328 short ddcGetMultipleTimeout();
00329
00330 void ddcChangeState(in long crate, in long channel,
00331 in short state);
00332 void ddcChangeStateAll(in long crate,
00333 in short state);
00334 void ddcLoadConfiguration(in long crate,
00335 in short state);
00336 void ddcHardReset(in long crate, in long channel);
00337 void ddcHardResetAll(in long crate);
00338
00339 unsigned long ddcGetChannelParameterInt(in long crate, in long channel, in string name);
00340 float ddcGetChannelParameterFloat(in long crate, in long channel, in string name);
00341 string ddcGetChannelParameterString(in long crate, in long channel, in string name);
00342
00343 unsigned long ddcGetCardParameterInt(in long crate, in long card, in string name);
00344 float ddcGetCardParameterFloat(in long crate, in long card, in string name);
00345 string ddcGetCardParameterString(in long crate, in long card, in string name);
00346
00347 unsigned long ddcGetCrateParameterInt(in long crate, in string name);
00348 float ddcGetCrateParameterFloat(in long crate, in string name);
00349 string ddcGetCrateParameterString(in long crate, in string name);
00350
00351 void ddcGetCrateParameters(in long crate, in NameList names, out NameValueList nameValues);
00352
00353
00354
00355 Scan createScan();
00356 Scan getDefaultScan();
00357
00358 Trigger createTrigger();
00359 Trigger getDefaultTrigger();
00360
00361 ScanList knownScans();
00362 };
00363
00364 };