16 , _positionAtUs(startUs)
30 _positionAtUs = nowUs;
32 const auto recent = [
this, nowUs](uint64_t atUs) {
return MonotonicClock::fresh(atUs, nowUs, _window); };
34 if (recent(_positionAtUs)) {
35 current = GPSInputProblem::None;
36 }
else if (!recent(_bytesAtUs)) {
37 current = GPSInputProblem::NoData;
38 }
else if (identified) {
39 current = GPSInputProblem::NoPositions;
40 }
else if (recent(_dataAtUs)) {
41 current = GPSInputProblem::CorrectionsOnly;
43 const bool changed = current != _problem;
51 std::chrono::milliseconds _window;
52 uint64_t _positionAtUs;
53 uint64_t _bytesAtUs = 0;
54 uint64_t _dataAtUs = 0;
@ Data
Useful reports, even without a registered sink.
GPSInputProblem
Why a receiver that stays connected while silent reports no position.
constexpr bool fresh(uint64_t timestampUs, uint64_t nowUs, std::chrono::microseconds lifetime)
Whether a receipt is younger than lifetime.
GPSReceiveLiveness liveness
GPSReceiveUpdates updates
Position and satellite reports published to the sinks.