8 #ifndef MP7_OPENCORESI2CMASTERNODE 9 #define MP7_OPENCORESI2CMASTERNODE 12 #include "uhal/DerivedNode.hpp" 31 class I2CBaseNode :
public uhal::Node {
43 virtual std::vector<std::string>
getSlaves()
const;
46 virtual uint8_t
readI2C(uint8_t aSlaveAddress, uint32_t i2cAddress)
const;
47 virtual void writeI2C(uint8_t aSlaveAddress, uint32_t i2cAddress, uint32_t
data)
const;
51 std::vector<uint8_t>
virtual readBlockI2C(uint8_t aSlaveAddress, uint32_t numBytes)
const;
52 void virtual writeBlockI2C(uint8_t aSlaveAddress,
const std::vector<uint8_t>& data)
const;
64 bool requireBusIdleAtEnd =
false)
const;
70 static const std::string
mTx;
71 static const std::string
mRx;
72 static const std::string
mCmd;
108 uint8_t
readI2C(uint32_t i2cAddress)
const;
109 void writeI2C(uint32_t i2cAddress, uint32_t
data)
const;
117 friend class I2CMasterNode;
127 I2CMasterNode(
const uhal::Node& aNode );
128 I2CMasterNode(
const I2CMasterNode& aOther );
129 virtual ~I2CMasterNode();
131 virtual const I2CSlave& getSlave(
const std::string&
name )
const;
136 boost::unordered_map<std::string,I2CSlave*>
mSlaves;
void constructor()
Definition: I2CMasterNode.cpp:44
-test-ipbusaccess
Definition: AlignmentNode.hpp:15
uint8_t mAddress
Definition: I2CMasterNode.hpp:115
boost::unordered_map<std::string,uint8_t> mSlavesAddresses
Slaves.
Definition: I2CMasterNode.hpp:55
static const std::string mCtrl
Definition: I2CMasterNode.hpp:69
virtual uint8_t getI2CClockPrescale() const
Definition: I2CMasterNode.hpp:39
virtual void writeI2C(uint8_t aSlaveAddress, uint32_t i2cAddress, uint32_t data) const
Definition: I2CMasterNode.cpp:94
uint16_t mClockPrescale
clock prescale factor
Definition: I2CMasterNode.hpp:76
virtual ~I2CBaseNode()
Definition: I2CMasterNode.cpp:63
static const std::string mPreHi
IPBus register names for i2c bus.
Definition: I2CMasterNode.hpp:67
UHAL_DERIVEDNODE(I2CBaseNode)
virtual uint8_t readI2C(uint8_t aSlaveAddress, uint32_t i2cAddress) const
commodity functions
Definition: I2CMasterNode.cpp:86
virtual void writeBlockI2C(uint8_t aSlaveAddress, const std::vector<uint8_t>& data) const
Definition: I2CMasterNode.cpp:101
static const std::string mStatus
Definition: I2CMasterNode.hpp:73
I2CBaseNode(const uhal::Node& aNode)
Definition: I2CMasterNode.cpp:34
virtual std::vector<uint8_t> readBlockI2C(uint8_t aSlaveAddress, uint32_t numBytes) const
Definition: I2CMasterNode.cpp:155
friend class I2CSlave
Definition: I2CMasterNode.hpp:78
boost::unordered_map<std::string,I2CSlave*> mSlaves
Slaves.
Definition: I2CMasterNode.hpp:136
void reset() const
Definition: I2CMasterNode.cpp:212
void waitUntilFinished(bool requireAcknowledgement = true, bool requireBusIdleAtEnd = false) const
Definition: I2CMasterNode.cpp:238
static const std::string mRx
Definition: I2CMasterNode.hpp:71
uint8_t getI2CAddress() const
Definition: I2CMasterNode.hpp:103
static const std::string mCmd
Definition: I2CMasterNode.hpp:72
virtual uint8_t getSlaveAddress( const std::string& name ) const
Definition: I2CMasterNode.cpp:76
dictionary data
Definition: test-datavalid.py:31
static const std::string mPreLo
Definition: I2CMasterNode.hpp:68
virtual std::vector<std::string> getSlaves() const
Definition: I2CMasterNode.cpp:67
static const std::string mTx
Definition: I2CMasterNode.hpp:70
name
Definition: setup.py:8
const I2CBaseNode* mMaster
Definition: I2CMasterNode.hpp:112