libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
libxr_time.cpp
1#include "libxr_time.hpp"
2
3using namespace LibXR;
4
5uint64_t libxr_timebase_max_valid_us = UINT64_MAX; // NOLINT
6uint32_t libxr_timebase_max_valid_ms = UINT32_MAX; // NOLINT
7
9
11 : microsecond_(microsecond)
12{
13}
14
15MicrosecondTimestamp::operator uint64_t() const { return microsecond_; }
16
17MicrosecondTimestamp::Duration::Duration(uint64_t diff) : diff_(diff) {}
18
19MicrosecondTimestamp::Duration::Duration::operator uint64_t() const { return diff_; }
20
21[[nodiscard]] double MicrosecondTimestamp::Duration::Duration::ToSecond() const
22{
23 return static_cast<double>(diff_) / 1000000.0;
24}
25
26[[nodiscard]] float MicrosecondTimestamp::Duration::Duration::ToSecondf() const
27{
28 return static_cast<float>(diff_) / 1000000.0f;
29}
30
31[[nodiscard]] uint64_t MicrosecondTimestamp::Duration::Duration::ToMicrosecond() const
32{
33 return diff_;
34}
35
36[[nodiscard]] uint32_t MicrosecondTimestamp::Duration::Duration::ToMillisecond() const
37{
38 return diff_ / 1000u;
39}
40
42 const MicrosecondTimestamp& old_microsecond) const
43{
44 uint64_t diff; // NOLINT
45
46 if (microsecond_ >= old_microsecond.microsecond_)
47 {
48 diff = microsecond_ - old_microsecond.microsecond_;
49 }
50 else
51 {
52 diff = microsecond_ + (libxr_timebase_max_valid_us - old_microsecond.microsecond_) +
53 1ULL;
54 }
55
56 ASSERT(diff <= libxr_timebase_max_valid_us);
57
58 return Duration(diff);
59}
60
62{
63 if (this != &other)
64 {
66 }
67 return *this;
68}
69
70MillisecondTimestamp::MillisecondTimestamp() : millisecond_(0) {}
71
72MillisecondTimestamp::MillisecondTimestamp(uint32_t millisecond)
73 : millisecond_(millisecond)
74{
75}
76
77MillisecondTimestamp::operator uint32_t() const { return millisecond_; }
78
79MillisecondTimestamp::Duration::Duration(uint32_t diff) : diff_(diff) {}
80
81MillisecondTimestamp::Duration::operator uint32_t() const { return diff_; }
82
83[[nodiscard]] double MillisecondTimestamp::Duration::ToSecond() const
84{
85 return static_cast<double>(diff_) / 1000.0;
86}
87
89{
90 return static_cast<float>(diff_) / 1000.0f;
91}
92
94{
95 return diff_;
96}
97
99{
100 return static_cast<uint64_t>(diff_) * 1000u;
101}
102
104 const MillisecondTimestamp& old_millisecond) const
105{
106 uint32_t diff; // NOLINT
107
108 if (millisecond_ >= old_millisecond.millisecond_)
109 {
110 diff = millisecond_ - old_millisecond.millisecond_;
111 }
112 else
113 {
114 diff =
115 millisecond_ + (libxr_timebase_max_valid_ms - old_millisecond.millisecond_) + 1U;
116 }
117
118 ASSERT(diff <= libxr_timebase_max_valid_ms);
119
120 return Duration(diff);
121}
表示微秒级时间差的类。Class representing a time difference in microseconds.
Duration(uint64_t diff)
构造函数,初始化时间差。 Constructor initializing the time difference.
表示微秒级时间戳的类。Class representing a timestamp in microseconds.
MicrosecondTimestamp()
默认构造函数,初始化时间戳为 0。 Default constructor initializing the timestamp to 0.
Definition libxr_time.cpp:8
MicrosecondTimestamp & operator=(const MicrosecondTimestamp &other)
赋值运算符重载。 Assignment operator overload.
uint64_t microsecond_
以微秒存储的时间戳。Timestamp stored in microseconds.
Duration operator-(const MicrosecondTimestamp &old_microsecond) const
计算两个时间戳之间的时间差。 Computes the time difference between two timestamps.
表示毫秒级时间差的类。Class representing a time difference in milliseconds.
uint64_t ToMicrosecond() const
以微秒返回时间差。 Returns the time difference in microseconds.
uint32_t ToMillisecond() const
以毫秒返回时间差。 Returns the time difference in milliseconds.
float ToSecondf() const
以秒返回时间差(float 类型)。 Returns the time difference in seconds as a float.
Duration(uint32_t diff)
构造函数,初始化时间差。 Constructor initializing the time difference.
double ToSecond() const
以秒返回时间差(double 类型)。 Returns the time difference in seconds as a double.
表示毫秒级时间戳的类。Class representing a timestamp in milliseconds.
Duration operator-(const MillisecondTimestamp &old_millisecond) const
计算两个时间戳之间的时间差。 Computes the time difference between two timestamps.
uint32_t millisecond_
以毫秒存储的时间戳。Timestamp stored in milliseconds.
LibXR 命名空间
Definition ch32_can.hpp:14