41 template <
typename Vendor>
45 return _decodeRTCM(frame, context);
50 GPSReceiveUpdates updates = _decodeStandard(frame.text(), context);
51 updates |= vendor(frame.text());
52 return _finishLine(updates, context);
58 return onFrame(frame, context, [](std::string_view) {
return GPSReceiveUpdates{}; });
65 [[nodiscard]] std::chrono::milliseconds
limitReceiveTimeout(std::chrono::milliseconds timeout,
66 uint64_t nowUs)
const;
79 GPSReceiveUpdates _decodeStandard(std::string_view line,
GPSDecodeContext& context);
83 GPSReceiveUpdates _finishLine(GPSReceiveUpdates updates,
GPSDecodeContext& context);
94 bool _rtcmEnabled =
true;
@ ASCIILine
Printable lines up to CR/LF, without the terminator; the decoder checks checksums.
@ RTCM3
0xD3 frames with a valid CRC-24Q.
@ NMEASentence
'$' to a valid "*hh" checksum, without a line ending.
GPSDecodedPosition & position()
GPSReceiveUpdates receive(GPSCommandChannel &channel, std::chrono::milliseconds timeout) const
void flush(GPSDecodeContext &context)
Expires untimed metadata and publishes satellite epochs that became due.
void reset(GPSStreamDemux &stream)
Starts a new receiver session: clears every framer of stream, the epochs and the working reports.
GPSReceiveUpdates onFrame(const GPSFrame &frame, GPSDecodeContext &context, Vendor &&vendor)
GPSReceiveUpdates onFrame(const GPSFrame &frame, GPSDecodeContext &context)
The whole frame handling for a family without vendor sentences.
static constexpr GPSStreamConfig STREAM
Framers an ASCII family's descriptor declares.
Navigation
Who turns sentences into positions: this stream from standard NMEA, or the family's own sentences.
void setRTCMEnabled(bool enabled)
std::chrono::milliseconds limitReceiveTimeout(std::chrono::milliseconds timeout, uint64_t nowUs) const
Shortens a receive timeout so a pending satellite epoch is published when it becomes due.
Bounded multipart/multisignal assembly; scheduling and delivery remain with the caller.
std::vector< SatelliteSystem > SatelliteEpoch
Decoded navigation plus whether the producer accepted its velocity solution.
The framers of one receiver stream and how they share it.
GPSFrameKinds framers
Framers the family can use; only these can be enabled later.