Orion
high-rate readout
ic_master.hpp
1 // ICMaster interface
2 
3 #pragma once
4 
5 #include <span>
6 #include <vector>
7 #include "ctrl/elink_client.hpp"
8 
9 namespace itk::lpgbt::intf {
10 
11 struct ICReply {
12  uint16_t i2c_addr;
13  uint16_t mem_addr;
14  uint16_t mem_size;
15  uint8_t command;
16  uint8_t parity;
17  uint8_t status;
18  std::vector<uint8_t> data;
19 };
20 
21 
22 class ICMaster : public I2CBus {
23 public:
24 
25  //ICMaster(ElinkClient &ctrl, uint8_t lpgbt_ver);
26 
27  virtual void dump_reply(std::vector<uint8_t> &reply) = 0;
28  virtual struct ICReply parse_reply(std::span<uint8_t> &reply) = 0;
29 
30  bool wait_reply(uint timeout = 0);
31 
32  // properties
33  virtual ElinkClient& get_ctrl() = 0;
34  virtual uint8_t get_lpgbt_ver() = 0;
35 
36  virtual uint32_t get_timeout() = 0;
37  virtual set_timeout(uint timeout) = 0;
38 
39 };
40 
41 } // itk::lpgbt::intf
Definition: elink_client.hpp:9
Definition: i2c_com.hpp:7
Definition: ic_master.hpp:22
Definition: ic_master.hpp:11