Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • bias/daqs/base-daq
1 result
Show changes
Commits on Source (12)
#ifndef BASEDAQ_H_ #ifndef BASEDAQ_H_
#define BASEDAQ_H_ #define BASEDAQ_H_
#include <Base_Monitor.h> #include <Base_Monitor.h>
#include <Base_Protocol.h> #include <Base_Protocol.h>
#include <Base_Archiver.h> #include <Base_Archiver.h>
#include <Base_Provider.h> #include <Base_Provider.h>
#include <Base_Packet.h> #include <Base_Packet.h>
namespace inaf::oasbo::DAQ{ // FORWARD DECLARE
namespace inaf::oasbo::DAQ_observers {
class BaseDAQ_Observer;
}
namespace inaf::oasbo::DAQ {
class BaseDAQ { class BaseDAQ {
public: public:
enum Status { enum Status {
STOP = -1, STOP = -1, READY = 0, IDLE = 1, RUN = 2
READY = 0,
IDLE = 1,
RUN = 2
}; };
protected: protected:
...@@ -25,34 +27,76 @@ protected: ...@@ -25,34 +27,76 @@ protected:
ConnectionProtocols::BaseProtocol *socket; ConnectionProtocols::BaseProtocol *socket;
Archivers::BaseArchiver *archiver; Archivers::BaseArchiver *archiver;
Providers::BaseProvider *provider; Providers::BaseProvider *provider;
Monitors::BaseMonitor *monitor; PacketMonitors::BasePacketMonitor *monitor;
PacketLib::BasePacket *packet; PacketLib::BasePacket *packet;
std::vector<inaf::oasbo::DAQ_observers::BaseDAQ_Observer*> observers;
public: public:
void setProtocol(ConnectionProtocols::BaseProtocol &socket){this->socket = &socket;} void setProtocol(ConnectionProtocols::BaseProtocol &socket) {
void setArchiver(Archivers::BaseArchiver &archiver){this->archiver = &archiver;} this->socket = &socket;
void setProvider(Providers::BaseProvider &provider){this->provider = &provider;} }
void setMonitor(Monitors::BaseMonitor &monitor){this->monitor = &monitor;} void setArchiver(Archivers::BaseArchiver &archiver) {
void setPacket(PacketLib::BasePacket &packet){this->packet = &packet;} this->archiver = &archiver;
void setCurrentState(Status currentState){this->currentState = currentState;} }
void setNextState(Status nextState){this->nextState = nextState;} void setProvider(Providers::BaseProvider &provider) {
void setChangeStateFlag(bool flag){this->changeStateFlag = flag;} this->provider = &provider;
}
void setMonitor(PacketMonitors::BasePacketMonitor &monitor) {
this->monitor = &monitor;
}
void setPacket(PacketLib::BasePacket &packet) {
this->packet = &packet;
}
void setCurrentState(Status currentState) {
this->currentState = currentState;
}
void setNextState(Status nextState) {
this->nextState = nextState;
}
void setChangeStateFlag(bool flag) {
this->changeStateFlag = flag;
}
void registerObserver(inaf::oasbo::DAQ_observers::BaseDAQ_Observer *observer) {
observers.push_back(observer);
}
void removeObserver(inaf::oasbo::DAQ_observers::BaseDAQ_Observer *observer) {
observers.erase(
std::remove(observers.begin(), observers.end(), observer),
observers.end());
}
ConnectionProtocols::BaseProtocol * getSocketPtr(){return this->socket;} ConnectionProtocols::BaseProtocol* getSocketPtr() {
Archivers::BaseArchiver *getArchiverPtr(){return this->archiver;} return this->socket;
Providers::BaseProvider * getProviderPtr(){return this->provider;} }
Monitors::BaseMonitor * getMonitorPtr(){return this->monitor;} Archivers::BaseArchiver* getArchiverPtr() {
PacketLib::BasePacket * getPacketPrt(){return this->packet;} return this->archiver;
Status getCurrentState(){return this->currentState;} }
Status getNextState(){return this->nextState;} Providers::BaseProvider* getProviderPtr() {
int getChangeStateFlag(){return this->changeStateFlag;} return this->provider;
}
PacketMonitors::BasePacketMonitor* getMonitorPtr() {
return this->monitor;
}
PacketLib::BasePacket* getPacketPrt() {
return this->packet;
}
Status getCurrentState() {
return this->currentState;
}
Status getNextState() {
return this->nextState;
}
int getChangeStateFlag() {
return this->changeStateFlag;
}
virtual void init() = 0; virtual void start() = 0;
virtual void start(Status initialState) = 0;
virtual void stop() = 0; virtual void stop() = 0;
virtual void switchState(const Status) = 0; virtual void switchState(const Status) = 0;
virtual int deliverPacket() = 0; virtual int deliverPacket() = 0;
virtual ~BaseDAQ(){ virtual ~BaseDAQ() {
delete socket; delete socket;
delete provider; delete provider;
delete archiver; delete archiver;
......
/*
* Base_DAQ_Observer.h
*
* Created on: Apr 5, 2023
* Author: valerio
*/
#pragma once
#include <Base_DAQ.h>
namespace inaf::oasbo::DAQ_observers{
class BaseDAQ_Observer{
protected:
inaf::oasbo::DAQ::BaseDAQ * dataAcquisition;
public:
BaseDAQ_Observer(inaf::oasbo::DAQ::BaseDAQ * dataAcquisition) {
this->dataAcquisition = dataAcquisition;
this->dataAcquisition->registerObserver(this);
}
virtual ~BaseDAQ_Observer() {
this->dataAcquisition->removeObserver(this);
}
virtual void updatePacketStats() = 0;
virtual void updateArchiverStats() = 0;
virtual void updateProviderStats() = 0;
virtual void updateReceiverStats() = 0;
};
}
...@@ -5,20 +5,33 @@ ...@@ -5,20 +5,33 @@
* *
*/ */
#ifndef BASEMONITOR_H_ #pragma once
#define BASEMONITOR_H_
#include <string> #include <string>
#include <Base_Packet.h> #include <Base_Packet.h>
#include <map>
namespace inaf::oasbo::Monitors{ namespace inaf::oasbo::PacketMonitors{
class BaseMonitor{ class BasePacketMonitor{
protected:
std::map<std::string, std::string> stats;
public: public:
virtual void monit(PacketLib::BasePacket &) = 0; virtual void monit(PacketLib::BasePacket &) = 0;
virtual void printStats()=0; virtual void printStats()=0;
virtual ~BaseMonitor() = default; virtual void reset() = 0;
virtual std::map<std::string, std::string> getStatsMap() const { return stats;}
std::optional<std::string> getStat(std::string stat) const {
try {
return this->stats.at(stat);
} catch (const std::out_of_range &) {
std::cerr << "No stat with name " << stat << std::endl;
return std::nullopt;
}
}
virtual ~BasePacketMonitor() = default;
}; };
} }
#endif /* BASEWRITER_H_ */