F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
PathName.cpp
Go to the documentation of this file.
1 // ======================================================================
2 // \title PathName.cpp
3 // \author bocchino
4 // \brief cpp file for FilePacket::PathName
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 #include <Fw/Types/StringUtils.hpp>
18 
19 namespace Fw {
20 
21 void FilePacket::PathName ::initialize(const char* const value) {
22  const U8 length = static_cast<U8>(StringUtils::string_length(value, static_cast<FwSizeType>(MAX_LENGTH)));
23  this->m_length = length;
24  this->m_value = value;
25 }
26 
28  return static_cast<U32>(sizeof(this->m_length) + this->m_length);
29 }
30 
31 SerializeStatus FilePacket::PathName ::fromSerialBuffer(SerialBuffer& serialBuffer) {
32  {
33  const SerializeStatus status = serialBuffer.deserialize(this->m_length);
34 
35  if (status != FW_SERIALIZE_OK) {
36  return status;
37  }
38  }
39 
40  {
41  const U8* addrLeft = serialBuffer.getBuffAddrLeft();
42  U8 bytes[MAX_LENGTH];
43  const SerializeStatus status = serialBuffer.popBytes(bytes, this->m_length);
44 
45  if (status != FW_SERIALIZE_OK) {
46  return status;
47  }
48 
49  this->m_value = reinterpret_cast<const char*>(addrLeft);
50  }
51 
52  return FW_SERIALIZE_OK;
53 }
54 
55 SerializeStatus FilePacket::PathName ::toSerialBuffer(SerialBuffer& serialBuffer) const {
56  {
57  const SerializeStatus status = serialBuffer.serialize(this->m_length);
58 
59  if (status != FW_SERIALIZE_OK) {
60  return status;
61  }
62  }
63 
64  {
65  const SerializeStatus status =
66  serialBuffer.pushBytes(reinterpret_cast<const U8*>(this->m_value), this->m_length);
67 
68  if (status != FW_SERIALIZE_OK) {
69  return status;
70  }
71  }
72 
73  return FW_SERIALIZE_OK;
74 }
75 
76 } // namespace Fw
Serialization/Deserialization operation was successful.
A variable-length serializable buffer.
const U8 * getBuffAddrLeft() const
gets address of remaining non-deserialized data.
void initialize(const char *const value)
Initialize a PathName.
Definition: PathName.cpp:21
SerializeStatus
forward declaration for string
SerializeStatus popBytes(U8 *const addr, FwSizeType n)
Pop n bytes off the buffer.
U32 bufferSize() const
Compute the buffer size needed to hold this PathName.
Definition: PathName.cpp:27
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.h:53
SerializeStatus deserialize(U8 &val)
FwSizeType string_length(const CHAR *source, FwSizeType buffer_size)
get the length of the source string
Definition: StringUtils.cpp:24