xtimer: Introduce xtimer_diff, xtimer_less for comparing timestamps

This commit is contained in:
Joakim Nohlgård 2016-10-06 08:54:02 +02:00
parent b5554dd7e0
commit a23bfc64ff
2 changed files with 79 additions and 0 deletions

View File

@ -375,6 +375,56 @@ static inline xtimer_ticks32_t xtimer_ticks(uint32_t ticks);
*/
static inline xtimer_ticks64_t xtimer_ticks64(uint64_t ticks);
/**
* @brief Compute difference between two xtimer time stamps
*
* @param[in] a left operand
* @param[in] b right operand
*
* @return @p a - @p b
*/
static inline xtimer_ticks32_t xtimer_diff(xtimer_ticks32_t a, xtimer_ticks32_t b);
/**
* @brief Compute difference between two xtimer time stamps, 64 bit version
*
* @param[in] a left operand
* @param[in] b right operand
*
* @return @p a - @p b
*/
static inline xtimer_ticks64_t xtimer_diff64(xtimer_ticks64_t a, xtimer_ticks64_t b);
/**
* @brief Compute 32 bit difference between two 64 bit xtimer time stamps
*
* @param[in] a left operand
* @param[in] b right operand
*
* @return @p a - @p b cast truncated to 32 bit
*/
static inline xtimer_ticks32_t xtimer_diff32_64(xtimer_ticks64_t a, xtimer_ticks64_t b);
/**
* @brief Compare two xtimer time stamps
*
* @param[in] a left operand
* @param[in] b right operand
*
* @return @p a < @p b
*/
static inline bool xtimer_less(xtimer_ticks32_t a, xtimer_ticks32_t b);
/**
* @brief Compare two xtimer time stamps, 64 bit version
*
* @param[in] a left operand
* @param[in] b right operand
*
* @return @p a < @p b
*/
static inline bool xtimer_less64(xtimer_ticks64_t a, xtimer_ticks64_t b);
/**
* @brief xtimer backoff value
*

View File

@ -258,6 +258,35 @@ static inline xtimer_ticks64_t xtimer_ticks64(uint64_t ticks)
return ret;
}
static inline xtimer_ticks32_t xtimer_diff(xtimer_ticks32_t a, xtimer_ticks32_t b)
{
xtimer_ticks32_t ret = { .ticks32 = (a.ticks32 - b.ticks32) };
return ret;
}
static inline xtimer_ticks64_t xtimer_diff64(xtimer_ticks64_t a, xtimer_ticks64_t b)
{
xtimer_ticks64_t ret = { .ticks64 = (a.ticks64 - b.ticks64) };
return ret;
}
static inline xtimer_ticks32_t xtimer_diff32_64(xtimer_ticks64_t a, xtimer_ticks64_t b)
{
uint64_t diff = (a.ticks64 - b.ticks64);
xtimer_ticks32_t ret = { .ticks32 = (uint32_t) diff };
return ret;
}
static inline bool xtimer_less(xtimer_ticks32_t a, xtimer_ticks32_t b)
{
return (a.ticks32 < b.ticks32);
}
static inline bool xtimer_less64(xtimer_ticks64_t a, xtimer_ticks64_t b)
{
return (a.ticks64 < b.ticks64);
}
#endif /* !defined(DOXYGEN) */
#ifdef __cplusplus