F´ Flight Software - C/C++ Documentation devel
A framework for building embedded system applications to NASA flight quality standards.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
BufferManagerComponentAc.hpp
Go to the documentation of this file.
1// ======================================================================
2// \title BufferManagerComponentAc.hpp
3// \author Generated by fpp-to-cpp
4// \brief hpp file for BufferManager component base class
5// ======================================================================
6
7#ifndef Svc_BufferManagerComponentAc_HPP
8#define Svc_BufferManagerComponentAc_HPP
9
10#include "FpConfig.hpp"
14#include "Fw/Log/LogPortAc.hpp"
15#include "Fw/Log/LogString.hpp"
16#if FW_ENABLE_TEXT_LOGGING == 1
18#endif
22#include "Fw/Tlm/TlmPortAc.hpp"
23#include "Fw/Tlm/TlmString.hpp"
24#include "Os/Mutex.hpp"
26
27namespace Svc {
28
35 {
36
37 // ----------------------------------------------------------------------
38 // Friend classes
39 // ----------------------------------------------------------------------
40
43
44 PROTECTED:
45
46 // ----------------------------------------------------------------------
47 // Constants
48 // ----------------------------------------------------------------------
49
51 enum {
55 };
56
58 enum {
63 };
64
66 enum {
69 };
70
72 enum {
75 };
76
78 enum {
84 };
85
86 public:
87
88 // ----------------------------------------------------------------------
89 // Component initialization
90 // ----------------------------------------------------------------------
91
93 void init(
94 NATIVE_INT_TYPE instance = 0
95 );
96
97 public:
98
99 // ----------------------------------------------------------------------
100 // Getters for typed input ports
101 // ----------------------------------------------------------------------
102
107 NATIVE_INT_TYPE portNum
108 );
109
114 NATIVE_INT_TYPE portNum
115 );
116
121 NATIVE_INT_TYPE portNum
122 );
123
124 public:
125
126 // ----------------------------------------------------------------------
127 // Connect input ports to special output ports
128 // ----------------------------------------------------------------------
129
132 NATIVE_INT_TYPE portNum,
133 Fw::InputLogPort* port
134 );
135
136#if FW_ENABLE_TEXT_LOGGING == 1
137
139 void set_textEventOut_OutputPort(
140 NATIVE_INT_TYPE portNum,
142 );
143
144#endif
145
148 NATIVE_INT_TYPE portNum,
149 Fw::InputTimePort* port
150 );
151
154 NATIVE_INT_TYPE portNum,
155 Fw::InputTlmPort* port
156 );
157
158#if FW_PORT_SERIALIZATION
159
160 public:
161
162 // ----------------------------------------------------------------------
163 // Connect serial input ports to special output ports
164 // ----------------------------------------------------------------------
165
168 NATIVE_INT_TYPE portNum,
169 Fw::InputSerializePort* port
170 );
171
172#if FW_ENABLE_TEXT_LOGGING == 1
173
175 void set_textEventOut_OutputPort(
176 NATIVE_INT_TYPE portNum,
177 Fw::InputSerializePort* port
178 );
179
180#endif
181
184 NATIVE_INT_TYPE portNum,
185 Fw::InputSerializePort* port
186 );
187
190 NATIVE_INT_TYPE portNum,
191 Fw::InputSerializePort* port
192 );
193
194#endif
195
196 PROTECTED:
197
198 // ----------------------------------------------------------------------
199 // Component construction and destruction
200 // ----------------------------------------------------------------------
201
204 const char* compName = ""
205 );
206
209
210 PROTECTED:
211
212 // ----------------------------------------------------------------------
213 // Getters for numbers of typed input ports
214 // ----------------------------------------------------------------------
215
220
225
230
231 PROTECTED:
232
233 // ----------------------------------------------------------------------
234 // Getters for numbers of special output ports
235 // ----------------------------------------------------------------------
236
241
242#if FW_ENABLE_TEXT_LOGGING == 1
243
247 NATIVE_INT_TYPE getNum_textEventOut_OutputPorts() const;
248
249#endif
250
255
260
261 PROTECTED:
262
263 // ----------------------------------------------------------------------
264 // Connection status queries for special output ports
265 // ----------------------------------------------------------------------
266
271 NATIVE_INT_TYPE portNum
272 );
273
274#if FW_ENABLE_TEXT_LOGGING == 1
275
279 bool isConnected_textEventOut_OutputPort(
280 NATIVE_INT_TYPE portNum
281 );
282
283#endif
284
289 NATIVE_INT_TYPE portNum
290 );
291
296 NATIVE_INT_TYPE portNum
297 );
298
299 PROTECTED:
300
301 // ----------------------------------------------------------------------
302 // Handlers to implement for typed input ports
303 // ----------------------------------------------------------------------
304
307 NATIVE_INT_TYPE portNum,
308 U32 size
309 ) = 0;
310
313 NATIVE_INT_TYPE portNum,
314 Fw::Buffer& fwBuffer
315 ) = 0;
316
318 virtual void schedIn_handler(
319 NATIVE_INT_TYPE portNum,
320 NATIVE_UINT_TYPE context
321 ) = 0;
322
323 PROTECTED:
324
325 // ----------------------------------------------------------------------
326 // Port handler base-class functions for typed input ports
327 //
328 // Call these functions directly to bypass the corresponding ports
329 // ----------------------------------------------------------------------
330
333 NATIVE_INT_TYPE portNum,
334 U32 size
335 );
336
339 NATIVE_INT_TYPE portNum,
340 Fw::Buffer& fwBuffer
341 );
342
345 NATIVE_INT_TYPE portNum,
346 NATIVE_UINT_TYPE context
347 );
348
349 PROTECTED:
350
351 // ----------------------------------------------------------------------
352 // Event logging functions
353 // ----------------------------------------------------------------------
354
359 U32 size
360 );
361
366
367 PROTECTED:
368
369 // ----------------------------------------------------------------------
370 // Event throttle reset functions
371 // ----------------------------------------------------------------------
372
375
378
379 PROTECTED:
380
381 // ----------------------------------------------------------------------
382 // Telemetry write functions
383 // ----------------------------------------------------------------------
384
389 U32 arg,
390 Fw::Time _tlmTime = Fw::Time()
391 );
392
397 U32 arg,
398 Fw::Time _tlmTime = Fw::Time()
399 );
400
404 void tlmWrite_HiBuffs(
405 U32 arg,
406 Fw::Time _tlmTime = Fw::Time()
407 );
408
412 void tlmWrite_NoBuffs(
413 U32 arg,
414 Fw::Time _tlmTime = Fw::Time()
415 );
416
421 U32 arg,
422 Fw::Time _tlmTime = Fw::Time()
423 );
424
425 PROTECTED:
426
427 // ----------------------------------------------------------------------
428 // Time
429 // ----------------------------------------------------------------------
430
435
436 PROTECTED:
437
438 // ----------------------------------------------------------------------
439 // Mutex operations for guarded ports
440 //
441 // You can override these operations to provide more sophisticated
442 // synchronization
443 // ----------------------------------------------------------------------
444
446 virtual void lock();
447
449 virtual void unLock();
450
451 PRIVATE:
452
453 // ----------------------------------------------------------------------
454 // Calls for messages received on typed input ports
455 // ----------------------------------------------------------------------
456
458 static Fw::Buffer m_p_bufferGetCallee_in(
459 Fw::PassiveComponentBase* callComp,
460 NATIVE_INT_TYPE portNum,
461 U32 size
462 );
463
465 static void m_p_bufferSendIn_in(
466 Fw::PassiveComponentBase* callComp,
467 NATIVE_INT_TYPE portNum,
468 Fw::Buffer& fwBuffer
469 );
470
472 static void m_p_schedIn_in(
473 Fw::PassiveComponentBase* callComp,
474 NATIVE_INT_TYPE portNum,
475 NATIVE_UINT_TYPE context
476 );
477
478 PRIVATE:
479
480 // ----------------------------------------------------------------------
481 // Typed input ports
482 // ----------------------------------------------------------------------
483
485 Fw::InputBufferGetPort m_bufferGetCallee_InputPort[NUM_BUFFERGETCALLEE_INPUT_PORTS];
486
489
491 Svc::InputSchedPort m_schedIn_InputPort[NUM_SCHEDIN_INPUT_PORTS];
492
493 PRIVATE:
494
495 // ----------------------------------------------------------------------
496 // Special output ports
497 // ----------------------------------------------------------------------
498
500 Fw::OutputLogPort m_eventOut_OutputPort[NUM_EVENTOUT_OUTPUT_PORTS];
501
502#if FW_ENABLE_TEXT_LOGGING == 1
503
505 Fw::OutputLogTextPort m_textEventOut_OutputPort[NUM_TEXTEVENTOUT_OUTPUT_PORTS];
506
507#endif
508
510 Fw::OutputTimePort m_timeCaller_OutputPort[NUM_TIMECALLER_OUTPUT_PORTS];
511
513 Fw::OutputTlmPort m_tlmOut_OutputPort[NUM_TLMOUT_OUTPUT_PORTS];
514
515 PRIVATE:
516
517 // ----------------------------------------------------------------------
518 // Counter values for event throttling
519 // ----------------------------------------------------------------------
520
522 NATIVE_UINT_TYPE m_NoBuffsAvailableThrottle;
523
525 NATIVE_UINT_TYPE m_ZeroSizeBufferThrottle;
526
527 PRIVATE:
528
529 // ----------------------------------------------------------------------
530 // First update flags for telemetry channels
531 // ----------------------------------------------------------------------
532
534 bool m_first_update_TotalBuffs;
535
537 bool m_first_update_CurrBuffs;
538
540 bool m_first_update_HiBuffs;
541
543 bool m_first_update_NoBuffs;
544
546 bool m_first_update_EmptyBuffs;
547
548 PRIVATE:
549
550 // ----------------------------------------------------------------------
551 // Last value storage for telemetry channels
552 // ----------------------------------------------------------------------
553
555 U32 m_last_TotalBuffs;
556
558 U32 m_last_CurrBuffs;
559
561 U32 m_last_HiBuffs;
562
564 U32 m_last_NoBuffs;
565
567 U32 m_last_EmptyBuffs;
568
569 PRIVATE:
570
571 // ----------------------------------------------------------------------
572 // Mutexes
573 // ----------------------------------------------------------------------
574
576 Os::Mutex m_guardedPortMutex;
577
578 };
579
580}
581
582#endif
PlatformIntType NATIVE_INT_TYPE
Definition BasicTypes.h:51
PlatformUIntType NATIVE_UINT_TYPE
Definition BasicTypes.h:52
C++-compatible configuration header for fprime configuration.
void init()
Object initializer.
Definition ObjBase.cpp:27
Auto-generated base for BufferManager component.
virtual void unLock()
Unlock the guarded mutex.
bool isConnected_eventOut_OutputPort(NATIVE_INT_TYPE portNum)
Fw::InputBufferGetPort * get_bufferGetCallee_InputPort(NATIVE_INT_TYPE portNum)
NATIVE_INT_TYPE getNum_eventOut_OutputPorts() const
BufferManagerComponentBase(const char *compName="")
Construct BufferManagerComponentBase object.
void tlmWrite_HiBuffs(U32 arg, Fw::Time _tlmTime=Fw::Time())
void set_timeCaller_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputTimePort *port)
Connect port to timeCaller[portNum].
NATIVE_INT_TYPE getNum_bufferGetCallee_InputPorts() const
NATIVE_INT_TYPE getNum_timeCaller_OutputPorts() const
virtual void schedIn_handler(NATIVE_INT_TYPE portNum, NATIVE_UINT_TYPE context)=0
Handler for input port schedIn.
@ EVENTID_NOBUFFSAVAILABLE
The BufferManager was unable to allocate a requested buffer.
@ EVENTID_ZEROSIZEBUFFER
The buffer manager received a zero-sized buffer as a return. Probably undetected empty buffer allocat...
NATIVE_INT_TYPE getNum_tlmOut_OutputPorts() const
@ CHANNELID_TOTALBUFFS
Channel ID for TotalBuffs.
@ CHANNELID_EMPTYBUFFS
Channel ID for EmptyBuffs.
@ CHANNELID_CURRBUFFS
Channel ID for CurrBuffs.
void set_tlmOut_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputTlmPort *port)
Connect port to tlmOut[portNum].
NATIVE_INT_TYPE getNum_bufferSendIn_InputPorts() const
NATIVE_INT_TYPE getNum_schedIn_InputPorts() const
void log_WARNING_HI_ZeroSizeBuffer_ThrottleClear()
Reset throttle value for ZeroSizeBuffer.
void set_eventOut_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputLogPort *port)
Connect port to eventOut[portNum].
virtual void bufferSendIn_handler(NATIVE_INT_TYPE portNum, Fw::Buffer &fwBuffer)=0
Handler for input port bufferSendIn.
virtual ~BufferManagerComponentBase()
Destroy BufferManagerComponentBase object.
virtual Fw::Buffer bufferGetCallee_handler(NATIVE_INT_TYPE portNum, U32 size)=0
Handler for input port bufferGetCallee.
virtual void lock()
Lock the guarded mutex.
friend class BufferManagerComponentBaseFriend
Friend class for white-box testing.
void tlmWrite_EmptyBuffs(U32 arg, Fw::Time _tlmTime=Fw::Time())
void tlmWrite_NoBuffs(U32 arg, Fw::Time _tlmTime=Fw::Time())
Svc::InputSchedPort * get_schedIn_InputPort(NATIVE_INT_TYPE portNum)
void tlmWrite_TotalBuffs(U32 arg, Fw::Time _tlmTime=Fw::Time())
bool isConnected_timeCaller_OutputPort(NATIVE_INT_TYPE portNum)
void tlmWrite_CurrBuffs(U32 arg, Fw::Time _tlmTime=Fw::Time())
void schedIn_handlerBase(NATIVE_INT_TYPE portNum, NATIVE_UINT_TYPE context)
Handler base-class function for input port schedIn.
Fw::Buffer bufferGetCallee_handlerBase(NATIVE_INT_TYPE portNum, U32 size)
Handler base-class function for input port bufferGetCallee.
void log_WARNING_HI_NoBuffsAvailable_ThrottleClear()
Reset throttle value for NoBuffsAvailable.
@ EVENTID_ZEROSIZEBUFFER_THROTTLE
Throttle reset count for ZeroSizeBuffer.
@ EVENTID_NOBUFFSAVAILABLE_THROTTLE
Throttle reset count for NoBuffsAvailable.
bool isConnected_tlmOut_OutputPort(NATIVE_INT_TYPE portNum)
Fw::InputBufferSendPort * get_bufferSendIn_InputPort(NATIVE_INT_TYPE portNum)
void bufferSendIn_handlerBase(NATIVE_INT_TYPE portNum, Fw::Buffer &fwBuffer)
Handler base-class function for input port bufferSendIn.