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
9
struct
GPSDeadline
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
};
GPSDeadline
Definition
GPSDeadline.h:10
GPSDeadline::after
static GPSDeadline after(uint64_t nowUs, std::chrono::microseconds timeout)
A negative timeout is already due at nowUs.
Definition
GPSDeadline.h:14
GPSDeadline::untilUs
uint64_t untilUs
Definition
GPSDeadline.h:11
GPSDeadline::remaining
std::chrono::milliseconds remaining(uint64_t nowUs) const
Rounded up to whole milliseconds and capped at INT32_MAX milliseconds.
Definition
GPSDeadline.h:20
src
GPS
Core
Protocols
GPSDeadline.h
Generated by
1.9.8