F´ Flight Software - C/C++ Documentation devel
A framework for building embedded system applications to NASA flight quality standards.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
TlmPortAc.cpp
Go to the documentation of this file.
1// ======================================================================
2// \title TlmPortAc.cpp
3// \author Generated by fpp-to-cpp
4// \brief cpp file for Tlm 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 TlmPortBuffer : 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 InputTlmPort ::
48 InputTlmPort() :
50 m_func(nullptr)
51 {
52
53 }
54
55 void InputTlmPort ::
56 init()
57 {
59 }
60
61 void InputTlmPort ::
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 InputTlmPort ::
76 invoke(
77 FwChanIdType id,
78 Fw::Time& timeTag,
79 Fw::TlmBuffer& val
80 )
81 {
82#if FW_PORT_TRACING == 1
83 this->trace();
84#endif
85
86 FW_ASSERT(this->m_comp != nullptr);
87 FW_ASSERT(this->m_func != nullptr);
88
89 return this->m_func(this->m_comp, this->m_portNum, id, timeTag, val);
90 }
91
92#if FW_PORT_SERIALIZATION == 1
93
94 Fw::SerializeStatus InputTlmPort ::
95 invokeSerial(Fw::SerializeBufferBase& _buffer)
96 {
97 Fw::SerializeStatus _status;
98
99#if FW_PORT_TRACING == 1
100 this->trace();
101#endif
102
103 FW_ASSERT(this->m_comp != nullptr);
104 FW_ASSERT(this->m_func != nullptr);
105
106 FwChanIdType id;
107 _status = _buffer.deserialize(id);
108 if (_status != Fw::FW_SERIALIZE_OK) {
109 return _status;
110 }
111
112 Fw::Time timeTag;
113 _status = _buffer.deserialize(timeTag);
114 if (_status != Fw::FW_SERIALIZE_OK) {
115 return _status;
116 }
117
118 Fw::TlmBuffer val;
119 _status = _buffer.deserialize(val);
120 if (_status != Fw::FW_SERIALIZE_OK) {
121 return _status;
122 }
123
124 this->m_func(this->m_comp, this->m_portNum, id, timeTag, val);
125
126 return Fw::FW_SERIALIZE_OK;
127 }
128
129#endif
130
131 // ----------------------------------------------------------------------
132 // Output Port Member functions
133 // ----------------------------------------------------------------------
134
135 OutputTlmPort ::
136 OutputTlmPort() :
138 m_port(nullptr)
139 {
140
141 }
142
143 void OutputTlmPort ::
144 init()
145 {
147 }
148
149 void OutputTlmPort ::
150 addCallPort(InputTlmPort* callPort)
151 {
152 FW_ASSERT(callPort != nullptr);
153
154 this->m_port = callPort;
155 this->m_connObj = callPort;
156
157#if FW_PORT_SERIALIZATION == 1
158 this->m_serPort = nullptr;
159#endif
160 }
161
162 void OutputTlmPort ::
163 invoke(
164 FwChanIdType id,
165 Fw::Time& timeTag,
166 Fw::TlmBuffer& val
167 )
168 {
169#if FW_PORT_TRACING == 1
170 this->trace();
171#endif
172
173#if FW_PORT_SERIALIZATION
174 FW_ASSERT((this->m_port != nullptr) || (this->m_serPort != nullptr));
175
176 if (this->m_port != nullptr) {
177 this->m_port->invoke(id, timeTag, val);
178 }
179 else {
180 Fw::SerializeStatus _status;
181 TlmPortBuffer _buffer;
182
183 _status = _buffer.serialize(id);
184 FW_ASSERT(_status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(_status));
185
186 _status = _buffer.serialize(timeTag);
187 FW_ASSERT(_status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(_status));
188
189 _status = _buffer.serialize(val);
190 FW_ASSERT(_status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(_status));
191
192 _status = this->m_serPort->invokeSerial(_buffer);
193 FW_ASSERT(_status == Fw::FW_SERIALIZE_OK, static_cast<FwAssertArgType>(_status));
194 }
195#else
196 FW_ASSERT(this->m_port != nullptr);
197 this->m_port->invoke(id, timeTag, val);
198#endif
199 }
200
201}
#define FW_ASSERT(...)
Definition Assert.hpp:14
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 FwChanIdType
Definition FpConfig.h:59
virtual void init()
@ SERIALIZED_SIZE
The size of the serial representations of the port arguments.
Definition TlmPortAc.hpp:38
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.