F´ Flight Software - C/C++ Documentation  NASA-v2.1.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
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,
51  } Comparison;
52 
54  static Time zero(TimeBase timeBase=TB_NONE);
55 
58  static Comparison compare(
59  const Time &time1,
60  const Time &time2
61  );
62 
65  static Time add(
66  const Time& a,
67  const Time& b
68  );
69 
72  static Time sub(
73  const Time& minuend,
74  const Time& subtrahend
75  );
76 
77  // add seconds and microseconds to existing time
78  void add(U32 seconds, U32 mseconds);
79 
80 #ifdef BUILD_UT // Stream operators to support Googletest
81  friend std::ostream& operator<<(std::ostream& os, const Time& val);
82 #endif
83  PRIVATE:
84  U32 m_seconds; // !< seconds portion
85  U32 m_useconds; // !< microseconds portion
86  TimeBase m_timeBase; // !< basis of time (defined by system)
87  FwTimeContextStoreType m_timeContext; // !< user settable value. Could be reboot count, node, etc
88  };
89  const static Time ZERO_TIME = Time();
90 
91 }
92 
93 #endif
Fw::Time::EQ
@ EQ
Definition: Time.hpp:48
Fw::Time::INCOMPARABLE
@ INCOMPARABLE
Definition: Time.hpp:50
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
Serializable.hpp
Fw::Time::getTimeBase
TimeBase getTimeBase(void) const
Definition: Time.cpp:142
Fw::ZERO_TIME
const static Time ZERO_TIME
Definition: Time.hpp:89
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:327
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:340
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::sub
static Time sub(const Time &minuend, const Time &subtrahend)
Definition: Time.cpp:215
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:250
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:336
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
Fw::Time::add
static Time add(const Time &a, const Time &b)
Definition: Time.cpp:192
BasicTypes.hpp
Declares ISF basic types.
Fw::Time::setTimeContext
void setTimeContext(FwTimeContextStoreType context)
Definition: Time.cpp:254
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:328
Fw
Definition: Buffer.cpp:21