F´ Flight Software - C/C++ Documentation  devel
A framework for building embedded system applications to NASA flight quality standards.
AmpcsEvrLogPacket.cpp
Go to the documentation of this file.
1 /*
2  * AmpcsEvrLogPacket.cpp
3  *
4  * Created on: October 07, 2016
5  * Author: Kevin F. Ortega
6  * Aadil Rizvi
7  */
8 
10 #include <Fw/Types/Assert.hpp>
11 
12 namespace Fw {
13 
15  m_eventID(0),
16  m_overSeqNum(0),
17  m_catSeqNum(0) {
18  this->m_type = FW_PACKET_LOG;
19  }
20 
22  }
23 
25 
26  SerializeStatus stat;
27 
28  stat = buffer.serialize(this->m_taskName, AMPCS_EVR_TASK_NAME_LEN, true);
29  if (stat != FW_SERIALIZE_OK) {
30  return stat;
31  }
32 
33  stat = buffer.serialize(this->m_eventID);
34  if (stat != FW_SERIALIZE_OK) {
35  return stat;
36  }
37 
38  stat = buffer.serialize(this->m_overSeqNum);
39  if (stat != FW_SERIALIZE_OK) {
40  return stat;
41  }
42 
43  stat = buffer.serialize(this->m_catSeqNum);
44  if (stat != FW_SERIALIZE_OK) {
45  return stat;
46  }
47 
48  return buffer.serialize(this->m_logBuffer.getBuffAddr(),m_logBuffer.getBuffLength(),true);
49 
50  }
51 
53  NATIVE_UINT_TYPE len;
54 
55  SerializeStatus stat;
56 
58  stat = buffer.deserialize(this->m_taskName, len, true);
59  if (stat != FW_SERIALIZE_OK) {
60  return stat;
61  }
62 
63  stat = buffer.deserialize(this->m_eventID);
64  if (stat != FW_SERIALIZE_OK) {
65  return stat;
66  }
67 
68  stat = buffer.deserialize(this->m_overSeqNum);
69  if (stat != FW_SERIALIZE_OK) {
70  return stat;
71  }
72 
73  stat = buffer.deserialize(this->m_catSeqNum);
74  if (stat != FW_SERIALIZE_OK) {
75  return stat;
76  }
77 
78  NATIVE_UINT_TYPE size = buffer.getBuffLeft();
79  stat = buffer.deserialize(this->m_logBuffer.getBuffAddr(),size,true);
80  if (stat == FW_SERIALIZE_OK) {
81  // Shouldn't fail
82  stat = this->m_logBuffer.setBuffLen(size);
83  FW_ASSERT(stat == FW_SERIALIZE_OK,static_cast<NATIVE_INT_TYPE>(stat));
84  }
85  return stat;
86  }
87 
88  void AmpcsEvrLogPacket::setTaskName(U8 *taskName, U8 len) {
89  FW_ASSERT(taskName != nullptr);
91 
92  memcpy(this->m_taskName, (const void*)taskName, len);
93  }
94 
95  void AmpcsEvrLogPacket::setId(U32 eventID) {
96  this->m_eventID = eventID;
97  }
98 
99  void AmpcsEvrLogPacket::setOverSeqNum(U32 overSeqNum) {
100  this->m_overSeqNum = overSeqNum;
101  }
102 
103  void AmpcsEvrLogPacket::setCatSeqNum(U32 catSeqNum) {
104  this->m_catSeqNum = catSeqNum;
105  }
106 
108  this->m_logBuffer = buffer;
109  }
110 
112  return this->m_taskName;
113  }
114 
116  return this->m_eventID;
117  }
118 
120  return this->m_overSeqNum;
121  }
122 
124  return this->m_catSeqNum;
125  }
126 
128  return this->m_logBuffer;
129  }
130 
131 
132 } /* namespace Fw */
#define AMPCS_EVR_TASK_NAME_LEN
#define FW_ASSERT(...)
Definition: Assert.hpp:14
PlatformIntType NATIVE_INT_TYPE
Definition: BasicTypes.h:51
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.h:26
PlatformUIntType NATIVE_UINT_TYPE
Definition: BasicTypes.h:52
SerializeStatus deserialize(SerializeBufferBase &buffer)
deserialize to contents
const U8 * getTaskName() const
SerializeStatus serialize(SerializeBufferBase &buffer) const
serialize contents
void setOverSeqNum(U32 overSeqNum)
void setId(U32 eventID)
void setLogBuffer(LogBuffer &buffer)
void setCatSeqNum(U32 catSeqNum)
void setTaskName(U8 *taskName, U8 len)
U8 m_taskName[AMPCS_EVR_TASK_NAME_LEN]
ComPacketType m_type
Definition: ComPacket.hpp:36
U8 * getBuffAddr()
gets buffer address for data filling
Definition: LogBuffer.cpp:40
SerializeStatus setBuffLen(Serializable::SizeType length)
sets buffer length manually after filling with data
Serializable::SizeType getBuffLeft() const
returns how much deserialization buffer is left
Serializable::SizeType getBuffLength() const
returns current buffer size
SerializeStatus deserialize(U8 &val)
deserialize 8-bit unsigned int
SerializeStatus serialize(U8 val)
serialize 8-bit unsigned int
SerializeStatus
forward declaration for string
@ FW_SERIALIZE_OK
Serialization/Deserialization operation was successful.