Orion
high-rate readout
i2c_com.hpp
1 // Interface for I2C communication
2 
3 #pragma once
4 
5 namespace itk::lpgbt::intf {
6 
7 class I2CBus {
8 public:
9 
10  //ICMaster(FelixController &ctrl, uint8_t lpgbt_ver);
11 
12  virtual void reset() = 0;
13 
14  virtual void write(uint16_t i2c_addr, uint16_t mem_addr, const std::span<uint8_t> data) = 0;
15  virtual void read(uint16_t i2c_addr, uint16_t mem_addr, uint16_t size) = 0;
16 
17  virtual void send() = 0;
18 };
19 
20 
21 class I2CCom {
22 public:
23 
24  //I2CCom(I2CMaster &i2c_bus, uint8_t i2c_addr)
25  ~I2CCom() = default;
26 
27  virtual void reset() = 0;
28 
29  virtual std::vector<uint8_t> read(uint16_t addr, uint16_t size) = 0;
30  virtual void write(uint16_t addr, const std::vector<uint8_t> &data) = 0;
31 
32  virtual uint8_t read_reg(uint16_t addr) = 0;
33  virtual void write_reg(uint16_t addr, uint8_t value) = 0;
34 
35  // properties
36  virtual I2CBus &get_i2c_bus() = 0;
37 
38  virtual uint8_t get_i2c_addr() = 0;
39  virtual void set_i2c_addr(uint8_t i2c_addr) = 0;
40 
41  virtual uint32_t get_timeout() = 0;
42  virtual set_timeout(uint timeout) = 0;
43 
44 };
45 
46 } // itk::lpgbt::intf
Definition: i2c_com.hpp:7
Definition: i2c_com.hpp:21
uint16_t size
Definition: fragheader.hpp:5