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 "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     // Only throw cause they're not implemented!
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     // Configuration 
00167     //    void loadConfiguration();
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     /***************** Direct ROD access (Debug only) ********************/
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 //      unsigned long readRodStatusReg(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00196 //                                     in long regNumber);
00197 //      unsigned long readRodCommandReg(in unsigned long partition, in unsigned long crate, in unsigned long rod,
00198 //                                      in long regNumber);
00199 
00200     // Translation
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     //  pair<INT32, INT32> convertToMUR(in unsigned long mid);
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     // must be different prototypes
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     /* *************  TIM functs **************/
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     // Scans
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     // DCS stuff
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     // Direct DDC methods (no module translation)
00318 //     void ddcGetChannelParameter(in long crate, in long channel, in string dpeName,
00319 //                                 out long dpeValue);          // Put timeout in here?
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);                     // MultipleTimeout
00328     void ddcChangeStateAll(in long crate, 
00329                            in short state);                  // MultipleTimeout
00330     void ddcLoadConfiguration(in long crate, 
00331                               in short state);               // MultipleTimeout
00332     void ddcHardReset(in long crate, in long channel);       // SingleTimeout
00333     void ddcHardResetAll(in long crate);                     // MultipleTimeout
00334 
00335     unsigned long ddcGetChannelParameterInt(in long crate, in long channel, in string name);  // SingleTimeout
00336     float ddcGetChannelParameterFloat(in long crate, in long channel, in string name);        // SingleTimeout
00337     string ddcGetChannelParameterString(in long crate, in long channel, in string name);      // SingleTimeout
00338 
00339     unsigned long ddcGetCardParameterInt(in long crate, in long card, in string name);  // SingleTimeout
00340     float ddcGetCardParameterFloat(in long crate, in long card, in string name);        // SingleTimeout
00341     string ddcGetCardParameterString(in long crate, in long card, in string name);      // SingleTimeout
00342 
00343     unsigned long ddcGetCrateParameterInt(in long crate, in string name);  // SingleTimeout
00344     float ddcGetCrateParameterFloat(in long crate, in string name);        // SingleTimeout
00345     string ddcGetCrateParameterString(in long crate, in string name);      // SingleTimeout
00346 
00347     void ddcGetCrateParameters(in long crate, in NameList names, out NameValueList nameValues);   // MultipleTimeout
00348 
00349     // Also set DDC parameters...
00350 
00351     Scan createScan();
00352     Scan getDefaultScan();
00353 
00354     Trigger createTrigger();
00355     Trigger getDefaultTrigger();
00356 
00357     ScanList knownScans();
00358   };
00359 
00360 };

Generated on Thu Jul 15 09:58:36 2004 for SCT DAQ/DCS Software - IDL by doxygen 1.3.5