QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
RTCMParser.h
Go to the documentation of this file.
1#pragma once
2
3#include <cstddef>
4#include <cstdint>
5
6static constexpr uint8_t RTCM3_PREAMBLE = 0xD3;
7
9{
10public:
11 RTCMParser();
12 void reset();
13 bool addByte(uint8_t byte);
14 uint8_t* message() { return _buffer; }
15 uint16_t messageLength() const { return _messageLength; }
16 uint16_t messageId() const;
17 const uint8_t* crcBytes() const { return _crcBytes; }
18 static constexpr int kCrcSize = 3;
19
20 bool validateCrc() const;
21 static uint32_t crc24q(const uint8_t* data, size_t len);
22
23private:
24 enum State {
25 WaitingForPreamble,
26 ReadingLength,
27 ReadingMessage,
28 ReadingCRC
29 };
30
31 static constexpr uint16_t kMaxPayloadLength = 1023;
32 static constexpr int kHeaderSize = 3;
33
34 State _state;
35 uint8_t _buffer[kHeaderSize + kMaxPayloadLength];
36 uint16_t _messageLength;
37 uint16_t _bytesRead;
38 uint16_t _lengthBytesRead;
39 uint8_t _lengthBytes[2];
40 uint16_t _crcBytesRead;
41 uint8_t _crcBytes[3];
42};
static constexpr uint8_t RTCM3_PREAMBLE
Definition RTCMParser.h:6
void reset()
Definition RTCMParser.cc:8
bool validateCrc() const
Definition RTCMParser.cc:86
static uint32_t crc24q(const uint8_t *data, size_t len)
Definition RTCMParser.cc:70
static constexpr int kCrcSize
Definition RTCMParser.h:18
uint8_t * message()
Definition RTCMParser.h:14
const uint8_t * crcBytes() const
Definition RTCMParser.h:17
uint16_t messageId() const
Definition RTCMParser.cc:62
uint16_t messageLength() const
Definition RTCMParser.h:15
bool addByte(uint8_t byte)
Definition RTCMParser.cc:17