5#ifdef ROO_THREADS_USE_FREERTOS
7#include "freertos/FreeRTOS.h"
8#include "freertos/task.h"
19constexpr TickType_t kMaxTicksDelay = portMAX_DELAY / 2;
21inline constexpr TickType_t ToTicks(roo_time::Duration duration) {
22 int64_t micros = duration.inMicros();
23 if (micros <= 0)
return 0;
24 uint64_t ms = (micros + 999) / 1000;
25 uint64_t ticks = (ms + portTICK_PERIOD_MS - 1) / portTICK_PERIOD_MS;
26 return (ticks <= kMaxTicksDelay) ?
static_cast<TickType_t
>(ticks)
30inline roo_time::Uptime CalculateDeadlineFromDuration(
31 const roo_time::Duration& duration) {
32 auto now = roo_time::Uptime::Now();
33 return (duration <= roo_time::Uptime::Max() - now) ? now + duration
34 : roo_time::Uptime::Max();