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