F´ Flight Software - C/C++ Documentation  NASA-v1.5.0
A framework for building embedded system applications to NASA flight quality standards.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
TaskString.cpp
Go to the documentation of this file.
3 #include <Os/TaskString.hpp>
4 #include <Fw/Types/Assert.hpp>
5 #include <string.h>
6 #include <stdio.h>
7 #include <stdlib.h>
8 
9 namespace Os {
10 
11  TaskString::TaskString(const char* src) : StringBase() {
12  this->copyBuff(src,sizeof(this->m_buf));
13  }
14 
15  TaskString::TaskString(const StringBase& src) : StringBase() {
16  this->copyBuff(src.toChar(),sizeof(this->m_buf));
17  }
18 
19  TaskString::TaskString(const TaskString& src) : StringBase() {
20  this->copyBuff(src.m_buf,sizeof(this->m_buf));
21  }
22 
24  this->m_buf[0] = 0;
25  }
26 
28  }
29 
31  return strnlen(this->m_buf,sizeof(this->m_buf));
32  }
33 
34  const char* TaskString::toChar(void) const {
35  return this->m_buf;
36  }
37 
38  void TaskString::copyBuff(const char* buff, NATIVE_UINT_TYPE size) {
39  FW_ASSERT(buff);
40  // check for self copy
41  if (buff != this->m_buf) {
42  (void)strncpy(this->m_buf,buff,size);
43  // NULL terminate
44  this->terminate(sizeof(this->m_buf));
45  }
46  }
47 
49  this->copyBuff(other.m_buf,this->getCapacity());
50  return *this;
51  }
52 
53  NATIVE_UINT_TYPE TaskString::getCapacity(void) const {
54  return FW_TASK_NAME_MAX_SIZE;
55  }
56 
58  NATIVE_UINT_TYPE strSize = strnlen(this->m_buf,sizeof(this->m_buf));
59  // serialize string as buffer
60  return buffer.serialize((U8*)this->m_buf,strSize);
61  }
62 
64  NATIVE_UINT_TYPE maxSize = sizeof(this->m_buf);
65  // deserialize string
66  Fw::SerializeStatus stat = buffer.deserialize((U8*)this->m_buf,maxSize);
67  // make sure it is null-terminated
68  this->terminate(maxSize);
69 
70  return stat;
71  }
72 
73  void TaskString::terminate(NATIVE_UINT_TYPE size) {
74  // null terminate the string
75  this->m_buf[size < sizeof(this->m_buf)?size:sizeof(this->m_buf)-1] = 0;
76  }
77 
78 }
StringType.hpp
Declares ISF string base class.
Os
Definition: File.cpp:7
Os::TaskString::serialize
Fw::SerializeStatus serialize(Fw::SerializeBufferBase &buffer) const
serialize contents
Definition: TaskString.cpp:57
Fw::SerializeBufferBase
Definition: Serializable.hpp:43
Fw::SerializeStatus
SerializeStatus
forward declaration for string
Definition: Serializable.hpp:14
Fw::SerializeBufferBase::serialize
SerializeStatus serialize(U8 val)
serialize 8-bit unsigned int
Definition: Serializable.cpp:67
U8
uint8_t U8
8-bit unsigned integer
Definition: BasicTypes.hpp:76
Os::TaskString::length
NATIVE_UINT_TYPE length(void) const
return current string length
Definition: TaskString.cpp:30
Assert.hpp
Os::TaskString::TaskString
TaskString(void)
default constructor
Definition: TaskString.cpp:23
Os::TaskString
Definition: TaskString.hpp:10
NATIVE_UINT_TYPE
unsigned int NATIVE_UINT_TYPE
native unsigned integer type declaration
Definition: BasicTypes.hpp:30
Os::TaskString::toChar
const char * toChar(void) const
get pointer to internal char buffer
Definition: TaskString.cpp:34
Os::TaskString::deserialize
Fw::SerializeStatus deserialize(Fw::SerializeBufferBase &buffer)
deserialize to contents
Definition: TaskString.cpp:63
FW_ASSERT
#define FW_ASSERT(...)
Definition: Assert.hpp:9
TaskString.hpp
Fw::SerializeBufferBase::deserialize
SerializeStatus deserialize(U8 &val)
deserialize 8-bit unsigned int
Definition: Serializable.cpp:292
Os::TaskString::operator=
const TaskString & operator=(const TaskString &other)
equal operator
Definition: TaskString.cpp:48
FW_TASK_NAME_MAX_SIZE
#define FW_TASK_NAME_MAX_SIZE
Max size of task name.
Definition: FpConfig.hpp:215
Os::TaskString::~TaskString
~TaskString(void)
destructor
Definition: TaskString.cpp:27
BasicTypes.hpp
Declares ISF basic types.