12#ifndef CMSIS_PLUS_CHRONO_CLOCKS_H_
13#define CMSIS_PLUS_CHRONO_CLOCKS_H_
23#pragma GCC diagnostic push
25#pragma clang diagnostic ignored "-Wc++98-compat"
26#pragma clang diagnostic ignored "-Wdocumentation-unknown-command"
40 template <
typename T,
typename =
void>
51 void ())> : std::true_type
74 using period = std::ratio<1, os::rtos::clock_systick::frequency_hz>;
76 using duration = std::chrono::duration<rep, period>;
79 using time_point = std::chrono::time_point<systick_clock>;
102#pragma GCC diagnostic push
103#if defined(__clang__)
104#pragma clang diagnostic ignored "-Wc++98-compat"
107#pragma clang diagnostic ignored "-Wc++98-compat-pedantic"
108#pragma clang diagnostic ignored "-Wreserved-identifier"
109#elif defined(__GNUC__)
110#pragma GCC diagnostic ignored "-Waggregate-return"
111#pragma GCC diagnostic ignored "-Wuseless-cast"
115 operator""_ticks (
unsigned long long t)
120#pragma GCC diagnostic pop
136 using duration = std::chrono::duration<rep, period>;
142 static constexpr const bool is_steady{
false };
151 static
void sleep_for (sleep_rep);
169 using rep = duration::rep;
174 static constexpr const bool is_steady{
true };
182 to_time_t (const time_point& tp) noexcept;
184 from_time_t (time_t t) noexcept;
201 using rep = duration::rep;
203 using time_point = std::chrono::time_point<high_resolution_clock>;
206 static constexpr const bool is_steady{
true };
235 rtos::sysclock.sleep_for (ticks);
243 rtos::rtclock.sleep_for (secs);
248#pragma GCC diagnostic push
249#if defined(__clang__)
250#pragma clang diagnostic ignored "-Wreserved-identifier"
251#elif defined(__GNUC__)
252#pragma GCC diagnostic ignored "-Waggregate-return"
255 template <
class _To,
class Rep_T,
class Period_T>
256 constexpr typename std::enable_if<std::chrono::__is_duration<_To>::value,
258 ceil (std::chrono::duration<Rep_T, Period_T> d)
260 using namespace std::chrono;
261 _To r = std::chrono::duration_cast<_To> (d);
269#pragma GCC diagnostic pop
277#pragma GCC diagnostic pop
std::chrono::time_point< high_resolution_clock > time_point
std::chrono::nanoseconds duration
rtos::clock_rtc::duration_t sleep_rep
std::chrono::duration< sleep_rep, period > sleep_duration
std::chrono::duration< rep, period > duration
basic duration type of clock
std::ratio< 1, 1 > period
std::chrono::time_point< realtime_clock > time_point
rtos::clock_rtc::timestamp_t rep
std::chrono::time_point< system_clock > time_point
std::chrono::microseconds duration
std::ratio< 1, os::rtos::clock_systick::frequency_hz > period
static void sleep_for(sleep_rep ticks)
static constexpr bool is_steady
rtos::clock_systick::duration_t sleep_rep
std::chrono::time_point< systick_clock > time_point
basic time_point type of clock
rtos::clock_systick::timestamp_t rep
type of variable holding the tick counter
static time_point now() noexcept
std::chrono::duration< sleep_rep, period > sleep_duration
std::chrono::duration< rep, period > duration
basic duration type of clock
port::clock::duration_t duration_t
Type of variables holding clock durations.
port::clock::timestamp_t timestamp_t
Type of variables holding clock time stamps.
systick_clock::duration systicks
constexpr std::enable_if< std::chrono::__is_duration< _To >::value, _To >::type ceil(std::chrono::duration< Rep_T, Period_T > d)
Single file µOS++ RTOS definitions.