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
LogPortAc.cpp
Go to the documentation of this file.
1// ======================================================================
2// \title LogPortAc.cpp
3// \author Generated by fpp-to-cpp
4// \brief cpp file for Log port
5// ======================================================================
6
8#include "Fw/Types/Assert.hpp"
10
11namespace Fw {
12
13 namespace {
14
15 // ----------------------------------------------------------------------
16 // Port buffer class
17 // ----------------------------------------------------------------------
18
19 class LogPortBuffer : 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 InputLogPort ::
48 InputLogPort() :
50 m_func(nullptr)
51 {
52
53 }
54
55 void InputLogPort ::
56 init()
57 {
59 }
60
61 void InputLogPort ::
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 InputLogPort ::
76 invoke(
78 Fw::Time& timeTag,
79 const Fw::LogSeverity& severity,
80 Fw::LogBuffer& args
81 )
82 {
83#if FW_PORT_TRACING == 1
84 this->trace();
85#endif
86
87 FW_ASSERT(this->m_comp != nullptr);
88 FW_ASSERT(this->m_func != nullptr);
89
90 return this->m_func(this->m_comp, this->m_portNum, id, timeTag, severity, args);
91 }
92
93#if FW_PORT_SERIALIZATION == 1
94
95 Fw::SerializeStatus InputLogPort ::
96 invokeSerial(Fw::SerializeBufferBase& _buffer)
97 {
98 Fw::SerializeStatus _status;
99
100#if FW_PORT_TRACING == 1
101 this->trace();
102#endif
103
104 FW_ASSERT(this->m_comp != nullptr);
105 FW_ASSERT(this->m_func != nullptr);
106
107 FwEventIdType id;
108 _status = _buffer.deserialize(id);
109 if (_status != Fw::FW_SERIALIZE_OK) {
110 return _status;
111 }
112
113 Fw::Time timeTag;
114 _status = _buffer.deserialize(timeTag);
115 if (_status != Fw::FW_SERIALIZE_OK) {
116 return _status;
117 }
118
119 Fw::LogSeverity severity;
120 _status = _buffer.deserialize(severity);
121 if (_status != Fw::FW_SERIALIZE_OK) {
122 return _status;
123 }
124
125 Fw::LogBuffer args;
126 _status = _buffer.deserialize(args);
127 if (_status != Fw::FW_SERIALIZE_OK) {
128 return _status;
129 }
130
131 this->m_func(this->m_comp, this->m_portNum, id, timeTag, severity, args);
132
133 return Fw::FW_SERIALIZE_OK;
134 }
135
136#endif
137
138 // ----------------------------------------------------------------------
139 // Output Port Member functions
140 // ----------------------------------------------------------------------
141
142 OutputLogPort ::
143 OutputLogPort() :
145 m_port(nullptr)
146 {
147
148 }
149
150 void OutputLogPort ::
151 init()
152 {
154 }
155
156 void OutputLogPort ::
157 addCallPort(InputLogPort* callPort)
158 {
159 FW_ASSERT(callPort != nullptr);
160
161 this->m_port = callPort;
162 this->m_connObj = callPort;
163
164#if FW_PORT_SERIALIZATION == 1
165 this->m_serPort = nullptr;
166#endif
167 }
168
169 void OutputLogPort ::
170 invoke(
171 FwEventIdType id,
172 Fw::Time& timeTag,
173 const Fw::LogSeverity& severity,
174 Fw::LogBuffer& args
175 )
176 {
177#if FW_PORT_TRACING == 1
178 this->trace();
179#endif
180
181#if FW_PORT_SERIALIZATION
182 FW_ASSERT((this->m_port != nullptr) || (this->m_serPort != nullptr));
183
184 if (this->m_port != nullptr) {
185 this->m_port->invoke(id, timeTag, severity, args);
186 }
187 else {
188 Fw::SerializeStatus _status;
189 LogPortBuffer _buffer;
190
191 _status = _buffer.serialize(id);
192 FW_ASSERT(_status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(_status));
193
194 _status = _buffer.serialize(timeTag);
195 FW_ASSERT(_status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(_status));
196
197 _status = _buffer.serialize(severity);
198 FW_ASSERT(_status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(_status));
199
200 _status = _buffer.serialize(args);
201 FW_ASSERT(_status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(_status));
202
203 _status = this->m_serPort->invokeSerial(_buffer);
204 FW_ASSERT(_status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(_status));
205 }
206#else
207 FW_ASSERT(this->m_port != nullptr);
208 this->m_port->invoke(id, timeTag, severity, args);
209#endif
210 }
211
212}
#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
U32 FwEventIdType
Definition FpConfig.h:62
@ SERIALIZED_SIZE
The size of the serial representations of the port arguments.
Definition LogPortAc.hpp:39
virtual void init()
Enum representing event severity.
virtual void init()
SerializeStatus deserialize(U8 &val)
deserialize 8-bit unsigned int
SerializeStatus
forward declaration for string
@ FW_SERIALIZE_OK
Serialization/Deserialization operation was successful.