My Project  v0.0.16
OpenCoresI2C.hpp
Go to the documentation of this file.
1 #ifndef MP7_OPENCORESI2C_H
2 #define MP7_OPENCORESI2C_H
3 
4 // C++ headers
5 #include <vector>
6 #include <string>
7 
8 // uHal Headers
9 #include "uhal/DerivedNode.hpp"
10 
11 
12 namespace mp7 {
25  class OpenCoresI2C : public uhal::Node {
27  public:
28  // PUBLIC METHODS
29  OpenCoresI2C( const uhal::Node& aNode );
30  OpenCoresI2C( const uhal::Node& aNode, uint8_t aSlaveAddress );
31  virtual ~OpenCoresI2C( );
32 
33  // getters
34 
35  uint8_t getI2CSlaveAddress( ) const {
36  return mSlaveAddress;
37  }
38 
39  uint8_t getI2CClockPrescale( ) const {
40  return mClockPrescale;
41  }
42 
43  // comodity functions
44  uint8_t readI2C( uint32_t i2cAddress ) const;
45  void writeI2C( uint32_t i2cAddress, uint32_t data ) const;
46 
47  // low level i2c functions
48  std::vector<uint8_t> readBlockI2C( const uint32_t numBytes ) const;
49  void writeBlockI2C( const std::vector<uint8_t>& data ) const;
50 
51  private:
52 
53  // low level i2c functions
54  void reset( ) const;
55  void waitUntilFinished( bool requireAcknowledgement=true,
56  bool requireBusIdleAtEnd=false ) const;
57 
58  // PRIVATE MEMBERS
59  // IPbus interface
60  // uhal::Node * m_node;
61 
62  // IPBus register names for i2c bus
63  static const std::string mPreHi;
64  static const std::string mPreLo;
65  static const std::string mCtrl;
66  static const std::string mTx;
67  static const std::string mRx;
68  static const std::string mCmd;
69  static const std::string mStatus;
70 
71  // clock prescale factor
72  uint16_t mClockPrescale;
73 
74  // slave address
75  uint8_t mSlaveAddress;
76 
77 
78  }; // class OpenCoresI2C
79 
80 }
81 
82 #endif /* MP7_OPENCORESI2C_H */
83 
static const std::string mCmd
Definition: OpenCoresI2C.hpp:68
-test-ipbusaccess
Definition: AlignmentNode.hpp:15
static const std::string mCtrl
Definition: OpenCoresI2C.hpp:65
static const std::string mTx
Definition: OpenCoresI2C.hpp:66
void writeBlockI2C( const std::vector<uint8_t>& data ) const
Definition: OpenCoresI2C.cpp:109
static const std::string mPreHi
Definition: OpenCoresI2C.hpp:63
uint8_t getI2CSlaveAddress( ) const
Definition: OpenCoresI2C.hpp:35
uint8_t mSlaveAddress
Definition: OpenCoresI2C.hpp:75
static const std::string mRx
Definition: OpenCoresI2C.hpp:67
virtual ~OpenCoresI2C( )
Definition: OpenCoresI2C.cpp:65
static const std::string mStatus
Definition: OpenCoresI2C.hpp:69
uint8_t readI2C( uint32_t i2cAddress ) const
Definition: OpenCoresI2C.cpp:94
uint16_t mClockPrescale
Definition: OpenCoresI2C.hpp:72
std::vector<uint8_t> readBlockI2C( const uint32_t numBytes ) const
Definition: OpenCoresI2C.cpp:163
void waitUntilFinished( bool requireAcknowledgement=true, bool requireBusIdleAtEnd=false ) const
Definition: OpenCoresI2C.cpp:220
OpenCoresI2C( const uhal::Node& aNode )
Definition: OpenCoresI2C.cpp:36
void reset( ) const
Definition: OpenCoresI2C.cpp:68
UHAL_DERIVEDNODE( OpenCoresI2C )
dictionary data
Definition: test-datavalid.py:31
uint8_t getI2CClockPrescale( ) const
Definition: OpenCoresI2C.hpp:39
void writeI2C( uint32_t i2cAddress, uint32_t data ) const
Definition: OpenCoresI2C.cpp:102
static const std::string mPreLo
Definition: OpenCoresI2C.hpp:64