DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
timing
src
DACNode.cpp
Go to the documentation of this file.
1
8
9
#include "
timing/DACNode.hpp
"
10
11
namespace
dunedaq
{
12
namespace
timing
{
13
14
// uHAL Node registation
15
UHAL_REGISTER_DERIVED_NODE(
DACNode
)
16
17
//-----------------------------------------------------------------------------
18
DACSlave
::
DACSlave
(const
I2CMasterNode
* i2c_master, uint8_t
address
)
// NOLINT(build/unsigned)
19
:
I2CSlave
(i2c_master,
address
)
20
{}
21
//-----------------------------------------------------------------------------
22
23
//-----------------------------------------------------------------------------
24
void
25
DACSlave::set_interal_ref
(
bool
internal_ref)
const
26
{
27
this->
write_i2cArray
(0x38, { 0x0, internal_ref });
28
}
29
//-----------------------------------------------------------------------------
30
31
//-----------------------------------------------------------------------------
32
void
33
DACSlave::set_dac
(uint8_t channel, uint32_t code)
const
// NOLINT(build/unsigned)
34
{
35
36
if
(channel > 7) {
37
throw
DACChannelOutOfRange(
ERS_HERE
, std::to_string(channel));
38
}
39
40
if
(code > 0xffff) {
41
throw
DACValueOutOfRange
(
ERS_HERE
, std::to_string(code));
42
}
43
44
uint32_t
address
= 0x18 + (channel & 0x7);
// NOLINT(build/unsigned)
45
46
this->
write_i2cArray
(
address
, { (uint8_t)((code >> 8) & 0xff), (uint8_t)(code & 0xff) });
// NOLINT(build/unsigned)
47
}
48
//-----------------------------------------------------------------------------
49
50
//-----------------------------------------------------------------------------
51
DACNode::DACNode
(
const
uhal::Node& node)
52
:
I2CMasterNode
(node)
53
,
DACSlave
(this, this->
get_slave_address
(
"i2caddr"
))
54
{}
55
//-----------------------------------------------------------------------------
56
57
//-----------------------------------------------------------------------------
58
DACNode::DACNode
(
const
DACNode
& node)
59
:
I2CMasterNode
(node)
60
,
DACSlave
(this, this->
get_slave_address
(
"i2caddr"
))
61
{}
62
//-----------------------------------------------------------------------------
63
64
//-----------------------------------------------------------------------------
65
DACNode::~DACNode
() {}
66
//-----------------------------------------------------------------------------
67
68
}
// namespace timing
69
}
// namespace dunedaq
DACNode.hpp
ERS_HERE
#define ERS_HERE
Definition
LocalContext.hpp:141
dunedaq::timing::DACNode
uhal::Node implementing single I2C Master Slave connection to control SFP expander chips.
Definition
DACNode.hpp:69
dunedaq::timing::DACNode::~DACNode
virtual ~DACNode()
Definition
DACNode.cpp:65
dunedaq::timing::DACNode::DACNode
DACNode(const uhal::Node &node)
Definition
DACNode.cpp:51
dunedaq::timing::DACSlave::set_interal_ref
void set_interal_ref(bool internal_ref) const
Use DAC internal reference.
Definition
DACNode.cpp:25
dunedaq::timing::DACSlave::DACSlave
DACSlave(const I2CMasterNode *i2c_master, uint8_t i2c_device_address)
Definition
DACNode.cpp:18
dunedaq::timing::DACSlave::set_dac
void set_dac(uint8_t channel, uint32_t code) const
Configure DAC channel.
Definition
DACNode.cpp:33
dunedaq::timing::I2CMasterNode::I2CMasterNode
I2CMasterNode(const uhal::Node &node)
Definition
I2CMasterNode.cpp:59
dunedaq::timing::I2CMasterNode::get_slave_address
virtual uint8_t get_slave_address(const std::string &name) const
Definition
I2CMasterNode.cpp:121
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::I2CMasterNode
friend class I2CMasterNode
Definition
I2CSlave.hpp:97
dunedaq::timing::I2CSlave::I2CSlave
I2CSlave(const I2CMasterNode *i2c_master, uint8_t i2c_device_address)
Definition
I2CSlave.cpp:33
dunedaq::timing
< Message parameters
Definition
BoreasDesign.hpp:29
dunedaq
Including Qt Headers.
Definition
module.cpp:16
dunedaq::DACValueOutOfRange
DACValueOutOfRange
< Namespace
Definition
DACNode.hpp:31
dunedaq::address
Invalid address
Definition
CommonIssues.hpp:29
Generated on
for DUNE-DAQ by
1.17.0