F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
Loading...
Searching...
No Matches
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 FwEnumStoreType instance = 0
95 );
96
97 public:
98
99 // ----------------------------------------------------------------------
100 // Getters for typed input ports
101 // ----------------------------------------------------------------------
102
107 FwIndexType portNum
108 );
109
114 FwIndexType portNum
115 );
116
121 FwIndexType portNum
122 );
123
124 public:
125
126 // ----------------------------------------------------------------------
127 // Connect input ports to special output ports
128 // ----------------------------------------------------------------------
129
132 FwIndexType portNum,
133 Fw::InputLogPort* port
134 );
135
136#if FW_ENABLE_TEXT_LOGGING == 1
137
139 void set_textEventOut_OutputPort(
140 FwIndexType portNum,
142 );
143
144#endif
145
148 FwIndexType portNum,
149 Fw::InputTimePort* port
150 );
151
154 FwIndexType 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 FwIndexType portNum,
169 Fw::InputSerializePort* port
170 );
171
172#if FW_ENABLE_TEXT_LOGGING == 1
173
175 void set_textEventOut_OutputPort(
176 FwIndexType portNum,
177 Fw::InputSerializePort* port
178 );
179
180#endif
181
184 FwIndexType portNum,
185 Fw::InputSerializePort* port
186 );
187
190 FwIndexType 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 FwIndexType 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 FwIndexType portNum
272 );
273
274#if FW_ENABLE_TEXT_LOGGING == 1
275
279 bool isConnected_textEventOut_OutputPort(
280 FwIndexType portNum
281 );
282
283#endif
284
289 FwIndexType portNum
290 );
291
296 FwIndexType portNum
297 );
298
299 PROTECTED:
300
301 // ----------------------------------------------------------------------
302 // Handlers to implement for typed input ports
303 // ----------------------------------------------------------------------
304
307 FwIndexType portNum,
308 U32 size
309 ) = 0;
310
313 FwIndexType portNum,
314 Fw::Buffer& fwBuffer
315 ) = 0;
316
318 virtual void schedIn_handler(
319 FwIndexType portNum,
320 U32 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 FwIndexType portNum,
334 U32 size
335 );
336
339 FwIndexType portNum,
340 Fw::Buffer& fwBuffer
341 );
342
345 FwIndexType portNum,
346 U32 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 FwIndexType portNum,
461 U32 size
462 );
463
465 static void m_p_bufferSendIn_in(
466 Fw::PassiveComponentBase* callComp,
467 FwIndexType portNum,
468 Fw::Buffer& fwBuffer
469 );
470
472 static void m_p_schedIn_in(
473 Fw::PassiveComponentBase* callComp,
474 FwIndexType portNum,
475 U32 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 FwIndexType m_NoBuffsAvailableThrottle;
523
525 FwIndexType 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
I32 FwEnumStoreType
Definition FpConfig.h:64
PlatformIndexType FwIndexType
Definition FpConfig.h:25
C++-compatible configuration header for fprime configuration.
void init()
Object initializer.
Definition ObjBase.cpp:27
Auto-generated base for BufferManager component.
virtual void bufferSendIn_handler(FwIndexType portNum, Fw::Buffer &fwBuffer)=0
Handler for input port bufferSendIn.
virtual void unLock()
Unlock the guarded mutex.
Svc::InputSchedPort * get_schedIn_InputPort(FwIndexType portNum)
Fw::InputBufferSendPort * get_bufferSendIn_InputPort(FwIndexType portNum)
Fw::Buffer bufferGetCallee_handlerBase(FwIndexType portNum, U32 size)
Handler base-class function for input port bufferGetCallee.
void tlmWrite_HiBuffs(U32 arg, Fw::Time _tlmTime=Fw::Time())
void set_tlmOut_OutputPort(FwIndexType portNum, Fw::InputTlmPort *port)
Connect port to tlmOut[portNum].
Fw::InputBufferGetPort * get_bufferGetCallee_InputPort(FwIndexType portNum)
virtual Fw::Buffer bufferGetCallee_handler(FwIndexType portNum, U32 size)=0
Handler for input port bufferGetCallee.
void schedIn_handlerBase(FwIndexType portNum, U32 context)
Handler base-class function for input port schedIn.
@ CHANNELID_TOTALBUFFS
Channel ID for TotalBuffs.
@ CHANNELID_EMPTYBUFFS
Channel ID for EmptyBuffs.
@ CHANNELID_CURRBUFFS
Channel ID for CurrBuffs.
void log_WARNING_HI_ZeroSizeBuffer_ThrottleClear()
Reset throttle value for ZeroSizeBuffer.
void set_timeCaller_OutputPort(FwIndexType portNum, Fw::InputTimePort *port)
Connect port to timeCaller[portNum].
void bufferSendIn_handlerBase(FwIndexType portNum, Fw::Buffer &fwBuffer)
Handler base-class function for input port bufferSendIn.
@ 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...
bool isConnected_timeCaller_OutputPort(FwIndexType portNum)
bool isConnected_eventOut_OutputPort(FwIndexType portNum)
@ EVENTID_ZEROSIZEBUFFER_THROTTLE
Throttle reset count for ZeroSizeBuffer.
@ EVENTID_NOBUFFSAVAILABLE_THROTTLE
Throttle reset count for NoBuffsAvailable.
virtual ~BufferManagerComponentBase()
Destroy BufferManagerComponentBase object.
virtual void lock()
Lock the guarded mutex.
friend class BufferManagerComponentBaseFriend
Friend class for white-box testing.
virtual void schedIn_handler(FwIndexType portNum, U32 context)=0
Handler for input port schedIn.
void tlmWrite_EmptyBuffs(U32 arg, Fw::Time _tlmTime=Fw::Time())
void tlmWrite_NoBuffs(U32 arg, Fw::Time _tlmTime=Fw::Time())
void tlmWrite_TotalBuffs(U32 arg, Fw::Time _tlmTime=Fw::Time())
void set_eventOut_OutputPort(FwIndexType portNum, Fw::InputLogPort *port)
Connect port to eventOut[portNum].
void tlmWrite_CurrBuffs(U32 arg, Fw::Time _tlmTime=Fw::Time())
bool isConnected_tlmOut_OutputPort(FwIndexType portNum)
void log_WARNING_HI_NoBuffsAvailable_ThrottleClear()
Reset throttle value for NoBuffsAvailable.