DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
timing
src
I2CSlave.cpp
Go to the documentation of this file.
1
13
14
#include "
timing/I2CSlave.hpp
"
15
16
#include "
ers/ers.hpp
"
17
#include "
timing/I2CMasterNode.hpp
"
18
#include "
timing/TimingIssues.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
29
namespace
dunedaq
{
30
namespace
timing
{
31
32
//-----------------------------------------------------------------------------
33
I2CSlave::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
//-----------------------------------------------------------------------------
40
I2CSlave::~I2CSlave
() {}
41
//-----------------------------------------------------------------------------
42
43
// comodity functions
44
//-----------------------------------------------------------------------------
45
uint8_t
// NOLINT(build/unsigned)
46
I2CSlave::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
//-----------------------------------------------------------------------------
53
uint8_t
// NOLINT(build/unsigned)
54
I2CSlave::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
//-----------------------------------------------------------------------------
61
uint8_t
// NOLINT(build/unsigned)
62
I2CSlave::read_i2c_atomic
(uint32_t i2c_device_address, uint32_t i2c_reg_address)
const
// NOLINT(build/unsigned)
63
{
64
return
m_i2c_master
->read_i2c(i2c_device_address, i2c_reg_address,
true
);
65
}
66
//-----------------------------------------------------------------------------
67
68
//-----------------------------------------------------------------------------
69
uint8_t
// NOLINT(build/unsigned)
70
I2CSlave::read_i2c_atomic
(uint32_t i2c_reg_address)
const
// NOLINT(build/unsigned)
71
{
72
return
m_i2c_master
->read_i2c(
m_i2c_device_address
, i2c_reg_address,
true
);
73
}
74
//-----------------------------------------------------------------------------
75
76
//-----------------------------------------------------------------------------
77
void
78
I2CSlave::write_i2c
(uint32_t i2c_device_address,
// NOLINT(build/unsigned)
79
uint32_t i2c_reg_address,
// NOLINT(build/unsigned)
80
uint8_t data,
// NOLINT(build/unsigned)
81
bool
send_stop)
const
82
{
83
m_i2c_master
->write_i2c(i2c_device_address, i2c_reg_address, data, send_stop);
84
}
85
//-----------------------------------------------------------------------------
86
87
//-----------------------------------------------------------------------------
88
void
89
I2CSlave::write_i2c
(uint32_t i2c_reg_address, uint8_t data,
bool
send_stop)
const
// NOLINT(build/unsigned)
90
{
91
m_i2c_master
->write_i2c(
m_i2c_device_address
, i2c_reg_address, data, send_stop);
92
}
93
//-----------------------------------------------------------------------------
94
95
//-----------------------------------------------------------------------------
96
std::vector<uint8_t>
// NOLINT(build/unsigned)
97
I2CSlave::read_i2cArray
(uint32_t i2c_device_address,
// NOLINT(build/unsigned)
98
uint32_t i2c_reg_address,
// NOLINT(build/unsigned)
99
uint32_t number_of_words)
const
// NOLINT(build/unsigned)
100
{
101
return
m_i2c_master
->read_i2cArray(i2c_device_address, i2c_reg_address, number_of_words);
102
}
103
//-----------------------------------------------------------------------------
104
105
//-----------------------------------------------------------------------------
106
std::vector<uint8_t>
// NOLINT(build/unsigned)
107
I2CSlave::read_i2cArray
(uint32_t i2c_reg_address, uint32_t number_of_words)
const
// NOLINT(build/unsigned)
108
{
109
return
m_i2c_master
->read_i2cArray(
m_i2c_device_address
, i2c_reg_address, number_of_words);
110
}
111
//-----------------------------------------------------------------------------
112
113
//-----------------------------------------------------------------------------
114
std::vector<uint8_t>
// NOLINT(build/unsigned)
115
I2CSlave::read_i2cArray_atomic
(uint32_t i2c_device_address,
// NOLINT(build/unsigned)
116
uint32_t i2c_reg_address,
// NOLINT(build/unsigned)
117
uint32_t number_of_words)
const
// NOLINT(build/unsigned)
118
{
119
return
m_i2c_master
->read_i2cArray(i2c_device_address, i2c_reg_address, number_of_words,
true
);
120
}
121
//-----------------------------------------------------------------------------
122
123
//-----------------------------------------------------------------------------
124
std::vector<uint8_t>
// NOLINT(build/unsigned)
125
I2CSlave::read_i2cArray_atomic
(uint32_t i2c_reg_address, uint32_t number_of_words)
const
// NOLINT(build/unsigned)
126
{
127
return
m_i2c_master
->read_i2cArray(
m_i2c_device_address
, i2c_reg_address, number_of_words,
true
);
128
}
129
//-----------------------------------------------------------------------------
130
131
//-----------------------------------------------------------------------------
132
void
133
I2CSlave::write_i2cArray
(uint32_t i2c_device_address,
// NOLINT(build/unsigned)
134
uint32_t i2c_reg_address,
// NOLINT(build/unsigned)
135
std::vector<uint8_t> data,
// NOLINT(build/unsigned)
136
bool
send_stop)
const
137
{
138
m_i2c_master
->write_i2cArray(i2c_device_address, i2c_reg_address, data, send_stop);
139
}
140
//-----------------------------------------------------------------------------
141
142
//-----------------------------------------------------------------------------
143
void
144
I2CSlave::write_i2cArray
(uint32_t i2c_reg_address,
// NOLINT(build/unsigned)
145
std::vector<uint8_t> data,
// NOLINT(build/unsigned)
146
bool
send_stop)
const
147
{
148
m_i2c_master
->write_i2cArray(
m_i2c_device_address
, i2c_reg_address, data, send_stop);
149
}
150
//-----------------------------------------------------------------------------
151
152
// comodity functions
153
//-----------------------------------------------------------------------------
154
std::vector<uint8_t>
// NOLINT(build/unsigned)
155
I2CSlave::read_i2cPrimitive
(uint32_t number_of_bytes)
const
// NOLINT(build/unsigned)
156
{
157
return
m_i2c_master
->read_i2cPrimitive(
m_i2c_device_address
, number_of_bytes);
158
}
159
//-----------------------------------------------------------------------------
160
161
//-----------------------------------------------------------------------------
162
void
163
I2CSlave::write_i2cPrimitive
(
const
std::vector<uint8_t>& data,
bool
send_stop)
const
// NOLINT(build/unsigned)
164
{
165
m_i2c_master
->write_i2cPrimitive(
m_i2c_device_address
, data, send_stop);
166
}
167
//-----------------------------------------------------------------------------
168
169
//-----------------------------------------------------------------------------
170
bool
171
I2CSlave::ping
(
bool
throw_excp)
const
172
{
173
return
m_i2c_master
->ping(
m_i2c_device_address
, throw_excp);
174
}
175
//-----------------------------------------------------------------------------
176
177
//-----------------------------------------------------------------------------
178
std::string
179
I2CSlave::get_master_id
()
const
180
{
181
return
m_i2c_master
->getId();
182
}
183
//-----------------------------------------------------------------------------
184
185
}
// namespace timing
186
}
// namespace dunedaq
I2CMasterNode.hpp
I2CSlave.hpp
dunedaq::timing::I2CSlave::~I2CSlave
virtual ~I2CSlave()
Definition
I2CSlave.cpp:40
dunedaq::timing::I2CSlave::m_i2c_master
const I2CMasterNode * m_i2c_master
Definition
I2CSlave.hpp:92
dunedaq::timing::I2CSlave::write_i2cArray
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:133
dunedaq::timing::I2CSlave::read_i2c
uint8_t read_i2c(uint32_t i2c_device_address, uint32_t i2c_reg_address) const
comodity functions
Definition
I2CSlave.cpp:46
dunedaq::timing::I2CSlave::read_i2c_atomic
uint8_t read_i2c_atomic(uint32_t i2c_device_address, uint32_t i2c_reg_address) const
Definition
I2CSlave.cpp:62
dunedaq::timing::I2CSlave::read_i2cPrimitive
std::vector< uint8_t > read_i2cPrimitive(uint32_t number_of_bytes) const
Definition
I2CSlave.cpp:155
dunedaq::timing::I2CSlave::m_i2c_device_address
uint8_t m_i2c_device_address
Definition
I2CSlave.hpp:95
dunedaq::timing::I2CSlave::read_i2cArray
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:97
dunedaq::timing::I2CSlave::I2CMasterNode
friend class I2CMasterNode
Definition
I2CSlave.hpp:97
dunedaq::timing::I2CSlave::write_i2cPrimitive
void write_i2cPrimitive(const std::vector< uint8_t > &data, bool send_stop=true) const
Definition
I2CSlave.cpp:163
dunedaq::timing::I2CSlave::get_master_id
std::string get_master_id() const
Definition
I2CSlave.cpp:179
dunedaq::timing::I2CSlave::ping
bool ping(bool throw_excp=false) const
Definition
I2CSlave.cpp:171
dunedaq::timing::I2CSlave::write_i2c
void write_i2c(uint32_t i2c_device_address, uint32_t i2c_reg_address, uint8_t data, bool send_stop=true) const
Definition
I2CSlave.cpp:78
dunedaq::timing::I2CSlave::read_i2cArray_atomic
std::vector< uint8_t > read_i2cArray_atomic(uint32_t i2c_reg_address, uint32_t number_of_words) const
Definition
I2CSlave.cpp:125
dunedaq::timing::I2CSlave::I2CSlave
I2CSlave(const I2CMasterNode *i2c_master, uint8_t i2c_device_address)
Definition
I2CSlave.cpp:33
ers.hpp
TimingIssues.hpp
dunedaq::timing
< Message parameters
Definition
BoreasDesign.hpp:29
dunedaq
Including Qt Headers.
Definition
module.cpp:16
toolbox.hpp
Generated on
for DUNE-DAQ by
1.17.0