F´ Flight Software - C/C++ Documentation  NASA-v1.6.0
A framework for building embedded system applications to NASA flight quality standards.
TlmPacket.cpp
Go to the documentation of this file.
1 /*
2  * TlmPacket.cpp
3  *
4  * Created on: May 24, 2014
5  * Author: Timothy Canham
6  */
7 
8 #include <Fw/Tlm/TlmPacket.hpp>
9 #include <Fw/Types/Assert.hpp>
10 
11 namespace Fw {
12 
13  TlmPacket::TlmPacket() : m_id(0) {
14  this->m_type = FW_PACKET_TELEM;
15  }
16 
18  }
19 
21  SerializeStatus stat;
22 #if !FW_AMPCS_COMPATIBLE
23  stat = serializeBase(buffer);
24  if (stat != FW_SERIALIZE_OK) {
25  return stat;
26  }
27 #endif
28  stat = buffer.serialize(this->m_id);
29  if (stat != FW_SERIALIZE_OK) {
30  return stat;
31  }
32 
33 #if !FW_AMPCS_COMPATIBLE
34  stat = buffer.serialize(this->m_timeTag);
35  if (stat != FW_SERIALIZE_OK) {
36  return stat;
37  }
38 #endif
39 
40  return buffer.serialize(this->m_tlmBuffer.getBuffAddr(),m_tlmBuffer.getBuffLength(),true);
41 
42  }
43 
45 
46  SerializeStatus stat;
47 #if !FW_AMPCS_COMPATIBLE
48  stat = deserializeBase(buffer);
49  if (stat != FW_SERIALIZE_OK) {
50  return stat;
51  }
52 #endif
53  stat = buffer.deserialize(this->m_id);
54  if (stat != FW_SERIALIZE_OK) {
55  return stat;
56  }
57 
58 #if !FW_AMPCS_COMPATIBLE
59  stat = buffer.deserialize(this->m_timeTag);
60  if (stat != FW_SERIALIZE_OK) {
61  return stat;
62  }
63 #endif
64 
65  // remainder of buffer must be telemetry value
66  NATIVE_UINT_TYPE size = buffer.getBuffLeft();
67  stat = buffer.deserialize(this->m_tlmBuffer.getBuffAddr(),size,true);
68  if (stat == FW_SERIALIZE_OK) {
69  // Shouldn't fail
70  stat = this->m_tlmBuffer.setBuffLen(size);
71  FW_ASSERT(stat == FW_SERIALIZE_OK,static_cast<NATIVE_INT_TYPE>(stat));
72  }
73  return stat;
74  }
75 
77  this->m_id = id;
78  }
79 
81  this->m_tlmBuffer = buffer;
82  }
83 
84  void TlmPacket::setTimeTag(Time& timeTag) {
85  this->m_timeTag = timeTag;
86  }
87 
89  return this->m_id;
90  }
91 
93  return this->m_timeTag;
94  }
95 
97  return this->m_tlmBuffer;
98  }
99 
100 } /* namespace Fw */
Fw::TlmPacket::deserialize
SerializeStatus deserialize(SerializeBufferBase &buffer)
deserialize to contents
Definition: TlmPacket.cpp:44
Fw::ComPacket::deserializeBase
SerializeStatus deserializeBase(SerializeBufferBase &buffer)
Definition: ComPacket.cpp:22
Fw::Time
Definition: Time.hpp:10
Fw::SerializeBufferBase
Definition: Serializable.hpp:43
Fw::SerializeStatus
SerializeStatus
forward declaration for string
Definition: Serializable.hpp:14
Fw::TlmBuffer
Definition: TlmBuffer.hpp:21
FwChanIdType
#define FwChanIdType
Type representation for a channel id.
Definition: FpConfig.hpp:62
Fw::TlmPacket::getTlmBuffer
TlmBuffer & getTlmBuffer()
Definition: TlmPacket.cpp:96
Fw::SerializeBufferBase::serialize
SerializeStatus serialize(U8 val)
serialize 8-bit unsigned int
Definition: Serializable.cpp:67
Fw::TlmBuffer::getBuffAddr
U8 * getBuffAddr()
gets buffer address for data filling
Definition: TlmBuffer.cpp:36
Fw::TlmPacket::m_id
FwChanIdType m_id
Definition: TlmPacket.hpp:36
Fw::TlmPacket::serialize
SerializeStatus serialize(SerializeBufferBase &buffer) const
serialize contents
Definition: TlmPacket.cpp:20
Fw::ComPacket::serializeBase
SerializeStatus serializeBase(SerializeBufferBase &buffer) const
Definition: ComPacket.cpp:18
Fw::TlmPacket::TlmPacket
TlmPacket()
Definition: TlmPacket.cpp:13
Assert.hpp
Fw::TlmPacket::~TlmPacket
virtual ~TlmPacket()
Definition: TlmPacket.cpp:17
Fw::FW_SERIALIZE_OK
@ FW_SERIALIZE_OK
Serialization/Deserialization operation was successful.
Definition: Serializable.hpp:15
Fw::SerializeBufferBase::getBuffLeft
NATIVE_UINT_TYPE getBuffLeft() const
returns how much deserialization buffer is left
Definition: Serializable.cpp:618
Fw::SerializeBufferBase::setBuffLen
SerializeStatus setBuffLen(NATIVE_UINT_TYPE length)
sets buffer length manually after filling with data
Definition: Serializable.cpp:608
NATIVE_UINT_TYPE
unsigned int NATIVE_UINT_TYPE
native unsigned integer type declaration
Definition: BasicTypes.hpp:30
FW_ASSERT
#define FW_ASSERT(...)
Definition: Assert.hpp:8
Fw::TlmPacket::setId
void setId(FwChanIdType id)
Definition: TlmPacket.cpp:76
Fw::SerializeBufferBase::getBuffLength
NATIVE_UINT_TYPE getBuffLength() const
returns current buffer size
Definition: Serializable.cpp:591
Fw::ComPacket::m_type
ComPacketType m_type
Definition: ComPacket.hpp:35
TlmPacket.hpp
Fw::SerializeBufferBase::deserialize
SerializeStatus deserialize(U8 &val)
deserialize 8-bit unsigned int
Definition: Serializable.cpp:290
Fw::TlmPacket::getId
FwChanIdType getId()
Definition: TlmPacket.cpp:88
Fw::TlmPacket::m_tlmBuffer
TlmBuffer m_tlmBuffer
Definition: TlmPacket.hpp:38
Fw::TlmPacket::m_timeTag
Fw::Time m_timeTag
Definition: TlmPacket.hpp:37
Fw::ComPacket::FW_PACKET_TELEM
@ FW_PACKET_TELEM
Definition: ComPacket.hpp:23
Fw::TlmPacket::getTimeTag
Time & getTimeTag()
Definition: TlmPacket.cpp:92
Fw::TlmPacket::setTlmBuffer
void setTlmBuffer(TlmBuffer &buffer)
Definition: TlmPacket.cpp:80
NATIVE_INT_TYPE
int NATIVE_INT_TYPE
native integer type declaration
Definition: BasicTypes.hpp:29
Fw::TlmPacket::setTimeTag
void setTimeTag(Time &timeTag)
Definition: TlmPacket.cpp:84
Fw
Definition: Buffer.cpp:21