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