F´ Flight Software - C/C++ Documentation  NASA-v1.6.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(); // !< 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(); // !< 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() const; // !< Gets seconds part of time
31  U32 getUSeconds() const; // !< Gets microseconds part of time
32  TimeBase getTimeBase() const; // !< Time base of time. This is project specific and is meant for indicating different sources of time
33  FwTimeContextStoreType getContext() 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  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
Definition: Time.hpp:10
Fw::Time::getSeconds
U32 getSeconds() const
Definition: Time.cpp:134
Fw::SerializeBufferBase
Definition: Serializable.hpp:43
Fw::SerializeStatus
SerializeStatus
forward declaration for string
Definition: Serializable.hpp:14
Serializable.hpp
Fw::ZERO_TIME
const static Time ZERO_TIME
Definition: Time.hpp:89
Fw::Time::getUSeconds
U32 getUSeconds() const
Definition: Time.cpp:138
Fw::Time::operator!=
bool operator!=(const Time &other) const
Definition: Time.cpp:56
Fw::Time::deserialize
SerializeStatus deserialize(SerializeBufferBase &buffer)
deserialize to contents
Definition: Time.cpp:103
TimeBase
TimeBase
Definition: FpConfig.hpp:324
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:337
Assert.hpp
Fw::Time::operator<
bool operator<(const Time &other) const
Definition: Time.cpp:64
Fw::Time::getContext
FwTimeContextStoreType getContext() const
Definition: Time.cpp:146
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::~Time
virtual ~Time()
Definition: Time.cpp:9
Fw::Time::LT
@ LT
Definition: Time.hpp:47
Fw::Time::GT
@ GT
Definition: Time.hpp:49
Fw::Time::operator=
Time & operator=(const Time &other)
Definition: Time.cpp:43
Fw::Time::setTimeBase
void setTimeBase(TimeBase timeBase)
Definition: Time.cpp:250
Fw::Time::Time
Time()
Definition: Time.cpp:6
Fw::Time::compare
static Comparison compare(const Time &time1, const Time &time2)
Definition: Time.cpp:158
Fw::Time::operator<=
bool operator<=(const Time &other) const
Definition: Time.cpp:73
FpConfig.hpp
ISF configuration file.
FwTimeBaseStoreType
#define FwTimeBaseStoreType
Storage conversion for time base in scripts/ground interface.
Definition: FpConfig.hpp:333
Fw::Time::getTimeBase
TimeBase getTimeBase() const
Definition: Time.cpp:142
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:325
Fw
Definition: Buffer.cpp:21