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
CyclePortAc.cpp
Go to the documentation of this file.
1// ======================================================================
2// \title CyclePortAc.cpp
3// \author Generated by fpp-to-cpp
4// \brief cpp file for Cycle port
5// ======================================================================
6
8#include "Fw/Types/Assert.hpp"
10
11namespace Svc {
12
13 namespace {
14
15 // ----------------------------------------------------------------------
16 // Port buffer class
17 // ----------------------------------------------------------------------
18
19 class CyclePortBuffer : public Fw::SerializeBufferBase {
20
21 public:
22
23 NATIVE_UINT_TYPE getBuffCapacity() const {
25 }
26
27 U8* getBuffAddr() {
28 return m_buff;
29 }
30
31 const U8* getBuffAddr() const {
32 return m_buff;
33 }
34
35 private:
36
38
39 };
40
41 }
42
43 // ----------------------------------------------------------------------
44 // Input Port Member functions
45 // ----------------------------------------------------------------------
46
47 InputCyclePort ::
48 InputCyclePort() :
49 Fw::InputPortBase(),
50 m_func(nullptr)
51 {
52
53 }
54
55 void InputCyclePort ::
56 init()
57 {
59 }
60
61 void InputCyclePort ::
62 addCallComp(
64 CompFuncPtr funcPtr
65 )
66 {
67 FW_ASSERT(callComp != nullptr);
68 FW_ASSERT(funcPtr != nullptr);
69
70 this->m_comp = callComp;
71 this->m_func = funcPtr;
72 this->m_connObj = callComp;
73 }
74
75 void InputCyclePort ::
76 invoke(Svc::TimerVal& cycleStart)
77 {
78#if FW_PORT_TRACING == 1
79 this->trace();
80#endif
81
82 FW_ASSERT(this->m_comp != nullptr);
83 FW_ASSERT(this->m_func != nullptr);
84
85 return this->m_func(this->m_comp, this->m_portNum, cycleStart);
86 }
87
88#if FW_PORT_SERIALIZATION == 1
89
90 Fw::SerializeStatus InputCyclePort ::
91 invokeSerial(Fw::SerializeBufferBase& _buffer)
92 {
93 Fw::SerializeStatus _status;
94
95#if FW_PORT_TRACING == 1
96 this->trace();
97#endif
98
99 FW_ASSERT(this->m_comp != nullptr);
100 FW_ASSERT(this->m_func != nullptr);
101
102 Svc::TimerVal cycleStart;
103 _status = _buffer.deserialize(cycleStart);
104 if (_status != Fw::FW_SERIALIZE_OK) {
105 return _status;
106 }
107
108 this->m_func(this->m_comp, this->m_portNum, cycleStart);
109
110 return Fw::FW_SERIALIZE_OK;
111 }
112
113#endif
114
115 // ----------------------------------------------------------------------
116 // Output Port Member functions
117 // ----------------------------------------------------------------------
118
119 OutputCyclePort ::
120 OutputCyclePort() :
121 Fw::OutputPortBase(),
122 m_port(nullptr)
123 {
124
125 }
126
127 void OutputCyclePort ::
128 init()
129 {
131 }
132
133 void OutputCyclePort ::
134 addCallPort(InputCyclePort* callPort)
135 {
136 FW_ASSERT(callPort != nullptr);
137
138 this->m_port = callPort;
139 this->m_connObj = callPort;
140
141#if FW_PORT_SERIALIZATION == 1
142 this->m_serPort = nullptr;
143#endif
144 }
145
146 void OutputCyclePort ::
147 invoke(Svc::TimerVal& cycleStart)
148 {
149#if FW_PORT_TRACING == 1
150 this->trace();
151#endif
152
153#if FW_PORT_SERIALIZATION
154 FW_ASSERT((this->m_port != nullptr) || (this->m_serPort != nullptr));
155
156 if (this->m_port != nullptr) {
157 this->m_port->invoke(cycleStart);
158 }
159 else {
160 Fw::SerializeStatus _status;
161 CyclePortBuffer _buffer;
162
163 _status = _buffer.serialize(cycleStart);
164 FW_ASSERT(_status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(_status));
165
166 _status = this->m_serPort->invokeSerial(_buffer);
167 FW_ASSERT(_status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(_status));
168 }
169#else
170 FW_ASSERT(this->m_port != nullptr);
171 this->m_port->invoke(cycleStart);
172#endif
173 }
174
175}
#define FW_ASSERT(...)
Definition Assert.hpp:7
uint8_t U8
8-bit unsigned integer
Definition BasicTypes.h:26
PlatformUIntType NATIVE_UINT_TYPE
Definition BasicTypes.h:52
PlatformAssertArgType FwAssertArgType
Definition FpConfig.h:21
virtual void init()
virtual void init()
SerializeStatus deserialize(U8 &val)
deserialize 8-bit unsigned int
@ SERIALIZED_SIZE
The size of the serial representations of the port arguments.
Serializable class for carrying timer values.
Definition TimerVal.hpp:22
SerializeStatus
forward declaration for string
@ FW_SERIALIZE_OK
Serialization/Deserialization operation was successful.