213 static constexpr size_t SIZE = 36;
214 static constexpr auto FIELDS =
224 static constexpr size_t SIZE = 18;
232 static constexpr size_t SIZE = 92;
233 static constexpr auto FIELDS =
245 static constexpr size_t SIZE = 16;
253 static constexpr size_t SIZE = 40;
254 static constexpr auto FIELDS = std::tuple{
264 static constexpr size_t SIZE = 8;
272 static constexpr size_t SIZE = 12;
280 static constexpr size_t SIZE = 8;
288 static constexpr size_t SIZE = 12;
296 static constexpr size_t SIZE = 60;
304 static constexpr size_t SIZE = 24;
312 static constexpr size_t SIZE = 28;
320 static constexpr size_t SIZE = 5;
328 static constexpr size_t SIZE = 40;
336 static constexpr size_t SIZE = 30;
344 static constexpr size_t SIZE = 2;
352 static constexpr size_t SIZE = 20;
361 static constexpr size_t SIZE = 6;
362 static constexpr auto FIELDS =
370 static constexpr size_t SIZE = 36;
378 static constexpr size_t SIZE = 3;
386 static constexpr size_t SIZE = 8;
394 static constexpr size_t SIZE = 40;
395 static constexpr auto FIELDS =
404template <Wire::Record T>
415 : std::numeric_limits<double>::quiet_NaN();
442 return {T::ID.value(), WIRE_SIZE<T>, WIRE_SIZE<T>, 1, towOffset};
445template <
typename Header,
typename Block>
448 return {message.
value(), WIRE_SIZE<Header>, WIRE_SIZE<Header> + WIRE_SIZE<Block> * maximumBlocks, WIRE_SIZE<Block>,
454 fixedSchema<NavHpposllh>(4),
455 fixedSchema<NavStatus>(),
456 fixedSchema<NavDop>(0),
457 fixedSchema<NavSvin>(),
459 repeatedSchema<NavSat, NavSatSatellite>(
Msg::NAV_SAT, 255),
462 fixedSchema<MonHw>(),
463 repeatedSchema<MonRf, MonRfBlock>(
Msg::MON_RF, 254),
468 fixedSchema<CfgMsgRates>(),
475 if (schema.message == message) {
488 if (payload.size() < schema->
minimum || payload.size() > schema->
maximum ||
494 return payload.size() == schema->
minimum + schema->
stride * size_t(payload[5]) && payload[4] == 1;
496 return payload.size() == schema->
minimum + schema->
stride * size_t(payload[4]);
498 return payload[0] == 0 && payload[1] > 0 &&
499 payload.size() == schema->
minimum + schema->
stride * (size_t(payload[1]) - 1);
501 return payload[0] == 1
502 ? payload.size() >= 5
503 : (payload[0] == 2 || payload[0] == 3) && payload.size() == 4 + 4 * size_t(payload[3]);
constexpr double degreesFromE7(int32_t value)
Degrees of a coordinate in 1e-7 degree units, as u-blox and MAVLink send them.
constexpr MessageId NAV_SVIN
constexpr MessageId ACK_NAK
constexpr MessageId MON_HW
constexpr MessageId MON_RF
constexpr MessageId SEC_SIG
constexpr MessageId NAV_EOE
constexpr MessageId ACK_ACK
constexpr MessageId NAV_STATUS
constexpr MessageId NAV_DOP
constexpr MessageId CFG_VALGET
constexpr MessageId NAV_SAT
constexpr MessageId MON_VER
constexpr MessageId NAV_SVINFO
constexpr MessageId CFG_MSG
constexpr MessageId CFG_TMODE3
constexpr MessageId NAV_HPPOSLLH
constexpr MessageId NAV_PVT
u-blox receivers over UBX: CFG-VALSET configuration from protocol 27, CFG-MSG and CFG-TMODE3 before i...
constexpr const MessageSchema * messageSchema(uint16_t message)
bool validPayload(uint16_t message, std::span< const uint8_t > payload, const MessageSchema *schema)
constexpr size_t WIRE_SIZE
double longitudeDegrees(int32_t value)
constexpr MessageSchema repeatedSchema(MessageId message, size_t maximumBlocks)
double latitudeDegrees(int32_t value)
constexpr std::array MESSAGE_SCHEMAS
constexpr size_t MAX_CONTROL_PAYLOAD_SIZE
double coordinateDegrees(int32_t value, int64_t limitDegrees)
constexpr MessageSchema fixedSchema(int towOffset=-1)
constexpr float DOP_PER_UNIT
constexpr std::size_t SIZE
static constexpr MessageId ID
A CFG-MSG poll reply: the message's output rate on each I/O port.
static constexpr MessageId ID
uint16_t timeRef
0 UTC, 1 GPS time
uint16_t navRate
measurement cycles
uint16_t flags
mode in bits 7..0, lla in bit 8
constexpr uint16_t value() const
MON-HW of u-blox 7 and later; protocol 27 deprecates it for MON-RF.
uint8_t flags
jammingState in bits 3..2
static constexpr MessageId ID
uint8_t flags
jammingState in bits 1..0
MON-RF with its first RF block; F9P reports two blocks and X20 three.
static constexpr MessageId ID
static constexpr MessageId ID
static constexpr MessageId ID
int32_t hMSL
mm above mean sea level
int32_t height
mm above the ellipsoid
uint8_t valid
validDate, validTime, fullyResolved
static constexpr MessageId ID
uint8_t flags
gnssFixOK, diffSoln, carrSoln in bits 7..6
uint32_t flags
svUsed in bit 3
uint8_t flags2
spoofDetState in bits 4..3
static constexpr MessageId ID
static constexpr MessageId ID
uint8_t flags
svUsed in bit 0
SEC-SIG header: v2 and v3 flags, or v1 jamFlags; the per-band groups that follow are not read.
static constexpr MessageId ID