From e98919cf3c6e8c7e33a182da8efdd984bce6d655 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Fri, 13 Apr 2018 10:21:05 +0200 Subject: [PATCH] drv_hrt: add user-defined integer literals for time constants The goal is to improve the readability for expressions like: if (hrt_elapsed_time(&start_time) > 8000000) Available since C++11 --- src/drivers/drv_hrt.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/drivers/drv_hrt.h b/src/drivers/drv_hrt.h index 61bb5dfe1e..ac0694aba9 100644 --- a/src/drivers/drv_hrt.h +++ b/src/drivers/drv_hrt.h @@ -194,3 +194,33 @@ __EXPORT extern void hrt_stop_delay_delta(hrt_abstime delta); #endif __END_DECLS + + + +#ifdef __cplusplus + +namespace time_literals +{ + +// User-defined integer literals for different time units. +// The base unit is hrt_abstime in microseconds + +constexpr hrt_abstime operator "" _s(unsigned long long seconds) +{ + return hrt_abstime(seconds * 1000000ULL); +} + +constexpr hrt_abstime operator "" _ms(unsigned long long seconds) +{ + return hrt_abstime(seconds * 1000ULL); +} + +constexpr hrt_abstime operator "" _us(unsigned long long seconds) +{ + return hrt_abstime(seconds); +} + +} /* namespace time_literals */ + + +#endif /* __cplusplus */