83 static constexpr int NO_TIME_KEY = -1;
85 StoredEpoch& _find(std::optional<int> timeMs);
86 StoredEpoch* _findExisting(std::optional<int> timeMs);
87 StoredEpoch* _current();
88 void _resetEpoch(StoredEpoch& stored, std::optional<int> timeMs);
89 void _resetExpiredEpoch(StoredEpoch& stored, uint64_t receivedAtUs);
90 NavigationEpoch& _positionEpoch(std::optional<int> timeMs, uint64_t receivedAtUs);
92 std::optional<NavigationUpdate> _handlePositionSentence(
const Sentence&
sentence, uint64_t receivedAtUs);
93 std::optional<NavigationUpdate> _handleAccuracy(
const Sentence&
sentence, uint64_t receivedAtUs);
94 std::optional<NavigationUpdate> _handleUntimedMetadata(
const Sentence&
sentence, uint64_t receivedAtUs);
96 std::array<StoredEpoch, MAX_RETAINED_EPOCHS> _epochs{};
97 int _currentKey = NO_TIME_KEY;
98 bool _hasCurrent =
false;
99 uint64_t _sequence = 0;
100 uint64_t _invalidThroughSequence = 0;
101 bool _navigationValid =
true;