F´ Flight Software - C/C++ Documentation  NASA-v1.6.0
A framework for building embedded system applications to NASA flight quality standards.
EndPacket.cpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title EndPacket.cpp
3 // \author bocchino
4 // \brief cpp file for FilePacket::EndPacket
5 //
6 // \copyright
7 // Copyright 2009-2016, by the California Institute of Technology.
8 // ALL RIGHTS RESERVED. United States Government Sponsorship
9 // acknowledged.
10 //
11 // ======================================================================
12 
13 #include <cstring>
14 
16 #include <Fw/Types/Assert.hpp>
17 
18 namespace Fw {
19 
22  const U32 sequenceIndex,
23  const CFDP::Checksum& checksum
24  )
25  {
26  this->header.initialize(FilePacket::T_END, sequenceIndex);
27  this->setChecksum(checksum);
28  }
29 
31  bufferSize() const
32  {
33  return this->header.bufferSize() + sizeof(this->checksumValue);
34  }
35 
37  toBuffer(Buffer& buffer) const
38  {
39  SerialBuffer serialBuffer(
40  buffer.getData(),
41  buffer.getSize()
42  );
43  return this->toSerialBuffer(serialBuffer);
44  }
45 
47  setChecksum(const CFDP::Checksum& checksum)
48  {
49  this->checksumValue = checksum.getValue();
50  }
51 
52 
54  getChecksum(CFDP::Checksum& checksum) const
55  {
56  CFDP::Checksum c(this->checksumValue);
57  checksum = c;
58  }
59 
60  SerializeStatus FilePacket::EndPacket ::
61  fromSerialBuffer(SerialBuffer& serialBuffer)
62  {
63 
64  FW_ASSERT(this->header.type == T_END);
65 
66  const SerializeStatus status =
67  serialBuffer.deserialize(this->checksumValue);
68 
69  return status;
70 
71  }
72 
73  SerializeStatus FilePacket::EndPacket ::
74  toSerialBuffer(SerialBuffer& serialBuffer) const
75  {
76 
77  FW_ASSERT(this->header.type == T_END);
78 
79  SerializeStatus status;
80 
81  status = this->header.toSerialBuffer(serialBuffer);
82  if (status != FW_SERIALIZE_OK)
83  return status;
84 
85  status = serialBuffer.serialize(this->checksumValue);
86  if (status != FW_SERIALIZE_OK)
87  return status;
88 
89  return FW_SERIALIZE_OK;
90 
91  }
92 
93 }
Fw::SerialBuffer
A variable-length serializable buffer.
Definition: SerialBuffer.hpp:24
Fw::SerializeStatus
SerializeStatus
forward declaration for string
Definition: Serializable.hpp:14
Fw::Buffer::getData
U8 * getData() const
Definition: Buffer.cpp:60
Fw::SerializeBufferBase::serialize
SerializeStatus serialize(U8 val)
serialize 8-bit unsigned int
Definition: Serializable.cpp:69
Fw::Buffer
Definition: Buffer.hpp:43
Fw::FilePacket::EndPacket::initialize
void initialize(const U32 sequenceIndex, const CFDP::Checksum &checksum)
Initialize an end packet.
Definition: EndPacket.cpp:21
Fw::FilePacket::EndPacket::bufferSize
U32 bufferSize() const
Compute the buffer size needed to hold this EndPacket.
Definition: EndPacket.cpp:31
Fw::FilePacket::EndPacket::header
Header header
The packet header.
Definition: FilePacket.hpp:223
Fw::Buffer::getSize
U32 getSize() const
Definition: Buffer.cpp:64
Fw::FilePacket::EndPacket::setChecksum
void setChecksum(const CFDP::Checksum &checksum)
Set the checksum.
Definition: EndPacket.cpp:47
Fw::FilePacket::EndPacket::getChecksum
void getChecksum(CFDP::Checksum &checksum) const
Get the checksum.
Definition: EndPacket.cpp:54
CFDP::Checksum
Class representing a CFDP checksum.
Definition: Checksum.hpp:23
CFDP::Checksum::getValue
U32 getValue() const
Get the checksum value.
Definition: Checksum.cpp:66
FW_ASSERT
#define FW_ASSERT(...)
Definition: Assert.hpp:9
Fw::SerializeBufferBase::deserialize
SerializeStatus deserialize(U8 &val)
deserialize 8-bit unsigned int
Definition: Serializable.cpp:294
Fw::FilePacket::T_END
@ T_END
Definition: FilePacket.hpp:39
FilePacket.hpp
Fw::FilePacket::EndPacket::toBuffer
SerializeStatus toBuffer(Buffer &buffer) const
Convert this EndPacket to a Buffer.
Definition: EndPacket.cpp:37
Fw::FilePacket::Header::type
Type type
The packet type.
Definition: FilePacket.hpp:90
Fw::FW_SERIALIZE_OK
@ FW_SERIALIZE_OK
Serialization/Deserialization operation was successful.
Definition: Serializable.hpp:15
Fw
Definition: SerIds.hpp:20