Orion
high-rate readout
detector.hpp
1 
5 #pragma once
6 
7 #include "itk/fec/frontend.hpp"
8 #include "hwc/controller.hpp"
9 
10 namespace itk {
11 
19 template<typename IFrontEnd>
20 class Detector {
21 public:
22  using FrontEnd = IFrontEnd;
23  using Register = IFrontEnd::Register;
24  using Field = IFrontEnd::Field;
25  using fld_t = Field::fld_t;
26 
27  virtual ~Detector() = default;
28 
29  virtual void write(uint16_t cmd) = 0;
30  virtual void send() = 0;
31 
32  virtual void write(std::span<const uint16_t> cmds) = 0;
33  virtual void send(std::span<const uint16_t> cmds) = 0;
34 
35  virtual void delay_idle(uint32_t delay) = 0;
36  virtual void delay_msec(double delay) = 0;
37 
38  virtual void write_fld(const Field& fld, fld_t value) = 0;
39  virtual void write_fld(const std::string& name, fld_t value) = 0;
40 
41  virtual void add_fec(const std::string& path, FrontEnd &fec) = 0;
42 
43  virtual void select(const std::string& filter) = 0;
44  virtual void connect() = 0;
45 
46  virtual void reset_all() = 0;
47  virtual void configure() = 0;
48 
50  virtual std::vector<FrontEnd*>& get_fecs() = 0;
51 
52  virtual hwc::Controller* get_ctrl() = 0;
53  virtual void set_ctrl(hwc::Controller* ctrl) = 0;
54 }; // Detector
55 
56 } // itk
Controller common interface.
Definition: controller.hpp:24
Interface definition for Detector. Detector class contains list of front-ends and allows to send broa...
Definition: detector.hpp:20
virtual std::vector< FrontEnd * > & get_fecs()=0
Properties.
Hardware controller.