F´ Flight Software - C/C++ Documentation NASA-v1.6.0
A framework for building embedded system applications to NASA flight quality standards.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
TlmChanComponentAc.hpp
Go to the documentation of this file.
1// ======================================================================
2// \title TlmChanComponentAc.hpp
3// \author Generated by fpp-to-cpp
4// \brief hpp file for TlmChan component base class
5// ======================================================================
6
7#ifndef Svc_TlmChanComponentAc_HPP
8#define Svc_TlmChanComponentAc_HPP
9
10#include "FpConfig.hpp"
11#include "Fw/Com/ComPortAc.hpp"
16#include "Fw/Tlm/TlmPortAc.hpp"
17#include "Os/Mutex.hpp"
20
21namespace Svc {
22
29 {
30
31 // ----------------------------------------------------------------------
32 // Friend classes
33 // ----------------------------------------------------------------------
34
37
38 PROTECTED:
39
40 // ----------------------------------------------------------------------
41 // Constants
42 // ----------------------------------------------------------------------
43
45 enum {
50 };
51
53 enum {
56 };
57
58 public:
59
60 // ----------------------------------------------------------------------
61 // Component initialization
62 // ----------------------------------------------------------------------
63
65 void init(
66 NATIVE_INT_TYPE queueDepth,
67 NATIVE_INT_TYPE instance = 0
68 );
69
70 public:
71
72 // ----------------------------------------------------------------------
73 // Getters for typed input ports
74 // ----------------------------------------------------------------------
75
80 NATIVE_INT_TYPE portNum
81 );
82
87 NATIVE_INT_TYPE portNum
88 );
89
94 NATIVE_INT_TYPE portNum
95 );
96
101 NATIVE_INT_TYPE portNum
102 );
103
104 public:
105
106 // ----------------------------------------------------------------------
107 // Connect typed input ports to typed output ports
108 // ----------------------------------------------------------------------
109
112 NATIVE_INT_TYPE portNum,
113 Fw::InputComPort* port
114 );
115
118 NATIVE_INT_TYPE portNum,
119 Svc::InputPingPort* port
120 );
121
122#if FW_PORT_SERIALIZATION
123
124 public:
125
126 // ----------------------------------------------------------------------
127 // Connect serial input ports to typed output ports
128 // ----------------------------------------------------------------------
129
132 NATIVE_INT_TYPE portNum,
133 Fw::InputSerializePort* port
134 );
135
138 NATIVE_INT_TYPE portNum,
139 Fw::InputSerializePort* port
140 );
141
142#endif
143
144 PROTECTED:
145
146 // ----------------------------------------------------------------------
147 // Component construction and destruction
148 // ----------------------------------------------------------------------
149
152 const char* compName = ""
153 );
154
156 virtual ~TlmChanComponentBase();
157
158 PROTECTED:
159
160 // ----------------------------------------------------------------------
161 // Getters for numbers of typed input ports
162 // ----------------------------------------------------------------------
163
168
173
178
183
184 PROTECTED:
185
186 // ----------------------------------------------------------------------
187 // Getters for numbers of typed output ports
188 // ----------------------------------------------------------------------
189
194
199
200 PROTECTED:
201
202 // ----------------------------------------------------------------------
203 // Connection status queries for typed output ports
204 // ----------------------------------------------------------------------
205
210 NATIVE_INT_TYPE portNum
211 );
212
217 NATIVE_INT_TYPE portNum
218 );
219
220 PROTECTED:
221
222 // ----------------------------------------------------------------------
223 // Handlers to implement for typed input ports
224 // ----------------------------------------------------------------------
225
227 virtual void Run_handler(
228 NATIVE_INT_TYPE portNum,
229 NATIVE_UINT_TYPE context
230 ) = 0;
231
233 virtual void TlmGet_handler(
234 NATIVE_INT_TYPE portNum,
235 FwChanIdType id,
236 Fw::Time& timeTag,
237 Fw::TlmBuffer& val
238 ) = 0;
239
241 virtual void TlmRecv_handler(
242 NATIVE_INT_TYPE portNum,
243 FwChanIdType id,
244 Fw::Time& timeTag,
245 Fw::TlmBuffer& val
246 ) = 0;
247
249 virtual void pingIn_handler(
250 NATIVE_INT_TYPE portNum,
251 U32 key
252 ) = 0;
253
254 PROTECTED:
255
256 // ----------------------------------------------------------------------
257 // Port handler base-class functions for typed input ports
258 //
259 // Call these functions directly to bypass the corresponding ports
260 // ----------------------------------------------------------------------
261
263 void Run_handlerBase(
264 NATIVE_INT_TYPE portNum,
265 NATIVE_UINT_TYPE context
266 );
267
270 NATIVE_INT_TYPE portNum,
271 FwChanIdType id,
272 Fw::Time& timeTag,
273 Fw::TlmBuffer& val
274 );
275
278 NATIVE_INT_TYPE portNum,
279 FwChanIdType id,
280 Fw::Time& timeTag,
281 Fw::TlmBuffer& val
282 );
283
286 NATIVE_INT_TYPE portNum,
287 U32 key
288 );
289
290 PROTECTED:
291
292 // ----------------------------------------------------------------------
293 // Pre-message hooks for typed async input ports
294 //
295 // Each of these functions is invoked just before processing a message
296 // on the corresponding port. By default, they do nothing. You can
297 // override them to provide specific pre-message behavior.
298 // ----------------------------------------------------------------------
299
301 virtual void Run_preMsgHook(
302 NATIVE_INT_TYPE portNum,
303 NATIVE_UINT_TYPE context
304 );
305
307 virtual void pingIn_preMsgHook(
308 NATIVE_INT_TYPE portNum,
309 U32 key
310 );
311
312 PROTECTED:
313
314 // ----------------------------------------------------------------------
315 // Invocation functions for typed output ports
316 // ----------------------------------------------------------------------
317
319 void PktSend_out(
320 NATIVE_INT_TYPE portNum,
321 Fw::ComBuffer& data,
322 U32 context
323 );
324
326 void pingOut_out(
327 NATIVE_INT_TYPE portNum,
328 U32 key
329 );
330
331 PROTECTED:
332
333 // ----------------------------------------------------------------------
334 // Mutex operations for guarded ports
335 //
336 // You can override these operations to provide more sophisticated
337 // synchronization
338 // ----------------------------------------------------------------------
339
341 virtual void lock();
342
344 virtual void unLock();
345
346 PRIVATE:
347
348 // ----------------------------------------------------------------------
349 // Message dispatch functions
350 // ----------------------------------------------------------------------
351
353 virtual MsgDispatchStatus doDispatch();
354
355 PRIVATE:
356
357 // ----------------------------------------------------------------------
358 // Calls for messages received on typed input ports
359 // ----------------------------------------------------------------------
360
362 static void m_p_Run_in(
363 Fw::PassiveComponentBase* callComp,
364 NATIVE_INT_TYPE portNum,
365 NATIVE_UINT_TYPE context
366 );
367
369 static void m_p_TlmGet_in(
370 Fw::PassiveComponentBase* callComp,
371 NATIVE_INT_TYPE portNum,
372 FwChanIdType id,
373 Fw::Time& timeTag,
374 Fw::TlmBuffer& val
375 );
376
378 static void m_p_TlmRecv_in(
379 Fw::PassiveComponentBase* callComp,
380 NATIVE_INT_TYPE portNum,
381 FwChanIdType id,
382 Fw::Time& timeTag,
383 Fw::TlmBuffer& val
384 );
385
387 static void m_p_pingIn_in(
388 Fw::PassiveComponentBase* callComp,
389 NATIVE_INT_TYPE portNum,
390 U32 key
391 );
392
393 PRIVATE:
394
395 // ----------------------------------------------------------------------
396 // Typed input ports
397 // ----------------------------------------------------------------------
398
401
404
406 Fw::InputTlmPort m_TlmRecv_InputPort[NUM_TLMRECV_INPUT_PORTS];
407
409 Svc::InputPingPort m_pingIn_InputPort[NUM_PINGIN_INPUT_PORTS];
410
411 PRIVATE:
412
413 // ----------------------------------------------------------------------
414 // Typed output ports
415 // ----------------------------------------------------------------------
416
418 Fw::OutputComPort m_PktSend_OutputPort[NUM_PKTSEND_OUTPUT_PORTS];
419
421 Svc::OutputPingPort m_pingOut_OutputPort[NUM_PINGOUT_OUTPUT_PORTS];
422
423 PRIVATE:
424
425 // ----------------------------------------------------------------------
426 // Mutexes
427 // ----------------------------------------------------------------------
428
430 Os::Mutex m_guardedPortMutex;
431
432 };
433
434}
435
436#endif
PlatformIntType NATIVE_INT_TYPE
Definition BasicTypes.h:51
PlatformUIntType NATIVE_UINT_TYPE
Definition BasicTypes.h:52
U32 FwChanIdType
Definition FpConfig.h:59
C++-compatible configuration header for fprime configuration.
void init()
Object initializer.
Definition ObjBase.cpp:27
Auto-generated base for TlmChan component.
virtual void pingIn_handler(NATIVE_INT_TYPE portNum, U32 key)=0
Handler for input port pingIn.
NATIVE_INT_TYPE getNum_pingOut_OutputPorts()
NATIVE_INT_TYPE getNum_TlmRecv_InputPorts()
void set_pingOut_OutputPort(NATIVE_INT_TYPE portNum, Svc::InputPingPort *port)
Connect port to pingOut[portNum].
bool isConnected_PktSend_OutputPort(NATIVE_INT_TYPE portNum)
virtual void Run_preMsgHook(NATIVE_INT_TYPE portNum, NATIVE_UINT_TYPE context)
Pre-message hook for async input port Run.
NATIVE_INT_TYPE getNum_pingIn_InputPorts()
NATIVE_INT_TYPE getNum_Run_InputPorts()
virtual void unLock()
Unlock the guarded mutex.
virtual ~TlmChanComponentBase()
Destroy TlmChanComponentBase object.
Fw::InputTlmPort * get_TlmRecv_InputPort(NATIVE_INT_TYPE portNum)
void pingOut_out(NATIVE_INT_TYPE portNum, U32 key)
Invoke output port pingOut.
bool isConnected_pingOut_OutputPort(NATIVE_INT_TYPE portNum)
Fw::InputTlmGetPort * get_TlmGet_InputPort(NATIVE_INT_TYPE portNum)
virtual void Run_handler(NATIVE_INT_TYPE portNum, NATIVE_UINT_TYPE context)=0
Handler for input port Run.
Svc::InputPingPort * get_pingIn_InputPort(NATIVE_INT_TYPE portNum)
virtual void TlmRecv_handler(NATIVE_INT_TYPE portNum, FwChanIdType id, Fw::Time &timeTag, Fw::TlmBuffer &val)=0
Handler for input port TlmRecv.
NATIVE_INT_TYPE getNum_TlmGet_InputPorts()
void TlmRecv_handlerBase(NATIVE_INT_TYPE portNum, FwChanIdType id, Fw::Time &timeTag, Fw::TlmBuffer &val)
Handler base-class function for input port TlmRecv.
void TlmGet_handlerBase(NATIVE_INT_TYPE portNum, FwChanIdType id, Fw::Time &timeTag, Fw::TlmBuffer &val)
Handler base-class function for input port TlmGet.
void Run_handlerBase(NATIVE_INT_TYPE portNum, NATIVE_UINT_TYPE context)
Handler base-class function for input port Run.
friend class TlmChanComponentBaseFriend
Friend class for white-box testing.
TlmChanComponentBase(const char *compName="")
Construct TlmChanComponentBase object.
Svc::InputSchedPort * get_Run_InputPort(NATIVE_INT_TYPE portNum)
void PktSend_out(NATIVE_INT_TYPE portNum, Fw::ComBuffer &data, U32 context)
Invoke output port PktSend.
void pingIn_handlerBase(NATIVE_INT_TYPE portNum, U32 key)
Handler base-class function for input port pingIn.
NATIVE_INT_TYPE getNum_PktSend_OutputPorts()
virtual void pingIn_preMsgHook(NATIVE_INT_TYPE portNum, U32 key)
Pre-message hook for async input port pingIn.
void set_PktSend_OutputPort(NATIVE_INT_TYPE portNum, Fw::InputComPort *port)
Connect port to PktSend[portNum].
virtual void lock()
Lock the guarded mutex.
virtual void TlmGet_handler(NATIVE_INT_TYPE portNum, FwChanIdType id, Fw::Time &timeTag, Fw::TlmBuffer &val)=0
Handler for input port TlmGet.