F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
Loading...
Searching...
No Matches
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 Fw::Serializable::SizeType 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 ) const
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:30
PlatformAssertArgType FwAssertArgType
Definition FpConfig.h:39
U32 FwChanIdType
Definition FpConfig.h:95
virtual void init()
@ SERIALIZED_SIZE
The size of the serial representations of the port arguments.
Definition TlmPortAc.hpp:38
virtual void init()
NATIVE_UINT_TYPE SizeType
SerializeStatus deserialize(U8 &val)
deserialize 8-bit unsigned int
SerializeStatus
forward declaration for string
@ FW_SERIALIZE_OK
Serialization/Deserialization operation was successful.