DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
I2CSlave.cpp
Go to the documentation of this file.
1
14#include "timing/I2CSlave.hpp"
15
16#include "ers/ers.hpp"
19#include "timing/toolbox.hpp"
20
21#include <boost/lexical_cast.hpp>
22#include <boost/range/adaptor/map.hpp>
23#include <boost/range/algorithm/copy.hpp>
24#include <boost/unordered/unordered_map.hpp>
25
26#include <string>
27#include <vector>
28
29namespace dunedaq {
30namespace timing {
31
32//-----------------------------------------------------------------------------
33I2CSlave::I2CSlave(const I2CMasterNode* i2c_master, uint8_t i2c_device_address) // NOLINT(build/unsigned)
34 : m_i2c_master(i2c_master)
35 , m_i2c_device_address(i2c_device_address)
36{}
37//-----------------------------------------------------------------------------
38
39//-----------------------------------------------------------------------------
41//-----------------------------------------------------------------------------
42
43// comodity functions
44//-----------------------------------------------------------------------------
45uint8_t // NOLINT(build/unsigned)
46I2CSlave::read_i2c(uint32_t i2c_device_address, uint32_t i2c_reg_address) const // NOLINT(build/unsigned)
47{
48 return m_i2c_master->read_i2c(i2c_device_address, i2c_reg_address);
49}
50//-----------------------------------------------------------------------------
51
52//-----------------------------------------------------------------------------
53uint8_t // NOLINT(build/unsigned)
54I2CSlave::read_i2c(uint32_t i2c_reg_address) const // NOLINT(build/unsigned)
55{
56 return m_i2c_master->read_i2c(m_i2c_device_address, i2c_reg_address);
57}
58//-----------------------------------------------------------------------------
59
60//-----------------------------------------------------------------------------
61void
62I2CSlave::write_i2c(uint32_t i2c_device_address, // NOLINT(build/unsigned)
63 uint32_t i2c_reg_address, // NOLINT(build/unsigned)
64 uint8_t data, // NOLINT(build/unsigned)
65 bool send_stop) const
66{
67 m_i2c_master->write_i2c(i2c_device_address, i2c_reg_address, data, send_stop);
68}
69//-----------------------------------------------------------------------------
70
71//-----------------------------------------------------------------------------
72void
73I2CSlave::write_i2c(uint32_t i2c_reg_address, uint8_t data, bool send_stop) const // NOLINT(build/unsigned)
74{
75 m_i2c_master->write_i2c(m_i2c_device_address, i2c_reg_address, data, send_stop);
76}
77//-----------------------------------------------------------------------------
78
79//-----------------------------------------------------------------------------
80std::vector<uint8_t> // NOLINT(build/unsigned)
81I2CSlave::read_i2cArray(uint32_t i2c_device_address, // NOLINT(build/unsigned)
82 uint32_t i2c_reg_address, // NOLINT(build/unsigned)
83 uint32_t number_of_words) const // NOLINT(build/unsigned)
84{
85 return m_i2c_master->read_i2cArray(i2c_device_address, i2c_reg_address, number_of_words);
86}
87//-----------------------------------------------------------------------------
88
89//-----------------------------------------------------------------------------
90std::vector<uint8_t> // NOLINT(build/unsigned)
91I2CSlave::read_i2cArray(uint32_t i2c_reg_address, uint32_t number_of_words) const // NOLINT(build/unsigned)
92{
93 return m_i2c_master->read_i2cArray(m_i2c_device_address, i2c_reg_address, number_of_words);
94}
95//-----------------------------------------------------------------------------
96
97//-----------------------------------------------------------------------------
98void
99I2CSlave::write_i2cArray(uint32_t i2c_device_address, // NOLINT(build/unsigned)
100 uint32_t i2c_reg_address, // NOLINT(build/unsigned)
101 std::vector<uint8_t> data, // NOLINT(build/unsigned)
102 bool send_stop) const
103{
104 m_i2c_master->write_i2cArray(i2c_device_address, i2c_reg_address, data, send_stop);
105}
106//-----------------------------------------------------------------------------
107
108//-----------------------------------------------------------------------------
109void
110I2CSlave::write_i2cArray(uint32_t i2c_reg_address, // NOLINT(build/unsigned)
111 std::vector<uint8_t> data, // NOLINT(build/unsigned)
112 bool send_stop) const
113{
114 m_i2c_master->write_i2cArray(m_i2c_device_address, i2c_reg_address, data, send_stop);
115}
116//-----------------------------------------------------------------------------
117
118// comodity functions
119//-----------------------------------------------------------------------------
120std::vector<uint8_t> // NOLINT(build/unsigned)
121I2CSlave::read_i2cPrimitive(uint32_t number_of_bytes) const // NOLINT(build/unsigned)
122{
123 return m_i2c_master->read_i2cPrimitive(m_i2c_device_address, number_of_bytes);
124}
125//-----------------------------------------------------------------------------
126
127//-----------------------------------------------------------------------------
128void
129I2CSlave::write_i2cPrimitive(const std::vector<uint8_t>& data, bool send_stop) const // NOLINT(build/unsigned)
130{
131 m_i2c_master->write_i2cPrimitive(m_i2c_device_address, data, send_stop);
132}
133//-----------------------------------------------------------------------------
134
135//-----------------------------------------------------------------------------
136bool
138{
140}
141//-----------------------------------------------------------------------------
142
143//-----------------------------------------------------------------------------
144std::string
146{
147 return m_i2c_master->getId();
148}
149//-----------------------------------------------------------------------------
150
151} // namespace timing
152} // namespace dunedaq
virtual void write_i2c(uint8_t i2c_device_address, uint32_t i2c_reg_address, uint8_t data, bool send_stop=true) const
virtual void write_i2cArray(uint8_t i2c_device_address, uint32_t i2c_reg_address, std::vector< uint8_t > data, bool send_stop=true) const
bool ping(uint8_t i2c_device_address) const
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.