Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Related Pages

SctApiCrateServer.h

00001 #ifndef SCTAPIIPC_SCTAPICRATESERVER_H
00002 #define SCTAPIIPC_SCTAPICRATESERVER_H
00003 
00004 #include <map>
00005 
00006 #include <boost/shared_ptr.hpp>
00007 
00008 #include <ipc/object.h>
00009 #include <ipc/server.h>
00010 #include <mrs/message.h>
00011 #include <omniORB4/poa.h> // For PortableServer::RefCountServantBase
00012 
00013 namespace SctApi {
00014   class SctApi;
00015   class Trigger;
00016   class TriggerImpl;
00017   class Scan;
00018   class ScanDefImpl;
00019   class IdiosyncrasyServer;
00020 }
00021 
00022 #include "Sct_SctApi/SctApi.hh"
00023 
00029 // other fwd decs:
00030 namespace Sct {
00031   class ApiServerStatusManager;
00032 };
00033 
00034 // Obsolete?
00035 // extern std::auto_ptr<IPCServer> ipcServer; 
00036 
00037 class ScanServer;
00038 class TriggerServer;
00039 
00043 class SctApiCrateServer : public IPCNamedObject<POA_Sct_SctApi::CrateIPC>,
00044                           public IPCServer {
00045 
00046  public:
00047 
00048   SctApiCrateServer(SctApi::SctApi& api);
00049   virtual ~SctApiCrateServer();     // destructor
00050 
00051  // methods
00052 
00053   virtual Sct_SctApi::Idiosyncrasy_ptr getIdiosyncrasy();
00054   virtual void initialiseAll (CORBA::ULong runNumber);
00055   virtual void shutdownAll ();
00056   virtual void status ();
00057   virtual void setRunNumber (CORBA::ULong newRun);
00058   virtual void setScanNumber (CORBA::ULong newScan);
00059   virtual CORBA::ULong getRunNumber ();
00060   virtual CORBA::ULong getScanNumber ();
00061   virtual void unsetDebugOption (const char * opt);
00062   virtual void setDebugOption (const char * opt);
00063   virtual Sct_SctApi::DebugOptionList * listEnabledDebugOptions ();
00064   virtual Sct_SctApi::DebugOptionList * listDebugOptions ();
00065   virtual void standardRegisterDumpRod (CORBA::ULong rod);
00066   virtual void standardRegisterDumpAll ();
00067   virtual sctConf::ModuleList * getModuleList ();
00068   virtual CORBA::Boolean isRODPresent (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod);
00069   virtual void awaitResponse (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod);
00070   virtual Sct_SctApi::DataBlock * getResponse (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod);
00071   virtual void configureBOC (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod);
00072   virtual Sct_SctApi::BOCMonitorSequence* getBOCMonitorArray(CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod);
00073   virtual void flashLED (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod, CORBA::UShort slaveNumber, CORBA::ULong period, CORBA::ULong flashes);
00074   virtual void echo (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod, const Sct_SctApi::DataBlock & data);
00075   virtual void createDebugPrimList ();
00076   virtual void addDebugPrimList (CORBA::Long index, CORBA::Long id, CORBA::Long version, const Sct_SctApi::DataBlock & body);
00077   virtual void sendDebugPrimList (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod);
00078   virtual void sendDebugSlavePrimList (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod, CORBA::ULong slave, CORBA::Boolean await, CORBA::Boolean response);
00079   virtual void loadConfiguration (const char * filename);
00080   virtual void storeModuleConfigurations ();
00081   virtual void storeBOCConfigurations ();
00082   virtual void configureAllModules ();
00083   virtual sctConf::ABCDModule retrieveModule (CORBA::ULong mid);
00084   virtual CORBA::Short dspBlockDump (CORBA::ULong rod, CORBA::Long dspStart, CORBA::Long numWords, CORBA::Long dspNumber);
00085   virtual Sct_SctApi::DataBlock * dspBlockRead (CORBA::ULong rod, CORBA::Long dspStart, CORBA::Long numWords, CORBA::Long dspNumber);
00086   virtual CORBA::Short dspBlockWrite (CORBA::ULong rod, const Sct_SctApi::DataBlock & buffer, CORBA::ULong dspAddress, CORBA::Long dspNumber);
00087   virtual CORBA::ULong dspSingleRead (CORBA::ULong rod, CORBA::ULong dspAddr, CORBA::Long dspNumber);
00088   virtual void dspSingleWrite (CORBA::ULong rod, CORBA::ULong dspAddr, CORBA::ULong val, CORBA::Long dspNumber);
00089   virtual Sct_SctApi::DataBlock * readSlaveDsp (CORBA::ULong rod, CORBA::Short s, CORBA::ULong add, CORBA::ULong words);
00090   virtual CORBA::ULong findModuleSerial (const char * sn);
00091   virtual char * convertToString (CORBA::ULong mid);
00092   virtual CORBA::ULong findModule (CORBA::UShort mur, CORBA::UShort number);
00093   virtual CORBA::ULong findModuleRod (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod, CORBA::ULong channel);
00094   virtual CORBA::ULong findBarrelModule (CORBA::ULong barrel, CORBA::ULong row, CORBA::Short number);
00095   virtual void convertToBarrelModule (CORBA::ULong mid, CORBA::ULong & barrel, CORBA::ULong & row, CORBA::Short & number);
00096   virtual CORBA::ULong findEndcapModule (CORBA::Long disk, CORBA::Long ring, CORBA::Long number);
00097   virtual void convertToEndcapModule (CORBA::ULong mid, CORBA::Long & disk, CORBA::ULong & ring, CORBA::ULong & number);
00098   virtual void getABCDModules (Sct_SctApi::BankType bank);
00099   virtual void getABCDModule (CORBA::ULong mid, Sct_SctApi::BankType bank);
00100   virtual sctConf::ABCDModule getABCDModuleRaw (CORBA::ULong rod, CORBA::ULong slot, Sct_SctApi::BankType bank);
00101  
00102   virtual void setABCDModule (CORBA::ULong mid, const Sct_SctApi::BankList& banks);
00103   virtual void setABCDModules (const Sct_SctApi::BankList& bank);
00104 
00105   virtual void copyABCDModule (CORBA::ULong mid, Sct_SctApi::BankType source, const Sct_SctApi::BankList& to);
00106   virtual void copyABCDModules (Sct_SctApi::BankType source, const Sct_SctApi::BankList& to);
00107   virtual void sendABCDModule (CORBA::ULong mid, Sct_SctApi::BankType bank, CORBA::ULong type);
00108   virtual void sendABCDModules (Sct_SctApi::BankType bank);
00109   virtual void modifyABCDMask (CORBA::ULong mid, const Sct_SctApi::DataBlock & mask);
00110   virtual void modifyABCDTrims (CORBA::ULong mid, const Sct_SctApi::CharBlock & trims);
00111   virtual void modifyABCDRC (CORBA::ULong mid, CORBA::ULong chip, CORBA::UShort index, CORBA::Double p0, CORBA::Double p1, CORBA::Double p2);
00112   virtual void modifyABCDVar (CORBA::ULong typ, CORBA::Double var);
00113   virtual void modifyABCDModuleVar (CORBA::ULong mid, CORBA::ULong typ, CORBA::Double var);
00114   virtual void modifyABCDChipVar (CORBA::ULong mid, CORBA::ULong chip, CORBA::ULong typ, CORBA::Double var);
00115   virtual void modifyABCDVarROD (CORBA::ULong typ, CORBA::Double var, const Sct_SctApi::BankList& bank);
00116   virtual void modifyABCDModuleVarROD (CORBA::ULong mid, CORBA::ULong typ, CORBA::Double var, const Sct_SctApi::BankList& bank);
00117   virtual void modifyBOCParam (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod, CORBA::ULong channel, CORBA::ULong type, CORBA::ULong val);
00118   virtual void lasersOff ();
00119   virtual void timSetFrequency (CORBA::ULong partition, CORBA::ULong crate, CORBA::Double trigFreq, CORBA::Double rstFreq);
00120   virtual void freeTriggers (CORBA::ULong partition, CORBA::ULong crate);
00121   virtual void stopTriggers (CORBA::ULong partition, CORBA::ULong crate);
00122   virtual void timL1A (CORBA::ULong partition, CORBA::ULong crate);
00123   virtual void timCalL1A (CORBA::ULong partition, CORBA::ULong crate, CORBA::Short delay);
00124   virtual CORBA::Short timReadRegister (CORBA::ULong partition, CORBA::ULong crate, CORBA::Short value);
00125   virtual void timWriteRegister (CORBA::ULong partition, CORBA::ULong crate, CORBA::Short reg, CORBA::Short value);
00126   virtual void sendTimTrigger (CORBA::ULong partition, CORBA::ULong crate, Sct_SctApi::Trigger_ptr trig);
00127   virtual void sendTrigger (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod, Sct_SctApi::Trigger_ptr trig);
00128 
00129   virtual void doScan (Sct_SctApi::Scan_ptr thisScan);
00130   virtual void doRawScan (Sct_SctApi::Scan_ptr thisScan, CORBA::Long delay, CORBA::Long width, CORBA::Boolean configure, CORBA::Boolean clockByTwo);
00131   virtual CORBA::Boolean hasFinishedScanning();
00132   virtual void abortScan();
00133 
00134   virtual void printBOCSetup (CORBA::ULong rod);
00135   virtual Sct_SctApi::BOCChannelList * currentBOCSetup (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod);
00136   virtual sctConf::BOCGlobalConfig currentBOCRegisters (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod);
00137   virtual void printABCDModule (CORBA::ULong mid);
00138   virtual void printABCDRodModule (CORBA::ULong mid, Sct_SctApi::BankType bank);
00139   virtual void decodeEvent (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod, CORBA::Short sl, CORBA::Short index, CORBA::Boolean extFlag, CORBA::Boolean errorType);
00140   virtual void rawData (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod, CORBA::Long delay, CORBA::Long units, CORBA::Boolean setMask);
00141   virtual void rawDataWithTrigger (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod, CORBA::Long delay, CORBA::Long units, CORBA::Boolean setMask, Sct_SctApi::Trigger_ptr trig);
00142   virtual void sendL1A (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod);
00143   virtual Sct_SctApi::CharBlock * probe (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod);
00144   virtual Sct_SctApi::CharBlock * probeHarness (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod, CORBA::ULong harness);
00145   virtual Sct_SctApi::CharBlock * probeWithTrigger (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod, Sct_SctApi::Trigger_ptr trig);
00146   virtual Sct_SctApi::CharBlock * probeHarnessWithTrigger (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod, Sct_SctApi::Trigger_ptr trig, CORBA::ULong harness);
00147   virtual Sct_SctApi::CharMatrix * probeScanHarnessWithTrigger (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod, Sct_SctApi::Scan_ptr trig, CORBA::ULong harness);
00148   virtual CORBA::Boolean checkAllModulesProbe (const char * chars);
00149   virtual Sct_SctApi::AutoResultList * autoConfigureScan ();
00150   virtual CORBA::ULong getRodSlot (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod);
00151   virtual void testLinkOutSelect (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod, CORBA::ULong link);
00152   virtual CORBA::ULong testLinkOutRetrieve (CORBA::ULong partition, CORBA::ULong crate, CORBA::ULong rod);
00153   virtual Sct_SctApi::Scan_ptr createScan ();
00154   virtual Sct_SctApi::Scan_ptr getDefaultScan ();
00155   // Next two NOT USED
00156   virtual Sct_SctApi::Trigger_ptr createTrigger ();
00157   // virtual Sct_SctApi::Trigger_ptr getDefaultTrigger ();
00158   virtual Sct_SctApi::ScanList * knownScans ();
00159 
00160  private:
00161   typedef boost::shared_ptr<ScanServer>  SharedScanServer;
00162   boost::shared_ptr<Sct::ApiServerStatusManager> m_assm;
00163   boost::shared_ptr<SctApi::IdiosyncrasyServer> m_idServer;  
00164  
00165  public:
00166   typedef std::list<SharedScanServer> Scans;
00167   Scans scans;
00168 
00169   ScanServer *defaultScan;
00170   TriggerServer *defaultTrigger;
00171 
00172   static SctApiCrateServer *singleton;
00173 
00174   virtual void shutdown();
00175 
00176  protected:
00177   SctApi::SctApi &worker();
00178 
00179   MRSStream mrsStream;
00180   
00181   // NOT NEEDED CORBA::Short ddcSingleTimeout;
00182   // NOT NEEDED CORBA::Short ddcMultipleTimeout;
00183 
00184  private:
00185   SctApi::SctApi& api;
00186 };
00187 
00188 #endif

Generated on Fri Sep 16 18:01:57 2005 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5