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