30#define MILLIS_PER_MICROS 1000
31#define MICROS_PER_MILLIS 1000
32#define MILLIS_PER_SECOND 1000
33#define MICROS_PER_SECOND 1000000UL
35#define SECONDS_PER_MINUTE 60
36#define SECONDS_PER_HOUR 3600
37#define SECONDS_PER_DAY 86400
39#define MINUTES_PER_HOUR 60
40#define HOURS_PER_DAY 24
42#define MILLIS_TO_MICROS 1e3f
43#define SECONDS_TO_MILLIS 1e3f
44#define SECONDS_TO_MICROS 1e6f
46#define MICROS_TO_MILLIS 1e-3f
47#define MILLIS_TO_SECONDS 1e-3f
48#define MICROS_TO_SECONDS 1e-6f
52constexpr float MICROS32_OVERFLOW_TO_SECONDS = 4294967296.0f * MICROS_TO_SECONDS;
54constexpr float BPM_TO_HZ = 1.0f / SECONDS_PER_MINUTE;
55#define HZ_TO_BPM 60.0f
78float seconds(
bool referenceTime=
true);
87uint32_t milliSeconds(
bool referenceTime=
true);
96uint64_t microSeconds(
bool referenceTime=
true);
103inline uint32_t microsToMillis(uint64_t micros) {
return micros / MICROS_PER_MILLIS; }
110inline float microsToSeconds(uint64_t micros) {
return micros * MICROS_TO_SECONDS; }
117inline uint64_t millisToMicros(uint32_t millis) {
return static_cast<uint64_t
>(millis * MICROS_PER_MILLIS); }
124inline float millisToSeconds(uint32_t millis) {
return millis * MILLIS_TO_SECONDS; }
131inline uint64_t secondsToMicros(
float secs) {
return static_cast<uint64_t
>(secs * SECONDS_TO_MICROS); }
138inline uint32_t secondsToMillis(
float secs) {
return static_cast<uint32_t
>(secs * SECONDS_TO_MILLIS); }
145inline float minutesToSeconds(
float minutes) {
return minutes * SECONDS_PER_MINUTE; }
152inline float hoursToSeconds(
float hours) {
return hours * SECONDS_PER_HOUR; }
159inline float daysToSeconds(
float days) {
return days * SECONDS_PER_DAY; }