F´ Flight Software - C/C++ Documentation  NASA-v2.0.1
A framework for building embedded system applications to NASA flight quality standards.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Time.hpp
Go to the documentation of this file.
1 #ifndef FW_TIME_HPP
2 #define FW_TIME_HPP
3 
5 #include <Fw/Types/Assert.hpp>
7 #include <FpConfig.hpp>
8 
9 namespace Fw {
10  class Time: public Serializable {
11  public:
12 
13  enum {
15  + sizeof(FwTimeContextStoreType)
16  + sizeof(U32) + sizeof(U32)
17  };
18 
19  Time(void); // !< Default constructor
20  Time(const Time& other); // !< Copy constructor
21  Time(U32 seconds, U32 useconds); // !< Constructor with member values as arguments
22  Time(TimeBase timeBase, U32 seconds, U32 useconds); // !< Constructor with member values as arguments
23  Time(TimeBase timeBase, FwTimeContextStoreType context, U32 seconds, U32 useconds); // !< Constructor with member values as arguments
24  virtual ~Time(void); // !< Destructor
25  void set(U32 seconds, U32 useconds); // !< Sets value of time stored
26  void set(TimeBase timeBase, U32 seconds, U32 useconds); // !< Sets value of time stored
27  void set(TimeBase timeBase, FwTimeContextStoreType context, U32 seconds, U32 useconds); // !< Sets value of time stored
28  void setTimeBase(TimeBase timeBase);
30  U32 getSeconds(void) const; // !< Gets seconds part of time
31  U32 getUSeconds(void) const; // !< Gets microseconds part of time
32  TimeBase getTimeBase(void) const; // !< Time base of time. This is project specific and is meant for indicating different sources of time
33  FwTimeContextStoreType getContext(void) const; // !< get the context value
34  SerializeStatus serialize(SerializeBufferBase& buffer) const; // !< Serialize method
35  SerializeStatus deserialize(SerializeBufferBase& buffer); // !< Deserialize method
36  bool operator==(const Time& other) const;
37  bool operator!=(const Time& other) const;
38  bool operator>(const Time& other) const;
39  bool operator<(const Time& other) const;
40  bool operator>=(const Time& other) const;
41  bool operator<=(const Time& other) const;
42  const Time& operator=(const Time& other);
43 
44  // Static methods:
46  typedef enum {
47  LT = -1,
48  EQ = 0,
49  GT = 1
50  } Comparison;
51 
53  static Time zero(TimeBase timeBase=TB_NONE);
54 
57  static Comparison compare(
58  const Time &time1,
59  const Time &time2
60  );
61 
64  static Time add(
65  Time& a,
66  Time& b
67  );
68 
71  static Time sub(
72  Time& minuend,
73  Time& subtrahend
74  );
75 
76  // add seconds and microseconds to existing time
77  void add(U32 seconds, U32 mseconds);
78 
79 #ifdef BUILD_UT // Stream operators to support Googletest
80  friend std::ostream& operator<<(std::ostream& os, const Time& val);
81 #endif
82  PRIVATE:
83  U32 m_seconds; // !< seconds portion
84  U32 m_useconds; // !< microseconds portion
85  TimeBase m_timeBase; // !< basis of time (defined by system)
86  FwTimeContextStoreType m_timeContext; // !< user settable value. Could be reboot count, node, etc
87  };
88 
89 }
90 
91 #endif
Fw::Time::EQ
@ EQ
Definition: Time.hpp:48
Fw::Time::Time
Time(void)
Definition: Time.cpp:6
Fw::Time
Definition: Time.hpp:10
Fw::SerializeBufferBase
Definition: Serializable.hpp:43
Fw::SerializeStatus
SerializeStatus
forward declaration for string
Definition: Serializable.hpp:14
Fw::Time::sub
static Time sub(Time &minuend, Time &subtrahend)
Definition: Time.cpp:211
Serializable.hpp
Fw::Time::getTimeBase
TimeBase getTimeBase(void) const
Definition: Time.cpp:142
Fw::Time::getUSeconds
U32 getUSeconds(void) const
Definition: Time.cpp:138
Fw::Time::operator!=
bool operator!=(const Time &other) const
Definition: Time.cpp:56
Fw::Time::operator=
const Time & operator=(const Time &other)
Definition: Time.cpp:43
Fw::Time::deserialize
SerializeStatus deserialize(SerializeBufferBase &buffer)
deserialize to contents
Definition: Time.cpp:103
TimeBase
TimeBase
Definition: FpConfig.hpp:323
Fw::Serializable
forward declaration
Definition: Serializable.hpp:26
Fw::Time::zero
static Time zero(TimeBase timeBase=TB_NONE)
Definition: Time.cpp:151
FwTimeContextStoreType
#define FwTimeContextStoreType
Storage conversion for time context in scripts/ground interface.
Definition: FpConfig.hpp:336
Assert.hpp
Fw::Time::operator<
bool operator<(const Time &other) const
Definition: Time.cpp:64
Fw::Time::SERIALIZED_SIZE
@ SERIALIZED_SIZE
Definition: Time.hpp:14
Fw::Time::set
void set(U32 seconds, U32 useconds)
Definition: Time.cpp:24
Fw::Time::operator>=
bool operator>=(const Time &other) const
Definition: Time.cpp:68
Fw::Time::Comparison
Comparison
The type of a comparison result.
Definition: Time.hpp:46
Fw::Time::LT
@ LT
Definition: Time.hpp:47
Fw::Time::GT
@ GT
Definition: Time.hpp:49
Fw::Time::setTimeBase
void setTimeBase(TimeBase timeBase)
Definition: Time.cpp:246
Fw::Time::compare
static Comparison compare(const Time &time1, const Time &time2)
Definition: Time.cpp:158
Fw::Time::getContext
FwTimeContextStoreType getContext(void) const
Definition: Time.cpp:146
Fw::Time::operator<=
bool operator<=(const Time &other) const
Definition: Time.cpp:73
Fw::Time::getSeconds
U32 getSeconds(void) const
Definition: Time.cpp:134
Fw::Time::~Time
virtual ~Time(void)
Definition: Time.cpp:9
FpConfig.hpp
ISF configuration file.
FwTimeBaseStoreType
#define FwTimeBaseStoreType
Storage conversion for time base in scripts/ground interface.
Definition: FpConfig.hpp:332
Fw::Time::serialize
SerializeStatus serialize(SerializeBufferBase &buffer) const
serialize contents
Definition: Time.cpp:78
Fw::Time::operator==
bool operator==(const Time &other) const
Definition: Time.cpp:52
BasicTypes.hpp
Declares ISF basic types.
Fw::Time::setTimeContext
void setTimeContext(FwTimeContextStoreType context)
Definition: Time.cpp:250
Fw::Time::add
static Time add(Time &a, Time &b)
Definition: Time.cpp:188
Fw::Time::operator>
bool operator>(const Time &other) const
Definition: Time.cpp:60
TB_NONE
@ TB_NONE
No time base has been established.
Definition: FpConfig.hpp:324
Fw
Definition: Buffer.cpp:21