#ifndef BASEDAQ_H_ #define BASEDAQ_H_ #include #include #include #include #include namespace inaf::oasbo::DAQ{ class BaseDAQ { public: enum Status { STOP = -1, READY = 0, IDLE = 1, RUN = 2 }; protected: Status currentState; Status nextState; bool changeStateFlag = false; ConnectionProtocols::BaseProtocol *socket; Archivers::BaseArchiver *archiver; Providers::BaseProvider *provider; Monitors::BaseMonitor *monitor; public: void setProtocol(ConnectionProtocols::BaseProtocol &socket){this->socket = &socket;} void setArchiver(Archivers::BaseArchiver &archiver){this->archiver = &archiver;} void setProvider(Providers::BaseProvider &provider){this->provider = &provider;} void setMonitor(Monitors::BaseMonitor &monitor){this->monitor = &monitor;} void setCurrentState(Status currentState){this->currentState = currentState;} void setNextState(Status nextState){this->nextState = nextState;} void setChangeStateFlag(bool flag){this->changeStateFlag = flag;} ConnectionProtocols::BaseProtocol * getSocketPtr(){return this->socket;} Archivers::BaseArchiver *getArchiverPtr(){return this->archiver;} Providers::BaseProvider * getProviderPtr(){return this->provider;} Monitors::BaseMonitor * getMonitorPtr(){return this->monitor;} Status getCurrentState(){return this->currentState;} Status getNextState(){return this->nextState;} int getChangeStateFlag(){return this->changeStateFlag;} virtual void init() = 0; virtual void start(Status initialState,PacketLib::BasePacket &) = 0; virtual void stop() = 0; virtual void switchState(const Status) = 0; virtual int deliverPacket(PacketLib::BasePacket &) = 0; virtual ~BaseDAQ(){ delete socket; delete provider; delete archiver; delete monitor; } }; } #endif /* BASEDAQ_H_ */