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 }
54
55 ASSERT(diff <= libxr_timebase_max_valid_us);
56
57 return Duration(diff);
58}
59
61{
62 if (this != &other)
63 {
65 }
66 return *this;
67}
68
69MillisecondTimestamp::MillisecondTimestamp() : millisecond_(0) {}
70
71MillisecondTimestamp::MillisecondTimestamp(uint32_t millisecond)
72 : millisecond_(millisecond)
73{
74}
75
76MillisecondTimestamp::operator uint32_t() const { return millisecond_; }
77
78MillisecondTimestamp::Duration::Duration(uint32_t diff) : diff_(diff) {}
79
80MillisecondTimestamp::Duration::operator uint32_t() const { return diff_; }
81
82[[nodiscard]] double MillisecondTimestamp::Duration::ToSecond() const
83{
84 return static_cast<double>(diff_) / 1000.0;
85}
86
88{
89 return static_cast<float>(diff_) / 1000.0f;
90}
91
93{
94 return diff_;
95}
96
98{
99 return static_cast<uint64_t>(diff_) * 1000u;
100}
101
103 const MillisecondTimestamp &old_millisecond) const
104{
105 uint32_t diff; // NOLINT
106
107 if (millisecond_ >= old_millisecond.millisecond_)
108 {
109 diff = millisecond_ - old_millisecond.millisecond_;
110 }
111 else
112 {
113 diff = millisecond_ + (libxr_timebase_max_valid_ms - old_millisecond.millisecond_);
114 }
115
116 ASSERT(diff <= libxr_timebase_max_valid_ms);
117
118 return Duration(diff);
119}
表示微秒级时间差的类。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_gpio.hpp:9