QElePPortInterface.hh

00001 /*
00002 * APOLLO: A complete DAQ and Online Data Analysis Framework for Cuore
00003 * 
00004 * A.Giachero created 15/02/07 <Andrea.Giachero@ge.infn.it>
00005 *
00006 * $Id: $
00007 * $Revision: $
00008 *
00009 * Class QElePPortInterface: Interface to control CUORE Electronic 
00010 *                           by Parallel Port 
00011 *
00012 */
00013 
00014 #ifndef QELE_PPORT_INTERFACE_HH
00015 #define QELE_PPORT_INTERFACE_HH
00016 
00017 
00018 // C/C++ includes
00019 #include <string>
00020 
00021 // Apollo Includes
00022 #include "QCuore.hh"
00023 #include "QError.hh"
00024 #include "QEleBaseInterface.hh"
00025 #include "QPPortInterface.hh"
00026 
00027 class QElePPortInterface: public QEleBaseInterface
00028 {
00029 public:
00030 
00031 
00032   // ctor
00033   QElePPortInterface(unsigned long PPortAddress);
00034   
00035   // dtor
00036   virtual ~QElePPortInterface();
00037 
00038 
00039   // Open connection with electronic
00040   virtual void Open();
00041 
00042   // Close connection with electronic
00043   virtual void Close();
00044 
00045   // Check if connection is opened
00046   const bool IsOpen() const {return fIsOpen;}
00047 
00048 
00049   // Front-End Write/Read
00050   virtual void WriteFrontEnd(const QEleLib::QEleAddress &Add, size_t Reg, char  Data);
00051   virtual void ReadFrontEnd (const QEleLib::QEleAddress &Add, size_t Reg, char& Data);
00052   
00053   // Bessel Write/Read
00054   virtual void WriteBessel(const QEleLib::QEleAddress &Add, char  Data);
00055   virtual void ReadBessel (const QEleLib::QEleAddress &Add, char& Data);
00056 
00057   /*
00058   // Rele Write/Read
00059   virtual void WriteRele(int Controller, char Data);
00060   virtual void ReadRele (int Controller, char Data);
00061   */
00062 
00063 
00064   // Pulser Write/Read
00065   virtual void WritePulserAttenuation(const QEleLib::QEleAddress &Add, char  Attenuation);
00066   virtual void ReadPulserAttenuation (const QEleLib::QEleAddress &Add, char& Attenuation);
00067   virtual void WritePulserStatus(const QEleLib::QEleAddress &Add, char  Time, char  LowDAC, char  Status);
00068   virtual void ReadPulserStatus (const QEleLib::QEleAddress &Add, char& Time, char& LowDAC, char& Status);
00069   
00070   
00071   // Error Handling
00072   virtual const bool IsError()               const {return fIsError;}
00073   virtual const std::string& GetErrorString()const {return fErrorString;}
00074   virtual const QError_ GetQErrorCode()      const {return fQErrorCode;}
00075 
00076   
00077   // Get Parallel Port Address
00078   inline const unsigned long GetPPortAddress() const {return fPPortAddress;}
00079 
00080   
00081 protected:
00082 
00083   
00084 private:
00085 
00086   //
00087   bool fIsOpen;
00088   
00089   // Variables for error handling
00090   bool        fIsError;
00091   std::string fErrorString;
00092   QError_     fQErrorCode;
00093 
00094   // Parallel Port Address
00095   unsigned long fPPortAddress;
00096 
00097   // Reset Error Handling Variables
00098   void ErrorReset();
00099 
00100   // Decode Error
00101   bool DecodeError(int Code);
00102 
00103 };
00104 
00105 #endif // QELE_PPORT_INTERFACE_HH
00106 

Generated on Fri Mar 6 13:40:39 2009 for CUORE Software by  doxygen 1.5.1