File DummyFEBSlowcontrolInterface.h
File List > libmudaq > DummyFEBSlowcontrolInterface.h
Go to the documentation of this file
#ifndef DUMMYFEBSLOWCONTROLINTERFACE_H
#define DUMMYFEBSLOWCONTROLINTERFACE_H
#include <random>
#include <thread>
#include <vector>
#include "FEBSlowcontrolInterface.h"
using std::thread;
using std::vector;
class DummyFEBSlowcontrolInterface : public FEBSlowcontrolInterface {
public:
DummyFEBSlowcontrolInterface(mudaq::MudaqDevice& mdev /*,Add midas connection here */);
virtual ~DummyFEBSlowcontrolInterface();
// There should only be one SC interface, forbid copy and assignment
DummyFEBSlowcontrolInterface() = delete;
DummyFEBSlowcontrolInterface(const FEBSlowcontrolInterface&) = delete;
DummyFEBSlowcontrolInterface& operator=(const FEBSlowcontrolInterface&) = delete;
// We use the () operator to simulate changing values in the SC registers
// using a separate thread
void operator()();
virtual int FEB_write(uint32_t febIDx, const uint32_t startaddr, const vector<uint32_t>& data,
const bool nonincrementing = false, const bool broadcast = false,
const uint32_t MSTR_bar = 0) override;
virtual int FEB_read(uint32_t febIDx, const uint32_t startaddr, vector<uint32_t>& data,
const bool nonincrementing = false) override;
virtual void FEBsc_resetMain() override {}
virtual void FEBsc_resetSecondary() override {}
virtual int FEBsc_NiosRPC(uint32_t febIDx, uint16_t command,
vector<vector<uint32_t>> payload_chunks) override;
protected:
vector<vector<uint32_t>> scregs;
thread t;
uint32_t cnt_when_to_trigger_error = 100;
uint32_t cnt_of_reads = 0;
uint32_t cnt_of_writes = 0;
uint32_t cnt_of_rpcs = 0;
uint32_t MAX_LINKS_PER_SWITCHINGBOARD = 8;
};
#endif // DUMMYFEBSLOWCONTROLINTERFACE_H