Orion
high-rate readout
register.hpp
1 
5 #pragma once
6 
7 #include <string>
8 
9 namespace itk {
10 
18 template<typename IRegMem, typename ICommander>
19 class Register {
20 public:
21  using RegMem = IRegMem;
22  using Commander = ICommander;
23  using reg_t = RegMem::reg_t;
24 
26  virtual ~Register() = default;
27 
31  virtual reg_t get(const RegMem &regmem) const = 0;
32 
36  virtual void set(RegMem &regmem, reg_t value) const = 0;
37 
42  virtual void read(RegMem &regmem, Commander &cmdr) const = 0;
43 
49  virtual void write(RegMem &regmem, Commander &cmdr, reg_t value) const = 0;
50 
52 
55  virtual uint16_t get_addr() const = 0;
56 
59  virtual std::string get_name() const = 0;
60 
63  virtual std::string get_desc() const = 0;
64 
65 }; // Register
66 
67 } // itk
Interface definition for register.
Definition: register.hpp:19
virtual void read(RegMem &regmem, Commander &cmdr) const =0
Write command sequence to read register value from the chip. Does not send commands over e-link.
virtual reg_t get(const RegMem &regmem) const =0
Get register value from the memory.
virtual void write(RegMem &regmem, Commander &cmdr, reg_t value) const =0
Set register value in memory and write commands sequence to modify register value in chip to cmdr buf...
virtual std::string get_desc() const =0
Get register description.
virtual std::string get_name() const =0
Get register name.
virtual ~Register()=default
Default destructor.
virtual void set(RegMem &regmem, reg_t value) const =0
Set register value into the memory.
virtual uint16_t get_addr() const =0
Properties.