F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
Loading...
Searching...
No Matches
ActiveRateGroupComponentAc.hpp
Go to the documentation of this file.
1// ======================================================================
2// \title ActiveRateGroupComponentAc.hpp
3// \author Generated by fpp-to-cpp
4// \brief hpp file for ActiveRateGroup component base class
5// ======================================================================
6
7#ifndef Svc_ActiveRateGroupComponentAc_HPP
8#define Svc_ActiveRateGroupComponentAc_HPP
9
10#include "FpConfig.hpp"
12#include "Fw/Log/LogPortAc.hpp"
13#include "Fw/Log/LogString.hpp"
14#if FW_ENABLE_TEXT_LOGGING == 1
16#endif
20#include "Fw/Tlm/TlmPortAc.hpp"
21#include "Fw/Tlm/TlmString.hpp"
25
26namespace Svc {
27
34 {
35
36 // ----------------------------------------------------------------------
37 // Friend classes
38 // ----------------------------------------------------------------------
39
42
43 PROTECTED:
44
45 // ----------------------------------------------------------------------
46 // Constants
47 // ----------------------------------------------------------------------
48
50 enum {
53 };
54
56 enum {
61 };
62
64 enum {
67 };
68
70 enum {
73 };
74
76 enum {
79 };
80
81 public:
82
83 // ----------------------------------------------------------------------
84 // Component initialization
85 // ----------------------------------------------------------------------
86
88 void init(
89 FwSizeType queueDepth,
90 FwEnumStoreType instance = 0
91 );
92
93 public:
94
95 // ----------------------------------------------------------------------
96 // Getters for typed input ports
97 // ----------------------------------------------------------------------
98
103 FwIndexType portNum
104 );
105
110 FwIndexType portNum
111 );
112
113 public:
114
115 // ----------------------------------------------------------------------
116 // Connect input ports to special output ports
117 // ----------------------------------------------------------------------
118
121 FwIndexType portNum,
122 Fw::InputLogPort* port
123 );
124
125#if FW_ENABLE_TEXT_LOGGING == 1
126
128 void set_LogText_OutputPort(
129 FwIndexType portNum,
131 );
132
133#endif
134
137 FwIndexType portNum,
138 Fw::InputTimePort* port
139 );
140
143 FwIndexType portNum,
144 Fw::InputTlmPort* port
145 );
146
147 public:
148
149 // ----------------------------------------------------------------------
150 // Connect typed input ports to typed output ports
151 // ----------------------------------------------------------------------
152
155 FwIndexType portNum,
156 Svc::InputPingPort* port
157 );
158
161 FwIndexType portNum,
163 );
164
165#if FW_PORT_SERIALIZATION
166
167 public:
168
169 // ----------------------------------------------------------------------
170 // Connect serial input ports to special output ports
171 // ----------------------------------------------------------------------
172
175 FwIndexType portNum,
176 Fw::InputSerializePort* port
177 );
178
179#if FW_ENABLE_TEXT_LOGGING == 1
180
182 void set_LogText_OutputPort(
183 FwIndexType portNum,
184 Fw::InputSerializePort* port
185 );
186
187#endif
188
191 FwIndexType portNum,
192 Fw::InputSerializePort* port
193 );
194
197 FwIndexType portNum,
198 Fw::InputSerializePort* port
199 );
200
201#endif
202
203#if FW_PORT_SERIALIZATION
204
205 public:
206
207 // ----------------------------------------------------------------------
208 // Connect serial input ports to typed output ports
209 // ----------------------------------------------------------------------
210
213 FwIndexType portNum,
214 Fw::InputSerializePort* port
215 );
216
219 FwIndexType portNum,
220 Fw::InputSerializePort* port
221 );
222
223#endif
224
225 PROTECTED:
226
227 // ----------------------------------------------------------------------
228 // Component construction and destruction
229 // ----------------------------------------------------------------------
230
233 const char* compName = ""
234 );
235
238
239 PROTECTED:
240
241 // ----------------------------------------------------------------------
242 // Getters for numbers of typed input ports
243 // ----------------------------------------------------------------------
244
249
254
255 PROTECTED:
256
257 // ----------------------------------------------------------------------
258 // Getters for numbers of special output ports
259 // ----------------------------------------------------------------------
260
265
266#if FW_ENABLE_TEXT_LOGGING == 1
267
271 FwIndexType getNum_LogText_OutputPorts() const;
272
273#endif
274
279
284
285 PROTECTED:
286
287 // ----------------------------------------------------------------------
288 // Getters for numbers of typed output ports
289 // ----------------------------------------------------------------------
290
295
300
301 PROTECTED:
302
303 // ----------------------------------------------------------------------
304 // Connection status queries for special output ports
305 // ----------------------------------------------------------------------
306
311 FwIndexType portNum
312 );
313
314#if FW_ENABLE_TEXT_LOGGING == 1
315
319 bool isConnected_LogText_OutputPort(
320 FwIndexType portNum
321 );
322
323#endif
324
329 FwIndexType portNum
330 );
331
336 FwIndexType portNum
337 );
338
339 PROTECTED:
340
341 // ----------------------------------------------------------------------
342 // Connection status queries for typed output ports
343 // ----------------------------------------------------------------------
344
349 FwIndexType portNum
350 );
351
356 FwIndexType portNum
357 );
358
359 PROTECTED:
360
361 // ----------------------------------------------------------------------
362 // Handlers to implement for typed input ports
363 // ----------------------------------------------------------------------
364
366 virtual void CycleIn_handler(
367 FwIndexType portNum,
368 Os::RawTime& cycleStart
369 ) = 0;
370
372 virtual void PingIn_handler(
373 FwIndexType portNum,
374 U32 key
375 ) = 0;
376
377 PROTECTED:
378
379 // ----------------------------------------------------------------------
380 // Port handler base-class functions for typed input ports
381 //
382 // Call these functions directly to bypass the corresponding ports
383 // ----------------------------------------------------------------------
384
387 FwIndexType portNum,
388 Os::RawTime& cycleStart
389 );
390
393 FwIndexType portNum,
394 U32 key
395 );
396
397 PROTECTED:
398
399 // ----------------------------------------------------------------------
400 // Pre-message hooks for typed async input ports
401 //
402 // Each of these functions is invoked just before processing a message
403 // on the corresponding port. By default, they do nothing. You can
404 // override them to provide specific pre-message behavior.
405 // ----------------------------------------------------------------------
406
408 virtual void CycleIn_preMsgHook(
409 FwIndexType portNum,
410 Os::RawTime& cycleStart
411 );
412
414 virtual void PingIn_preMsgHook(
415 FwIndexType portNum,
416 U32 key
417 );
418
419 PROTECTED:
420
421 // ----------------------------------------------------------------------
422 // Invocation functions for typed output ports
423 // ----------------------------------------------------------------------
424
426 void PingOut_out(
427 FwIndexType portNum,
428 U32 key
429 );
430
433 FwIndexType portNum,
434 U32 context
435 );
436
437 PROTECTED:
438
439 // ----------------------------------------------------------------------
440 // Event logging functions
441 // ----------------------------------------------------------------------
442
447
452 U32 cycle
453 ) const;
454
455 PROTECTED:
456
457 // ----------------------------------------------------------------------
458 // Telemetry write functions
459 // ----------------------------------------------------------------------
460
465 U32 arg,
466 Fw::Time _tlmTime = Fw::Time()
467 );
468
473 U32 arg,
474 Fw::Time _tlmTime = Fw::Time()
475 );
476
477 PROTECTED:
478
479 // ----------------------------------------------------------------------
480 // Time
481 // ----------------------------------------------------------------------
482
487
488 PRIVATE:
489
490 // ----------------------------------------------------------------------
491 // Message dispatch functions
492 // ----------------------------------------------------------------------
493
495 virtual MsgDispatchStatus doDispatch();
496
497 PRIVATE:
498
499 // ----------------------------------------------------------------------
500 // Calls for messages received on typed input ports
501 // ----------------------------------------------------------------------
502
504 static void m_p_CycleIn_in(
505 Fw::PassiveComponentBase* callComp,
506 FwIndexType portNum,
507 Os::RawTime& cycleStart
508 );
509
511 static void m_p_PingIn_in(
512 Fw::PassiveComponentBase* callComp,
513 FwIndexType portNum,
514 U32 key
515 );
516
517 PRIVATE:
518
519 // ----------------------------------------------------------------------
520 // Typed input ports
521 // ----------------------------------------------------------------------
522
524 Svc::InputCyclePort m_CycleIn_InputPort[NUM_CYCLEIN_INPUT_PORTS];
525
527 Svc::InputPingPort m_PingIn_InputPort[NUM_PINGIN_INPUT_PORTS];
528
529 PRIVATE:
530
531 // ----------------------------------------------------------------------
532 // Special output ports
533 // ----------------------------------------------------------------------
534
536 Fw::OutputLogPort m_Log_OutputPort[NUM_LOG_OUTPUT_PORTS];
537
538#if FW_ENABLE_TEXT_LOGGING == 1
539
542
543#endif
544
546 Fw::OutputTimePort m_Time_OutputPort[NUM_TIME_OUTPUT_PORTS];
547
549 Fw::OutputTlmPort m_Tlm_OutputPort[NUM_TLM_OUTPUT_PORTS];
550
551 PRIVATE:
552
553 // ----------------------------------------------------------------------
554 // Typed output ports
555 // ----------------------------------------------------------------------
556
558 Svc::OutputPingPort m_PingOut_OutputPort[NUM_PINGOUT_OUTPUT_PORTS];
559
561 Svc::OutputSchedPort m_RateGroupMemberOut_OutputPort[NUM_RATEGROUPMEMBEROUT_OUTPUT_PORTS];
562
563 PRIVATE:
564
565 // ----------------------------------------------------------------------
566 // First update flags for telemetry channels
567 // ----------------------------------------------------------------------
568
570 bool m_first_update_RgMaxTime;
571
573 bool m_first_update_RgCycleSlips;
574
575 PRIVATE:
576
577 // ----------------------------------------------------------------------
578 // Last value storage for telemetry channels
579 // ----------------------------------------------------------------------
580
582 U32 m_last_RgMaxTime;
583
585 U32 m_last_RgCycleSlips;
586
587 };
588
589}
590
591#endif
I32 FwEnumStoreType
Definition FpConfig.h:64
PlatformSizeType FwSizeType
Definition FpConfig.h:35
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 ActiveRateGroup component.
void tlmWrite_RgMaxTime(U32 arg, Fw::Time _tlmTime=Fw::Time())
void set_PingOut_OutputPort(FwIndexType portNum, Svc::InputPingPort *port)
Connect port to PingOut[portNum].
void tlmWrite_RgCycleSlips(U32 arg, Fw::Time _tlmTime=Fw::Time())
bool isConnected_Time_OutputPort(FwIndexType portNum)
@ EVENTID_RATEGROUPSTARTED
Informational event that rate group has started.
@ EVENTID_RATEGROUPCYCLESLIP
Warning event that rate group has had a cycle slip.
virtual ~ActiveRateGroupComponentBase()
Destroy ActiveRateGroupComponentBase object.
void RateGroupMemberOut_out(FwIndexType portNum, U32 context)
Invoke output port RateGroupMemberOut.
virtual void PingIn_handler(FwIndexType portNum, U32 key)=0
Handler for input port PingIn.
virtual void CycleIn_handler(FwIndexType portNum, Os::RawTime &cycleStart)=0
Handler for input port CycleIn.
bool isConnected_PingOut_OutputPort(FwIndexType portNum)
@ CHANNELID_RGCYCLESLIPS
Channel ID for RgCycleSlips.
friend class ActiveRateGroupComponentBaseFriend
Friend class for white-box testing.
Svc::InputPingPort * get_PingIn_InputPort(FwIndexType portNum)
virtual void PingIn_preMsgHook(FwIndexType portNum, U32 key)
Pre-message hook for async input port PingIn.
void set_Time_OutputPort(FwIndexType portNum, Fw::InputTimePort *port)
Connect port to Time[portNum].
bool isConnected_RateGroupMemberOut_OutputPort(FwIndexType portNum)
void CycleIn_handlerBase(FwIndexType portNum, Os::RawTime &cycleStart)
Handler base-class function for input port CycleIn.
virtual void CycleIn_preMsgHook(FwIndexType portNum, Os::RawTime &cycleStart)
Pre-message hook for async input port CycleIn.
void set_RateGroupMemberOut_OutputPort(FwIndexType portNum, Svc::InputSchedPort *port)
Connect port to RateGroupMemberOut[portNum].
Svc::InputCyclePort * get_CycleIn_InputPort(FwIndexType portNum)
void PingIn_handlerBase(FwIndexType portNum, U32 key)
Handler base-class function for input port PingIn.
void set_Tlm_OutputPort(FwIndexType portNum, Fw::InputTlmPort *port)
Connect port to Tlm[portNum].
void set_Log_OutputPort(FwIndexType portNum, Fw::InputLogPort *port)
Connect port to Log[portNum].
void PingOut_out(FwIndexType portNum, U32 key)
Invoke output port PingOut.