pflib v3.10.0-1-geaf20b9
Pretty Fine HGCROC Interaction Library
Loading...
Searching...
No Matches
I2C.h
1#ifndef pflib_lpgbt_I2C_h_included
2#define pflib_lpgbt_I2C_h_included 1
3
4#include "pflib/I2C.h"
5#include "pflib/lpGBT.h"
6
7namespace pflib {
8namespace lpgbt {
9
11class I2C : public ::pflib::I2C {
12 public:
13 I2C(lpGBT& lpGBT, int ibus);
14 virtual void set_bus_speed(int speed = 100);
15 virtual int get_bus_speed();
16 virtual void write_byte(uint8_t i2c_dev_addr, uint8_t data);
17 virtual uint8_t read_byte(uint8_t i2c_dev_addr);
19 uint8_t i2c_dev_addr, const std::vector<uint8_t>& wdata, int nread = 0);
20
21 private:
22 lpGBT& lpgbt_;
23 int ibus_;
24};
25
28 public:
29 I2CwithMux(lpGBT& lpGBT, int ibus, uint8_t muxaddr, uint8_t tochoose)
30 : ::pflib::lpgbt::I2C{lpGBT, ibus}, muxaddr_{muxaddr}, wval_{tochoose} {}
31
32 virtual void write_byte(uint8_t i2c_dev_addr, uint8_t data);
33 virtual uint8_t read_byte(uint8_t i2c_dev_addr);
35 uint8_t i2c_dev_addr, const std::vector<uint8_t>& wdata, int nread = 0);
36
37 private:
38 uint8_t muxaddr_, wval_;
39};
40} // namespace lpgbt
41} // namespace pflib
42
43#endif // pflib_lpgbt_I2C_h_included
Base class which encapsulates the I2C interface, represents a single bus.
Definition I2C.h:18
Class which provides an interface with an lpGBT ASIC as mounted on an LDMX mezzanine.
Definition lpGBT.h:53
Synchronous I2C implementation.
Definition I2C.h:11
virtual uint8_t read_byte(uint8_t i2c_dev_addr)
Read a single byte using the efficient interface.
Definition I2C.cxx:19
virtual int get_bus_speed()
Get the speed for the bus in kbps.
Definition I2C.cxx:13
virtual void set_bus_speed(int speed=100)
Set the speed for the bus in kbps.
Definition I2C.cxx:11
virtual std::vector< uint8_t > general_write_read(uint8_t i2c_dev_addr, const std::vector< uint8_t > &wdata, int nread=0)
Carry out a write of zero or more bytes followed a by a read of zero or more bytes.
Definition I2C.cxx:25
virtual void write_byte(uint8_t i2c_dev_addr, uint8_t data)
Write a single byte using the efficient interface, and wait for completion.
Definition I2C.cxx:15
Synchronous I2C implementation.
Definition I2C.h:27
virtual uint8_t read_byte(uint8_t i2c_dev_addr)
Read a single byte using the efficient interface.
Definition I2C.cxx:48
virtual std::vector< uint8_t > general_write_read(uint8_t i2c_dev_addr, const std::vector< uint8_t > &wdata, int nread=0)
Carry out a write of zero or more bytes followed a by a read of zero or more bytes.
Definition I2C.cxx:52
virtual void write_byte(uint8_t i2c_dev_addr, uint8_t data)
Write a single byte using the efficient interface, and wait for completion.
Definition I2C.cxx:44
This version of the fast control code interfaces with the CMS Fast control library which can be contr...
Definition Backend.cxx:3