F´ Flight Software - C/C++ Documentation  NASA-v2.0.0
A framework for building embedded system applications to NASA flight quality standards.
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