SctApi.idl

Go to the documentation of this file.
00001 #ifndef IPC_IDL
00002 #include "ipc/ipc.idl"
00003 #define IPC_IDL
00004 #endif
00005 
00006 #include "SctApi/config.h"
00007 
00008 #include "sctConfIPC/configuration.idl"
00009 #include "Sct/Addressing.idl"
00010 
00011 module Sct_SctApi {
00012   exception SctApiException {
00013     string detail;
00014   };
00015 
00016   typedef sequence <long> DataBlock;
00017   typedef sequence <short> CharBlock;
00018   typedef sequence <CharBlock> CharMatrix;
00019   typedef sequence <string> DebugOptionList;
00020   typedef sequence <sctConf::BOCChannelConfig> BOCChannelList;
00021   typedef sequence <string> NameList;
00022   typedef sequence <double> BOCMonitorSequence;
00023 
00024   struct NameValue {
00025     string name;
00026     float value;
00027   };
00028 
00029   typedef short RODTriggerFirstType;
00030   typedef long  RODTriggerSecondType;
00031   struct RODTrigger {
00032     RODTriggerFirstType  first;
00033     RODTriggerSecondType second;
00034   };
00035   
00036   typedef sequence <RODTrigger> RODTriggers;
00037   typedef sequence <short> TIMTriggers;
00038   typedef short TIMTrigger;
00039 
00040   typedef sequence <NameValue> NameValueList;
00041 
00042   enum BankType {PHYSICS_CONFIG, SCAN_CONFIG, CALIBRATION_CONFIG};
00043 
00044   enum RunType {PHYSICS_RUN_TYPE, CALIBRATION_RUN_TYPE};
00045 
00046   enum EventFormatType {NORMAL_EVENT_FORMAT, EXPANDED_EVENT_FORMAT, RAW_EVENT_FORMAT};
00047 
00048   typedef sequence <BankType> BankList;
00049 
00050   interface Trigger : ipc::servant {
00051     enum Source {SOURCE_UNKNOWN, SOURCE_ROD, SOURCE_TIM_INTERNAL, SOURCE_TIM_EXTERNAL};
00052   
00053     void singleL1A();
00054     void doubleL1A(in unsigned short delay);
00055     void delayedL1A(in unsigned short delay);
00056     void calL1A(in unsigned short delay);
00057     void pulseL1A(in unsigned short delay);
00058     void softL1A(in unsigned short delay);
00059     void softCalL1A(in unsigned short delay, in unsigned short delay2);
00060     void softPulseL1A(in unsigned short delay, in unsigned short delay2);
00061     void softBc(in unsigned short delay);
00062     void soft();
00063     void bc();
00064     void bcL1A(in unsigned short delay);
00065     void bcCalL1A(in unsigned short delay, in unsigned short delay2);
00066     void bcPulseL1A(in unsigned short delay, in unsigned short delay2);
00067 
00068     void setCommIncr(in unsigned short command, in unsigned short incr);
00069     void getCommIncr(out unsigned short command, out unsigned short incr);
00070 
00071     Source getSource();
00072     void setSource(in Source s);
00073 
00074     short getRandom();
00075     void setRandom(in short random);
00076 
00078     double getFrequency();
00079     void setFrequency(in double freq);
00080 
00081     RODTriggers getRODTriggers(in short scan_point);
00084     TIMTriggers getTIMTriggers(in short scan_point);
00085     
00086     boolean isValidRODTrigger();
00087     boolean isValidTIMTrigger();
00088     boolean timNeedsSequencer();
00089 
00091     void clear();
00092 
00094     void addCommand(in RODTriggerFirstType first, in RODTriggerSecondType second);
00095 
00096     string print();
00097   };
00098 
00099 
00100   interface Scan : ipc::servant {
00101 
00102     typedef sequence <double> ScanPoints;
00103     typedef sequence <unsigned long> TrigPoints;
00104 
00105     enum ScanOptions {full, bits32, loopCalLine, distSlave, debug, tim, nth, nth_rem, enableDataMode, ccode, ope, endoptions};
00106 
00107     void configure(in unsigned short type, in double start, in double stop, in double step);
00108     void configure2(in unsigned short type, in double start, in double stop, in double step);
00109 
00110     Trigger getTrigger1();
00111     Trigger getTrigger2();
00112 
00113     // Only throw cause they're not implemented!
00114     void setTrigger1(in Trigger trig)
00115       raises(SctApiException);
00116     void setTrigger2(in Trigger trig)
00117       raises(SctApiException);
00118 
00119     void setScanVariable1(in unsigned short var);
00120     void setScanVariable2(in unsigned short var);
00121     unsigned short getScanVariable1();
00122     unsigned short getScanVariable2();
00123 
00124     void setNTrigs(in unsigned long nTrigs);
00125     unsigned long getNTrigs();
00126 
00127     TrigPoints getVariableTrigs();
00128     void setVariableTrigs(in TrigPoints trigs);
00129     void setVariableTrigRange(in unsigned short start, in unsigned short end, in unsigned long value);
00130 
00131     ScanPoints getScanPoints1();
00132     ScanPoints getScanPoints2();
00133     void setScanPoints1(in ScanPoints scans);
00134     void setScanPoints2(in ScanPoints scans);
00135 
00136     long getOption(in ScanOptions opt);
00137     void setOption(in ScanOptions opt, in long val);
00138 
00139     string print();
00140 
00141     void setScanNumber(in unsigned long scan);
00142     unsigned long getScanNumber();
00143     void setRunNumber(in unsigned long scan);
00144     unsigned long getRunNumber();
00145 
00146 #if !USE_CONST_SCAN
00147     sctConf::ModuleList getModuleList(in unsigned long group);
00148     void setModuleList(in unsigned long group, in sctConf::ModuleList newList);
00149 
00150     unsigned long getNGroups();
00151     void setNGroups(in unsigned short val);
00152 #endif
00153 
00154 #if !USE_CONST_SCAN
00155 
00156     string getStartTime();
00157     void setStartTime(in string t);
00159     string getEndTime();
00160     void setEndTime(in string t);
00161 #endif
00162   };
00163 
00164   typedef sequence <Scan> ScanList;
00165 
00166   interface ScanMonitor : ipc::servant {
00167     void newBin(in unsigned long prevTriggers, in unsigned short newBin);
00168     void finishScan();
00169   };
00170 
00171   struct AutoConfigResult {
00172     unsigned long partition;
00173     unsigned long crate;
00174     unsigned long rod;
00175 
00176     unsigned long tx;
00177     unsigned long rx;
00178   };
00179 
00180   typedef sequence <AutoConfigResult> AutoResultList;
00181 
00182 
00184 
00185 
00187 
00190 
00191   // Ths Idiosyncrasy is what makes one Crate Controller
00192   // different from another.
00193   interface Idiosyncrasy {
00194     Sct::Corba::UCID ucid();
00195     string uniqueName();
00196     string ipcNameOfSctApiCrateServer();
00197     string infoServiceNameOfScanStatusObject();
00198   };
00199 
00200 
00201   // Direct ROD access (Debug only):
00202   interface DirectRODAccess {
00203     /***************** Direct ROD access (Debug only) ********************/
00204     short dspBlockDump(in unsigned long rod,
00205                      in long dspStart, in long numWords, in long dspNumber);
00206     DataBlock dspBlockRead(in unsigned long rod,
00207                            in long dspStart, in long numWords, in long dspNumber);
00208     short dspBlockWrite(in unsigned long rod,
00209                       in DataBlock buffer, in unsigned long dspAddress, in long dspNumber);
00210 
00211     unsigned long dspSingleRead(in unsigned long rod,
00212                                 in unsigned long dspAddr, in long dspNumber);
00213     void dspSingleWrite(in unsigned long rod,
00214                         in unsigned long dspAddr, in unsigned long val, in long dspNumber);
00215 
00216     DataBlock readSlaveDsp(in unsigned long rod,
00217                            in short s, in unsigned long add, in unsigned long words);
00218 //      unsigned long readRodStatusReg(in unsigned long rod,
00219 //                                     in long regNumber);
00220 //      unsigned long readRodCommandReg(in unsigned long rod,
00221 //                                      in long regNumber);
00222     void printBOCSetup(in unsigned long rod);
00223     sctConf::ABCDModule getABCDModuleRaw(in unsigned long rod, 
00224                                          in unsigned long slot, in BankType bank)
00225       raises(SctApiException);
00226   };
00227 
00228   // Debug Options:
00229   interface DebugOptionsCommon {
00230     void unsetDebugOption(in string opt);
00231     void setDebugOption(in string opt);
00232     DebugOptionList listDebugOptions();
00233     void unsetBusy();
00234   };
00235   interface DebugOptionsJustCrate {
00236     DebugOptionList listEnabledDebugOptions();
00237     void standardRegisterDumpRod(in unsigned long rod);
00238 
00239     // These are used only by SctApiGUI
00240     void testLinkOutSelect(in unsigned long rod, in unsigned long link);
00241     unsigned long testLinkOutRetrieve(in unsigned long rod);
00242 
00243     unsigned long getRodSlot(in unsigned long rod);
00244     boolean isRODPresent(in unsigned long rod);
00245   };
00246   interface DebugOptionsJustTop {
00247     void standardRegisterDumpURID(in Sct::Corba::URID urid);
00248   };
00249 
00250   // Low-level primitive access:
00251   interface PrimitiveAccessLowLevel {
00252     void awaitResponse(in unsigned long rod);
00253     DataBlock getResponse(in unsigned long rod);
00254 
00255     void createDebugPrimList()
00256       raises(SctApiException);
00257     void addDebugPrimList(in long index, in long id, in long version, in DataBlock body)
00258       raises(SctApiException);
00259     void sendDebugPrimList(in unsigned long rod)
00260       raises(SctApiException);
00261     void sendDebugSlavePrimList(in unsigned long rod, 
00262                                 in unsigned long slave, in boolean await, in boolean response)
00263       raises(SctApiException);
00264 
00265     void flashLED(in unsigned long rod, 
00266                   in unsigned short slaveNumber, in unsigned long period, in unsigned long flashes)
00267       raises(SctApiException);
00268     void echo(in unsigned long rod, in DataBlock data)
00269       raises(SctApiException);
00270   };
00271 
00272   // Only useful with stdout, therefore debug only
00273   interface DebugSTDOUT {
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 
00282 
00283   // This is how SctApiGUI and expert scripters 
00284   // would get access to the low level interface / crate above.
00285   interface CrateIPC; // fwd declaration to facilitate what follows!
00286   interface CrateAccessTopLevel {
00287     CrateIPC getCrate(in Sct::Corba::UCID ucid);
00288     CrateIPC getCrateLegacy(in unsigned long partition, in unsigned long crate);
00289     Sct::Corba::UCIDs getCrateUCIDs();
00290   };
00291 
00292   // Scans and triggers probably kept track of at top level. 
00293   // Need to be careful about giving different crates 
00294   // access to them, sometimes is right thing to do. 
00295   // Would need locking on module list updaters.
00296   interface ScanMethods {
00297     Scan createScan();
00298     Scan getDefaultScan();
00299 
00300     // Nobody seems to use these two:
00301     Trigger createTrigger();
00302     // Trigger getDefaultTrigger();
00303 
00304     ScanList knownScans();
00305   };
00306 
00307   // Translation methods. These are mostly just
00308   // proxies for configuration server, which was most
00309   // useful in TApi where it wasn't accessible directly.
00310   // But these deal with the SctApi's internal mid numbers...
00311   interface TranslationMethods {
00312     // Translation
00313     unsigned long findModuleSerial(in string sn);
00314     string convertToString(in unsigned long mid);
00315     unsigned long findModule(in unsigned short mur, in unsigned short number);
00316 
00317     unsigned long findModuleRod(in unsigned long partition, in unsigned long crate, in unsigned long rod, in unsigned long channel);
00318 
00319     //  pair<INT32, INT32> convertToMUR(in unsigned long mid);
00320 
00321     unsigned long findBarrelModule(in unsigned long barrel, in unsigned long row, in short number);
00322     void convertToBarrelModule(in unsigned long mid, out unsigned long barrel, out unsigned long row, out short number);
00323 
00324     unsigned long findEndcapModule(in long disk, in long ring, in long number);
00325     void convertToEndcapModule(in unsigned long mid, out long disk, out unsigned long ring, out unsigned long number);
00326   };
00327 
00328   // DDC stuff. This mostly doesn't need access 
00329   // to modules. Only exception is setSelect, 
00330   // which currently doesn't update select parameter 
00331   // in module configuration, but should do.
00332   interface SctApiDDCServerMethods {
00333 
00334     const string instanceName = "SctApiDDCServer";
00335 
00336     void requestHardReset(in unsigned long mid);
00337     void requestIVCurve(in unsigned long mid, in float start, in float stop, in float step, 
00338                         in unsigned short delay, in float currentLim);
00339     void setSelect(in unsigned long mid, in boolean value); 
00340     void setSelectAllInCrate(in long crate, in boolean value);
00341     void changeRunState(in long state);
00342 
00343     // Direct DDC methods (no module translation)
00344 //     void ddcGetChannelParameter(in long crate, in long channel, in string dpeName,
00345 //                                 out long dpeValue);          // Put timeout in here?
00346 
00347     void ddcSetSingleTimeout(in short timeout);
00348     short ddcGetSingleTimeout();
00349     void ddcSetMultipleTimeout(in short timeout);
00350     short ddcGetMultipleTimeout();
00351 
00352     void ddcChangeState(in long crate, in long channel,
00353                         in short state);                     // MultipleTimeout
00354     void ddcChangeStates(in long crate, in string name,
00355                         in short state);                     // MultipleTimeout
00356     void ddcChangeStateAll(in long crate,
00357                            in short state);                  // MultipleTimeout
00358     void ddcLoadConfiguration(in long crate, 
00359                               in short state);               // MultipleTimeout
00360     void ddcHardReset(in long crate, in long channel);       // SingleTimeout
00361     void ddcHardResetAll(in long crate);                     // MultipleTimeout
00362 
00363     unsigned long ddcGetChannelParameterInt(in long crate, in long channel, in string name);  // SingleTimeout
00364     float ddcGetChannelParameterFloat(in long crate, in long channel, in string name);        // SingleTimeout
00365     string ddcGetChannelParameterString(in long crate, in long channel, in string name);      // SingleTimeout
00366 
00367     unsigned long ddcGetCardParameterInt(in long crate, in long card, in string name);  // SingleTimeout
00368     float ddcGetCardParameterFloat(in long crate, in long card, in string name);        // SingleTimeout
00369     string ddcGetCardParameterString(in long crate, in long card, in string name);      // SingleTimeout
00370 
00371     unsigned long ddcGetCrateParameterInt(in long crate, in string name);  // SingleTimeout
00372     float ddcGetCrateParameterFloat(in long crate, in string name);        // SingleTimeout
00373     string ddcGetCrateParameterString(in long crate, in string name);      // SingleTimeout
00374 
00375     void ddcGetCrateParameters(in long crate, in NameList names, out NameValueList nameValues);   // MultipleTimeout
00376 
00377     // Also set DDC parameters...
00378     void ddcSetCrateParameterFloat(in long crate, in string name, in float value);  // SingleTimeout
00379     void ddcSetCardParameterFloat(in long crate, in long card, in string name, in float value);  // SingleTimeout
00380     void ddcSetChannelParameterFloat(in long crate, in long channel, in string name, in float value);  // SingleTimeout
00381   };
00382 
00383   interface SctApiDDCServer : 
00384     ipc::servant,
00385     SctApiDDCServerMethods {
00386 
00387     const string instanceName = "SctApiDDCServer";
00388 
00389   };
00390 
00393 
00399   
00400   // This currently sends a ROD level trigger. There's a
00401   // different method for a TIM level trigger, which would 
00402   // be at a higher level.
00403   interface TriggerRODLevel {
00404     void sendL1A(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00405     void sendRodTrigger(in unsigned long partition, in unsigned long crate, in unsigned long rod, in Trigger trig);
00406   };
00407 
00408   // These are the only (possibly not even doRawScan) 
00409   // method(s) that need any "intelligence" in the 
00410   // top-level API. Unfortunately, it involves a 
00411   // reasonable amount of intelligence.
00412   interface DoScanMethods {
00413     // Scans
00414     void doScan(in Scan thisScan) // postcondition: hasFinishedScanning()!=true unless the scan has *already* finished! I.e. hasFinishedScanning()==true guarantees that the scan completed.
00415       raises(SctApiException);
00416     void doRawScan(in Scan thisScan, in long delay, in long width, in boolean configure, in boolean clockByTwo)
00417       raises(SctApiException);
00418     ScanMonitor startAsyncScan(in Scan thisScan)
00419       raises(SctApiException);
00420     void abortScan(); // postcondition: hasFinishedScanning()==true;
00421     boolean hasFinishedScanning();
00422   };
00423 
00424   // Most of what follows just needs to be forwarded to avoid 
00425   // the CalibrationController having to know which 
00426   // Crate/ROD it's talking to. If for some reason 
00427   // it knows already, then they don't need to be in 
00428   // the top-level. It doesn't even need to check with 
00429   // the configuration service as the information is encoded 
00430   // in the mid parameter.
00431   // Either way, no module configurations need to be 
00432   // stored at a level higher than the crate. All it 
00433   // needs to know is which module is in which crate. 
00434   // I believe there are no cases where a module has 
00435   // it's redundant tx pair cross a crate boundary.
00436 
00437   // Modify ABCD methods.
00438   // Crate-level methods would give error if mid 
00439   // doesn't correspond to "my" crate.
00440   interface ModifyABCDMethods {
00441     void modifyABCDMask(in unsigned long mid, in DataBlock mask);
00442     void modifyABCDTrims(in unsigned long mid, in CharBlock trims);
00443     void modifyABCDRC(in unsigned long mid, in unsigned long chip, in unsigned short index, in double p0, in double p1, in double p2 );
00444 
00445     // must be different prototypes
00446     void modifyABCDVar(in unsigned long typ, in double var);
00447     void modifyABCDModuleVar(in unsigned long mid, in unsigned long typ, in double var);
00448     void modifyABCDChipVar(in unsigned long mid, in unsigned long chip, in unsigned long typ, in double var);
00449     void modifyABCDVarAllModulesOneChip(in unsigned long chip, in unsigned long typ, in double var);
00450 
00451     void modifyABCDVarROD(in unsigned long typ, in double var, in BankList banks);
00452     void modifyABCDModuleVarROD(in unsigned long mid, in unsigned long typ, in double var, in BankList banks);
00453 
00454     void modifyBOCParam(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00455                         in unsigned long channel, in unsigned long type, in unsigned long val);
00456 
00457   };
00458 
00459   // Get/set/send module configurations: 
00460   interface ModuleConfigurationMethods {
00462     void getABCDModules(in BankType bank)
00463       raises(SctApiException);
00464     void getABCDModule(in unsigned long mid, in BankType bank)
00465       raises(SctApiException);
00466 
00467     void setAutoUpdateBanks(in BankList banks);
00468 
00469     void setABCDModule(in unsigned long mid, in BankList banks)
00470       raises(SctApiException);
00471     void setABCDModules(in BankList bank)
00472       raises(SctApiException);
00473 
00474     void copyABCDModule(in unsigned long mid, in BankType from, in BankList to)
00475       raises(SctApiException);
00476     void copyABCDModules(in BankType from, in BankList to)
00477       raises(SctApiException);
00478 
00479     void sendABCDModule(in unsigned long mid, in BankType bank, in unsigned long type)
00480       raises(SctApiException);
00481     void sendABCDModules(in BankType bank)
00482       raises(SctApiException);
00483 
00484     void storeModuleConfigurations(in BankType bank)
00485       raises(SctApiException);
00486     void storeBOCConfigurations()
00487       raises(SctApiException);
00488 
00489     void configureAllModules()
00490       raises(SctApiException);
00491 
00492     void loadModuleConfigurations()
00493       raises(SctApiException);
00494   };
00495 
00496   // These would be better if the data could come 
00497   // directly back from the crate SctApi
00498   interface RetrievingConfigurationMethods {
00500     sctConf::ABCDModule retrieveModule(in unsigned long mid);
00501     BOCChannelList currentBOCSetup(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00502 
00503     sctConf::BOCGlobalConfig currentBOCRegisters(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00504 
00505   };
00506 
00507   // These should prbably be crate level only
00508   interface BOCConfigurationMethods {
00509     void configureBOC(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00510 
00511     BOCMonitorSequence getBOCMonitorArray(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00512   };
00513 
00514   // Currently missing from IPC API, but in C++ class:
00515   // watch out Alan AJB! ...
00516   interface SavingConfigurationMethods {
00517     // saveBOCSetup ?
00518     // restoreBOCSetup ?
00519   };
00520 
00521   // This sends a TIM level trigger. There's a
00522   // different method for a ROD level trigger, which would 
00523   // be at a lower level.
00524   // TIM access, is this being done completely separately anyway?
00525   interface TriggerTIMLevel {
00526     /* *************  TIM functs **************/
00527     void timSetFrequency(in unsigned long partition, in unsigned long crate, in double trigFreq, in double rstFreq);
00528     void freeTriggers(in unsigned long partition, in unsigned long crate);
00529     void stopTriggers(in unsigned long partition, in unsigned long crate);
00530     void timL1A(in unsigned long partition, in unsigned long crate);
00531     void timCalL1A(in unsigned long partition, in unsigned long crate, in short delay);
00532     short timReadRegister(in unsigned long partition, in unsigned long crate, in short value);
00533     void timWriteRegister(in unsigned long partition, in unsigned long crate, in short reg, in short value);
00534 
00535     unsigned long sendTriggers(in unsigned long partition, in unsigned long crate, in Trigger trig, in unsigned long ntriggers, in unsigned short point_in_scan);
00536   };
00537 
00538   // Not used much, but high-level thing so belongs here.
00539   interface AutoConfigure {
00540     AutoResultList autoConfigureScan()
00541       raises(SctApiException);
00542   };
00543 
00544   // Similar, but used internally by histogramming code.
00545   interface ProbeChecks {
00546     boolean checkAllModulesProbe(in string chars)
00547       raises(SctApiException);
00548   };
00549 
00550   // The output from probe currently assumes only 
00551   // one ROD, but could be extended to multiple RODs/crates?
00552   interface ProbeMethods {
00553     CharBlock probe(in unsigned long partition, in unsigned long crate, in unsigned long rod);
00554     CharBlock probeHarness(in unsigned long partition, in unsigned long crate, in unsigned long rod, in unsigned long harness);
00555 
00556     CharBlock probeWithTrigger(in unsigned long partition, in unsigned long crate, in unsigned long rod, in Trigger trig);
00557     CharBlock probeHarnessWithTrigger(in unsigned long partition, in unsigned long crate, in unsigned long rod, 
00558                       in Trigger trig, in unsigned long harness);
00559     CharMatrix probeScanHarnessWithTrigger(in unsigned long partition, in unsigned long crate, in unsigned long rod, 
00560                                           in Scan trig, in unsigned long harness);
00561   };
00562 
00563   // Again, not much intelligence needs to be at high-level, just distribution.
00564   interface RunControl {
00565     void initialiseAll(in unsigned long runNumber)
00566       raises(SctApiException);
00567 
00568     boolean isInitialised();
00569 
00570     void shutdownAll()
00571       raises(SctApiException);
00572 
00573     string status();
00574     void setRunNumber(in unsigned long newRun);
00575     void setScanNumber(in unsigned long newScan);
00576     unsigned long getRunNumber();
00577     unsigned long getScanNumber();
00578 
00579     boolean changeRunMode(in RunType mode);
00580 
00581     boolean changeEventFormat(in EventFormatType format);
00582 
00583     void standardRegisterDumpAll();
00584 
00585     void lasersOff();
00586   };
00587 
00588   // High-level API shouldn't really have a list of 
00589   // modules (for coherency), but could amalgamate crates' lists.
00590   interface ModuleInquiry {
00591     sctConf::ModuleList getModuleList();
00592   };
00593 
00596 
00597   // Maybe shouldn't be here (only in TApi)
00598   interface DeprecatedInterfaceOne {
00599     // Configuration 
00600     //    void loadConfiguration();
00601     void loadConfiguration(in string filename)
00602       raises(SctApiException);
00603   };
00604 
00605   // Where did these come from? They decode raw output 
00606   // to stdout, so best kept to TApi...
00607   interface DeprecatedInterfaceExtraRaw {
00608     void rawData(in unsigned long partition, in unsigned long crate, in unsigned long rod, 
00609                  in long delay, in long units, in boolean setMask);
00610     void rawDataWithTrigger(in unsigned long partition, in unsigned long crate, in unsigned long rod, 
00611                 in long delay, in long units, in boolean setMask, in Trigger trig);
00612   };
00613 
00615 
00616   interface JustCrateMethods :
00617     Sct_SctApi::DirectRODAccess,
00618     Sct_SctApi::DebugOptionsJustCrate {
00619     Idiosyncrasy getIdiosyncrasy();
00620     string getHostName();
00621   };
00622 
00623   interface JustCrateMethodsTemporary : // move all elements of this into JustCrateMethods!
00624     Sct_SctApi::PrimitiveAccessLowLevel,
00625     Sct_SctApi::DebugSTDOUT {
00626   };
00627 
00628   interface JustTopLevel : 
00629     Sct_SctApi::CrateAccessTopLevel,
00630     Sct_SctApi::DebugOptionsJustTop,
00631     Sct_SctApi::ScanMethods {
00632   };
00633 
00634   interface JustTopLevelTemporary : // move all elements of this into JustTopLevel! 
00635     Sct_SctApi::TranslationMethods {
00636   };
00637 
00638   interface CommonToTopAndCrate :
00639     Sct_SctApi::DoScanMethods,
00640     Sct_SctApi::ModifyABCDMethods,
00641     Sct_SctApi::ModuleConfigurationMethods,
00642     Sct_SctApi::RetrievingConfigurationMethods,
00643     Sct_SctApi::BOCConfigurationMethods,
00644     Sct_SctApi::SavingConfigurationMethods,
00645     Sct_SctApi::TriggerRODLevel,
00646     Sct_SctApi::TriggerTIMLevel,
00647     Sct_SctApi::AutoConfigure,
00648     Sct_SctApi::ProbeChecks,
00649     Sct_SctApi::ProbeMethods,
00650     Sct_SctApi::RunControl,
00651     Sct_SctApi::ModuleInquiry,
00652     Sct_SctApi::DebugOptionsCommon {
00653   };
00654 
00655   interface CrateIPC :
00656 
00657     ipc::servant,  
00658 
00659     // Crate level:
00660     Sct_SctApi::JustCrateMethods,
00661     Sct_SctApi::JustCrateMethodsTemporary, // Remove as soon as it is empty!
00662 
00663     // Top level:
00664     Sct_SctApi::JustTopLevelTemporary, // Remove as soon as it is empty!
00665 
00666     // Both levels:
00667     Sct_SctApi::CommonToTopAndCrate,
00668     
00669     // Deprecated things that might move elsewhere:
00670     Sct_SctApi::DeprecatedInterfaceOne,
00671     Sct_SctApi::DeprecatedInterfaceExtraRaw {
00672 
00673     // Not needed as there will be more than one instance in any case! // const string instanceName = "SctApiCrateIPC";
00674 
00675   };
00676 
00677 
00678   // TOP LEVEL:
00679   interface SctApiIPC : 
00680 
00681     ipc::servant,  
00682 
00683     // Top level:
00684     Sct_SctApi::JustTopLevel,
00685     Sct_SctApi::JustTopLevelTemporary, // Remove as soon as it is empty!
00686     // Not needed ... now separate ... Sct_SctApi::SctApiDDCServerMethods,
00687 
00688     // Both levels:
00689     Sct_SctApi::CommonToTopAndCrate,
00690 
00691     // Deprecated things that might move elsewhere:
00692     Sct_SctApi::DeprecatedInterfaceOne {
00693 
00694     const string instanceName = "SctApiImpl";
00695 
00696   };
00697 
00698   // ORIGINAL
00699   interface SctApiIPCOriginal : 
00700 
00701     ipc::servant,  
00702 
00703     // Crate level:
00704     Sct_SctApi::JustCrateMethods,
00705 
00706     // Top level:
00707     Sct_SctApi::JustTopLevel,
00708 
00709     // Both levels:
00710     Sct_SctApi::CommonToTopAndCrate,
00711 
00712     // Deprecated things that might move elsewhere:
00713     Sct_SctApi::DeprecatedInterfaceOne,
00714     Sct_SctApi::DeprecatedInterfaceExtraRaw {
00715 
00716     const string instanceName = "SctApiImpl";
00717 
00718   };
00719 
00720 };

Generated on Mon Feb 6 14:20:17 2006 for SCT DAQ/DCS Software - IDL by  doxygen 1.4.6