Orion
high-rate readout
chip_abc.hpp
Go to the documentation of this file.
1 
5 #pragma once
6 
7 #include "itk/factory.hpp"
8 #include "itk/fec/regmem.hpp"
9 #include "itk/fec/register.hpp"
10 #include "itk/fec/field.hpp"
11 #include "itk/fec/chip.hpp"
12 
13 #include "itk/star/commander.hpp"
14 
15 
16 namespace itk::star {
17 
18 namespace abc {
19 
20 using reg_t = uint32_t;
21 using fld_t = uint64_t;
22 
27 class RegMem : public itk::RegMem<reg_t> {
28 public:
29  static constexpr uint8_t broad_id = 0xF;
30 
31  // TrimDAC
32  virtual void set_trim(uint16_t idx, uint8_t val) = 0;
33  virtual uint8_t get_trim(uint16_t idx) = 0;
34 
35  // MaskInput
36  virtual void set_mask(uint16_t idx, bool val) = 0;
37  virtual bool get_mask(uint16_t idx) = 0;
38 
39  // Calibration Enable
40  virtual void set_calen(uint16_t idx, bool val) = 0;
41  virtual bool get_calen(uint16_t idx) = 0;
42 
43  // properties
44  virtual uint8_t get_abc_id() = 0;
45  virtual uint8_t get_hcc_id() = 0;
46 
47 }; // RegMem
48 
49 
53 
58 class Chip : public itk::Chip<Field> {
59 public:
60 
61  struct Factory : itk::Factory<Chip> {
62  virtual Chip* operator()(uint8_t abc_id) = 0;
63  };
64 
65  virtual void update_trim() = 0;
66  virtual void update_mask() = 0;
67  virtual void update_calen() = 0;
68 
69 }; // Chip
70 
71 } // abc
72 
73 
74 namespace abc1 {
75 
76  using Commander = abc::Commander;
77  using Register = abc::Register;
78  using Field = abc::Field;
79  using Chip = abc::Chip;
80 
81  #include "itk/star/abc1/reglist_abc1.hpp"
82  #include "itk/star/abc1/fldlist_abc1.hpp"
83  #include "itk/fec/chpmap.hpp"
84 
85 } // abc1
86 
87 } // itk::star
Interface definition for chip.
Definition: chip.hpp:19
Templated implementation of Factory class.
Definition: factory.hpp:35
Interface definition for field.
Definition: field.hpp:16
Interface definition for register memory.
Definition: concepts.hpp:31
Interface definition for register.
Definition: register.hpp:19
Star Commander interface.
Definition: commander.hpp:16
Chip interface for ABCstar.
Definition: chip_abc.hpp:58
Register memory for ABCstar.
Definition: chip_abc.hpp:27
Factory framework.
Commander interface for Star.
Definition: chip_abc.hpp:61