QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
GPSDeadline.h
Go to the documentation of this file.
1#pragma once
2
3#include <algorithm>
4#include <chrono>
5#include <cstdint>
6
10{
11 uint64_t untilUs = UINT64_MAX;
12
14 static GPSDeadline after(uint64_t nowUs, std::chrono::microseconds timeout)
15 {
16 return {nowUs + static_cast<uint64_t>((std::max) (timeout, std::chrono::microseconds::zero()).count())};
17 }
18
20 std::chrono::milliseconds remaining(uint64_t nowUs) const
21 {
22 return std::chrono::milliseconds(
23 nowUs >= untilUs
24 ? 0
25 : std::min<uint64_t>((untilUs - nowUs) / 1000 + ((untilUs - nowUs) % 1000 != 0), INT32_MAX));
26 }
27};
static GPSDeadline after(uint64_t nowUs, std::chrono::microseconds timeout)
A negative timeout is already due at nowUs.
Definition GPSDeadline.h:14
uint64_t untilUs
Definition GPSDeadline.h:11
std::chrono::milliseconds remaining(uint64_t nowUs) const
Rounded up to whole milliseconds and capped at INT32_MAX milliseconds.
Definition GPSDeadline.h:20