Orion
high-rate readout
chip.hpp
1 
5 #pragma once
6 
7 #include "itk/types.hpp"
8 #include "itk/fec/procdefs.hpp"
9 
10 
11 namespace itk {
12 
18 template<typename IField>
19 class Chip : public IField::RegMem {
20 public:
21  using Field = IField;
22  using RegMem = IField::RegMem;
23  using Register = IField::Register;
24  using Commander = IField::Commander;
25  using reg_t = IField::reg_t;
26  using fld_t = IField::fld_t;
27 
29 
34  virtual const Register* find_reg(uint16_t addr) const = 0;
35  virtual const Register* find_reg(const std::string& name) const = 0;
36 
42  virtual reg_t get_reg(uint16_t addr) const = 0;
43  virtual reg_t get_reg(const Register &reg) const = 0;
44  virtual reg_t get_reg(const std::string& name) const = 0;
45 
51  virtual void set_reg(uint16_t addr, reg_t value) = 0;
52  virtual void set_reg(const Register &reg, reg_t value) = 0;
53  virtual void set_reg(const std::string& name, reg_t value) = 0;
54 
60  virtual void read_reg(uint16_t addr) = 0;
61  virtual void read_reg(const Register &reg) = 0;
62  virtual void read_reg(const std::string& name) = 0;
63 
70  virtual void write_reg(uint16_t addr, reg_t value) = 0;
71  virtual void write_reg(const Register &reg, reg_t value) = 0;
72  virtual void write_reg(const std::string& name, reg_t value) = 0;
73 
74 
76 
80  virtual const Field* find_fld(const std::string& name) const = 0;
81 
86  virtual fld_t get_fld(const Field &fld) const = 0;
87  virtual fld_t get_fld(const std::string& name) const = 0;
88 
93  virtual void set_fld(const Field &fld, fld_t value) = 0;
94  virtual void set_fld(const std::string& name, fld_t value) = 0;
95 
100  virtual void read_fld(const Field &fld) = 0;
101  virtual void read_fld(const std::string& name) = 0;
102 
108  virtual void write_fld(const Field &fld, fld_t value) = 0;
109  virtual void write_fld(const std::string& name, fld_t value) = 0;
110 
112  virtual void configure() = 0;
113 
115  virtual void send() = 0;
116 
117 }; // Chip
118 
119 } // itk
Interface definition for chip.
Definition: chip.hpp:19
virtual void read_reg(uint16_t addr)=0
Write command sequence to Commander buffer to read register value from the chip, does not send comman...
virtual void set_fld(const Field &fld, fld_t value)=0
Set field value in memory by field name or reference. Does not send any commands to chip.
virtual void write_reg(uint16_t addr, reg_t value)=0
Set register value in memory and appends commands sequence to modify register value in chip to Comman...
virtual void set_reg(uint16_t addr, reg_t value)=0
Set register value in memory by register name, address or reference. Does not send any commands to ch...
virtual void read_fld(const Field &fld)=0
Write command sequence to Commander buffer to read register value from the chip, does not send comman...
virtual void write_fld(const Field &fld, fld_t value)=0
Set field value in memory and appends commands sequence to modify field value in chip to Commander bu...
virtual reg_t get_reg(uint16_t addr) const =0
Get register value from the memory by register name, address or reference.
virtual const Field * find_fld(const std::string &name) const =0
Field methods.
virtual void configure()=0
Configures chip, actually sends command over e-link via Commander.
virtual void send()=0
Sends data accumulated in command buffer over the e-link.
virtual fld_t get_fld(const Field &fld) const =0
Get field value from the memory by field name or reference.
virtual const Register * find_reg(uint16_t addr) const =0
Register methods.
Common types and constants definitions.