00001 #ifndef ROC_AbbBoard 00002 #define ROC_AbbBoard 00003 00004 #include "roc/OpticBoard.h" 00005 00006 namespace roc { 00007 00008 class ReadoutModule; 00009 class AbbFactory; 00010 class AbbDevice; 00011 00012 class AbbBoard : public roc::OpticBoard { 00013 00014 friend class AbbFactory; 00015 friend class AbbDevice; 00016 00017 protected: 00018 AbbDevice* fDev; 00019 ReadoutModule* fReadout; 00020 uint32_t fOpticPath; 00021 00022 void setReadout(ReadoutModule* m) { fReadout = m; } 00023 ReadoutModule* getReadout() { return fReadout; } 00024 00025 bool initAbbBoard(); 00026 00027 public: 00028 00029 AbbBoard(AbbDevice* dev, uint32_t path, base::ClientRole role); 00030 virtual ~AbbBoard(); 00031 00032 // put/get interface part of roc::Board 00033 virtual int operGen(base::OperList& lst, double tmout = 0.); 00034 00035 virtual int invokeDLM(unsigned num, double tmout = 0.); 00036 00037 virtual uint32_t getRocBackendVersion(); 00038 00039 // daq interface part of roc::Board 00040 virtual bool startDaq(); 00041 virtual bool suspendDaq(); 00042 virtual bool stopDaq(); 00043 virtual bool getNextBuffer(void* &buf, unsigned& len, double tmout = 1.); 00044 00045 virtual void setFlushTimeout(double tmout); 00046 00047 virtual int getMsgFormat() const { return roc::formatOptic2; } 00048 }; 00049 00050 } 00051 00052 #endif