DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
I2CSlave.hpp
Go to the documentation of this file.
1
21#ifndef TIMING_INCLUDE_TIMING_I2CSLAVE_HPP_
22#define TIMING_INCLUDE_TIMING_I2CSLAVE_HPP_
23
24#include "TimingIssues.hpp"
25
26#include "ers/Issue.hpp"
27
28// uHal Headers
29#include "uhal/DerivedNode.hpp"
30
31#include <boost/core/noncopyable.hpp>
32
33#include <string>
34#include <vector>
35
36namespace dunedaq {
37namespace timing {
38
39class I2CMasterNode;
40
41class I2CSlave : boost::noncopyable
42{
43
44public:
45 virtual ~I2CSlave();
46
47 uint8_t get_i2c_address() const { return m_i2c_device_address; } // NOLINT(build/unsigned)
48
50 uint8_t read_i2c(uint32_t i2c_device_address, uint32_t i2c_reg_address) const; // NOLINT(build/unsigned)
51 uint8_t read_i2c(uint32_t i2c_reg_address) const; // NOLINT(build/unsigned)
52
53 void write_i2c(uint32_t i2c_device_address, // NOLINT(build/unsigned)
54 uint32_t i2c_reg_address, // NOLINT(build/unsigned)
55 uint8_t data, // NOLINT(build/unsigned)
56 bool send_stop = true) const;
57 void write_i2c(uint32_t i2c_reg_address, uint8_t data, bool send_stop = true) const; // NOLINT(build/unsigned)
58
59 std::vector<uint8_t> read_i2cArray(uint32_t i2c_device_address, // NOLINT(build/unsigned)
60 uint32_t i2c_reg_address, // NOLINT(build/unsigned)
61 uint32_t number_of_words) const; // NOLINT(build/unsigned)
62 std::vector<uint8_t> read_i2cArray(uint32_t i2c_reg_address, // NOLINT(build/unsigned)
63 uint32_t number_of_words) const; // NOLINT(build/unsigned)
64
65 void write_i2cArray(uint32_t i2c_device_address, // NOLINT(build/unsigned)
66 uint32_t i2c_reg_address, // NOLINT(build/unsigned)
67 std::vector<uint8_t> data, // NOLINT(build/unsigned)
68 bool send_stop = true) const;
69 void write_i2cArray(uint32_t i2c_reg_address, // NOLINT(build/unsigned)
70 std::vector<uint8_t> data, // NOLINT(build/unsigned)
71 bool send_stop = true) const;
72
73 std::vector<uint8_t> read_i2cPrimitive(uint32_t number_of_bytes) const; // NOLINT(build/unsigned)
74 void write_i2cPrimitive(const std::vector<uint8_t>& data, bool send_stop = true) const; // NOLINT(build/unsigned)
75
76 bool ping() const;
77
78 std::string get_master_id() const;
79
80protected:
81 // Private constructor, accessible to I2CMaster
82 I2CSlave(const I2CMasterNode* i2c_master, uint8_t i2c_device_address); // NOLINT(build/unsigned)
83
84private:
86
87 // slave address
88 uint8_t m_i2c_device_address; // NOLINT(build/unsigned)
89
90 friend class I2CMasterNode;
91};
92
93} // namespace timing
94} // namespace dunedaq
95
96#endif // TIMING_INCLUDE_TIMING_I2CSLAVE_HPP_
OpenCode I2C interface to a ipbus node.
uint8_t get_i2c_address() const
Definition I2CSlave.hpp:47
const I2CMasterNode * m_i2c_master
Definition I2CSlave.hpp:85
void write_i2cArray(uint32_t i2c_device_address, uint32_t i2c_reg_address, std::vector< uint8_t > data, bool send_stop=true) const
Definition I2CSlave.cpp:99
uint8_t read_i2c(uint32_t i2c_device_address, uint32_t i2c_reg_address) const
comodity functions
Definition I2CSlave.cpp:46
std::vector< uint8_t > read_i2cPrimitive(uint32_t number_of_bytes) const
Definition I2CSlave.cpp:121
std::vector< uint8_t > read_i2cArray(uint32_t i2c_device_address, uint32_t i2c_reg_address, uint32_t number_of_words) const
Definition I2CSlave.cpp:81
void write_i2cPrimitive(const std::vector< uint8_t > &data, bool send_stop=true) const
Definition I2CSlave.cpp:129
std::string get_master_id() const
Definition I2CSlave.cpp:145
void write_i2c(uint32_t i2c_device_address, uint32_t i2c_reg_address, uint8_t data, bool send_stop=true) const
Definition I2CSlave.cpp:62
I2CSlave(const I2CMasterNode *i2c_master, uint8_t i2c_device_address)
Definition I2CSlave.cpp:33
Including Qt Headers.