00001 #ifndef IPC_IDL
00002 #include "ipc/ipc.idl"
00003 #define IPC_IDL
00004 #endif
00005
00006 #include "sctConfIPC/configuration.idl"
00007 #include "Sct/Addressing.idl"
00008
00009 module Sct_SctApi {
00010 exception SctApiException {
00011 string detail;
00012 };
00013
00014 typedef sequence <long> DataBlock;
00015 typedef sequence <short> CharBlock;
00016 typedef sequence <CharBlock> CharMatrix;
00017 typedef sequence <string> DebugOptionList;
00018 typedef sequence <sctConf::BOCChannelConfig> BOCChannelList;
00019 typedef sequence <string> NameList;
00020 typedef sequence <double> BOCMonitorSequence;
00021
00022 struct NameValue {
00023 string name;
00024 float value;
00025 };
00026
00027 typedef short RODTriggerFirstType;
00028 typedef long RODTriggerSecondType;
00029 struct RODTrigger {
00030 RODTriggerFirstType first;
00031 RODTriggerSecondType second;
00032 };
00033
00034 typedef sequence <RODTrigger> RODTriggers;
00035
00036 typedef sequence <NameValue> NameValueList;
00037
00038 enum BankType {PHYSICS_CONFIG, SCAN_CONFIG, CALIBRATION_CONFIG};
00039
00040 typedef sequence <BankType> BankList;
00041
00042 interface Trigger : ipc::servant {
00043 void singleL1A();
00044 void doubleL1A(in unsigned short delay);
00045 void delayedL1A(in unsigned short delay);
00046 void calL1A(in unsigned short delay);
00047 void pulseL1A(in unsigned short delay);
00048 void softL1A(in unsigned short delay);
00049 void softCalL1A(in unsigned short delay, in unsigned short delay2);
00050 void softPulseL1A(in unsigned short delay, in unsigned short delay2);
00051 void softBc(in unsigned short delay);
00052 void soft();
00053 void bc();
00054 void bcL1A(in unsigned short delay);
00055 void bcCalL1A(in unsigned short delay, in unsigned short delay2);
00056 void bcPulseL1A(in unsigned short delay, in unsigned short delay2);
00057
00058 void setCommIncr(in unsigned short command, in unsigned short incr);
00059 void getCommIncr(out unsigned short command, out unsigned short incr);
00060
00061 RODTriggers getRODTriggers();
00062
00063 void print();
00064 };
00065
00066
00067 interface Scan : ipc::servant {
00068
00069 typedef sequence <double> ScanPoints;
00070 typedef sequence <unsigned long> TrigPoints;
00071
00072 enum ScanOptions {full, bits32, loopCalLine, distSlave, debug, tim, nth, nth_rem, enableDataMode};
00073
00074 void configure(in unsigned short type, in double start, in double stop, in double step);
00075 void configure2(in unsigned short type, in double start, in double stop, in double step);
00076
00077 Trigger getTrigger1();
00078 Trigger getTrigger2();
00079
00080
00081 void setTrigger1(in Trigger trig)
00082 raises(SctApiException);
00083 void setTrigger2(in Trigger trig)
00084 raises(SctApiException);
00085
00086 void setScanVariable1(in unsigned short var);
00087 void setScanVariable2(in unsigned short var);
00088 unsigned short getScanVariable1();
00089 unsigned short getScanVariable2();
00090
00091 void setNTrigs(in unsigned long nTrigs);
00092 unsigned long getNTrigs();
00093
00094 TrigPoints getVariableTrigs();
00095 void setVariableTrigs(in TrigPoints trigs);
00096 void setVariableTrigRange(in unsigned short start, in unsigned short end, in unsigned long value);
00097
00098 ScanPoints getScanPoints1();
00099 ScanPoints getScanPoints2();
00100 void setScanPoints1(in ScanPoints scans);
00101 void setScanPoints2(in ScanPoints scans);
00102
00103 long getOption(in ScanOptions opt);
00104 void setOption(in ScanOptions opt, in long val);
00105
00106 void print();
00107
00108 void setScanNumber(in unsigned short scan);
00109 unsigned long getScanNumber();
00110 void setRunNumber(in unsigned short scan);
00111 unsigned long getRunNumber();
00112
00113 sctConf::ModuleList getModuleList(in unsigned long group);
00114 void setModuleList(in unsigned long group, in sctConf::ModuleList newList);
00115
00116 unsigned long getNGroups();
00117 void setNGroups(in unsigned short val);
00118
00120 string getStartTime();
00121 void setStartTime(in string t);
00123 string getEndTime();
00124 void setEndTime(in string t);
00125 };
00126
00127 typedef sequence <Scan> ScanList;
00128
00129 struct AutoConfigResult {
00130 unsigned long partition;
00131 unsigned long crate;
00132 unsigned long rod;
00133
00134 unsigned long tx;
00135 unsigned long rx;
00136 };
00137
00138 typedef sequence <AutoConfigResult> AutoResultList;
00139
00140
00142
00143
00145
00148
00149
00150
00151 interface Idiosyncrasy {
00152 Sct::Corba::UCID ucid();
00153 string uniqueName();
00154 string ipcNameOfSctApiCrateServer();
00155 string infoServiceNameOfScanStatusObject();
00156 };
00157
00158
00159
00160 interface DirectRODAccess {
00161
00162 short dspBlockDump(in unsigned long rod,
00163 in long dspStart, in long numWords, in long dspNumber);
00164 DataBlock dspBlockRead(in unsigned long rod,
00165 in long dspStart, in long numWords, in long dspNumber);
00166 short dspBlockWrite(in unsigned long rod,
00167 in DataBlock buffer, in unsigned long dspAddress, in long dspNumber);
00168
00169 unsigned long dspSingleRead(in unsigned long rod,
00170 in unsigned long dspAddr, in long dspNumber);
00171 void dspSingleWrite(in unsigned long rod,
00172 in unsigned long dspAddr, in unsigned long val, in long dspNumber);
00173
00174 DataBlock readSlaveDsp(in unsigned long rod,
00175 in short s, in unsigned long add, in unsigned long words);
00176
00177
00178
00179
00180 void printBOCSetup(in unsigned long rod);
00181 sctConf::ABCDModule getABCDModuleRaw(in unsigned long rod,
00182 in unsigned long slot, in BankType bank)
00183 raises(SctApiException);
00184 };
00185
00186
00187 interface DebugOptionsCommon {
00188 void unsetDebugOption(in string opt);
00189 void setDebugOption(in string opt);
00190 DebugOptionList listDebugOptions();
00191 };
00192 interface DebugOptionsJustCrate {
00193 DebugOptionList listEnabledDebugOptions();
00194 void standardRegisterDumpRod(in unsigned long rod);
00195 };
00196 interface DebugOptionsJustTop {
00197 void standardRegisterDumpURID(in Sct::Corba::URID urid);
00198 };
00199
00200
00201 interface PrimitiveAccessLowLevel {
00202 void awaitResponse(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00203 DataBlock getResponse(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00204
00205 void createDebugPrimList()
00206 raises(SctApiException);
00207 void addDebugPrimList(in long index, in long id, in long version, in DataBlock body)
00208 raises(SctApiException);
00209 void sendDebugPrimList(in unsigned long partition, in unsigned long crate, in unsigned long rod)
00210 raises(SctApiException);
00211 void sendDebugSlavePrimList(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00212 in unsigned long slave, in boolean await, in boolean response)
00213 raises(SctApiException);
00214
00215 void flashLED(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00216 in unsigned short slaveNumber, in unsigned long period, in unsigned long flashes)
00217 raises(SctApiException);
00218 void echo(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00219 in DataBlock data)
00220 raises(SctApiException);
00221 };
00222
00223
00224 interface DebugSTDOUT {
00225 void printABCDModule(in unsigned long mid);
00226 void printABCDRodModule(in unsigned long mid, in BankType bank);
00227
00228 void decodeEvent(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00229 in short sl, in short index, in boolean extFlag, in boolean errorType);
00230
00231 void configureBOC(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00232
00233 BOCMonitorSequence getBOCMonitorArray(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00234 };
00235
00236
00237 interface OtherCrateLevel {
00238 unsigned long getRodSlot(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00239
00240 void testLinkOutSelect(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00241 in unsigned long link);
00242
00243 unsigned long testLinkOutRetrieve(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00244
00245 boolean isRODPresent(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00246 };
00247
00249
00250
00251
00252 interface CrateIPC;
00253 interface CrateAccessTopLevel {
00254 CrateIPC getCrate(in Sct::Corba::UCID ucid);
00255 CrateIPC getCrateLegacy(in unsigned long partition, in unsigned long crate);
00256 Sct::Corba::UCIDs getCrateUCIDs();
00257 };
00258
00259
00260
00261
00262
00263 interface ScanMethods {
00264 Scan createScan();
00265 Scan getDefaultScan();
00266
00267
00268 Trigger createTrigger();
00269
00270
00271 ScanList knownScans();
00272 };
00273
00274
00275
00276
00277
00278 interface TranslationMethods {
00279
00280 unsigned long findModuleSerial(in string sn);
00281 string convertToString(in unsigned long mid);
00282 unsigned long findModule(in unsigned short mur, in unsigned short number);
00283
00284 unsigned long findModuleRod(in unsigned long partition, in unsigned long crate, in unsigned long rod, in unsigned long channel);
00285
00286
00287
00288 unsigned long findBarrelModule(in unsigned long barrel, in unsigned long row, in short number);
00289 void convertToBarrelModule(in unsigned long mid, out unsigned long barrel, out unsigned long row, out short number);
00290
00291 unsigned long findEndcapModule(in long disk, in long ring, in long number);
00292 void convertToEndcapModule(in unsigned long mid, out long disk, out unsigned long ring, out unsigned long number);
00293 };
00294
00295
00296
00297
00298
00299 interface SctApiDDCServerMethods {
00300
00301 const string instanceName = "SctApiDDCServer";
00302
00303 void requestHardReset(in unsigned long mid);
00304 void requestIVCurve(in unsigned long mid, in float start, in float stop, in float step,
00305 in unsigned short delay, in float currentLim);
00306 void setSelect(in unsigned long mid, in boolean value);
00307 void setSelectAllInCrate(in long crate, in boolean value);
00308 void changeRunState(in long state);
00309
00310
00311
00312
00313
00314 void ddcSetSingleTimeout(in short timeout);
00315 short ddcGetSingleTimeout();
00316 void ddcSetMultipleTimeout(in short timeout);
00317 short ddcGetMultipleTimeout();
00318
00319 void ddcChangeState(in long crate, in long channel,
00320 in short state);
00321 void ddcChangeStates(in long crate, in string name,
00322 in short state);
00323 void ddcChangeStateAll(in long crate,
00324 in short state);
00325 void ddcLoadConfiguration(in long crate,
00326 in short state);
00327 void ddcHardReset(in long crate, in long channel);
00328 void ddcHardResetAll(in long crate);
00329
00330 unsigned long ddcGetChannelParameterInt(in long crate, in long channel, in string name);
00331 float ddcGetChannelParameterFloat(in long crate, in long channel, in string name);
00332 string ddcGetChannelParameterString(in long crate, in long channel, in string name);
00333
00334 unsigned long ddcGetCardParameterInt(in long crate, in long card, in string name);
00335 float ddcGetCardParameterFloat(in long crate, in long card, in string name);
00336 string ddcGetCardParameterString(in long crate, in long card, in string name);
00337
00338 unsigned long ddcGetCrateParameterInt(in long crate, in string name);
00339 float ddcGetCrateParameterFloat(in long crate, in string name);
00340 string ddcGetCrateParameterString(in long crate, in string name);
00341
00342 void ddcGetCrateParameters(in long crate, in NameList names, out NameValueList nameValues);
00343
00344
00345 void ddcSetCrateParameterFloat(in long crate, in string name, in float value);
00346 void ddcSetCardParameterFloat(in long crate, in long card, in string name, in float value);
00347 void ddcSetChannelParameterFloat(in long crate, in long channel, in string name, in float value);
00348 };
00349
00350 interface SctApiDDCServer :
00351 ipc::servant,
00352 SctApiDDCServerMethods {
00353
00354 const string instanceName = "SctApiDDCServer";
00355
00356 };
00357
00360
00366
00367
00368
00369
00370 interface TriggerRODLevel {
00371 void sendL1A(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00372 void sendTrigger(in unsigned long partition, in unsigned long crate, in unsigned long rod, in Trigger trig);
00373 };
00374
00375
00376
00377
00378
00379 interface DoScanMethods {
00380
00381 void doScan(in Scan thisScan)
00382 raises(SctApiException);
00383 void doRawScan(in Scan thisScan, in long delay, in long width, in boolean configure, in boolean clockByTwo)
00384 raises(SctApiException);
00385 void abortScan();
00386 boolean hasFinishedScanning();
00387 };
00388
00389
00390
00391
00392
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402
00403
00404
00405 interface ModifyABCDMethods {
00406 void modifyABCDMask(in unsigned long mid, in DataBlock mask);
00407 void modifyABCDTrims(in unsigned long mid, in CharBlock trims);
00408 void modifyABCDRC(in unsigned long mid, in unsigned long chip, in unsigned short index, in double p0, in double p1, in double p2 );
00409
00410
00411 void modifyABCDVar(in unsigned long typ, in double var);
00412 void modifyABCDModuleVar(in unsigned long mid, in unsigned long typ, in double var);
00413 void modifyABCDChipVar(in unsigned long mid, in unsigned long chip, in unsigned long typ, in double var);
00414
00415 void modifyABCDVarROD(in unsigned long typ, in double var, in BankList banks);
00416 void modifyABCDModuleVarROD(in unsigned long mid, in unsigned long typ, in double var, in BankList banks);
00417
00418 void modifyBOCParam(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00419 in unsigned long channel, in unsigned long type, in unsigned long val);
00420
00421 };
00422
00423
00424 interface ModuleConfigurationMethods {
00426 void getABCDModules(in BankType bank)
00427 raises(SctApiException);
00428 void getABCDModule(in unsigned long mid, in BankType bank)
00429 raises(SctApiException);
00430
00431
00432 void setABCDModule(in unsigned long mid, in BankList banks)
00433 raises(SctApiException);
00434 void setABCDModules(in BankList bank)
00435 raises(SctApiException);
00436
00437 void copyABCDModule(in unsigned long mid, in BankType from, in BankList to)
00438 raises(SctApiException);
00439 void copyABCDModules(in BankType from, in BankList to)
00440 raises(SctApiException);
00441
00442 void sendABCDModule(in unsigned long mid, in BankType bank, in unsigned long type)
00443 raises(SctApiException);
00444 void sendABCDModules(in BankType bank)
00445 raises(SctApiException);
00446
00447 void storeModuleConfigurations()
00448 raises(SctApiException);
00449 void storeBOCConfigurations()
00450 raises(SctApiException);
00451
00452 void configureAllModules()
00453 raises(SctApiException);
00454 };
00455
00456
00457
00458 interface RetrievingConfigurationMethods {
00460 sctConf::ABCDModule retrieveModule(in unsigned long mid);
00461 BOCChannelList currentBOCSetup(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00462
00463 sctConf::BOCGlobalConfig currentBOCRegisters(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00464
00465 };
00466
00467
00468
00469 interface SavingConfigurationMethods {
00470
00471
00472 };
00473
00474
00475
00476
00477
00478 interface TriggerTIMLevel {
00479
00480 void timSetFrequency(in unsigned long partition, in unsigned long crate, in double trigFreq, in double rstFreq);
00481 void freeTriggers(in unsigned long partition, in unsigned long crate);
00482 void stopTriggers(in unsigned long partition, in unsigned long crate);
00483 void timL1A(in unsigned long partition, in unsigned long crate);
00484 void timCalL1A(in unsigned long partition, in unsigned long crate, in short delay);
00485 short timReadRegister(in unsigned long partition, in unsigned long crate, in short value);
00486 void timWriteRegister(in unsigned long partition, in unsigned long crate, in short reg, in short value);
00487
00488 void sendTimTrigger(in unsigned long partition, in unsigned long crate, in Trigger trig);
00489 };
00490
00491
00492 interface AutoConfigure {
00493 AutoResultList autoConfigureScan()
00494 raises(SctApiException);
00495 };
00496
00497
00498 interface ProbeChecks {
00499 boolean checkAllModulesProbe(in string chars)
00500 raises(SctApiException);
00501 };
00502
00503
00504
00505 interface ProbeMethods {
00506 CharBlock probe(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00507 CharBlock probeHarness(in unsigned long partition, in unsigned long crate, in unsigned long rod, in unsigned long harness);
00508
00509 CharBlock probeWithTrigger(in unsigned long partition, in unsigned long crate, in unsigned long rod, in Trigger trig);
00510 CharBlock probeHarnessWithTrigger(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00511 in Trigger trig, in unsigned long harness);
00512 CharMatrix probeScanHarnessWithTrigger(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00513 in Scan trig, in unsigned long harness);
00514 };
00515
00516
00517 interface RunControl {
00518 void initialiseAll(in unsigned long runNumber)
00519 raises(SctApiException);
00520
00521 void shutdownAll()
00522 raises(SctApiException);
00523
00524 void status();
00525 void setRunNumber(in unsigned long newRun);
00526 void setScanNumber(in unsigned long newScan);
00527 unsigned long getRunNumber();
00528 unsigned long getScanNumber();
00529
00530 void standardRegisterDumpAll();
00531
00532 void lasersOff();
00533 };
00534
00535
00536
00537 interface ModuleInquiry {
00538 sctConf::ModuleList getModuleList();
00539 };
00540
00543
00544
00545 interface DeprecatedInterfaceOne {
00546
00547
00548 void loadConfiguration(in string filename)
00549 raises(SctApiException);
00550 };
00551
00552
00553
00554 interface DeprecatedInterfaceTwo {
00555 void rawData(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00556 in long delay, in long units, in boolean setMask);
00557 void rawDataWithTrigger(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00558 in long delay, in long units, in boolean setMask, in Trigger trig);
00559 };
00560
00562
00563 interface JustCrateMethods :
00564 Sct_SctApi::DirectRODAccess,
00565 Sct_SctApi::DebugOptionsJustCrate {
00566 Idiosyncrasy getIdiosyncrasy();
00567 };
00568
00569 interface JustCrateMethodsTemporary :
00570 Sct_SctApi::PrimitiveAccessLowLevel,
00571 Sct_SctApi::DebugSTDOUT,
00572 Sct_SctApi::OtherCrateLevel {
00573 };
00574
00575 interface JustTopLevel :
00576 Sct_SctApi::CrateAccessTopLevel,
00577 Sct_SctApi::DebugOptionsJustTop {
00578 };
00579
00580 interface JustTopLevelTemporary :
00581 Sct_SctApi::ScanMethods,
00582 Sct_SctApi::TranslationMethods {
00583 };
00584
00585 interface CommonToTopAndCrate :
00586 Sct_SctApi::DoScanMethods,
00587 Sct_SctApi::ModifyABCDMethods,
00588 Sct_SctApi::ModuleConfigurationMethods,
00589 Sct_SctApi::RetrievingConfigurationMethods,
00590 Sct_SctApi::SavingConfigurationMethods,
00591 Sct_SctApi::TriggerRODLevel,
00592 Sct_SctApi::TriggerTIMLevel,
00593 Sct_SctApi::AutoConfigure,
00594 Sct_SctApi::ProbeChecks,
00595 Sct_SctApi::ProbeMethods,
00596 Sct_SctApi::RunControl,
00597 Sct_SctApi::ModuleInquiry,
00598 Sct_SctApi::DebugOptionsCommon {
00599 };
00600
00601 interface CrateIPC :
00602
00603 ipc::servant,
00604
00605
00606 Sct_SctApi::JustCrateMethods,
00607 Sct_SctApi::JustCrateMethodsTemporary,
00608
00609
00610 Sct_SctApi::JustTopLevelTemporary,
00611
00612
00613 Sct_SctApi::CommonToTopAndCrate,
00614
00615
00616 Sct_SctApi::DeprecatedInterfaceOne,
00617 Sct_SctApi::DeprecatedInterfaceTwo {
00618
00619
00620
00621 };
00622
00623
00624
00625 interface SctApiIPC :
00626
00627 ipc::servant,
00628
00629
00630 Sct_SctApi::JustCrateMethodsTemporary,
00631
00632
00633 Sct_SctApi::JustTopLevel,
00634 Sct_SctApi::JustTopLevelTemporary,
00635
00636
00637
00638 Sct_SctApi::CommonToTopAndCrate,
00639
00640
00641 Sct_SctApi::DeprecatedInterfaceOne,
00642 Sct_SctApi::DeprecatedInterfaceTwo {
00643
00644 const string instanceName = "SctApiImpl";
00645
00646 };
00647
00648
00649 interface SctApiIPCOriginal :
00650
00651 ipc::servant,
00652
00653
00654 Sct_SctApi::JustCrateMethods,
00655
00656
00657 Sct_SctApi::JustTopLevel,
00658
00659
00660 Sct_SctApi::CommonToTopAndCrate,
00661
00662
00663 Sct_SctApi::DeprecatedInterfaceOne,
00664 Sct_SctApi::DeprecatedInterfaceTwo {
00665
00666 const string instanceName = "SctApiImpl";
00667
00668 };
00669
00670 };