-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathI2CComponent.h
More file actions
133 lines (113 loc) · 4.27 KB
/
I2CComponent.h
File metadata and controls
133 lines (113 loc) · 4.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
///-------------------------------------------------------------------------------------------------
/// @file POC\I2CComponent.h.
///
/// @brief Declares the I2CComponent interface
#pragma once
#include <list>
#include "I2C.h"
#include "Component.h"
///-------------------------------------------------------------------------------------------------
/// @class BasicPOCModule
///
/// @brief A basic poc module.
///
/// @author Benjamin
/// @date 28.09.2020
class BasicPOCModule;
using namespace std;
///-------------------------------------------------------------------------------------------------
/// @class I2CComponent
///
/// @brief A basic I2C component located on a POC module accessable through I2C. Due to the
/// architecture of POC, the basic R/W-functions have to be overwritten.
///
/// @author Benjamin
/// @date 08.09.2020
class I2CComponent : public I2C, public Component {
public:
///-------------------------------------------------------------------------------------------------
/// @fn I2CComponent::I2CComponent(string name, short slaveID, bool supports10BitAddressing, long fmax, BasicPOCModule* itsPOCModule, list<Component*>& componentList);
///
/// @brief Constructor
///
/// @author Benjamin
/// @date 28.09.2020
///
/// @param name The name.
/// @param slaveID Identifier for the slave.
/// @param supports10BitAddressing True to supports 10 bit addressing.
/// @param fmax The fmax.
/// @param [in,out] itsPOCModule If non-null, its poc module.
/// @param [in,out] componentList [in,out] If non-null, list of components.
I2CComponent(string name, short slaveID,
bool supports10BitAddressing, long fmax, BasicPOCModule* itsPOCModule,
list<Component*>& componentList);
///-------------------------------------------------------------------------------------------------
/// @fn void I2CComponent::transfere(unsigned char* tx, unsigned char* rx, unsigned int ntx, unsigned int nrx);
///
/// @brief Transferes
///
/// @author Benjamin
/// @date 28.09.2020
///
/// @param [in,out] tx If non-null, the transmit.
/// @param [in,out] rx If non-null, the receive.
/// @param ntx The ntx.
/// @param nrx The nrx.
void transfere(unsigned char* tx, unsigned char* rx, unsigned int ntx, unsigned int nrx);
///-------------------------------------------------------------------------------------------------
/// @fn unsigned char I2CComponent::readRegister(unsigned char reg);
///
/// @brief Reads a register
///
/// @author Benjamin
/// @date 28.09.2020
///
/// @param reg The register.
///
/// @returns The register.
unsigned char readRegister(unsigned char reg);
///-------------------------------------------------------------------------------------------------
/// @fn void I2CComponent::readRegister(unsigned char reg, unsigned char readBuffer[], unsigned int n);
///
/// @brief Reads a register
///
/// @author Benjamin
/// @date 28.09.2020
///
/// @param reg The register.
/// @param readBuffer Buffer for read data.
/// @param n An int to process.
void readRegister(unsigned char reg, unsigned char readBuffer[], unsigned int n);
///-------------------------------------------------------------------------------------------------
/// @fn void I2CComponent::writeRegister(unsigned char reg, unsigned char data);
///
/// @brief Writes a register
///
/// @author Benjamin
/// @date 28.09.2020
///
/// @param reg The register.
/// @param data The data.
void writeRegister(unsigned char reg, unsigned char data);
///-------------------------------------------------------------------------------------------------
/// @fn void I2CComponent::writeRegister(unsigned char reg, unsigned char writeBuffer[], unsigned int n);
///
/// @brief Writes a register
///
/// @author Benjamin
/// @date 28.09.2020
///
/// @param reg The register.
/// @param writeBuffer Buffer for write data.
/// @param n An int to process.
void writeRegister(unsigned char reg, unsigned char writeBuffer[], unsigned int n);
///-------------------------------------------------------------------------------------------------
/// @fn virtual I2CComponent::~I2CComponent();
///
/// @brief Destructor
///
/// @author Benjamin
/// @date 28.09.2020
virtual ~I2CComponent();
};