F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
Loading...
Searching...
No Matches
LinuxI2cDriverComponentAc.cpp
Go to the documentation of this file.
1// ======================================================================
2// \title LinuxI2cDriverComponentAc.cpp
3// \author Generated by fpp-to-cpp
4// \brief cpp file for LinuxI2cDriver component base class
5// ======================================================================
6
8#include "Fw/Types/Assert.hpp"
10#if FW_ENABLE_TEXT_LOGGING
11#include "Fw/Types/String.hpp"
12#endif
13
14namespace Drv {
15
16 // ----------------------------------------------------------------------
17 // Component initialization
18 // ----------------------------------------------------------------------
19
20 void LinuxI2cDriverComponentBase ::
21 init(FwEnumStoreType instance)
22 {
23 // Initialize base class
25
26 // Connect input port read
27 for (
28 FwIndexType port = 0;
29 port < static_cast<FwIndexType>(this->getNum_read_InputPorts());
30 port++
31 ) {
32 this->m_read_InputPort[port].init();
33 this->m_read_InputPort[port].addCallComp(
34 this,
35 m_p_read_in
36 );
37 this->m_read_InputPort[port].setPortNum(port);
38
39#if FW_OBJECT_NAMES == 1
40 Fw::ObjectName portName;
41 portName.format(
42 "%s_read_InputPort[%" PRI_PlatformIntType "]",
43 this->m_objName.toChar(),
44 port
45 );
46 this->m_read_InputPort[port].setObjName(portName.toChar());
47#endif
48 }
49
50 // Connect input port write
51 for (
52 FwIndexType port = 0;
53 port < static_cast<FwIndexType>(this->getNum_write_InputPorts());
54 port++
55 ) {
56 this->m_write_InputPort[port].init();
57 this->m_write_InputPort[port].addCallComp(
58 this,
59 m_p_write_in
60 );
61 this->m_write_InputPort[port].setPortNum(port);
62
63#if FW_OBJECT_NAMES == 1
64 Fw::ObjectName portName;
65 portName.format(
66 "%s_write_InputPort[%" PRI_PlatformIntType "]",
67 this->m_objName.toChar(),
68 port
69 );
70 this->m_write_InputPort[port].setObjName(portName.toChar());
71#endif
72 }
73
74 // Connect input port writeRead
75 for (
76 FwIndexType port = 0;
77 port < static_cast<FwIndexType>(this->getNum_writeRead_InputPorts());
78 port++
79 ) {
80 this->m_writeRead_InputPort[port].init();
81 this->m_writeRead_InputPort[port].addCallComp(
82 this,
83 m_p_writeRead_in
84 );
85 this->m_writeRead_InputPort[port].setPortNum(port);
86
87#if FW_OBJECT_NAMES == 1
88 Fw::ObjectName portName;
89 portName.format(
90 "%s_writeRead_InputPort[%" PRI_PlatformIntType "]",
91 this->m_objName.toChar(),
92 port
93 );
94 this->m_writeRead_InputPort[port].setObjName(portName.toChar());
95#endif
96 }
97 }
98
99 // ----------------------------------------------------------------------
100 // Getters for typed input ports
101 // ----------------------------------------------------------------------
102
103 Drv::InputI2cPort* LinuxI2cDriverComponentBase ::
104 get_read_InputPort(FwIndexType portNum)
105 {
106 FW_ASSERT(
107 portNum < this->getNum_read_InputPorts(),
108 static_cast<FwAssertArgType>(portNum)
109 );
110
111 return &this->m_read_InputPort[portNum];
112 }
113
114 Drv::InputI2cPort* LinuxI2cDriverComponentBase ::
115 get_write_InputPort(FwIndexType portNum)
116 {
117 FW_ASSERT(
118 portNum < this->getNum_write_InputPorts(),
119 static_cast<FwAssertArgType>(portNum)
120 );
121
122 return &this->m_write_InputPort[portNum];
123 }
124
125 Drv::InputI2cWriteReadPort* LinuxI2cDriverComponentBase ::
126 get_writeRead_InputPort(FwIndexType portNum)
127 {
128 FW_ASSERT(
129 portNum < this->getNum_writeRead_InputPorts(),
130 static_cast<FwAssertArgType>(portNum)
131 );
132
133 return &this->m_writeRead_InputPort[portNum];
134 }
135
136 // ----------------------------------------------------------------------
137 // Component construction and destruction
138 // ----------------------------------------------------------------------
139
140 LinuxI2cDriverComponentBase ::
141 LinuxI2cDriverComponentBase(const char* compName) :
142 Fw::PassiveComponentBase(compName)
143 {
144
145 }
146
147 LinuxI2cDriverComponentBase ::
148 ~LinuxI2cDriverComponentBase()
149 {
150
151 }
152
153 // ----------------------------------------------------------------------
154 // Getters for numbers of typed input ports
155 // ----------------------------------------------------------------------
156
157 FwIndexType LinuxI2cDriverComponentBase ::
158 getNum_read_InputPorts() const
159 {
160 return static_cast<FwIndexType>(FW_NUM_ARRAY_ELEMENTS(this->m_read_InputPort));
161 }
162
163 FwIndexType LinuxI2cDriverComponentBase ::
164 getNum_write_InputPorts() const
165 {
166 return static_cast<FwIndexType>(FW_NUM_ARRAY_ELEMENTS(this->m_write_InputPort));
167 }
168
169 FwIndexType LinuxI2cDriverComponentBase ::
170 getNum_writeRead_InputPorts() const
171 {
172 return static_cast<FwIndexType>(FW_NUM_ARRAY_ELEMENTS(this->m_writeRead_InputPort));
173 }
174
175 // ----------------------------------------------------------------------
176 // Port handler base-class functions for typed input ports
177 //
178 // Call these functions directly to bypass the corresponding ports
179 // ----------------------------------------------------------------------
180
181 Drv::I2cStatus LinuxI2cDriverComponentBase ::
182 read_handlerBase(
183 FwIndexType portNum,
184 U32 addr,
185 Fw::Buffer& serBuffer
186 )
187 {
188 // Make sure port number is valid
189 FW_ASSERT(
190 portNum < this->getNum_read_InputPorts(),
191 static_cast<FwAssertArgType>(portNum)
192 );
193
194 Drv::I2cStatus retVal;
195
196 // Lock guard mutex before calling
197 this->lock();
198
199 // Call handler function
200 retVal = this->read_handler(
201 portNum,
202 addr,
203 serBuffer
204 );
205
206 // Unlock guard mutex
207 this->unLock();
208
209 return retVal;
210 }
211
212 Drv::I2cStatus LinuxI2cDriverComponentBase ::
213 write_handlerBase(
214 FwIndexType portNum,
215 U32 addr,
216 Fw::Buffer& serBuffer
217 )
218 {
219 // Make sure port number is valid
220 FW_ASSERT(
221 portNum < this->getNum_write_InputPorts(),
222 static_cast<FwAssertArgType>(portNum)
223 );
224
225 Drv::I2cStatus retVal;
226
227 // Lock guard mutex before calling
228 this->lock();
229
230 // Call handler function
231 retVal = this->write_handler(
232 portNum,
233 addr,
234 serBuffer
235 );
236
237 // Unlock guard mutex
238 this->unLock();
239
240 return retVal;
241 }
242
243 Drv::I2cStatus LinuxI2cDriverComponentBase ::
244 writeRead_handlerBase(
245 FwIndexType portNum,
246 U32 addr,
247 Fw::Buffer& writeBuffer,
248 Fw::Buffer& readBuffer
249 )
250 {
251 // Make sure port number is valid
252 FW_ASSERT(
253 portNum < this->getNum_writeRead_InputPorts(),
254 static_cast<FwAssertArgType>(portNum)
255 );
256
257 Drv::I2cStatus retVal;
258
259 // Lock guard mutex before calling
260 this->lock();
261
262 // Call handler function
263 retVal = this->writeRead_handler(
264 portNum,
265 addr,
266 writeBuffer,
267 readBuffer
268 );
269
270 // Unlock guard mutex
271 this->unLock();
272
273 return retVal;
274 }
275
276 // ----------------------------------------------------------------------
277 // Mutex operations for guarded ports
278 //
279 // You can override these operations to provide more sophisticated
280 // synchronization
281 // ----------------------------------------------------------------------
282
283 void LinuxI2cDriverComponentBase ::
284 lock()
285 {
286 this->m_guardedPortMutex.lock();
287 }
288
289 void LinuxI2cDriverComponentBase ::
290 unLock()
291 {
292 this->m_guardedPortMutex.unLock();
293 }
294
295 // ----------------------------------------------------------------------
296 // Calls for messages received on typed input ports
297 // ----------------------------------------------------------------------
298
299 Drv::I2cStatus LinuxI2cDriverComponentBase ::
300 m_p_read_in(
301 Fw::PassiveComponentBase* callComp,
302 FwIndexType portNum,
303 U32 addr,
304 Fw::Buffer& serBuffer
305 )
306 {
307 FW_ASSERT(callComp);
308 LinuxI2cDriverComponentBase* compPtr = static_cast<LinuxI2cDriverComponentBase*>(callComp);
309 return compPtr->read_handlerBase(
310 portNum,
311 addr,
312 serBuffer
313 );
314 }
315
316 Drv::I2cStatus LinuxI2cDriverComponentBase ::
317 m_p_write_in(
318 Fw::PassiveComponentBase* callComp,
319 FwIndexType portNum,
320 U32 addr,
321 Fw::Buffer& serBuffer
322 )
323 {
324 FW_ASSERT(callComp);
325 LinuxI2cDriverComponentBase* compPtr = static_cast<LinuxI2cDriverComponentBase*>(callComp);
326 return compPtr->write_handlerBase(
327 portNum,
328 addr,
329 serBuffer
330 );
331 }
332
333 Drv::I2cStatus LinuxI2cDriverComponentBase ::
334 m_p_writeRead_in(
335 Fw::PassiveComponentBase* callComp,
336 FwIndexType portNum,
337 U32 addr,
338 Fw::Buffer& writeBuffer,
339 Fw::Buffer& readBuffer
340 )
341 {
342 FW_ASSERT(callComp);
343 LinuxI2cDriverComponentBase* compPtr = static_cast<LinuxI2cDriverComponentBase*>(callComp);
344 return compPtr->writeRead_handlerBase(
345 portNum,
346 addr,
347 writeBuffer,
348 readBuffer
349 );
350 }
351
352}
#define FW_ASSERT(...)
Definition Assert.hpp:14
#define FW_NUM_ARRAY_ELEMENTS(a)
number of elements in an array
Definition BasicTypes.h:70
#define PRI_PlatformIntType
I32 FwEnumStoreType
Definition FpConfig.h:64
PlatformAssertArgType FwAssertArgType
Definition FpConfig.h:39
PlatformIndexType FwIndexType
Definition FpConfig.h:25
Input I2c port.
Definition I2cPortAc.hpp:26
Auto-generated base for LinuxI2cDriver component.
Drv::I2cStatus read_handlerBase(FwIndexType portNum, U32 addr, Fw::Buffer &serBuffer)
Handler base-class function for input port read.
Drv::I2cStatus write_handlerBase(FwIndexType portNum, U32 addr, Fw::Buffer &serBuffer)
Handler base-class function for input port write.
void init()
Object initializer.
Definition ObjBase.cpp:27
const char * toChar() const
void format(const CHAR *formatString,...)
write formatted string to buffer