Main Page | Namespace List | Data Structures | File List | Namespace Members | Data Fields

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 "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     // Only throw cause they're not implemented!
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     // LESTER OBSOLETED const string serverName = "SctApi";
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     // Configuration 
00191     //    void loadConfiguration();
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     /***************** Direct ROD access (Debug only) ********************/
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 //      unsigned long readRodStatusReg(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00220 //                                     in long regNumber);
00221 //      unsigned long readRodCommandReg(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00222 //                                      in long regNumber);
00223 
00224     // Translation
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     //  pair<INT32, INT32> convertToMUR(in unsigned long mid);
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     // must be different prototypes
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     /* *************  TIM functs **************/
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     // Scans
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     // DCS stuff
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     // Direct DDC methods (no module translation)
00343 //     void ddcGetChannelParameter(in long crate, in long channel, in string dpeName,
00344 //                                 out long dpeValue);          // Put timeout in here?
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);                     // MultipleTimeout
00353     void ddcChangeStateAll(in long crate, 
00354                            in short state);                  // MultipleTimeout
00355     void ddcLoadConfiguration(in long crate, 
00356                               in short state);               // MultipleTimeout
00357     void ddcHardReset(in long crate, in long channel);       // SingleTimeout
00358     void ddcHardResetAll(in long crate);                     // MultipleTimeout
00359 
00360     unsigned long ddcGetChannelParameterInt(in long crate, in long channel, in string name);  // SingleTimeout
00361     float ddcGetChannelParameterFloat(in long crate, in long channel, in string name);        // SingleTimeout
00362     string ddcGetChannelParameterString(in long crate, in long channel, in string name);      // SingleTimeout
00363 
00364     unsigned long ddcGetCardParameterInt(in long crate, in long card, in string name);  // SingleTimeout
00365     float ddcGetCardParameterFloat(in long crate, in long card, in string name);        // SingleTimeout
00366     string ddcGetCardParameterString(in long crate, in long card, in string name);      // SingleTimeout
00367 
00368     unsigned long ddcGetCrateParameterInt(in long crate, in string name);  // SingleTimeout
00369     float ddcGetCrateParameterFloat(in long crate, in string name);        // SingleTimeout
00370     string ddcGetCrateParameterString(in long crate, in string name);      // SingleTimeout
00371 
00372     void ddcGetCrateParameters(in long crate, in NameList names, out NameValueList nameValues);   // MultipleTimeout
00373 
00374     // Also set DDC parameters...
00375     void ddcSetCrateParameterFloat(in long crate, in string name, in float value);  // SingleTimeout
00376     void ddcSetCardParameterFloat(in long crate, in long card, in string name, in float value);  // SingleTimeout
00377     void ddcSetChannelParameterFloat(in long crate, in long channel, in string name, in float value);  // SingleTimeout
00378 
00379     Scan createScan();
00380     Scan getDefaultScan();
00381 
00382     Trigger createTrigger();
00383     Trigger getDefaultTrigger();
00384 
00385     ScanList knownScans();
00386   };
00387 
00388 };

Generated on Thu Feb 10 02:46:21 2005 for SCT DAQ/DCS Software - IDL by doxygen 1.3.5