DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
I2CExpanderNode.hpp
Go to the documentation of this file.
1
12#ifndef TIMING_INCLUDE_TIMING_I2CEXPANDERNODE_HPP_
13#define TIMING_INCLUDE_TIMING_I2CEXPANDERNODE_HPP_
14
16#include "timing/I2CSlave.hpp"
17
18#include "logging/Logging.hpp" // NOTE: if ISSUES ARE DECLARED BEFORE include logging/Logging.hpp, TLOG_DEBUG<<issue wont work.
19
20#include <map>
21#include <string>
22#include <vector>
23
24namespace dunedaq {
25ERS_DECLARE_ISSUE(timing, SFPExpanderBankIDError, " Invalid bank id: " << bank_id, ((std::string)bank_id))
26
27namespace timing {
28
36class I2CExpanderSlave : public I2CSlave
37{
38public:
39 I2CExpanderSlave(const I2CMasterNode* i2c_master, uint8_t i2c_device_address); // NOLINT(build/unsigned)
40 virtual ~I2CExpanderSlave();
41
48 void set_inversion(uint8_t bank_id, uint32_t inversion_mask) const; // NOLINT(build/unsigned)
49
56 void set_io(uint8_t bank_id, uint32_t io_mask) const; // NOLINT(build/unsigned)
57
65 uint32_t read_inputs(uint8_t bank_id) const; // NOLINT(build/unsigned)
66
73 void set_outputs(uint8_t bank_id, uint32_t output_values) const; // NOLINT(build/unsigned)
74
82 uint8_t read_outputs_config( uint8_t bank_id ) const; // NOLINT(build/unsigned)
83
84 std::vector<uint32_t> debug() const; // NOLINT(build/unsigned)
85
86private:
87 void ensure_valid_bank_id(uint8_t bank_id) const; // NOLINT(build/unsigned)
88};
89
90} // namespace timing
91} // namespace dunedaq
92
93#endif // TIMING_INCLUDE_TIMING_I2CEXPANDERNODE_HPP_
#define ERS_DECLARE_ISSUE(namespace_name, class_name, message, attributes)
OpenCode I2C interface to a ipbus node.
Class to provide OpenCode I2C interface to a ipbus node.
Including Qt Headers.